00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kmwsocket.h"
00021 #include "networkscanner.h"
00022 #include "kmwizard.h"
00023 #include "kmprinter.h"
00024
00025 #include <tdelistview.h>
00026 #include <tqheader.h>
00027 #include <tqlineedit.h>
00028 #include <tqlabel.h>
00029 #include <tdemessagebox.h>
00030 #include <tqlayout.h>
00031 #include <tdelocale.h>
00032 #include <kiconloader.h>
00033 #include <kseparator.h>
00034
00035 KMWSocket::KMWSocket(TQWidget *parent, const char *name)
00036 : KMWizardPage(parent,name)
00037 {
00038 m_title = i18n("Network Printer Information");
00039 m_ID = KMWizard::TCP;
00040 m_nextpage = KMWizard::Driver;
00041
00042 m_list = new TDEListView(this);
00043 m_list->addColumn("");
00044 m_list->header()->hide();
00045 m_list->setFrameStyle(TQFrame::WinPanel|TQFrame::Sunken);
00046 m_list->setLineWidth(1);
00047
00048 TQLabel *l1 = new TQLabel(i18n("&Printer address:"),this);
00049 TQLabel *l2 = new TQLabel(i18n("P&ort:"),this);
00050
00051 m_printer = new TQLineEdit(this);
00052 m_port = new TQLineEdit(this);
00053 m_port->setText(TQString("9100"));
00054
00055 l1->setBuddy(m_printer);
00056 l2->setBuddy(m_port);
00057
00058 m_scanner = new NetworkScanner( 9100, this );
00059
00060 KSeparator* sep = new KSeparator( KSeparator::HLine, this);
00061 sep->setFixedHeight(40);
00062
00063 connect(m_list,TQT_SIGNAL(selectionChanged(TQListViewItem*)),TQT_SLOT(slotPrinterSelected(TQListViewItem*)));
00064 connect( m_scanner, TQT_SIGNAL( scanStarted() ), TQT_SLOT( slotScanStarted() ) );
00065 connect( m_scanner, TQT_SIGNAL( scanFinished() ), TQT_SLOT( slotScanFinished() ) );
00066 connect( m_scanner, TQT_SIGNAL( scanStarted() ), parent, TQT_SLOT( disableWizard() ) );
00067 connect( m_scanner, TQT_SIGNAL( scanFinished() ), parent, TQT_SLOT( enableWizard() ) );
00068
00069
00070 TQHBoxLayout *lay3 = new TQHBoxLayout(this, 0, 10);
00071 TQVBoxLayout *lay2 = new TQVBoxLayout(0, 0, 0);
00072
00073 lay3->addWidget(m_list,1);
00074 lay3->addLayout(lay2,1);
00075 lay2->addWidget(l1);
00076 lay2->addWidget(m_printer);
00077 lay2->addSpacing(10);
00078 lay2->addWidget(l2);
00079 lay2->addWidget(m_port);
00080 lay2->addWidget(sep);
00081 lay2->addWidget( m_scanner );
00082 lay2->addStretch(1);
00083 }
00084
00085 KMWSocket::~KMWSocket()
00086 {
00087 }
00088
00089 void KMWSocket::updatePrinter(KMPrinter *p)
00090 {
00091 TQString dev = TQString::fromLatin1("socket://%1:%2").arg(m_printer->text()).arg(m_port->text());
00092 p->setDevice(dev);
00093 }
00094
00095 bool KMWSocket::isValid(TQString& msg)
00096 {
00097 if (m_printer->text().isEmpty())
00098 {
00099 msg = i18n("You must enter a printer address.");
00100 return false;
00101 }
00102 TQString port(m_port->text());
00103 int p(9100);
00104 if (!port.isEmpty())
00105 {
00106 bool ok;
00107 p = port.toInt(&ok);
00108 if (!ok)
00109 {
00110 msg = i18n("Wrong port number.");
00111 return false;
00112 }
00113 }
00114
00115 if (!m_scanner->checkPrinter(m_printer->text(),p))
00116 {
00117 msg = i18n("No printer found at this address/port.");
00118 return false;
00119 }
00120 return true;
00121 }
00122
00123 void KMWSocket::slotScanStarted()
00124 {
00125 m_list->clear();
00126 }
00127
00128 void KMWSocket::slotScanFinished()
00129 {
00130 const TQPtrList<NetworkScanner::SocketInfo> *list = m_scanner->printerList();
00131 TQPtrListIterator<NetworkScanner::SocketInfo> it(*list);
00132 for (;it.current();++it)
00133 {
00134 TQString name;
00135 if (it.current()->Name.isEmpty())
00136 name = i18n("Unknown host - 1 is the IP", "<Unknown> (%1)").arg(it.current()->IP);
00137 else
00138 name = it.current()->Name;
00139 TQListViewItem *item = new TQListViewItem(m_list,name,it.current()->IP,TQString::number(it.current()->Port));
00140 item->setPixmap(0,SmallIcon("tdeprint_printer"));
00141 }
00142 }
00143
00144 void KMWSocket::slotPrinterSelected(TQListViewItem *item)
00145 {
00146 if (!item) return;
00147 m_printer->setText(item->text(1));
00148 m_port->setText(item->text(2));
00149 }
00150
00151 #include "kmwsocket.moc"