mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-05 11:24:15 +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 <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."));
|
||||||
|
@ -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…
x
Reference in New Issue
Block a user