summaryrefslogtreecommitdiffstats
path: root/filesharing/advanced/kcm_sambaconf/printerdlgimpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filesharing/advanced/kcm_sambaconf/printerdlgimpl.cpp')
-rw-r--r--filesharing/advanced/kcm_sambaconf/printerdlgimpl.cpp241
1 files changed, 241 insertions, 0 deletions
diff --git a/filesharing/advanced/kcm_sambaconf/printerdlgimpl.cpp b/filesharing/advanced/kcm_sambaconf/printerdlgimpl.cpp
new file mode 100644
index 00000000..2910a1a7
--- /dev/null
+++ b/filesharing/advanced/kcm_sambaconf/printerdlgimpl.cpp
@@ -0,0 +1,241 @@
+/***************************************************************************
+ printerdlgimpl.cpp - description
+ -------------------
+ begin : Tue June 6 2002
+ copyright : (C) 2002 by Jan Schäfer
+ email : janschaefer@users.sourceforge.net
+ ***************************************************************************/
+
+/******************************************************************************
+ * *
+ * This file is part of KSambaPlugin. *
+ * *
+ * KSambaPlugin is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * KSambaPlugin 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with KSambaPlugin; if not, write to the Free Software *
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
+ * *
+ ******************************************************************************/
+
+
+/**
+ * @author Jan Schäfer
+ **/
+#include <qcheckbox.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlistbox.h>
+#include <qpainter.h>
+#include <qgroupbox.h>
+#include <qpixmap.h>
+#include <qbitmap.h>
+#include <qlayout.h>
+#include <qtabwidget.h>
+
+#include <klineedit.h>
+#include <kurlrequester.h>
+#include <knuminput.h>
+#include <kdebug.h>
+#include <kdeprint/kmmanager.h>
+#include <kdeprint/kmprinter.h>
+#include <kcombobox.h>
+#include <kiconloader.h>
+#include <klocale.h>
+
+#include <assert.h>
+
+#include "sambafile.h"
+#include "printerdlgimpl.h"
+#include "usertabimpl.h"
+#include "passwd.h"
+#include "dictmanager.h"
+
+
+PrinterDlgImpl::PrinterDlgImpl(QWidget* parent, SambaShare* share)
+ : KcmPrinterDlg(parent,"sharedlgimpl")
+{
+ if (!share) {
+ kdWarning() << "PrinterDlgImpl::Constructor : share parameter is null!" << endl;
+ return;
+ }
+
+ _share = share;
+ _dictMngr = new DictManager(share);
+
+ initDialog();
+}
+
+void PrinterDlgImpl::initDialog()
+{
+ // Base settings
+ if (!_share)
+ return;
+
+ QPtrList<KMPrinter> *printerList = KMManager::self()->printerListComplete();
+
+ for (QPtrListIterator<KMPrinter> it(*printerList); it.current(); ++it)
+ {
+ if (!it.current()->isSpecial()){
+ queueCombo->insertItem(it.current()->printerName());
+ }
+ }
+
+ setComboToString(queueCombo,_share->getValue("printer name"));
+
+
+ _dictMngr->add("path",pathUrlRq);
+ printersChk->setChecked( _share->getName() == "printers" );
+
+ shareNameEdit->setText( _share->getName() );
+ _dictMngr->add("comment",commentEdit);
+
+ _dictMngr->add("available",availableBaseChk);
+ _dictMngr->add("browseable",browseableBaseChk);
+ _dictMngr->add("public",publicBaseChk);
+
+ // Users
+
+ _userTab = new UserTabImpl(this,_share);
+ _tabs->insertTab(_userTab,i18n("&Users"),1);
+ _userTab->load();
+ connect(_userTab, SIGNAL(changed()), this, SLOT(changedSlot()));
+
+
+ // Printing
+
+ _dictMngr->add("postscript",postscriptChk);
+ _dictMngr->add("use client driver",useClientDriverChk);
+ _dictMngr->add("default devmode",defaultDevmodeChk);
+
+ _dictMngr->add("max print jobs",maxPrintJobsSpin);
+ _dictMngr->add("max reported print jobs",maxReportedPrintJobsSpin);
+ _dictMngr->add("printing",printingCombo,
+ new QStringList(QStringList()
+ << "sysv" << "aix" << "hpux" << "bsd" << "qnx"
+ << "plp" << "lprng" << "softq" << "cups" << "nt" << "os2"));
+
+ _dictMngr->add("printer driver",printerDriverEdit);
+ _dictMngr->add("printer driver location",printerDriverLocationEdit);
+
+ // Commands
+
+ _dictMngr->add("print command",printCommandEdit);
+ _dictMngr->add("lpq command",lpqCommandEdit);
+ _dictMngr->add("lprm command",lprmCommandEdit);
+ _dictMngr->add("lppause",lppauseEdit);
+ _dictMngr->add("lpresume",lpresumeEdit);
+ _dictMngr->add("queuepause",queuepauseEdit);
+ _dictMngr->add("queueresume",queueresumeEdit);
+
+ // Security
+
+ _dictMngr->add("printer admin",printerAdminEdit);
+ _dictMngr->add("hosts allow",hostsAllowEdit);
+ _dictMngr->add("hosts deny",hostsDenyEdit);
+
+ guestAccountCombo->insertStringList( getUnixUsers() );
+ setComboToString(guestAccountCombo,_share->getValue("guest account"));
+
+ // Advanced
+
+ _dictMngr->add("min print space",minPrintSpaceSpin);
+ _dictMngr->add("status",statusChk);
+ _dictMngr->add("preexec",preExecEdit);
+ _dictMngr->add("postexec",postExecEdit);
+ _dictMngr->add("root preexec",rootPreExecEdit);
+ _dictMngr->add("root postexec",rootPostExecEdit);
+
+ _dictMngr->load( _share );
+ connect(_dictMngr, SIGNAL(changed()), this, SLOT(changedSlot()));
+
+}
+
+void PrinterDlgImpl::accept()
+{
+ if (!_share)
+ return;
+
+ // Security
+
+ _share->setValue("guest account",guestAccountCombo->currentText( ) );
+ _share->setValue("printer name",queueCombo->currentText());
+
+ if (printersChk->isChecked())
+ {
+ _share->setName("printers");
+ }
+ else
+ _share->setName(shareNameEdit->text());
+
+
+ _userTab->save();
+ _dictMngr->save( _share );
+
+
+ KcmPrinterDlg::accept();
+}
+
+PrinterDlgImpl::~PrinterDlgImpl()
+{
+}
+
+void PrinterDlgImpl::printersChkToggled(bool b)
+{
+ if (b)
+ {
+ shareNameEdit->setText("printers");
+ shareNameEdit->setEnabled(false);
+
+ int dist = 10;
+ int w = 64 + dist;
+ int h = 64 + 2*dist;
+
+ QPixmap pix(w,h);
+ pix.fill(); // fill with white
+
+ QPixmap pix2 = DesktopIcon("printer1");
+
+ // Draw the printericon three times
+ QPainter p(&pix);
+ p.drawPixmap(dist+dist/2,0,pix2);
+ p.drawPixmap(dist/2,dist,pix2);
+ p.drawPixmap(dist+dist/2,2*dist,pix2);
+ p.end();
+
+ QBitmap mask(w,h);
+
+ mask.fill(Qt::black); // everything is transparent
+
+ p.begin(&mask);
+
+ p.setRasterOp(Qt::OrROP);
+ p.drawPixmap(dist+dist/2,0,*pix2.mask());
+ p.drawPixmap(dist/2,dist,*pix2.mask());
+ p.drawPixmap(dist+dist/2,2*dist,*pix2.mask());
+ p.end();
+
+ pix.setMask(mask);
+
+ printerPixLbl->setPixmap(pix);
+ pixFrame->layout()->setMargin( 2 );
+ }
+ else
+ {
+ shareNameEdit->setEnabled(true);
+ shareNameEdit->setText( _share->getName() );
+ printerPixLbl->setPixmap(DesktopIcon("printer1"));
+ pixFrame->layout()->setMargin( 11 );
+ }
+}
+
+#include "printerdlgimpl.moc"