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.
117 lines
3.0 KiB
117 lines
3.0 KiB
15 years ago
|
/*
|
||
|
* 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;
|
||
|
}
|
||
|
}
|