kmwdriver.cpp00001
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 }
|