--- a/src/qtgui/uiprefs_w.cpp
+++ b/src/qtgui/uiprefs_w.cpp
@@ -1,5 +1,5 @@
#ifndef lint
-static char rcsid[] = "@(#$Id: uiprefs_w.cpp,v 1.13 2006-12-14 13:53:43 dockes Exp $ (C) 2005 J.F.Dockes";
+static char rcsid[] = "@(#$Id: uiprefs_w.cpp,v 1.14 2007-01-13 15:21:41 dockes Exp $ (C) 2005 J.F.Dockes";
#endif
/*
* This program is free software; you can redistribute it and/or modify
@@ -37,13 +37,17 @@
#include <qcombobox.h>
#if QT_VERSION < 0x040000
#include <qlistbox.h>
+#include <qlistview.h>
#include <qfiledialog.h>
#else
#include <q3listbox.h>
+#include <q3listview.h>
#include <q3filedialog.h>
-#define QListBox Q3ListBox
-#define QListBoxItem Q3ListBoxItem
+#include <
+#define QListView Q3ListView
+#define QCheckListItem Q3CheckListItem
#define QFileDialog Q3FileDialog
+#define QListViewItemIterator Q3ListViewItemIterator
#endif
#include <qlayout.h>
#include <qtooltip.h>
@@ -67,16 +71,24 @@
connect(resetFontPB, SIGNAL(clicked()), this, SLOT(resetReslistFont()));
connect(extraDbLE,SIGNAL(textChanged(const QString&)), this,
SLOT(extraDbTextChanged(const QString&)));
- connect(addAADbPB, SIGNAL(clicked()), this, SLOT(addAADbPB_clicked()));
- connect(addADbPB, SIGNAL(clicked()), this, SLOT(addADbPB_clicked()));
- connect(delADbPB, SIGNAL(clicked()), this, SLOT(delADbPB_clicked()));
- connect(delAADbPB, SIGNAL(clicked()), this, SLOT(delAADbPB_clicked()));
- connect(addExtraDbPB, SIGNAL(clicked()), this, SLOT(addExtraDbPB_clicked()));
+
+ connect(addExtraDbPB, SIGNAL(clicked()),
+ this, SLOT(addExtraDbPB_clicked()));
+ connect(delExtraDbPB, SIGNAL(clicked()),
+ this, SLOT(delExtraDbPB_clicked()));
+ connect(togExtraDbPB, SIGNAL(clicked()),
+ this, SLOT(togExtraDbPB_clicked()));
+ connect(actAllExtraDbPB, SIGNAL(clicked()),
+ this, SLOT(actAllExtraDbPB_clicked()));
+ connect(unacAllExtraDbPB, SIGNAL(clicked()),
+ this, SLOT(unacAllExtraDbPB_clicked()));
+
connect(browseDbPB, SIGNAL(clicked()), this, SLOT(browseDbPB_clicked()));
connect(buttonOk, SIGNAL(clicked()), this, SLOT(accept()));
connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
connect(buildAbsCB, SIGNAL(toggled(bool)),
replAbsCB, SLOT(setEnabled(bool)));
+
setFromPrefs();
}
@@ -138,21 +150,22 @@
replAbsCB->setChecked(prefs.queryReplaceAbstract);
// Initialize the extra indexes listboxes
- QStringList ql;
+ idxLV->clear();
for (list<string>::iterator it = prefs.allExtraDbs.begin();
it != prefs.allExtraDbs.end(); it++) {
- ql.append(QString::fromLocal8Bit(it->c_str()));
- }
- allDbsLB->clear();
- allDbsLB->insertStringList(ql);
- ql.clear();
+ QCheckListItem *item =
+ new QCheckListItem(idxLV, QString::fromLocal8Bit(it->c_str()),
+ QCheckListItem::CheckBox);
+ if (item) item->setOn(false);
+ }
for (list<string>::iterator it = prefs.activeExtraDbs.begin();
it != prefs.activeExtraDbs.end(); it++) {
- ql.append(QString::fromLocal8Bit(it->c_str()));
- }
- actDbsLB->clear();
- actDbsLB->insertStringList(ql);
- ql.clear();
+ QCheckListItem *item;
+ if ((item = (QCheckListItem *)
+ idxLV->findItem (QString::fromLocal8Bit(it->c_str()), 0))) {
+ item->setOn(true);
+ }
+ }
}
void UIPrefsDialog::accept()
@@ -183,19 +196,18 @@
prefs.syntAbsLen = syntlenSB->value();
prefs.syntAbsCtx = syntctxSB->value();
+ QListViewItemIterator it(idxLV);
+ prefs.allExtraDbs.clear();
prefs.activeExtraDbs.clear();
- for (unsigned int i = 0; i < actDbsLB->count(); i++) {
- QListBoxItem *item = actDbsLB->item(i);
- if (item)
- prefs.activeExtraDbs.push_back((const char *)item->text().local8Bit());
- }
- prefs.allExtraDbs.clear();
- for (unsigned int i = 0; i < allDbsLB->count(); i++) {
- QListBoxItem *item = allDbsLB->item(i);
- if (item)
- prefs.allExtraDbs.push_back((const char *)item->text().local8Bit());
- }
-
+ while (it.current()) {
+ QCheckListItem *item = (QCheckListItem *)it.current();
+ prefs.allExtraDbs.push_back((const char *)item->text().local8Bit());
+ if (item->isOn()) {
+ prefs.activeExtraDbs.push_back((const char *)
+ item->text().local8Bit());
+ }
+ ++it;
+ }
rwSettings(true);
string reason;
@@ -203,6 +215,7 @@
emit uiprefsDone();
QDialog::accept();
}
+
void UIPrefsDialog::reject()
{
setFromPrefs();
@@ -236,7 +249,6 @@
}
}
-
void UIPrefsDialog::resetReslistFont()
{
reslistFontFamily = "";
@@ -272,75 +284,34 @@
// External / extra search indexes setup
// TBD: a way to remove entry from 'all' list (del button?)
-void UIPrefsDialog::extraDbTextChanged(const QString &text)
-{
- if (text.isEmpty()) {
- addExtraDbPB->setEnabled(false);
- } else {
- addExtraDbPB->setEnabled(true);
- }
-}
-
-/**
- * Add the selected extra dbs to the active list
- */
-void UIPrefsDialog::addADbPB_clicked()
-{
- for (unsigned int i = 0; i < allDbsLB->count();i++) {
- QListBoxItem *item = allDbsLB->item(i);
- if (item && item->isSelected()) {
- allDbsLB->setSelected(i, false);
- if (!actDbsLB->findItem(item->text(),
-#if QT_VERSION < 0x040000
- Qt::CaseSensitive|Qt::ExactMatch
-#else
- Q3ListBox::CaseSensitive|Q3ListBox::ExactMatch
-#endif
- )) {
- actDbsLB->insertItem(item->text());
- }
- }
- }
- actDbsLB->sort();
-}
-
-/**
- * Make all extra dbs active
- */
-void UIPrefsDialog::addAADbPB_clicked()
-{
- for (unsigned int i = 0; i < allDbsLB->count();i++) {
- allDbsLB->setSelected(i, true);
- }
- addADbPB_clicked();
-}
-
-/**
- * Remove the selected entries from the list of active extra search dbs
- */
-void UIPrefsDialog::delADbPB_clicked()
-{
- list<int> rmi;
- for (unsigned int i = 0; i < actDbsLB->count(); i++) {
- QListBoxItem *item = actDbsLB->item(i);
- if (item && item->isSelected()) {
- rmi.push_front(i);
- }
- }
- for (list<int>::iterator ii = rmi.begin(); ii != rmi.end(); ii++) {
- actDbsLB->removeItem(*ii);
- }
-}
-
-/**
- * Remove all extra search indexes from the active list
- */
-void UIPrefsDialog::delAADbPB_clicked()
-{
- for (unsigned int i = 0; i < actDbsLB->count(); i++) {
- actDbsLB->setSelected(i, true);
- }
- delADbPB_clicked();
+void UIPrefsDialog::togExtraDbPB_clicked()
+{
+ QListViewItemIterator it(idxLV);
+ while (it.current()) {
+ QCheckListItem *item = (QCheckListItem *)it.current();
+ if (item->isSelected()) {
+ item->setOn(!item->isOn());
+ }
+ ++it;
+ }
+}
+void UIPrefsDialog::actAllExtraDbPB_clicked()
+{
+ QListViewItemIterator it(idxLV);
+ while (it.current()) {
+ QCheckListItem *item = (QCheckListItem *)it.current();
+ item->setOn(true);
+ ++it;
+ }
+}
+void UIPrefsDialog::unacAllExtraDbPB_clicked()
+{
+ QListViewItemIterator it(idxLV);
+ while (it.current()) {
+ QCheckListItem *item = (QCheckListItem *)it.current();
+ item->setOn(false);
+ ++it;
+ }
}
/**
@@ -370,19 +341,44 @@
tr("This is the main/local index!"));
return;
}
- if (allDbsLB->findItem(extraDbLE->text(),
+ if (idxLV->findItem(extraDbLE->text(),
#if QT_VERSION < 0x040000
Qt::CaseSensitive|Qt::ExactMatch
#else
- Q3ListBox::CaseSensitive|Q3ListBox::ExactMatch
+ Q3ListView::CaseSensitive|Q3ListView::ExactMatch
#endif
)) {
QMessageBox::warning(0, "Recoll",
tr("The selected directory is already in the index list"));
return;
}
- allDbsLB->insertItem(extraDbLE->text());
- allDbsLB->sort();
+ new QCheckListItem(idxLV, extraDbLE->text(), QCheckListItem::CheckBox);
+ idxLV->sort();
+}
+
+void UIPrefsDialog::delExtraDbPB_clicked()
+{
+ list<QCheckListItem*> dlt;
+ QListViewItemIterator it(idxLV);
+ while (it.current()) {
+ QCheckListItem *item = (QCheckListItem *)it.current();
+ if (item->isSelected()) {
+ dlt.push_back(item);
+ }
+ ++it;
+ }
+ for (list<QCheckListItem*>::iterator it = dlt.begin();
+ it != dlt.end(); it++)
+ delete *it;
+}
+
+void UIPrefsDialog::extraDbTextChanged(const QString &text)
+{
+ if (text.isEmpty()) {
+ addExtraDbPB->setEnabled(false);
+ } else {
+ addExtraDbPB->setEnabled(true);
+ }
}
void UIPrefsDialog::browseDbPB_clicked()