mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-27 15:04:36 +00:00
- It is now possible to rename Feed downloader filters
This commit is contained in:
parent
c35500dd29
commit
66e5a6672a
@ -39,6 +39,7 @@
|
||||
#include <QInputDialog>
|
||||
#include <QMessageBox>
|
||||
#include <QRegExp>
|
||||
#include <QMenu>
|
||||
|
||||
#include "bittorrent.h"
|
||||
#include "ui_FeedDownloader.h"
|
||||
@ -173,6 +174,11 @@ public:
|
||||
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() {
|
||||
QSettings qBTRSS("qBittorrent", "qBittorrent-rss");
|
||||
QHash<QString, QVariant> all_feeds_filters = qBTRSS.value("feed_filters", QHash<QString, QVariant>()).toHash();
|
||||
@ -201,6 +207,10 @@ public:
|
||||
filters = FeedFilters::getFeedFilters(feed_url);
|
||||
// Connect Signals/Slots
|
||||
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(add_button, SIGNAL(clicked(bool)), this, SLOT(addFilter()));
|
||||
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) {
|
||||
// First, save current filter settings
|
||||
saveCurrentFilterSettings();
|
||||
@ -266,9 +288,9 @@ protected slots:
|
||||
void deleteFilter() {
|
||||
QList<QListWidgetItem *> items = filtersList->selectedItems();
|
||||
if(items.size() == 1) {
|
||||
filters.remove(selected_filter);
|
||||
selected_filter = QString::null;
|
||||
QListWidgetItem * item = items.first();
|
||||
filters.remove(item->text());
|
||||
selected_filter = QString::null;
|
||||
delete item;
|
||||
// Reset Filter settings view
|
||||
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) {
|
||||
if(state == Qt::Checked) {
|
||||
filtersBox->setEnabled(true);
|
||||
@ -319,6 +365,7 @@ protected slots:
|
||||
bool validated = false;
|
||||
do {
|
||||
filter_name = askFilterName();
|
||||
if(filter_name.isNull()) return;
|
||||
if(filters.hasFilter(filter_name)) {
|
||||
// Filter alread exists
|
||||
QMessageBox::critical(0, tr("Invalid filter name"), tr("This filter name is already in use."));
|
||||
|
@ -116,7 +116,11 @@
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QListWidget" name="filtersList"/>
|
||||
<widget class="QListWidget" name="filtersList">
|
||||
<property name="contextMenuPolicy">
|
||||
<enum>Qt::CustomContextMenu</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_5">
|
||||
@ -450,6 +454,39 @@
|
||||
</widget>
|
||||
</item>
|
||||
</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>
|
||||
<resources>
|
||||
<include location="icons.qrc"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user