summaryrefslogtreecommitdiffstats
path: root/kpilot/dbSelectionDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kpilot/dbSelectionDialog.cpp')
-rw-r--r--kpilot/dbSelectionDialog.cpp144
1 files changed, 144 insertions, 0 deletions
diff --git a/kpilot/dbSelectionDialog.cpp b/kpilot/dbSelectionDialog.cpp
new file mode 100644
index 0000000..ed99c9b
--- /dev/null
+++ b/kpilot/dbSelectionDialog.cpp
@@ -0,0 +1,144 @@
+/* KPilot
+**
+** Copyright (C) 2003 Reinhold Kainhofer <reinhold@kainhofer.com>
+**
+** This file defines a dialog box that lets the
+** user select a set of databases (e.g. which databases
+** should be ignored when doing a backup)
+*/
+
+/*
+** This program is free software; you can redistribute it and/or modify
+** it under the terms of the GNU General Public License as published by
+** the Free Software Foundation; either version 2 of the License, or
+** (at your option) any later version.
+**
+** This program 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 General Public License for more details.
+**
+** You should have received a copy of the GNU General Public License
+** along with this program in a file called COPYING; if not, write to
+** the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+** MA 02110-1301, USA.
+*/
+
+/*
+** Bug reports and questions can be sent to kde-pim@kde.org
+*/
+
+#include "options.h"
+
+#include <tqlistview.h>
+#include <tqpushbutton.h>
+#include <tdelistview.h>
+#include <tdemessagebox.h>
+#include <kpushbutton.h>
+#include <klineedit.h>
+
+#include "dbSelection_base.h"
+#include "dbSelectionDialog.moc"
+
+
+KPilotDBSelectionDialog::KPilotDBSelectionDialog(TQStringList &selectedDBs, TQStringList &deviceDBs,
+ TQStringList &addedDBs, TQWidget *w, const char *n) :
+ KDialogBase(w, n, true, TQString(), KDialogBase::Ok | KDialogBase::Cancel,
+ KDialogBase::Ok, false),
+ fSelectedDBs(selectedDBs),
+ fAddedDBs(addedDBs),
+ fDeviceDBs(deviceDBs)
+{
+ FUNCTIONSETUP;
+
+ fSelectionWidget = new KPilotDBSelectionWidget(this);
+ setMainWidget(fSelectionWidget);
+
+ // Fill the encodings list
+ TQStringList items(deviceDBs);
+ for ( TQStringList::Iterator it = fAddedDBs.begin(); it != fAddedDBs.end(); ++it ) {
+ if (items.contains(*it)==0) items << (*it);
+ }
+ for ( TQStringList::Iterator it = fSelectedDBs.begin(); it != fSelectedDBs.end(); ++it ) {
+ if (items.contains(*it)==0) items << (*it);
+ }
+ items.sort();
+
+ for ( TQStringList::Iterator it = items.begin(); it != items.end(); ++it ) {
+ TQCheckListItem*checkitem=new TQCheckListItem(fSelectionWidget->fDatabaseList,
+ *it, TQCheckListItem::CheckBox);
+ if (fSelectedDBs.contains(*it)) checkitem->setOn(true);
+ }
+
+ connect(fSelectionWidget->fNameEdit, TQT_SIGNAL(textChanged( const TQString & )),
+ this, TQT_SLOT(slotTextChanged( const TQString &)));
+ connect(fSelectionWidget->fAddButton, TQT_SIGNAL(clicked()),
+ this, TQT_SLOT(addDB()));
+ connect(fSelectionWidget->fRemoveButton, TQT_SIGNAL(clicked()),
+ this, TQT_SLOT(removeDB()));
+}
+
+KPilotDBSelectionDialog::~KPilotDBSelectionDialog()
+{
+ FUNCTIONSETUP;
+}
+
+void KPilotDBSelectionDialog::addDB()
+{
+ FUNCTIONSETUP;
+ TQString dbname(fSelectionWidget->fNameEdit->text());
+ if (!dbname.isEmpty())
+ {
+ fSelectionWidget->fNameEdit->clear();
+ new TQCheckListItem(fSelectionWidget->fDatabaseList, dbname,
+ TQCheckListItem::CheckBox);
+ fAddedDBs << dbname;
+ }
+}
+
+void KPilotDBSelectionDialog::removeDB()
+{
+ FUNCTIONSETUP;
+ TQListViewItem*item(fSelectionWidget->fDatabaseList->selectedItem());
+ if (item)
+ {
+ TQString dbname=item->text(0);
+ if (fDeviceDBs.contains(dbname))
+ {
+ KMessageBox::error(this, i18n("This is a database that exists on the device. It was not added manually, so it can not removed from the list."), i18n("Database on Device"));
+ }
+ else
+ {
+ fSelectedDBs.remove(dbname);
+ fAddedDBs.remove(dbname);
+ KPILOT_DELETE(item);
+ }
+ }
+ else
+ {
+ KMessageBox::information(this, i18n("You need to select a database to delete in the list."),i18n("No Database Selected"), CSL1("NoDBSelected"));
+ }
+}
+
+TQStringList KPilotDBSelectionDialog::getSelectedDBs()
+{
+ fSelectedDBs.clear();
+
+ // update the list of selected databases
+ TQListViewItemIterator it( fSelectionWidget->fDatabaseList );
+ while ( it.current() ) {
+ TQCheckListItem *item = dynamic_cast<TQCheckListItem*>(it.current());
+ ++it;
+
+ if ( item && item->isOn() )
+ fSelectedDBs << item->text();
+ }
+
+ return fSelectedDBs;
+}
+
+void KPilotDBSelectionDialog::slotTextChanged( const TQString& dbname)
+{
+ FUNCTIONSETUP;
+ fSelectionWidget->fAddButton->setDisabled(dbname.isEmpty());
+}