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"