diff options
Diffstat (limited to 'kdeprint/management/kmwdriver.cpp')
-rw-r--r-- | kdeprint/management/kmwdriver.cpp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/kdeprint/management/kmwdriver.cpp b/kdeprint/management/kmwdriver.cpp new file mode 100644 index 000000000..66ab87d20 --- /dev/null +++ b/kdeprint/management/kmwdriver.cpp @@ -0,0 +1,116 @@ +/* + * This file is part of the KDE libraries + * Copyright (c) 2001 Michael Goffioul <[email protected]> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License version 2 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + **/ + +#include "kmwdriver.h" +#include "kmwizard.h" +#include "kmprinter.h" +#include "kmdriverdbwidget.h" +#include "kmdriverdb.h" + +#include <qlayout.h> +#include <klocale.h> + +KMWDriver::KMWDriver(QWidget *parent, const char *name) +: KMWizardPage(parent,name) +{ + m_ID = KMWizard::Driver; + m_title = i18n("Printer Model Selection"); + m_nextpage = KMWizard::DriverTest; + + m_widget = new KMDriverDbWidget(this); + + QVBoxLayout *lay1 = new QVBoxLayout(this, 0, 0); + lay1->addWidget(m_widget); +} + +void KMWDriver::initPrinter(KMPrinter *p) +{ + m_widget->init(); + if (p) + { + QString autoDetect = p->option( "kde-autodetect" ); + if ( !autoDetect.isEmpty() ) + { + // use auto-detection info instead: split the string + // into make/model pair at the first space character + int p = autoDetect.find( ' ' ); + if ( p != -1 ) + { + QString manu = autoDetect.left( p ), model = autoDetect.mid( p+1 ); + KMDBEntryList *l = KMDriverDB::self()->findPnpEntry( manu, model ); + if ( l && l->count() > 0 ) + { + m_widget->setDriver( l->getFirst()->manufacturer, l->getFirst()->model ); + return; + } + } + } + m_widget->setDriver(p->manufacturer(),p->model()); + } +} + +void KMWDriver::updatePrinter(KMPrinter *p) +{ + if (p) + { + p->setManufacturer(QString::null); + p->setModel(QString::null); + p->setDbEntry(0); + p->setDriverInfo(QString::null); + p->setOption("kde-driver",QString::null); + setNextPage(KMWizard::DriverTest); + if (m_widget->isRaw()) + { + p->setDriverInfo(i18n("Raw printer")); + p->setOption("kde-driver","raw"); + } + else + { + p->setManufacturer(m_widget->manufacturer()); + p->setModel(m_widget->model()); + if (m_widget->isExternal()) + { + p->setDriverInfo(m_widget->description()); + p->setOption("kde-driver",m_widget->driverFile()); + } + else + { + KMDBEntryList *drvs = m_widget->drivers(); + if (drvs->count() == 1) + { + p->setDbEntry(drvs->getFirst()); + p->setDriverInfo(drvs->getFirst()->description); + } + else + setNextPage(KMWizard::DriverSelect); + } + } + } +} + +bool KMWDriver::isValid(QString& msg) +{ + if (m_widget->isRaw() || m_widget->isExternal() || m_widget->drivers()) + return true; + else + { + msg = i18n("Internal error: unable to locate the driver."); + return false; + } +} |