Browse Source

- FEATURE: RSS can now be disabled from program preferences

- COSMETIC: RSS Tab is now hidden as a default
adaptive-webui-19844
Christophe Dumez 17 years ago
parent
commit
4c5f349f49
  1. 2
      Changelog
  2. 40
      src/GUI.cpp
  3. 1
      src/GUI.h
  4. 241
      src/options.ui
  5. 31
      src/options_imp.cpp
  6. 2
      src/options_imp.h

2
Changelog

@ -1,7 +1,9 @@
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.2.0 * Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.2.0
- FEATURE: DHT is always ON (no longer used as fallback) - FEATURE: DHT is always ON (no longer used as fallback)
- FEATURE: The number of DHT nodes is displayed - FEATURE: The number of DHT nodes is displayed
- FEATURE: RSS can now be disabled from program preferences
- COSMETIC: Transfer speed, ratio and DHT nodes are displayed in status bar - COSMETIC: Transfer speed, ratio and DHT nodes are displayed in status bar
- COSMETIC: RSS Tab is now hidden as a default
* Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.1.0 * Unknown - Christophe Dumez <chris@qbittorrent.org> - v1.1.0
- FEATURE: Web interface to control qbittorrent (Ishan Arora) - FEATURE: Web interface to control qbittorrent (Ishan Arora)

40
src/GUI.cpp

@ -147,8 +147,14 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
tabs->addTab(finishedTorrentTab, tr("Finished") + QString::fromUtf8(" (0/0)")); tabs->addTab(finishedTorrentTab, tr("Finished") + QString::fromUtf8(" (0/0)"));
tabs->setTabIcon(1, QIcon(QString::fromUtf8(":/Icons/skin/seeding.png"))); tabs->setTabIcon(1, QIcon(QString::fromUtf8(":/Icons/skin/seeding.png")));
connect(finishedTorrentTab, SIGNAL(torrentDoubleClicked(QString, bool)), this, SLOT(torrentDoubleClicked(QString, bool))); connect(finishedTorrentTab, SIGNAL(torrentDoubleClicked(QString, bool)), this, SLOT(torrentDoubleClicked(QString, bool)));
connect(finishedTorrentTab, SIGNAL(finishedTorrentsNumberChanged(unsigned int)), this, SLOT(updateFinishedTorrentNumber(unsigned int))); connect(finishedTorrentTab, SIGNAL(finishedTorrentsNumberChanged(unsigned int)), this, SLOT(updateFinishedTorrentNumber(unsigned int)));
// Search engine tab
searchEngine = new SearchEngine(BTSession, myTrayIcon, systrayIntegration);
tabs->addTab(searchEngine, tr("Search"));
tabs->setTabIcon(2, QIcon(QString::fromUtf8(":/Icons/skin/search.png")));
readSettings();
// RSS Tab
rssWidget = 0;
// Smooth torrent switching between tabs Downloading <--> Finished // Smooth torrent switching between tabs Downloading <--> Finished
connect(downloadingTorrentTab, SIGNAL(torrentFinished(QString)), finishedTorrentTab, SLOT(addTorrent(QString))); connect(downloadingTorrentTab, SIGNAL(torrentFinished(QString)), finishedTorrentTab, SLOT(addTorrent(QString)));
connect(finishedTorrentTab, SIGNAL(torrentMovedFromFinishedList(QString)), downloadingTorrentTab, SLOT(addTorrent(QString))); connect(finishedTorrentTab, SIGNAL(torrentMovedFromFinishedList(QString)), downloadingTorrentTab, SLOT(addTorrent(QString)));
@ -160,15 +166,6 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis
configureSession(true); configureSession(true);
// Resume unfinished torrents // Resume unfinished torrents
BTSession->resumeUnfinishedTorrents(); BTSession->resumeUnfinishedTorrents();
// Search engine tab
searchEngine = new SearchEngine(BTSession, myTrayIcon, systrayIntegration);
tabs->addTab(searchEngine, tr("Search"));
tabs->setTabIcon(2, QIcon(QString::fromUtf8(":/Icons/skin/search.png")));
// RSS tab
rssWidget = new RSSImp();
tabs->addTab(rssWidget, tr("RSS"));
tabs->setTabIcon(3, QIcon(QString::fromUtf8(":/Icons/rss32.png")));
readSettings();
// Add torrent given on command line // Add torrent given on command line
processParams(torrentCmdLine); processParams(torrentCmdLine);
// Initialize Web UI // Initialize Web UI
@ -241,7 +238,8 @@ GUI::~GUI() {
delete statusSep1; delete statusSep1;
delete statusSep2; delete statusSep2;
delete statusSep3; delete statusSep3;
delete rssWidget; if(rssWidget != 0)
delete rssWidget;
delete searchEngine; delete searchEngine;
delete refresher; delete refresher;
delete downloadingTorrentTab; delete downloadingTorrentTab;
@ -274,6 +272,20 @@ GUI::~GUI() {
qDebug("5"); qDebug("5");
} }
void GUI::displayRSSTab(bool enable) {
if(enable) {
// RSS tab
rssWidget = new RSSImp();
tabs->addTab(rssWidget, tr("RSS"));
tabs->setTabIcon(3, QIcon(QString::fromUtf8(":/Icons/rss32.png")));
} else {
if(rssWidget != 0) {
delete rssWidget;
rssWidget = 0;
}
}
}
void GUI::updateRatio() { void GUI::updateRatio() {
// Update ratio info // Update ratio info
float ratio = 1.; float ratio = 1.;
@ -1092,6 +1104,12 @@ void GUI::configureSession(bool deleteOptions) {
BTSession->disableIPFilter(); BTSession->disableIPFilter();
downloadingTorrentTab->setBottomTabEnabled(1, false); downloadingTorrentTab->setBottomTabEnabled(1, false);
} }
// RSS
if(options->isRSSEnabled()) {
displayRSSTab(true);
} else {
displayRSSTab(false);
}
// Clean up // Clean up
if(deleteOptions) { if(deleteOptions) {
delete options; delete options;

1
src/GUI.h

@ -179,6 +179,7 @@ class GUI : public QMainWindow, private Ui::MainWindow{
protected: protected:
void closeEvent(QCloseEvent *); void closeEvent(QCloseEvent *);
void hideEvent(QHideEvent *); void hideEvent(QHideEvent *);
void displayRSSTab(bool enable);
public: public:
// Construct / Destruct // Construct / Destruct

241
src/options.ui

@ -1562,7 +1562,7 @@
<iconset resource="icons.qrc" > <iconset resource="icons.qrc" >
<normaloff>:/Icons/configure.png</normaloff>:/Icons/configure.png</iconset> <normaloff>:/Icons/configure.png</normaloff>:/Icons/configure.png</iconset>
</attribute> </attribute>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout" name="verticalLayout_7" >
<item> <item>
<widget class="QGroupBox" name="filterBox" > <widget class="QGroupBox" name="filterBox" >
<property name="enabled" > <property name="enabled" >
@ -1622,117 +1622,136 @@
<property name="title" > <property name="title" >
<string>RSS</string> <string>RSS</string>
</property> </property>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout" name="verticalLayout_6" >
<item> <item>
<layout class="QHBoxLayout" > <widget class="QCheckBox" name="checkEnableRSS" >
<item> <property name="text" >
<widget class="QLabel" name="label_4" > <string>Enable RSS support</string>
<property name="minimumSize" > </property>
<size> </widget>
<width>48</width> </item>
<height>48</height> <item>
</size> <widget class="QGroupBox" name="groupRSSSettings" >
</property> <property name="enabled" >
<property name="maximumSize" > <bool>false</bool>
<size> </property>
<width>48</width> <property name="title" >
<height>48</height> <string>RSS settings</string>
</size> </property>
</property> <layout class="QVBoxLayout" name="verticalLayout_5" >
<property name="text" > <item>
<string/> <layout class="QHBoxLayout" >
</property> <item>
<property name="pixmap" > <widget class="QLabel" name="label_4" >
<pixmap resource="icons.qrc" >:/Icons/rss32.png</pixmap> <property name="minimumSize" >
</property> <size>
<property name="scaledContents" > <width>48</width>
<bool>true</bool> <height>48</height>
</property> </size>
</widget> </property>
</item> <property name="maximumSize" >
<item> <size>
<layout class="QVBoxLayout" > <width>48</width>
<item> <height>48</height>
<layout class="QHBoxLayout" > </size>
<item> </property>
<widget class="QLabel" name="label" > <property name="text" >
<property name="text" > <string/>
<string>RSS feeds refresh interval:</string> </property>
</property> <property name="pixmap" >
</widget> <pixmap resource="icons.qrc" >:/Icons/rss32.png</pixmap>
</item> </property>
<item> <property name="scaledContents" >
<widget class="QSpinBox" name="spinRSSRefresh" > <bool>true</bool>
<property name="minimum" > </property>
<number>1</number> </widget>
</property> </item>
<property name="maximum" > <item>
<number>999999</number> <layout class="QVBoxLayout" >
</property> <item>
<property name="value" > <layout class="QHBoxLayout" >
<number>5</number> <item>
</property> <widget class="QLabel" name="label" >
</widget> <property name="text" >
</item> <string>RSS feeds refresh interval:</string>
<item> </property>
<widget class="QLabel" name="label_2" > </widget>
<property name="text" > </item>
<string>minutes</string> <item>
</property> <widget class="QSpinBox" name="spinRSSRefresh" >
</widget> <property name="minimum" >
</item> <number>1</number>
<item> </property>
<spacer> <property name="maximum" >
<property name="orientation" > <number>999999</number>
<enum>Qt::Horizontal</enum> </property>
</property> <property name="value" >
<property name="sizeHint" stdset="0" > <number>5</number>
<size> </property>
<width>40</width> </widget>
<height>20</height> </item>
</size> <item>
</property> <widget class="QLabel" name="label_2" >
</spacer> <property name="text" >
</item> <string>minutes</string>
</layout> </property>
</item> </widget>
<item> </item>
<layout class="QHBoxLayout" > <item>
<item> <spacer>
<widget class="QLabel" name="label_3" > <property name="orientation" >
<property name="text" > <enum>Qt::Horizontal</enum>
<string>Maximum number of articles per feed:</string> </property>
</property> <property name="sizeHint" stdset="0" >
</widget> <size>
</item> <width>40</width>
<item> <height>20</height>
<widget class="QSpinBox" name="spinRSSMaxArticlesPerFeed" > </size>
<property name="maximum" > </property>
<number>9999</number> </spacer>
</property> </item>
<property name="value" > </layout>
<number>50</number> </item>
</property> <item>
</widget> <layout class="QHBoxLayout" >
</item> <item>
<item> <widget class="QLabel" name="label_3" >
<spacer> <property name="text" >
<property name="orientation" > <string>Maximum number of articles per feed:</string>
<enum>Qt::Horizontal</enum> </property>
</property> </widget>
<property name="sizeHint" stdset="0" > </item>
<size> <item>
<width>40</width> <widget class="QSpinBox" name="spinRSSMaxArticlesPerFeed" >
<height>20</height> <property name="maximum" >
</size> <number>9999</number>
</property> </property>
</spacer> <property name="value" >
</item> <number>50</number>
</layout> </property>
</item> </widget>
</layout> </item>
</item> <item>
</layout> <spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item> </item>
</layout> </layout>
</widget> </widget>

31
src/options_imp.cpp

@ -140,8 +140,9 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){
connect(checkMaxUploadsPerTorrent, SIGNAL(stateChanged(int)), this, SLOT(enableMaxUploadsLimitPerTorrent(int))); connect(checkMaxUploadsPerTorrent, SIGNAL(stateChanged(int)), this, SLOT(enableMaxUploadsLimitPerTorrent(int)));
connect(checkRatioLimit, SIGNAL(stateChanged(int)), this, SLOT(enableShareRatio(int))); connect(checkRatioLimit, SIGNAL(stateChanged(int)), this, SLOT(enableShareRatio(int)));
connect(checkRatioRemove, SIGNAL(stateChanged(int)), this, SLOT(enableDeleteRatio(int))); connect(checkRatioRemove, SIGNAL(stateChanged(int)), this, SLOT(enableDeleteRatio(int)));
// IP Filter tab // Misc tab
connect(checkIPFilter, SIGNAL(stateChanged(int)), this, SLOT(enableFilter(int))); connect(checkIPFilter, SIGNAL(stateChanged(int)), this, SLOT(enableFilter(int)));
connect(checkEnableRSS, SIGNAL(stateChanged(int)), this, SLOT(enableRSS(int)));
// Web UI tab // Web UI tab
connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableWebUi(bool))); connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableWebUi(bool)));
@ -205,6 +206,7 @@ options_imp::options_imp(QWidget *parent):QDialog(parent){
connect(textFilterPath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton())); connect(textFilterPath, SIGNAL(textChanged(QString)), this, SLOT(enableApplyButton()));
connect(spinRSSRefresh, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); connect(spinRSSRefresh, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton()));
connect(spinRSSMaxArticlesPerFeed, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton())); connect(spinRSSMaxArticlesPerFeed, SIGNAL(valueChanged(QString)), this, SLOT(enableApplyButton()));
connect(checkEnableRSS, SIGNAL(stateChanged(int)), this, SLOT(enableApplyButton()));
// Web UI tab // Web UI tab
connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton())); connect(checkWebUi, SIGNAL(toggled(bool)), this, SLOT(enableApplyButton()));
connect(spinWebUiPort, SIGNAL(valueChanged(int)), this, SLOT(enableApplyButton())); connect(spinWebUiPort, SIGNAL(valueChanged(int)), this, SLOT(enableApplyButton()));
@ -338,8 +340,9 @@ void options_imp::saveOptions(){
} }
// End IPFilter preferences // End IPFilter preferences
settings.endGroup(); settings.endGroup();
// * RSS // RSS
settings.beginGroup("RSS"); settings.beginGroup("RSS");
settings.setValue(QString::fromUtf8("RSSEnabled"), isRSSEnabled());
settings.setValue(QString::fromUtf8("RSSRefresh"), spinRSSRefresh->value()); settings.setValue(QString::fromUtf8("RSSRefresh"), spinRSSRefresh->value());
settings.setValue(QString::fromUtf8("RSSMaxArticlesPerFeed"), spinRSSMaxArticlesPerFeed->value()); settings.setValue(QString::fromUtf8("RSSMaxArticlesPerFeed"), spinRSSMaxArticlesPerFeed->value());
// End RSS preferences // End RSS preferences
@ -607,6 +610,12 @@ void options_imp::loadOptions(){
settings.endGroup(); settings.endGroup();
// * RSS // * RSS
settings.beginGroup("RSS"); settings.beginGroup("RSS");
checkEnableRSS->setChecked(settings.value(QString::fromUtf8("RSSEnabled"), false).toBool());
if(isRSSEnabled()) {
enableRSS(2); // Enable
} else {
enableRSS(0); // Disable
}
spinRSSRefresh->setValue(settings.value(QString::fromUtf8("RSSRefresh"), 5).toInt()); spinRSSRefresh->setValue(settings.value(QString::fromUtf8("RSSRefresh"), 5).toInt());
spinRSSMaxArticlesPerFeed->setValue(settings.value(QString::fromUtf8("RSSMaxArticlesPerFeed"), 50).toInt()); spinRSSMaxArticlesPerFeed->setValue(settings.value(QString::fromUtf8("RSSMaxArticlesPerFeed"), 50).toInt());
// End RSS preferences // End RSS preferences
@ -658,6 +667,10 @@ bool options_imp::isDHTEnabled() const{
return checkDHT->isChecked(); return checkDHT->isChecked();
} }
bool options_imp::isRSSEnabled() const{
return checkEnableRSS->isChecked();
}
bool options_imp::isPeXEnabled() const{ bool options_imp::isPeXEnabled() const{
return checkPeX->isChecked(); return checkPeX->isChecked();
} }
@ -850,7 +863,7 @@ void options_imp::enableMaxUploadsLimitPerTorrent(int checkBoxValue){
} }
void options_imp::enableFilter(int checkBoxValue){ void options_imp::enableFilter(int checkBoxValue){
if(checkBoxValue!=2){ if(checkBoxValue != 2){
//Disable //Disable
lblFilterPath->setEnabled(false); lblFilterPath->setEnabled(false);
textFilterPath->setEnabled(false); textFilterPath->setEnabled(false);
@ -863,6 +876,16 @@ void options_imp::enableFilter(int checkBoxValue){
} }
} }
void options_imp::enableRSS(int checkBoxValue) {
if(checkBoxValue != 2){
//Disable
groupRSSSettings->setEnabled(false);
}else{
//enable
groupRSSSettings->setEnabled(true);
}
}
void options_imp::enableUploadLimit(int checkBoxValue){ void options_imp::enableUploadLimit(int checkBoxValue){
if(checkBoxValue != 2){ if(checkBoxValue != 2){
//Disable //Disable

2
src/options_imp.h

@ -99,6 +99,7 @@ class options_imp : public QDialog, private Ui::Dialog {
bool isDHTEnabled() const; bool isDHTEnabled() const;
bool isPeXEnabled() const; bool isPeXEnabled() const;
bool isLSDEnabled() const; bool isLSDEnabled() const;
bool isRSSEnabled() const;
bool shouldSpoofAzureus() const; bool shouldSpoofAzureus() const;
int getEncryptionSetting() const; int getEncryptionSetting() const;
float getDesiredRatio() const; float getDesiredRatio() const;
@ -123,6 +124,7 @@ class options_imp : public QDialog, private Ui::Dialog {
void enableShareRatio(int checkBoxValue); void enableShareRatio(int checkBoxValue);
void enableDeleteRatio(int checkBoxValue); void enableDeleteRatio(int checkBoxValue);
void enableFilter(int checkBoxValue); void enableFilter(int checkBoxValue);
void enableRSS(int checkBoxValue);
void setStyle(int style); void setStyle(int style);
void on_buttonBox_accepted(); void on_buttonBox_accepted();
void closeEvent(QCloseEvent *e); void closeEvent(QCloseEvent *e);

Loading…
Cancel
Save