diff options
Diffstat (limited to 'tdeprint/cups/cupsdconf2/qdirmultilineedit.cpp')
-rw-r--r-- | tdeprint/cups/cupsdconf2/qdirmultilineedit.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/tdeprint/cups/cupsdconf2/qdirmultilineedit.cpp b/tdeprint/cups/cupsdconf2/qdirmultilineedit.cpp new file mode 100644 index 000000000..e677da988 --- /dev/null +++ b/tdeprint/cups/cupsdconf2/qdirmultilineedit.cpp @@ -0,0 +1,109 @@ +/* + * This file is part of the KDE libraries + * Copyright (c) 2001-2002 Michael Goffioul <tdeprint@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 "qdirmultilineedit.h" + +#include <tqlayout.h> +#include <tqheader.h> +#include <tqpushbutton.h> +#include <klistview.h> +#include <klocale.h> +#include <kfiledialog.h> +#include <kiconloader.h> + +QDirMultiLineEdit::QDirMultiLineEdit(TQWidget *parent, const char *name) +: TQWidget(parent, name) +{ + m_view = new KListView(this); + m_view->header()->hide(); + m_view->addColumn(""); + m_view->setFullWidth(true); + connect(m_view, TQT_SIGNAL(selectionChanged(TQListViewItem*)), TQT_SLOT(slotSelected(TQListViewItem*))); + + m_add = new TQPushButton(this); + m_add->setPixmap(SmallIcon("folder_new")); + connect(m_add, TQT_SIGNAL(clicked()), TQT_SLOT(slotAddClicked())); + m_remove = new TQPushButton(this); + m_remove->setPixmap(SmallIcon("editdelete")); + connect(m_remove, TQT_SIGNAL(clicked()), TQT_SLOT(slotRemoveClicked())); + m_remove->setEnabled(false); + + m_view->setFixedHeight(TQMAX(m_view->fontMetrics().lineSpacing()*3+m_view->lineWidth()*2, m_add->tqsizeHint().height()*2)); + + TQHBoxLayout *l0 = new TQHBoxLayout(this, 0, 3); + TQVBoxLayout *l1 = new TQVBoxLayout(0, 0, 0); + l0->addWidget(m_view); + l0->addLayout(l1); + l1->addWidget(m_add); + l1->addWidget(m_remove); + l1->addStretch(1); +} + +QDirMultiLineEdit::~QDirMultiLineEdit() +{ +} + +void QDirMultiLineEdit::setURLs(const TQStringList& urls) +{ + m_view->clear(); + for (TQStringList::ConstIterator it=urls.begin(); it!=urls.end(); ++it) + addURL(*it); +} + +TQStringList QDirMultiLineEdit::urls() +{ + TQListViewItem *item = m_view->firstChild(); + TQStringList l; + while (item) + { + l << item->text(0); + item = item->nextSibling(); + } + return l; +} + +void QDirMultiLineEdit::addURL(const TQString& url) +{ + TQListViewItem *item = new TQListViewItem(m_view, url); + item->setRenameEnabled(0, true); +} + +void QDirMultiLineEdit::slotAddClicked() +{ + TQString dirname = KFileDialog::getExistingDirectory(TQString::null, this); + if (!dirname.isEmpty()) + addURL(dirname); +} + +void QDirMultiLineEdit::slotRemoveClicked() +{ + TQListViewItem *item = m_view->currentItem(); + if (item) + { + delete item; + slotSelected(m_view->currentItem()); + } +} + +void QDirMultiLineEdit::slotSelected(TQListViewItem *item) +{ + m_remove->setEnabled((item != NULL)); +} + +#include "qdirmultilineedit.moc" |