diff --git a/src/qtgui/viewaction.ui b/src/qtgui/viewaction.ui index 4d29bd2c..4bcecc9f 100644 --- a/src/qtgui/viewaction.ui +++ b/src/qtgui/viewaction.ui @@ -6,7 +6,7 @@ 0 0 - 632 + 635 726 @@ -82,20 +82,67 @@ + + + + + + Recoll action: + + + + + + + + 1 + 0 + + + + QFrame::Box + + + QFrame::Raised + + + current value + + + Qt::PlainText + + + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + + + + + + + Select same + + + + + - QFrame::StyledPanel + QFrame::Box - QFrame::Raised - - - 2 + QFrame::Plain + + + + <b>New Values:</b> + + + @@ -108,7 +155,7 @@ - Action (empty -> recoll default) + Action (empty -> recoll default) diff --git a/src/qtgui/viewaction_w.cpp b/src/qtgui/viewaction_w.cpp index ae7b9cbf..57be2c3f 100644 --- a/src/qtgui/viewaction_w.cpp +++ b/src/qtgui/viewaction_w.cpp @@ -40,16 +40,21 @@ using namespace std; void ViewAction::init() { + selSamePB->setEnabled(false); connect(closePB, SIGNAL(clicked()), this, SLOT(close())); connect(chgActPB, SIGNAL(clicked()), this, SLOT(editActions())); connect(actionsLV,SIGNAL(itemDoubleClicked(QTableWidgetItem *)), this, SLOT(onItemDoubleClicked(QTableWidgetItem *))); + connect(actionsLV,SIGNAL(itemClicked(QTableWidgetItem *)), + this, SLOT(onItemClicked(QTableWidgetItem *))); useDesktopCB->setChecked(prefs.useDesktopOpen); onUseDesktopCBToggled(prefs.useDesktopOpen); connect(useDesktopCB, SIGNAL(stateChanged(int)), this, SLOT(onUseDesktopCBToggled(int))); connect(setExceptCB, SIGNAL(stateChanged(int)), this, SLOT(onSetExceptCBToggled(int))); + connect(selSamePB, SIGNAL(clicked()), + this, SLOT(onSelSameClicked())); resize(QSize(640, 480).expandedTo(minimumSizeHint())); } @@ -67,6 +72,7 @@ void ViewAction::onSetExceptCBToggled(int onoff) void ViewAction::fillLists() { + currentLBL->clear(); actionsLV->clear(); actionsLV->verticalHeader()->setDefaultSectionSize(20); vector > defs; @@ -111,6 +117,51 @@ void ViewAction::selectMT(const QString& mt) } } +void ViewAction::onSelSameClicked() +{ + fprintf(stderr, "onSelSameClicked()\n"); + actionsLV->clearSelection(); + QString value = currentLBL->text(); + if (value.isEmpty()) + return; + string action = qs2utf8s(value); + fprintf(stderr, "value: %s\n", action.c_str()); + vector > defs; + theconfig->getMimeViewerDefs(defs); + for (unsigned int i = 0; i < defs.size(); i++) { + if (defs[i].second == action) { + QListitems = + actionsLV->findItems(QString::fromAscii(defs[i].first.c_str()), + Qt::MatchFixedString|Qt::MatchCaseSensitive); + for (QList::iterator it = items.begin(); + it != items.end(); it++) { + (*it)->setSelected(true); + QTableWidgetItem *item1 = actionsLV->item((*it)->row(), 1); + item1->setSelected(true); + } + } + } +} + +// Fill the input fields with the row's values when the user clicks +void ViewAction::onItemClicked(QTableWidgetItem * item) +{ + QTableWidgetItem *item0 = actionsLV->item(item->row(), 0); + string mtype = (const char *)item0->text().toLocal8Bit(); + + vector > defs; + theconfig->getMimeViewerDefs(defs); + for (unsigned int i = 0; i < defs.size(); i++) { + if (defs[i].first == mtype) { + currentLBL->setText(QString::fromAscii(defs[i].second.c_str())); + selSamePB->setEnabled(true); + return; + } + } + currentLBL->clear(); + selSamePB->setEnabled(false); +} + void ViewAction::onItemDoubleClicked(QTableWidgetItem * item) { actionsLV->clearSelection(); diff --git a/src/qtgui/viewaction_w.h b/src/qtgui/viewaction_w.h index e3cae77d..31e292c0 100644 --- a/src/qtgui/viewaction_w.h +++ b/src/qtgui/viewaction_w.h @@ -42,9 +42,11 @@ public: public slots: virtual void editActions(); + virtual void onItemClicked(QTableWidgetItem *); virtual void onItemDoubleClicked(QTableWidgetItem *); virtual void onUseDesktopCBToggled(int); virtual void onSetExceptCBToggled(int); + virtual void onSelSameClicked(); private: virtual void init(); virtual void fillLists(); diff --git a/website/BUGS.html b/website/BUGS.html index 40062bff..5f7ed3e7 100644 --- a/website/BUGS.html +++ b/website/BUGS.html @@ -44,8 +44,16 @@ versions.

Preferences->Query configuration->User interface and erase the result paragraph format string (^A DEL in the text area), this will reset the string to the default value. + +
  • A release 1.19 change in the way we handle minus characters + ('-') broke support for wildcard character ranges (e.g.: [a-z]). + A fix would be relatively complicated, so please speak up if you + need it because I won't probably do it without further + motivation.
  • +
  • Real time indexer: when running with gamin on FreeBSD, the indexer can deadlock in the gamin dialog in some cases.
  • +
  • After an upgrade, the recoll GUI sometimes crashes on startup. This is fixed by removing (back it up just in case) ~/.config/Recoll.org/recoll.conf, the QSettings storage for recoll.