You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/kdeprint/management/kmwdriver.cpp

117 lines
3.0 KiB

/*
* This file is part of the KDE libraries
* Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be>
*
* 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;
}
}