Browse Source

- It is now possible to rename Feed downloader filters

adaptive-webui-19844
Christophe Dumez 15 years ago
parent
commit
66e5a6672a
  1. 51
      src/FeedDownloader.h
  2. 39
      src/FeedDownloader.ui

51
src/FeedDownloader.h

@ -39,6 +39,7 @@
#include <QInputDialog> #include <QInputDialog>
#include <QMessageBox> #include <QMessageBox>
#include <QRegExp> #include <QRegExp>
#include <QMenu>
#include "bittorrent.h" #include "bittorrent.h"
#include "ui_FeedDownloader.h" #include "ui_FeedDownloader.h"
@ -173,6 +174,11 @@ public:
return FeedFilters(url, all_feeds_filters.value(url, QHash<QString, QVariant>()).toHash()); return FeedFilters(url, all_feeds_filters.value(url, QHash<QString, QVariant>()).toHash());
} }
void rename(QString old_name, QString new_name) {
Q_ASSERT(this->contains(old_name));
(*this)[new_name] = this->take(old_name);
}
void save() { void save() {
QSettings qBTRSS("qBittorrent", "qBittorrent-rss"); QSettings qBTRSS("qBittorrent", "qBittorrent-rss");
QHash<QString, QVariant> all_feeds_filters = qBTRSS.value("feed_filters", QHash<QString, QVariant>()).toHash(); QHash<QString, QVariant> all_feeds_filters = qBTRSS.value("feed_filters", QHash<QString, QVariant>()).toHash();
@ -201,6 +207,10 @@ public:
filters = FeedFilters::getFeedFilters(feed_url); filters = FeedFilters::getFeedFilters(feed_url);
// Connect Signals/Slots // Connect Signals/Slots
connect(filtersList, SIGNAL(currentItemChanged(QListWidgetItem* , QListWidgetItem *)), this, SLOT(showFilterSettings(QListWidgetItem *))); connect(filtersList, SIGNAL(currentItemChanged(QListWidgetItem* , QListWidgetItem *)), this, SLOT(showFilterSettings(QListWidgetItem *)));
connect(filtersList, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(displayFiltersListMenu(const QPoint&)));
connect(actionAdd_filter, SIGNAL(triggered()), this, SLOT(addFilter()));
connect(actionRemove_filter, SIGNAL(triggered()), this, SLOT(deleteFilter()));
connect(actionRename_filter, SIGNAL(triggered()), this, SLOT(renameFilter()));
connect(del_button, SIGNAL(clicked(bool)), this, SLOT(deleteFilter())); connect(del_button, SIGNAL(clicked(bool)), this, SLOT(deleteFilter()));
connect(add_button, SIGNAL(clicked(bool)), this, SLOT(addFilter())); connect(add_button, SIGNAL(clicked(bool)), this, SLOT(addFilter()));
connect(enableDl_cb, SIGNAL(stateChanged(int)), this, SLOT(enableFilterBox(int))); connect(enableDl_cb, SIGNAL(stateChanged(int)), this, SLOT(enableFilterBox(int)));
@ -240,6 +250,18 @@ protected slots:
} }
} }
void displayFiltersListMenu(const QPoint&) {
QMenu myFiltersListMenu(this);
if(filtersList->selectedItems().size() > 0) {
myFiltersListMenu.addAction(actionRename_filter);
myFiltersListMenu.addAction(actionRemove_filter);
} else {
myFiltersListMenu.addAction(actionAdd_filter);
}
// Call menu
myFiltersListMenu.exec(QCursor::pos());
}
void showFilterSettings(QListWidgetItem *item) { void showFilterSettings(QListWidgetItem *item) {
// First, save current filter settings // First, save current filter settings
saveCurrentFilterSettings(); saveCurrentFilterSettings();
@ -266,9 +288,9 @@ protected slots:
void deleteFilter() { void deleteFilter() {
QList<QListWidgetItem *> items = filtersList->selectedItems(); QList<QListWidgetItem *> items = filtersList->selectedItems();
if(items.size() == 1) { if(items.size() == 1) {
filters.remove(selected_filter);
selected_filter = QString::null;
QListWidgetItem * item = items.first(); QListWidgetItem * item = items.first();
filters.remove(item->text());
selected_filter = QString::null;
delete item; delete item;
// Reset Filter settings view // Reset Filter settings view
if(filters.size() == 0) { if(filters.size() == 0) {
@ -278,6 +300,30 @@ protected slots:
} }
} }
void renameFilter() {
QList<QListWidgetItem *> items = filtersList->selectedItems();
if(items.size() == 1) {
QListWidgetItem *item = items.first();
QString current_name = item->text();
QString new_name;
bool validated = false;
do {
new_name = askFilterName(current_name);
if(new_name.isNull() || new_name == current_name) return;
if(!filters.hasFilter(new_name)) {
validated = true;
} else {
QMessageBox::critical(0, tr("Invalid filter name"), tr("This filter name is already in use."));
}
}while(!validated);
// Rename the filter
filters.rename(current_name, new_name);
if(selected_filter == current_name)
selected_filter = new_name;
item->setText(new_name);
}
}
void enableFilterBox(int state) { void enableFilterBox(int state) {
if(state == Qt::Checked) { if(state == Qt::Checked) {
filtersBox->setEnabled(true); filtersBox->setEnabled(true);
@ -319,6 +365,7 @@ protected slots:
bool validated = false; bool validated = false;
do { do {
filter_name = askFilterName(); filter_name = askFilterName();
if(filter_name.isNull()) return;
if(filters.hasFilter(filter_name)) { if(filters.hasFilter(filter_name)) {
// Filter alread exists // Filter alread exists
QMessageBox::critical(0, tr("Invalid filter name"), tr("This filter name is already in use.")); QMessageBox::critical(0, tr("Invalid filter name"), tr("This filter name is already in use."));

39
src/FeedDownloader.ui

@ -116,7 +116,11 @@
</layout> </layout>
</item> </item>
<item> <item>
<widget class="QListWidget" name="filtersList"/> <widget class="QListWidget" name="filtersList">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
</widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_5"> <layout class="QHBoxLayout" name="horizontalLayout_5">
@ -450,6 +454,39 @@
</widget> </widget>
</item> </item>
</layout> </layout>
<action name="actionRename_filter">
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/Icons/oxygen/edit_clear.png</normaloff>:/Icons/oxygen/edit_clear.png</iconset>
</property>
<property name="text">
<string>Rename filter</string>
</property>
<property name="toolTip">
<string>Rename filter</string>
</property>
</action>
<action name="actionRemove_filter">
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/Icons/oxygen/list-remove.png</normaloff>:/Icons/oxygen/list-remove.png</iconset>
</property>
<property name="text">
<string>Remove filter</string>
</property>
<property name="toolTip">
<string>Remove filter</string>
</property>
</action>
<action name="actionAdd_filter">
<property name="icon">
<iconset resource="icons.qrc">
<normaloff>:/Icons/oxygen/list-add.png</normaloff>:/Icons/oxygen/list-add.png</iconset>
</property>
<property name="text">
<string>Add filter</string>
</property>
</action>
</widget> </widget>
<resources> <resources>
<include location="icons.qrc"/> <include location="icons.qrc"/>

Loading…
Cancel
Save