kdeprint Library API Documentation

kmwbanners.cpp

00001 /* 00002 * This file is part of the KDE libraries 00003 * Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be> 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Library General Public 00007 * License version 2 as published by the Free Software Foundation. 00008 * 00009 * This library is distributed in the hope that it will be useful, 00010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 * Library General Public License for more details. 00013 * 00014 * You should have received a copy of the GNU Library General Public License 00015 * along with this library; see the file COPYING.LIB. If not, write to 00016 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00017 * Boston, MA 02111-1307, USA. 00018 **/ 00019 00020 #include "kmwbanners.h" 00021 #include "kmwizard.h" 00022 #include "kmprinter.h" 00023 #include "kmfactory.h" 00024 #include "kmmanager.h" 00025 00026 #include <qcombobox.h> 00027 #include <qlabel.h> 00028 #include <qlayout.h> 00029 #include <qmap.h> 00030 #include <klocale.h> 00031 00032 QStringList defaultBanners() 00033 { 00034 QStringList bans; 00035 QPtrList<KMPrinter> *list = KMFactory::self()->manager()->printerList(false); 00036 if (list && list->count() > 0) 00037 { 00038 QPtrListIterator<KMPrinter> it(*list); 00039 for (;it.current() && !it.current()->isPrinter(); ++it) ; 00040 if (it.current() && KMFactory::self()->manager()->completePrinter(it.current())) 00041 { 00042 QString s = list->getFirst()->option("kde-banners-supported"); 00043 bans = QStringList::split(',',s,false); 00044 } 00045 } 00046 if (bans.count() == 0) 00047 bans.append("none"); 00048 return bans; 00049 } 00050 00051 static struct 00052 { 00053 const char *banner; 00054 const char *name; 00055 } bannermap[] = 00056 { 00057 { "none", I18N_NOOP( "No Banner" ) }, 00058 { "classified", I18N_NOOP( "Classified" ) }, 00059 { "confidential", I18N_NOOP( "Confidential" ) }, 00060 { "secret", I18N_NOOP( "Secret" ) }, 00061 { "standard", I18N_NOOP( "Standard" ) }, 00062 { "topsecret", I18N_NOOP( "Top Secret" ) }, 00063 { "unclassified", I18N_NOOP( "Unclassified" ) }, 00064 { 0, 0 } 00065 }; 00066 00067 QString mapBanner( const QString& ban ) 00068 { 00069 static QMap<QString,QString> map; 00070 if ( map.size() == 0 ) 00071 for ( int i=0; bannermap[ i ].banner; i++ ) 00072 map[ bannermap[ i ].banner ] = bannermap[ i ].name; 00073 QMap<QString,QString>::ConstIterator it = map.find( ban ); 00074 if ( it == map.end() ) 00075 return ban; 00076 else 00077 return it.data(); 00078 } 00079 00080 //************************************************************************************************************** 00081 00082 KMWBanners::KMWBanners(QWidget *parent, const char *name) 00083 : KMWizardPage(parent,name) 00084 { 00085 m_ID = KMWizard::Banners; 00086 m_title = i18n("Banner Selection"); 00087 m_nextpage = KMWizard::Custom+3; 00088 00089 m_start = new QComboBox(this); 00090 m_end = new QComboBox(this); 00091 00092 QLabel *l1 = new QLabel(i18n("&Starting banner:"),this); 00093 QLabel *l2 = new QLabel(i18n("&Ending banner:"),this); 00094 00095 l1->setBuddy(m_start); 00096 l2->setBuddy(m_end); 00097 00098 QLabel *l0 = new QLabel(this); 00099 l0->setText(i18n("<p>Select the default banners associated with this printer. These " 00100 "banners will be inserted before and/or after each print job sent " 00101 "to the printer. If you don't want to use banners, select <b>No Banner</b>.</p>")); 00102 00103 QGridLayout *lay = new QGridLayout(this, 5, 2, 0, 10); 00104 lay->setColStretch(1,1); 00105 lay->addRowSpacing(1,20); 00106 lay->setRowStretch(4,1); 00107 lay->addMultiCellWidget(l0,0,0,0,1); 00108 lay->addWidget(l1,2,0); 00109 lay->addWidget(l2,3,0); 00110 lay->addWidget(m_start,2,1); 00111 lay->addWidget(m_end,3,1); 00112 } 00113 00114 void KMWBanners::initPrinter(KMPrinter *p) 00115 { 00116 if (p) 00117 { 00118 if (m_start->count() == 0) 00119 { 00120 m_bans = QStringList::split(',',p->option("kde-banners-supported"),false); 00121 if (m_bans.count() == 0) 00122 m_bans = defaultBanners(); 00123 if (m_bans.find("none") == m_bans.end()) 00124 m_bans.prepend("none"); 00125 for ( QStringList::Iterator it=m_bans.begin(); it!=m_bans.end(); ++it ) 00126 { 00127 m_start->insertItem( i18n( mapBanner(*it).utf8() ) ); 00128 m_end->insertItem( i18n( mapBanner(*it).utf8() ) ); 00129 } 00130 } 00131 QStringList l = QStringList::split(',',p->option("kde-banners"),false); 00132 while (l.count() < 2) 00133 l.append("none"); 00134 m_start->setCurrentItem(m_bans.findIndex(l[0])); 00135 m_end->setCurrentItem(m_bans.findIndex(l[1])); 00136 } 00137 } 00138 00139 void KMWBanners::updatePrinter(KMPrinter *p) 00140 { 00141 if (m_start->count() > 0) 00142 { 00143 p->setOption("kde-banners",m_bans[m_start->currentItem()]+","+m_bans[m_end->currentItem()]); 00144 } 00145 }
KDE Logo
This file is part of the documentation for kdeprint Library Version 3.3.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sun Oct 17 11:32:33 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003