cupslist.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "cupslist.h"
00021
00022 #include <qlistview.h>
00023 #include <qpushbutton.h>
00024 #include <klocale.h>
00025 #include <qlayout.h>
00026 #include <qheader.h>
00027
00028 #include "qinputbox.h"
00029
00030 CupsListBox::CupsListBox(QWidget *parent, const char *name)
00031 : QWidget(parent, name)
00032 {
00033 init(1);
00034 }
00035
00036 CupsListBox::CupsListBox(int columns, QWidget *parent, const char *name)
00037 : QWidget(parent, name)
00038 {
00039 init(columns);
00040 }
00041
00042 CupsListBox::~CupsListBox()
00043 {
00044 }
00045
00046 void CupsListBox::init(int columns)
00047 {
00048 list_ = 0;
00049 add_ = remove_ = 0;
00050 addmsg_.append(i18n("Enter new value:"));
00051
00052 createView(columns);
00053 createButtons();
00054 createLayout();
00055 }
00056
00057 void CupsListBox::createView(int columns)
00058 {
00059 if (list_ == 0)
00060 {
00061 list_ = new QListView(this);
00062 list_->setFrameStyle(QFrame::Sunken|QFrame::WinPanel);
00063 list_->setLineWidth(1);
00064 list_->setAllColumnsShowFocus(true);
00065 columns_ = columns;
00066 for (int i=0;i<columns_;i++)
00067 list_->addColumn("column");
00068 if (columns_ <= 1)
00069 {
00070 list_->header()->hide();
00071 list_->setMaximumHeight(70);
00072 }
00073 }
00074 }
00075
00076 void CupsListBox::createLayout()
00077 {
00078
00079
00080
00081
00082 QHBoxLayout *main_ = new QHBoxLayout(this, 0, 10);
00083 QVBoxLayout *btn_ = new QVBoxLayout(0, 0, 10);
00084 main_->addWidget(list_);
00085 main_->addLayout(btn_);
00086 btn_->addWidget(add_);
00087 btn_->addWidget(remove_);
00088 btn_->addStretch(1);
00089 }
00090
00091 void CupsListBox::createButtons()
00092 {
00093 if (add_ == 0 && remove_ == 0)
00094 {
00095 add_ = new QPushButton(i18n("Add..."), this);
00096 connect(add_, SIGNAL(clicked()), SLOT(addClicked()));
00097 remove_ = new QPushButton(i18n("Remove"), this);
00098 connect(remove_, SIGNAL(clicked()), SLOT(removeClicked()));
00099 }
00100 }
00101
00102 QListViewItem* CupsListBox::findItemAtIndex(int i) const
00103 {
00104 if (!list_ || i < 0 || i >= count()) return 0;
00105
00106 QListViewItem *item(list_->firstChild());
00107 int j(0);
00108 while (item)
00109 {
00110 if (j == i) break;
00111 else
00112 {
00113 item = item->nextSibling();
00114 j++;
00115 }
00116 }
00117 return item;
00118 }
00119
00120 void CupsListBox::setColumnText(int column, const QString& txt)
00121 {
00122 if (column >= 0 && column < columns_ && list_)
00123 {
00124 list_->setColumnText(column, txt);
00125 if (!list_->header()->isVisible())
00126 list_->header()->show();
00127 }
00128 }
00129
00130 QString CupsListBox::text(int index, int column) const
00131 {
00132 QListViewItem *item = findItemAtIndex(index);
00133 if (item)
00134 {
00135 return item->text(column);
00136 }
00137 return QString::null;
00138 }
00139
00140 void CupsListBox::insertItem(const QString& str, int index)
00141 {
00142 if (index == -1) index = count()-1;
00143 QListViewItem *after = findItemAtIndex(index);
00144 if (after)
00145 new QListViewItem(list_, after, str);
00146 else
00147 new QListViewItem(list_, str);
00148 }
00149
00150 void CupsListBox::insertItem(const QStringList& strs, int index)
00151 {
00152 if (index == -1) index = count()-1;
00153 QListViewItem *after = findItemAtIndex(index), *item;
00154 if (after)
00155 item = new QListViewItem(list_, after);
00156 else
00157 item = new QListViewItem(list_);
00158 for (uint i=0;i<strs.count();i++)
00159 item->setText(i, *(strs.at(i)));
00160 }
00161
00162 void CupsListBox::addClicked()
00163 {
00164 bool ok;
00165 QStringList strs = QInputBox::inputBox(this, i18n("Add"), addmsg_, columns_, &ok);
00166 if (ok)
00167 {
00168 insertItem(strs);
00169 }
00170
00171 }
00172
00173 void CupsListBox::removeClicked()
00174 {
00175 if (list_->currentItem() != 0)
00176 delete list_->currentItem();
00177 }
00178
00179 void CupsListBox::setAddMessage(const QString& msg, int index)
00180 {
00181 if (index >= 0 && index < (int)addmsg_.count())
00182 *(addmsg_.at(index)) = msg;
00183 else
00184 addmsg_.append(msg);
00185 }
00186
00187 int CupsListBox::count() const
00188 {
00189 return (int)(list_->childCount());
00190 }
00191 #include "cupslist.moc"
This file is part of the documentation for kdeprint Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Sep 23 17:12:53 2004 by
doxygen 1.3.8-20040913 written by
Dimitri van Heesch, © 1997-2003