00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#include "kmwdrivertest.h"
00021
#include "kmprinter.h"
00022
#include "kmwizard.h"
00023
#include "driver.h"
00024
#include "kmfactory.h"
00025
#include "kmmanager.h"
00026
#include "kmdriverdialog.h"
00027
00028
#include <qlabel.h>
00029
#include <kpushbutton.h>
00030
#include <qlayout.h>
00031
#include <klocale.h>
00032
#include <kapplication.h>
00033
#include <kmessagebox.h>
00034
#include <kguiitem.h>
00035
#include <kio/netaccess.h>
00036
00037 KMWDriverTest::KMWDriverTest(
QWidget *parent,
const char *name)
00038 : KMWizardPage(parent,name)
00039 {
00040 m_ID = KMWizard::DriverTest;
00041 m_title = i18n(
"Printer Test");
00042 m_nextpage = KMWizard::Name;
00043 m_driver = 0;
00044 m_printer = 0;
00045
00046 m_manufacturer =
new QLabel(
this);
00047 m_model =
new QLabel(
this);
00048 m_driverinfo =
new QLabel(
this);
00049 m_driverinfo->setTextFormat(Qt::RichText);
00050 QLabel *l1 =
new QLabel(i18n(
"<b>Manufacturer:</b>"),
this);
00051 QLabel *l2 =
new QLabel(i18n(
"<b>Model:</b>"),
this);
00052 QLabel *l3 =
new QLabel(i18n(
"<b>Description:</b>"),
this);
00053
00054 m_test =
new KPushButton(KGuiItem(i18n(
"&Test"),
"kdeprint_testprinter"),
this);
00055 m_settings =
new KPushButton(KGuiItem(i18n(
"&Settings..."),
"configure"),
this);
00056
00057 QLabel *l0 =
new QLabel(
this);
00058 l0->
setText(i18n(
"<p>Now you can test the printer before finishing installation. "
00059
"Use the <b>Settings</b> button to configure the printer driver and "
00060
"the <b>Test</b> button to test your configuration. Use the <b>Back</b> "
00061
"button to change the driver (your current configuration will be discarded).</p>"));
00062
00063
QVBoxLayout *lay1 =
new QVBoxLayout(
this, 0, 15);
00064
QGridLayout *lay2 =
new QGridLayout(0, 3, 3, 0, 0);
00065
QHBoxLayout *lay3 =
new QHBoxLayout(0, 0, 10);
00066 lay1->addWidget(l0,0);
00067 lay1->addLayout(lay2,0);
00068 lay1->addLayout(lay3,0);
00069 lay1->addStretch(1);
00070 lay2->
setColStretch(2,1);
00071 lay2->addColSpacing(1,10);
00072 lay2->
addWidget(l1,0,0);
00073 lay2->
addWidget(l2,1,0);
00074 lay2->
addWidget(l3,2,0,Qt::AlignLeft|Qt::AlignTop);
00075 lay2->
addWidget(m_manufacturer,0,2);
00076 lay2->
addWidget(m_model,1,2);
00077 lay2->
addWidget(m_driverinfo,2,2);
00078 lay3->addWidget(m_test,0);
00079 lay3->addWidget(m_settings,0);
00080 lay3->addStretch(1);
00081
00082 connect(m_test,SIGNAL(clicked()),SLOT(slotTest()));
00083 connect(m_settings,SIGNAL(clicked()),SLOT(slotSettings()));
00084 }
00085
00086 KMWDriverTest::~KMWDriverTest()
00087 {
00088
delete m_driver;
00089 }
00090
00091
void KMWDriverTest::initPrinter(KMPrinter *p)
00092 {
00093 m_manufacturer->setText(p->manufacturer());
00094 m_model->setText(p->model());
00095 m_driverinfo->setText(p->driverInfo());
00096 m_printer = p;
00097
00098
delete m_driver;
00099 m_driver = 0;
00100
00101
QString drfile = p->option(
"kde-driver");
00102
bool checkDriver(
true);
00103
if (!drfile.
isEmpty() && drfile !=
"raw")
00104 {
00105 m_driver = KMFactory::self()->manager()->loadFileDriver(drfile);
00106
00107 KIO::NetAccess::removeTempFile( drfile );
00108 }
00109
else if (p->dbEntry() != NULL)
00110 m_driver = KMFactory::self()->manager()->loadDbDriver(p->dbEntry());
00111
else
00112 checkDriver =
false;
00113
00114
if (checkDriver && !m_driver)
00115 {
00116 KMessageBox::error(
this, i18n(
"<qt>Unable to load the requested driver:<p>%1</p></qt>").arg(KMManager::self()->errorMsg()));
00117 KMManager::self()->setErrorMsg(QString::null);
00118 }
00119 m_settings->setEnabled((m_driver != 0));
00120 }
00121
00122
void KMWDriverTest::updatePrinter(KMPrinter *p)
00123 {
00124
00125
00126
00127 p->setDriver(m_driver);
00128 m_driver = 0;
00129 }
00130
00131
void KMWDriverTest::slotTest()
00132 {
00133
if (!m_printer)
return;
00134
00135
QString name =
"tmpprinter_"+KApplication::randomString(8);
00136
00137
QString oldname = m_printer->name();
00138
00139 m_printer->setName(name);
00140 m_printer->setPrinterName(name);
00141 m_printer->setDriver(m_driver);
00142
if (KMFactory::self()->manager()->createPrinter(m_printer))
00143 {
00144
if (KMFactory::self()->manager()->testPrinter(m_printer))
00145 KMessageBox::information(
this,
"<qt>"+i18n(
"Test page successfully sent to printer. Wait until printing is complete, then click the OK button."));
00146
else
00147 KMessageBox::error(
this,
"<qt>"+i18n(
"Unable to test printer: ")+KMFactory::self()->manager()->errorMsg()+
"</qt>");
00148
if (!KMFactory::self()->manager()->removePrinter(m_printer))
00149 KMessageBox::error(
this,i18n(
"Unable to remove temporary printer."));
00150 }
00151
else
00152 KMessageBox::error(
this,i18n(
"Unable to create temporary printer."));
00153
00154
00155 m_printer->setName(oldname);
00156 m_printer->setPrinterName(oldname);
00157
00158 m_driver = m_printer->takeDriver();
00159 }
00160
00161
void KMWDriverTest::slotSettings()
00162 {
00163
if (m_driver)
00164 {
00165 KMDriverDialog dlg(
this);
00166 dlg.setDriver(m_driver);
00167 dlg.showButtonCancel(
false);
00168 dlg.exec();
00169 }
00170 }
00171
#include "kmwdrivertest.moc"