/*
* This file is part of the KDE libraries
* Copyright (c) 2001 Michael Goffioul
*
* 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 "kpgeneralpage.h"
#include "driver.h"
#include "kmprinter.h"
#include "kprinter.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
// Some ID's
#define ORIENT_PORTRAIT_ID 0
#define ORIENT_LANDSCAPE_ID 1
#define ORIENT_REVLANDSCAPE_ID 2
#define ORIENT_REVPORTRAIT_ID 3
#define DUPLEX_NONE_ID 0
#define DUPLEX_LONG_ID 1
#define DUPLEX_SHORT_ID 2
#define NUP_1_ID 0
#define NUP_2_ID 1
#define NUP_4_ID 2
static void initCombo(TQComboBox *cb, DrListOption *opt)
{
cb->clear();
TQPtrListIterator it(*(opt->choices()));
for (;it.current();++it)
{
cb->insertItem(it.current()->get("text"));
if (it.current() == opt->currentChoice())
cb->setCurrentItem(cb->count()-1);
}
}
static void setComboItem(TQComboBox *cb, const TQString& txt)
{
for (int i=0;icount();i++)
if (cb->text(i) == txt)
{
cb->setCurrentItem(i);
return;
}
}
static int tqfindOption(const char *strs[], int n, const TQString& txt)
{
for (int i=0;i "
" \"General\"
"
" This dialog page tqcontains general print job settings."
" General settings are applicable to most printers, most jobs "
" and most job file types. "
"
To get more specific help, enable the \"WhatsThis\" cursor and click on any of the "
" text labels or GUI elements of this dialog. "
" " );
TQString whatsThisGeneralPageSizeLabel = i18n( " "
" Page size: Select paper size to be printed on from "
" the drop-down menu.
"
" The exact list of choices depends on the printer driver (\"PPD\") you have installed.
"
"
"
"
"
" Additional hint for power users: This KDEPrint GUI element matches "
" with the CUPS commandline job option parameter: "
"
"
" -o PageSize=... # examples: \"A4\" or \"Letter\" "
"
"
"
"
" " );
TQString whatsThisGeneralPaperTypeLabel = i18n( " "
" Paper type: Select paper type to be printed on from "
" the drop-down menu.
"
" The exact list of choices depends on the printer driver (\"PPD\") you have installed.
"
"
"
"
"
" Additional hint for power users: This KDEPrint GUI element matches "
" with the CUPS commandline job option parameter: "
"
"
" -o MediaType=... # example: \"Transparency\" "
"
"
"
"
" " );
TQString whatsThisGeneralPaperSourceLabel = i18n( " "
" Paper source: Select paper source tray for the paper"
" to be printed on from the drop-down menu. "
"
The exact list of choices depends on the printer driver (\"PPD\") you have installed.
"
"
"
"
"
" Additional hint for power users: This KDEPrint GUI element matches "
" with the CUPS commandline job option parameter: "
"
"
" -o InputSlot=... # examples: \"Lower\" or \"LargeCapacity\" "
"
"
" "
" " );
TQString whatsThisGeneralOrientationLabel = i18n( " "
" Image Orientation: Orientation of the printed "
" page image on your paper is controlled by the radio buttons. By default, "
" the orientation is Portrait "
"
You can select 4 alternatives: "
"
"
" - Portrait..Portrait is the default setting.
"
" - Landscape.
"
" - Reverse Landscape. Reverse Landscape prints the images upside down.
"
" - Reverse Portrait. Reverse Portrait prints the image upside down.
"
"
"
" The icon changes according to your selection."
"
"
"
"
" Additional hint for power users: This KDEPrint GUI element matches "
" with the CUPS commandline job option parameter: "
"
"
" -o orientation-requested=... # examples: \"landscape\" or \"reverse-portrait\" "
"
"
" "
" " );
TQString whatsThisGeneralDuplexLabel = i18n( " "
" Duplex Printing: These controls may be grayed out if your printer "
" does not support duplex printing (i.e. printing on both sides of the sheet). "
" These controls are active if your printer supports duplex printing. "
"
"
" You can choose from 3 alternatives:
"
" "
" - None. This prints each page of the job on one side of the sheets only.
"
" - Long Side. This prints the job on both sides of the paper sheets. "
" It prints the job in a way so that the backside has the same orientation as the front "
" side if you turn the paper over the long edge. (Some printer drivers name this mode "
" duplex-non-tumbled).
"
" - Short Side. This prints the job on both sides of the paper sheets. "
" It prints the job so that the backside has the reverse orientation from the front "
" side if you turn the paper over the long edge, but the same orientation, if you turn it over "
" the short edge. (Some printer drivers name this mode "
" duplex-tumbled).
"
"
"
"
"
" Additional hint for power users: This KDEPrint GUI element matches "
" with the CUPS commandline job option parameter: "
"
"
" -o duplex=... # examples: \"tumble\" or \"two-sided-short-edge\" "
"
"
" "
" " );
TQString whatsThisGeneralBannersLabel = i18n( " "
" Banner Page(s): Select banner(s) to print one or two special sheets "
" of paper just before or after your main job.
"
" Banners may contain some pieces of job information, such as user name, time of printing, job"
" title and more.
"
" Banner pages are useful to separate different jobs more easily, especially in a multi-user "
" environment.
"
" Hint: You can design your own banner pages. To make use of them, just put the banner "
" file into the standard CUPS banners directory (This is usually \"/usr/share/cups/banner/\" "
" Your custom banner(s) must have one of the supported printable formats. "
" Supported formats are ASCII text, PostScript, PDF and nearly any image format such as PNG, JPEG or "
" GIF. Your added banner pages will appear in the drop down menu after a restart of CUPS.
"
" CUPS comes with a selection of banner pages.
"
"
"
"
"
" Additional hint for power users: This KDEPrint GUI element matches "
" with the CUPS commandline job option parameter: "
"
"
" -o job-sheets=... # examples: \"standard\" or \"topsecret\" "
"
"
" "
" " );
TQString whatsThisGeneralPagesPerSheetLabel = i18n( " "
" Pages per Sheet: "
" You can choose to print more than one page onto each sheet of paper. "
" This is sometimes useful to save paper.
"
" Note 1: the page images get scaled down accordingly to print 2 or 4 pages per sheet. "
" The page image does not get scaled if you print 1 page per sheet (the default setting.). "
"
Note 2: If you select multiple pages per sheet here, the scaling and re-arranging is done "
" by your printing system. Be aware, that some printers can by themselves print multiple pages per sheet. "
" In this case you tqfind the option in the printer driver settings. Be careful: if you enable multiple "
" pages per sheet in both places, your printout will not look as you intended.
"
"
"
"
"
" Additional hint for power users: This KDEPrint GUI element matches "
" with the CUPS commandline job option parameter: "
"
"
" -o number-up=... # examples: \"2\" or \"4\" "
"
"
" "
" " );
setTitle(i18n("General"));
// widget creation
QLabel *m_pagesizelabel = new TQLabel(i18n("Page s&ize:"), this);
m_pagesizelabel->tqsetAlignment(Qt::AlignVCenter|Qt::AlignRight);
TQWhatsThis::add(m_pagesizelabel, whatsThisGeneralPageSizeLabel);
QLabel *m_papertypelabel = new TQLabel(i18n("Paper t&ype:"), this);
m_papertypelabel->tqsetAlignment(Qt::AlignVCenter|Qt::AlignRight);
TQWhatsThis::add(m_papertypelabel, whatsThisGeneralPaperTypeLabel);
QLabel *m_inputslotlabel = new TQLabel(i18n("Paper so&urce:"), this);
m_inputslotlabel->tqsetAlignment(Qt::AlignVCenter|Qt::AlignRight);
TQWhatsThis::add(m_inputslotlabel, whatsThisGeneralPaperSourceLabel);
m_pagesize = new TQComboBox(this);
TQWhatsThis::add(m_pagesize, whatsThisGeneralPageSizeLabel);
m_papertype = new TQComboBox(this);
TQWhatsThis::add(m_papertype, whatsThisGeneralPaperTypeLabel);
m_inputslot = new TQComboBox(this);
TQWhatsThis::add(m_inputslot, whatsThisGeneralPaperSourceLabel);
m_pagesizelabel->setBuddy(m_pagesize);
m_papertypelabel->setBuddy(m_papertype);
m_inputslotlabel->setBuddy(m_inputslot);
m_orientbox = new TQButtonGroup(0, Qt::Vertical, i18n("Orientation"), this);
TQWhatsThis::add(m_orientbox, whatsThisGeneralOrientationLabel);
m_duplexbox = new TQButtonGroup(0, Qt::Vertical, i18n("Duplex Printing"), this);
TQWhatsThis::add(m_duplexbox, whatsThisGeneralDuplexLabel);
m_nupbox = new TQButtonGroup(0, Qt::Vertical, i18n("Pages per Sheet"), this);
TQWhatsThis::add(m_nupbox, whatsThisGeneralPagesPerSheetLabel);
m_bannerbox = new TQGroupBox(0, Qt::Vertical, i18n("Banners"), this);
TQWhatsThis::add(m_bannerbox, whatsThisGeneralBannersLabel);
QRadioButton *m_portrait = new TQRadioButton(i18n("&Portrait"), m_orientbox);
QRadioButton *m_landscape = new TQRadioButton(i18n("&Landscape"), m_orientbox);
QRadioButton *m_revland = new TQRadioButton(i18n("&Reverse landscape"), m_orientbox);
QRadioButton *m_revport = new TQRadioButton(i18n("R&everse portrait"), m_orientbox);
m_portrait->setChecked(true);
m_orientpix = new TQLabel(m_orientbox);
m_orientpix->tqsetAlignment(Qt::AlignCenter);
QRadioButton *m_dupnone = new TQRadioButton(i18n("duplex orientation", "&None"), m_duplexbox);
QRadioButton *m_duplong = new TQRadioButton(i18n("duplex orientation", "Lon&g side"), m_duplexbox);
QRadioButton *m_dupshort = new TQRadioButton(i18n("duplex orientation", "S&hort side"), m_duplexbox);
m_dupnone->setChecked(true);
m_duplexpix = new TQLabel(m_duplexbox);
m_duplexpix->tqsetAlignment(Qt::AlignCenter);
QRadioButton *m_nup1 = new TQRadioButton("&1", m_nupbox);
QRadioButton *m_nup2 = new TQRadioButton("&2", m_nupbox);
QRadioButton *m_nup4 = new TQRadioButton("&4", m_nupbox);
m_nup1->setChecked(true);
m_nuppix = new TQLabel(m_nupbox);
m_nuppix->tqsetAlignment(Qt::AlignCenter);
m_startbanner = new TQComboBox(m_bannerbox);
m_endbanner = new TQComboBox(m_bannerbox);
QLabel *m_startbannerlabel = new TQLabel(i18n("S&tart:"), m_bannerbox);
QLabel *m_endbannerlabel = new TQLabel(i18n("En&d:"), m_bannerbox);
m_startbannerlabel->setBuddy(m_startbanner);
m_endbannerlabel->setBuddy(m_endbanner);
// tqlayout creation
QVBoxLayout *lay0 = new TQVBoxLayout(this, 0, KDialog::spacingHint());
TQWhatsThis::add(this, whatsThisPrintPropertiesGeneralPage);
QGridLayout *lay1 = new TQGridLayout(0, 3, 2, 0, KDialog::spacingHint());
QGridLayout *lay2 = new TQGridLayout(0, 2, 2, 0, KDialog::spacingHint());
lay0->addStretch(1);
lay0->addLayout(lay1);
lay0->addStretch(1);
lay0->addLayout(lay2);
lay0->addStretch(2);
lay1->addWidget(m_pagesizelabel, 0, 0);
lay1->addWidget(m_papertypelabel, 1, 0);
lay1->addWidget(m_inputslotlabel, 2, 0);
lay1->addWidget(m_pagesize, 0, 1);
lay1->addWidget(m_papertype, 1, 1);
lay1->addWidget(m_inputslot, 2, 1);
lay2->addWidget(m_orientbox, 0, 0);
lay2->addWidget(m_bannerbox, 1, 0);
lay2->addWidget(m_duplexbox, 0, 1);
lay2->addWidget(m_nupbox, 1, 1);
lay2->setColStretch(0, 1);
lay2->setColStretch(1, 1);
QGridLayout *lay3 = new TQGridLayout(m_orientbox->tqlayout(), 4, 2,
KDialog::spacingHint());
lay3->addWidget(m_portrait, 0, 0);
lay3->addWidget(m_landscape, 1, 0);
lay3->addWidget(m_revland, 2, 0);
lay3->addWidget(m_revport, 3, 0);
lay3->addMultiCellWidget(m_orientpix, 0, 3, 1, 1);
QGridLayout *lay4 = new TQGridLayout(m_duplexbox->tqlayout(), 3, 2,
KDialog::spacingHint());
lay4->addWidget(m_dupnone, 0, 0);
lay4->addWidget(m_duplong, 1, 0);
lay4->addWidget(m_dupshort, 2, 0);
lay4->addMultiCellWidget(m_duplexpix, 0, 2, 1, 1);
lay4->setRowStretch( 0, 1 );
QGridLayout *lay5 = new TQGridLayout(m_nupbox->tqlayout(), 3, 2,
KDialog::spacingHint());
lay5->addWidget(m_nup1, 0, 0);
lay5->addWidget(m_nup2, 1, 0);
lay5->addWidget(m_nup4, 2, 0);
lay5->addMultiCellWidget(m_nuppix, 0, 2, 1, 1);
QGridLayout *lay6 = new TQGridLayout(m_bannerbox->tqlayout(), 2, 2,
KDialog::spacingHint());
lay6->addWidget(m_startbannerlabel, 0, 0);
lay6->addWidget(m_endbannerlabel, 1, 0);
lay6->addWidget(m_startbanner, 0, 1);
lay6->addWidget(m_endbanner, 1, 1);
lay6->setColStretch(1, 1);
// connections (+ misc)
connect(m_orientbox,TQT_SIGNAL(clicked(int)),TQT_SLOT(slotOrientationChanged(int)));
connect(m_nupbox,TQT_SIGNAL(clicked(int)),TQT_SLOT(slotNupChanged(int)));
connect(m_duplexbox,TQT_SIGNAL(clicked(int)),TQT_SLOT(slotDuplexChanged(int)));
// init
initialize();
}
KPGeneralPage::~KPGeneralPage()
{
}
void KPGeneralPage::initialize()
{
if (driver())
{
// Size, Type and Source
DrListOption *opt = (DrListOption*)driver()->tqfindOption("PageSize");
if (opt) initCombo(m_pagesize,opt);
else m_pagesize->setEnabled(false);
opt = (DrListOption*)driver()->tqfindOption("MediaType");
if (opt) initCombo(m_papertype,opt);
else m_papertype->setEnabled(false);
opt = (DrListOption*)driver()->tqfindOption("InputSlot");
if (opt) initCombo(m_inputslot,opt);
else m_inputslot->setEnabled(false);
// Duplex
opt = (DrListOption*)driver()->tqfindOption("Duplex");
if (opt)
{
if ( opt->choices()->count() == 2 )
{
// probably a On/Off option instead of the standard PS one
TQButton *btn = m_duplexbox->tqfind( DUPLEX_SHORT_ID );
m_duplexbox->remove( btn );
btn->hide();
//delete btn;
m_duplexbox->tqfind( DUPLEX_NONE_ID )->setText( i18n( "Disabled" ) );
m_duplexbox->tqfind( DUPLEX_LONG_ID )->setText( i18n( "Enabled" ) );
m_duplexpix->hide();
}
if (opt->currentChoice())
{
int ID(DUPLEX_NONE_ID);
if (opt->currentChoice()->name() == "DuplexNoTumble" || opt->currentChoice()->name() == "On") ID = DUPLEX_LONG_ID;
else if (opt->currentChoice()->name() == "DuplexTumble") ID = DUPLEX_SHORT_ID;
m_duplexbox->setButton(ID);
slotDuplexChanged(ID);
}
}
else m_duplexbox->setEnabled(false);
}
else
{
// PageSize
for (int i=SMALLSIZE_BEGIN+1;iinsertItem(i18n(default_size[i]));
if ( printer()->printerCap() & KMPrinter::CapMedium )
for ( int i=MEDIUMSIZE_BEGIN+1; iinsertItem(i18n(default_size[i]));
if ( printer()->printerCap() & KMPrinter::CapLarge )
for ( int i=HIGHSIZE_BEGIN+1; iinsertItem(i18n(default_size[i]));
// set default page size using locale settings
QString psname = pageSizeToPageName((KPrinter::PageSize)(KGlobal::locale()->pageSize()));
int index = tqfindOption(default_size, DEFAULT_SIZE, psname);
if (index >= 0)
m_pagesize->setCurrentItem(index);
// MediaType
for (int i=1;iinsertItem(i18n(default_type[i]));
// PageSize
for (int i=1;iinsertItem(i18n(default_source[i]));
// Enable duplex setting if supported
m_duplexbox->setEnabled( printer()->printerCap() & KMPrinter::CapDuplex );
}
// Banners
QStringList values = TQStringList::split(',',printer()->option("kde-banners-supported"),false);
if (values.count() > 0)
{
for (TQStringList::ConstIterator it = values.begin(); it != values.end(); ++it)
{
m_startbanner->insertItem(*it);
m_endbanner->insertItem(*it);
}
values = TQStringList::split(',',printer()->option("kde-banners"),false);
while (values.count() < 2) values.append("none");
setComboItem(m_startbanner, values[0]);
setComboItem(m_endbanner, values[1]);
}
else
m_bannerbox->setEnabled(false);
slotOrientationChanged(ORIENT_PORTRAIT_ID);
slotNupChanged(NUP_1_ID);
}
void KPGeneralPage::setOptions(const TQMap& opts)
{
QString value;
if (driver())
{
value = opts["media"];
QStringList l = TQStringList::split(',',value,false);
for(TQStringList::ConstIterator it = l.begin(); it != l.end(); ++it)
{
value = *it;
DrBase *ch;
if ((ch = (driver()->tqfindOption("PageSize"))) &&
(ch = (static_cast(ch))->tqfindChoice(value)))
{
if (m_pagesize->isEnabled())
setComboItem(m_pagesize, ch->get("text"));
}
else if ((ch = (driver()->tqfindOption("MediaType"))) &&
(ch = (static_cast(ch))->tqfindChoice(value)))
{
if (m_papertype->isEnabled())
setComboItem(m_papertype, ch->get("text"));
}
else if ((ch = (driver()->tqfindOption("InputSlot"))) &&
(ch = static_cast(ch)->tqfindChoice(value)))
{
if (m_inputslot)
setComboItem(m_inputslot, ch->get("text"));
}
else
{
kdWarning() << "media option '" << value << "' not handled." << endl;
}
}
value = opts["PageSize"];
if (m_pagesize->isEnabled() && !value.isEmpty())
{
DrBase *ch = ((DrListOption*)driver()->tqfindOption("PageSize"))->tqfindChoice(value);
if (ch) setComboItem(m_pagesize, ch->get("text"));
}
value = opts["MediaType"];
if (m_papertype->isEnabled() && !value.isEmpty())
{
DrBase *ch = ((DrListOption*)driver()->tqfindOption("MediaType"))->tqfindChoice(value);
if (ch) setComboItem(m_papertype, ch->get("text"));
}
value = opts["InputSlot"];
if (m_inputslot && m_inputslot->isEnabled() && !value.isEmpty())
{
DrBase *ch = ((DrListOption*)driver()->tqfindOption("InputSlot"))->tqfindChoice(value);
if (ch) setComboItem(m_inputslot, ch->get("text"));
}
value = opts["Duplex"];
if (m_duplexbox->isEnabled() && !value.isEmpty())
{
int ID(0);
if (value == "DuplexNoTumble" || value == "On") ID = 1;
else if (value == "DuplexTumble") ID = 2;
m_duplexbox->setButton(ID);
slotDuplexChanged(ID);
}
}
else
{
// Try to tqfind "media" option
value = opts["media"];
if (!value.isEmpty())
{
int index(-1);
QStringList l = TQStringList::split(',',value,false);
for(TQStringList::ConstIterator it = l.begin(); it != l.end(); ++it)
{
value = *it;
if ((index=tqfindOption(default_size,DEFAULT_SIZE,value)) >= 0)
m_pagesize->setCurrentItem(index);
else if ((index=tqfindOption(default_type,DEFAULT_TYPE,value)) >= 0)
m_papertype->setCurrentItem(index);
else if ((index=tqfindOption(default_source,DEFAULT_SOURCE,value)) >= 0)
m_inputslot->setCurrentItem(index);
else
kdWarning() << "media option '" << value << "' not handled." << endl;
}
}
// Try to tqfind "sides" option
value = opts["sides"];
int ID(0);
if (value == "two-sided-long-edge") ID = 1;
else if (value == "two-sided-short-edge") ID = 2;
m_duplexbox->setButton(ID);
slotDuplexChanged(ID);
}
// Banners
value = opts["job-sheets"];
if (!value.isEmpty())
{
QStringList l = TQStringList::split(',',value,false);
if (l.count() > 0) setComboItem(m_startbanner,l[0]);
if (l.count() > 1) setComboItem(m_endbanner,l[1]);
}
// Orientation
value = opts["orientation-requested"];
if (!value.isEmpty())
{
bool ok;
int ID = value.toInt(&ok)-3;
if (ok)
{
m_orientbox->setButton(ID);
slotOrientationChanged(ID);
}
}
// N-up
value = opts["number-up"];
if (!value.isEmpty())
{
bool ok;
int ID = QMIN(value.toInt(&ok)-1,2);
if (ok)
{
m_nupbox->setButton(ID);
slotNupChanged(ID);
}
}
if ( m_orientbox->isEnabled() )
m_orientbox->setDisabled( opts[ "kde-orientation-fixed" ] == "1" );
if ( m_pagesize->isEnabled() )
m_pagesize->setDisabled( opts[ "kde-pagesize-fixed" ] == "1" );
}
void KPGeneralPage::getOptions(TQMap& opts, bool incldef)
{
QString value;
if (driver())
{
DrListOption *opt;
if ((opt=(DrListOption*)driver()->tqfindOption("PageSize")) != NULL)
{
DrBase *ch = opt->choices()->at(m_pagesize->currentItem());
if (incldef || ch->name() != opt->get("default")) opts["PageSize"] = ch->name();
}
if ((opt=(DrListOption*)driver()->tqfindOption("MediaType")) != NULL)
{
DrBase *ch = opt->choices()->at(m_papertype->currentItem());
if (incldef || ch->name() != opt->get("default")) opts["MediaType"] = ch->name();
}
if ((opt=(DrListOption*)driver()->tqfindOption("InputSlot")) != NULL)
{
DrBase *ch = opt->choices()->at(m_inputslot->currentItem());
if (incldef || ch->name() != opt->get("default")) opts["InputSlot"] = ch->name();
}
if (m_duplexbox->isEnabled() && (opt=(DrListOption*)driver()->tqfindOption("Duplex")) != NULL)
{
bool twoChoices = ( m_duplexbox->count() == 2 );
switch (m_duplexbox->id(m_duplexbox->selected()))
{
case DUPLEX_NONE_ID: value = ( twoChoices ? "Off" : "None" ); break;
case DUPLEX_LONG_ID: value = ( twoChoices ? "On" : "DuplexNoTumble" ); break;
case DUPLEX_SHORT_ID: value = "DuplexTumble"; break;
}
if (incldef || value != opt->get("default")) opts["Duplex"] = value;
}
}
else
{
value = TQString("%1,%2,%3").arg(default_size[m_pagesize->currentItem()*2]).arg(default_type[m_papertype->currentItem()*2]).arg(default_source[m_inputslot->currentItem()*2]);
opts["media"] = value;
if (m_duplexbox->isEnabled())
{
switch (m_duplexbox->id(m_duplexbox->selected()))
{
case 0: value = "one-sided"; break;
case 1: value = "two-sided-long-edge"; break;
case 2: value = "two-sided-short-edge"; break;
}
opts["sides"] = value;
}
}
value = TQString::number(m_orientbox->id(m_orientbox->selected())+3);
if (value != "3" || incldef) opts["orientation-requested"] = value;
if (m_nupbox->isEnabled())
{
switch (m_nupbox->id(m_nupbox->selected()))
{
case 0: value = "1"; break;
case 1: value = "2"; break;
case 2: value = "4"; break;
}
if (value != "1" || incldef) opts["number-up"] = value;
}
if (m_bannerbox->isEnabled())
{
QStringList l = TQStringList::split(',',printer()->option("kde-banners"),false);
if (incldef || (l.count() == 2 && (l[0] != m_startbanner->currentText() || l[1] != m_endbanner->currentText()))
|| (l.count() == 0 && (m_startbanner->currentText() != "none" || m_endbanner->currentText() != "none")))
{
value = TQString("%1,%2").arg(m_startbanner->currentText()).arg(m_endbanner->currentText());
opts["job-sheets"] = value;
}
}
}
void KPGeneralPage::slotOrientationChanged(int ID)
{
QString iconstr;
switch (ID)
{
case ORIENT_PORTRAIT_ID: iconstr = "kdeprint_portrait"; break;
case ORIENT_LANDSCAPE_ID: iconstr = "kdeprint_landscape"; break;
case ORIENT_REVPORTRAIT_ID: iconstr = "kdeprint_revportrait"; break;
case ORIENT_REVLANDSCAPE_ID: iconstr = "kdeprint_revlandscape"; break;
default: iconstr = "kdeprint_portrait"; break;
}
m_orientpix->setPixmap(UserIcon(iconstr));
}
void KPGeneralPage::slotNupChanged(int ID)
{
QString iconstr;
switch (ID)
{
case NUP_1_ID: iconstr = "kdeprint_nup1"; break;
case NUP_2_ID: iconstr = "kdeprint_nup2"; break;
case NUP_4_ID: iconstr = "kdeprint_nup4"; break;
default: iconstr = "kdeprint_nup1"; break;
}
m_nuppix->setPixmap(UserIcon(iconstr));
}
void KPGeneralPage::slotDuplexChanged(int ID)
{
if (m_duplexbox->isEnabled())
{
QString iconstr;
switch (ID)
{
case DUPLEX_NONE_ID: iconstr = "kdeprint_duplex_none"; break;
case DUPLEX_LONG_ID: iconstr = "kdeprint_duplex_long"; break;
case DUPLEX_SHORT_ID: iconstr = "kdeprint_duplex_short"; break;
default: iconstr = "kdeprint_duplex_none"; break;
}
m_duplexpix->setPixmap(UserIcon(iconstr));
}
}
#include "kpgeneralpage.moc"