00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include "kmwdriver.h"
00021
#include "kmwizard.h"
00022
#include "kmprinter.h"
00023
#include "kmdriverdbwidget.h"
00024
#include "kmdriverdb.h"
00025
00026
#include <qlayout.h>
00027
#include <klocale.h>
00028
00029 KMWDriver::KMWDriver(
QWidget *parent,
const char *name)
00030 : KMWizardPage(parent,name)
00031 {
00032 m_ID = KMWizard::Driver;
00033 m_title = i18n(
"Printer Model Selection");
00034 m_nextpage = KMWizard::DriverTest;
00035
00036 m_widget =
new KMDriverDbWidget(
this);
00037
00038
QVBoxLayout *lay1 =
new QVBoxLayout(
this, 0, 0);
00039 lay1->addWidget(m_widget);
00040 }
00041
00042
void KMWDriver::initPrinter(KMPrinter *p)
00043 {
00044 m_widget->init();
00045
if (p)
00046 {
00047
QString autoDetect = p->option(
"kde-autodetect" );
00048
if ( !autoDetect.isEmpty() )
00049 {
00050
00051
00052
int p = autoDetect.find(
' ' );
00053
if ( p != -1 )
00054 {
00055
QString manu = autoDetect.left( p ), model = autoDetect.mid( p+1 );
00056
KMDBEntryList *l = KMDriverDB::self()->findPnpEntry( manu, model );
00057
if ( l && l->count() > 0 )
00058 {
00059 m_widget->setDriver( l->getFirst()->manufacturer, l->getFirst()->model );
00060
return;
00061 }
00062 }
00063 }
00064 m_widget->setDriver(p->manufacturer(),p->model());
00065 }
00066 }
00067
00068
void KMWDriver::updatePrinter(KMPrinter *p)
00069 {
00070
if (p)
00071 {
00072 p->setManufacturer(QString::null);
00073 p->setModel(QString::null);
00074 p->setDbEntry(0);
00075 p->setDriverInfo(QString::null);
00076 p->setOption(
"kde-driver",QString::null);
00077 setNextPage(KMWizard::DriverTest);
00078
if (m_widget->isRaw())
00079 {
00080 p->setDriverInfo(i18n(
"Raw printer"));
00081 p->setOption(
"kde-driver",
"raw");
00082 }
00083
else
00084 {
00085 p->setManufacturer(m_widget->manufacturer());
00086 p->setModel(m_widget->model());
00087
if (m_widget->isExternal())
00088 {
00089 p->setDriverInfo(m_widget->description());
00090 p->setOption(
"kde-driver",m_widget->driverFile());
00091 }
00092
else
00093 {
00094
KMDBEntryList *drvs = m_widget->drivers();
00095
if (drvs->count() == 1)
00096 {
00097 p->setDbEntry(drvs->getFirst());
00098 p->setDriverInfo(drvs->getFirst()->description);
00099 }
00100
else
00101 setNextPage(KMWizard::DriverSelect);
00102 }
00103 }
00104 }
00105 }
00106
00107
bool KMWDriver::isValid(
QString& msg)
00108 {
00109
if (m_widget->isRaw() || m_widget->isExternal() || m_widget->drivers())
00110
return true;
00111
else
00112 {
00113 msg = i18n(
"Internal error: unable to locate the driver.");
00114
return false;
00115 }
00116 }