summaryrefslogtreecommitdiffstats
path: root/kdeprint/cups/cupsdconf2/editlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeprint/cups/cupsdconf2/editlist.cpp')
-rw-r--r--kdeprint/cups/cupsdconf2/editlist.cpp124
1 files changed, 124 insertions, 0 deletions
diff --git a/kdeprint/cups/cupsdconf2/editlist.cpp b/kdeprint/cups/cupsdconf2/editlist.cpp
new file mode 100644
index 000000000..4c924dbb4
--- /dev/null
+++ b/kdeprint/cups/cupsdconf2/editlist.cpp
@@ -0,0 +1,124 @@
+/*
+ * This file is part of the KDE libraries
+ * Copyright (c) 2001 Michael Goffioul <kdeprint@swing.be>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * This library 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ **/
+
+#include "editlist.h"
+
+#include <klistbox.h>
+#include <kpushbutton.h>
+#include <qlayout.h>
+#include <klocale.h>
+#include <kiconloader.h>
+#include <kguiitem.h>
+
+EditList::EditList(QWidget *parent, const char *name)
+ : QWidget(parent, name)
+{
+ list_ = new KListBox(this);
+ addbtn_ = new KPushButton(KGuiItem(i18n("Add..."), "filenew"), this);
+ editbtn_ = new KPushButton(KGuiItem(i18n("Edit..."), "edit"), this);
+ delbtn_ = new KPushButton(KGuiItem(i18n("Delete"), "editdelete"), this);
+ defbtn_ = new KPushButton(KGuiItem(i18n("Default List"), "history"), this);
+
+ QGridLayout *m1 = new QGridLayout(this, 4, 2, 0, 0);
+ m1->setColStretch(0, 1);
+ m1->addMultiCellWidget(list_, 0, 3, 0, 1);
+ m1->addWidget(addbtn_, 0, 1);
+ m1->addWidget(editbtn_, 1, 1);
+ m1->addWidget(delbtn_, 2, 1);
+ m1->addWidget(defbtn_, 3, 1);
+
+ connect(addbtn_, SIGNAL(clicked()), SIGNAL(add()));
+ connect(editbtn_, SIGNAL(clicked()), SLOT(slotEdit()));
+ connect(delbtn_, SIGNAL(clicked()), SLOT(slotDelete()));
+ connect(defbtn_, SIGNAL(clicked()), SIGNAL(defaultList()));
+ connect(list_, SIGNAL(highlighted(int)), SLOT(slotSelected(int)));
+ slotSelected(-1);
+}
+
+void EditList::slotEdit()
+{
+ int index = list_->currentItem();
+ if (index >= 0)
+ emit edit(index);
+}
+
+void EditList::slotDelete()
+{
+ int index = list_->currentItem();
+ list_->removeItem(index);
+ slotSelected((list_->count() > 0 ? list_->currentItem() : -1));
+ emit deleted(index);
+}
+
+void EditList::slotSelected(int index)
+{
+ editbtn_->setEnabled(index >= 0);
+ delbtn_->setEnabled(index >= 0);
+}
+
+QString EditList::text(int index)
+{
+ return list_->text(index);
+}
+
+void EditList::setText(int index, const QString& s)
+{
+ if (list_->text(index) != s)
+ {
+ QListBoxItem *it = list_->findItem(s, Qt::ExactMatch);
+ if (!it)
+ list_->changeItem(s, index);
+ else
+ list_->removeItem(index);
+ }
+}
+
+void EditList::clear()
+{
+ list_->clear();
+ slotSelected(-1);
+}
+
+void EditList::insertItem(const QString& s)
+{
+ if (!list_->findItem(s, Qt::ExactMatch))
+ list_->insertItem(s);
+}
+
+void EditList::insertItem(const QPixmap& icon, const QString& s)
+{
+ if (!list_->findItem(s, Qt::ExactMatch))
+ list_->insertItem(icon, s);
+}
+
+void EditList::insertItems(const QStringList& l)
+{
+ for (QStringList::ConstIterator it=l.begin(); it!=l.end(); ++it)
+ insertItem(*it);
+}
+
+QStringList EditList::items()
+{
+ QStringList l;
+ for (uint i=0; i<list_->count(); i++)
+ l << list_->text(i);
+ return l;
+}
+
+#include "editlist.moc"