mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-01-11 15:27:54 +00:00
parent
31d04cffd9
commit
ef6e848756
@ -130,6 +130,13 @@ Application::Application(const QString &id, int &argc, char **argv)
|
|||||||
Logger::instance()->addMessage(tr("qBittorrent %1 started", "qBittorrent v3.2.0alpha started").arg(VERSION));
|
Logger::instance()->addMessage(tr("qBittorrent %1 started", "qBittorrent v3.2.0alpha started").arg(VERSION));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef DISABLE_GUI
|
||||||
|
QPointer<MainWindow> Application::mainWindow()
|
||||||
|
{
|
||||||
|
return m_window;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
bool Application::isFileLoggerEnabled() const
|
bool Application::isFileLoggerEnabled() const
|
||||||
{
|
{
|
||||||
return settings()->loadValue(KEY_FILELOGGER_ENABLED, true).toBool();
|
return settings()->loadValue(KEY_FILELOGGER_ENABLED, true).toBool();
|
||||||
|
@ -76,6 +76,10 @@ public:
|
|||||||
int exec(const QStringList ¶ms);
|
int exec(const QStringList ¶ms);
|
||||||
bool sendParams(const QStringList ¶ms);
|
bool sendParams(const QStringList ¶ms);
|
||||||
|
|
||||||
|
#ifndef DISABLE_GUI
|
||||||
|
QPointer<MainWindow> mainWindow();
|
||||||
|
#endif
|
||||||
|
|
||||||
// FileLogger properties
|
// FileLogger properties
|
||||||
bool isFileLoggerEnabled() const;
|
bool isFileLoggerEnabled() const;
|
||||||
void setFileLoggerEnabled(bool value);
|
void setFileLoggerEnabled(bool value);
|
||||||
|
@ -105,16 +105,6 @@ void Preferences::setLocale(const QString &locale)
|
|||||||
setValue("Preferences/General/Locale", locale);
|
setValue("Preferences/General/Locale", locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Preferences::useProgramNotification() const
|
|
||||||
{
|
|
||||||
return value("Preferences/General/ProgramNotification", true).toBool();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Preferences::useProgramNotification(bool use)
|
|
||||||
{
|
|
||||||
setValue("Preferences/General/ProgramNotification", use);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Preferences::deleteTorrentFilesAsDefault() const
|
bool Preferences::deleteTorrentFilesAsDefault() const
|
||||||
{
|
{
|
||||||
return value("Preferences/General/DeleteTorrentsFilesAsDefault", false).toBool();
|
return value("Preferences/General/DeleteTorrentsFilesAsDefault", false).toBool();
|
||||||
|
@ -115,8 +115,6 @@ public:
|
|||||||
// General options
|
// General options
|
||||||
QString getLocale() const;
|
QString getLocale() const;
|
||||||
void setLocale(const QString &locale);
|
void setLocale(const QString &locale);
|
||||||
bool useProgramNotification() const;
|
|
||||||
void useProgramNotification(bool use);
|
|
||||||
bool deleteTorrentFilesAsDefault() const;
|
bool deleteTorrentFilesAsDefault() const;
|
||||||
void setDeleteTorrentFilesAsDefault(bool del);
|
void setDeleteTorrentFilesAsDefault(bool del);
|
||||||
bool confirmOnExit() const;
|
bool confirmOnExit() const;
|
||||||
|
@ -81,8 +81,7 @@ namespace
|
|||||||
{ "AddNewTorrentDialog/Expanded", "AddNewTorrentDialog/expanded" },
|
{ "AddNewTorrentDialog/Expanded", "AddNewTorrentDialog/expanded" },
|
||||||
{ "AddNewTorrentDialog/SavePathHistory", "TorrentAdditionDlg/save_path_history" },
|
{ "AddNewTorrentDialog/SavePathHistory", "TorrentAdditionDlg/save_path_history" },
|
||||||
{ "AddNewTorrentDialog/Enabled", "Preferences/Downloads/NewAdditionDialog" },
|
{ "AddNewTorrentDialog/Enabled", "Preferences/Downloads/NewAdditionDialog" },
|
||||||
{ "AddNewTorrentDialog/TopLevel", "Preferences/Downloads/NewAdditionDialogFront" },
|
{ "AddNewTorrentDialog/TopLevel", "Preferences/Downloads/NewAdditionDialogFront" }
|
||||||
{ "ExecutionLog/Enabled", "Preferences/ExecutionLog/enabled" }
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -31,7 +31,9 @@
|
|||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QHostAddress>
|
#include <QHostAddress>
|
||||||
#include <QNetworkInterface>
|
#include <QNetworkInterface>
|
||||||
|
#include "app/application.h"
|
||||||
#include "base/preferences.h"
|
#include "base/preferences.h"
|
||||||
|
#include "gui/mainwindow.h"
|
||||||
|
|
||||||
enum AdvSettingsCols
|
enum AdvSettingsCols
|
||||||
{
|
{
|
||||||
@ -58,6 +60,7 @@ enum AdvSettingsRows
|
|||||||
RESOLVE_HOSTS,
|
RESOLVE_HOSTS,
|
||||||
RESOLVE_COUNTRIES,
|
RESOLVE_COUNTRIES,
|
||||||
PROGRAM_NOTIFICATIONS,
|
PROGRAM_NOTIFICATIONS,
|
||||||
|
TORRENT_ADDED_NOTIFICATIONS,
|
||||||
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))
|
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC))
|
||||||
USE_ICON_THEME,
|
USE_ICON_THEME,
|
||||||
#endif
|
#endif
|
||||||
@ -150,7 +153,9 @@ void AdvancedSettings::saveAdvancedSettings()
|
|||||||
else
|
else
|
||||||
pref->setNetworkAddress(addr.toString());
|
pref->setNetworkAddress(addr.toString());
|
||||||
// Program notification
|
// Program notification
|
||||||
pref->useProgramNotification(cb_program_notifications.isChecked());
|
MainWindow * const mainWindow = static_cast<Application*>(QCoreApplication::instance())->mainWindow();
|
||||||
|
mainWindow->setNotificationsEnabled(cb_program_notifications.isChecked());
|
||||||
|
mainWindow->setTorrentAddedNotificationsEnabled(cb_torrent_added_notifications.isChecked());
|
||||||
// Tracker
|
// Tracker
|
||||||
pref->setTrackerEnabled(cb_tracker_status.isChecked());
|
pref->setTrackerEnabled(cb_tracker_status.isChecked());
|
||||||
pref->setTrackerPort(spin_tracker_port.value());
|
pref->setTrackerPort(spin_tracker_port.value());
|
||||||
@ -284,8 +289,12 @@ void AdvancedSettings::loadAdvancedSettings()
|
|||||||
txt_network_address.setText(pref->getNetworkAddress());
|
txt_network_address.setText(pref->getNetworkAddress());
|
||||||
addRow(NETWORK_ADDRESS, tr("IP Address to report to trackers (requires restart)"), &txt_network_address);
|
addRow(NETWORK_ADDRESS, tr("IP Address to report to trackers (requires restart)"), &txt_network_address);
|
||||||
// Program notifications
|
// Program notifications
|
||||||
cb_program_notifications.setChecked(pref->useProgramNotification());
|
const MainWindow * const mainWindow = static_cast<Application*>(QCoreApplication::instance())->mainWindow();
|
||||||
addRow(PROGRAM_NOTIFICATIONS, tr("Display program on-screen notifications"), &cb_program_notifications);
|
cb_program_notifications.setChecked(mainWindow->isNotificationsEnabled());
|
||||||
|
addRow(PROGRAM_NOTIFICATIONS, tr("Display notifications"), &cb_program_notifications);
|
||||||
|
// Torrent added notifications
|
||||||
|
cb_torrent_added_notifications.setChecked(mainWindow->isTorrentAddedNotificationsEnabled());
|
||||||
|
addRow(TORRENT_ADDED_NOTIFICATIONS, tr("Display notifications for added torrents"), &cb_torrent_added_notifications);
|
||||||
// Tracker State
|
// Tracker State
|
||||||
cb_tracker_status.setChecked(pref->isTrackerEnabled());
|
cb_tracker_status.setChecked(pref->isTrackerEnabled());
|
||||||
addRow(TRACKER_STATUS, tr("Enable embedded tracker"), &cb_tracker_status);
|
addRow(TRACKER_STATUS, tr("Enable embedded tracker"), &cb_tracker_status);
|
||||||
|
@ -60,7 +60,7 @@ private:
|
|||||||
QLabel labelQbtLink, labelLibtorrentLink;
|
QLabel labelQbtLink, labelLibtorrentLink;
|
||||||
QSpinBox spin_cache, spin_save_resume_data_interval, outgoing_ports_min, outgoing_ports_max, spin_list_refresh, spin_maxhalfopen, spin_tracker_port, spin_cache_ttl;
|
QSpinBox spin_cache, spin_save_resume_data_interval, outgoing_ports_min, outgoing_ports_max, spin_list_refresh, spin_maxhalfopen, spin_tracker_port, spin_cache_ttl;
|
||||||
QCheckBox cb_os_cache, cb_recheck_completed, cb_resolve_countries, cb_resolve_hosts,
|
QCheckBox cb_os_cache, cb_recheck_completed, cb_resolve_countries, cb_resolve_hosts,
|
||||||
cb_super_seeding, cb_program_notifications, cb_tracker_status,
|
cb_super_seeding, cb_program_notifications, cb_torrent_added_notifications, cb_tracker_status,
|
||||||
cb_confirm_torrent_recheck, cb_enable_tracker_ext, cb_listen_ipv6, cb_announce_all_trackers;
|
cb_confirm_torrent_recheck, cb_enable_tracker_ext, cb_listen_ipv6, cb_announce_all_trackers;
|
||||||
QComboBox combo_iface;
|
QComboBox combo_iface;
|
||||||
QLineEdit txt_network_address;
|
QLineEdit txt_network_address;
|
||||||
|
@ -101,13 +101,18 @@ void qt_mac_set_dock_menu(QMenu *menu);
|
|||||||
|
|
||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
#define SETTINGS_KEY(name) "MainWindow/" name
|
#define SETTINGS_KEY(name) "GUI/" name
|
||||||
|
|
||||||
// ExecutionLog properties keys
|
// ExecutionLog properties keys
|
||||||
#define EXECUTIONLOG_SETTINGS_KEY(name) SETTINGS_KEY("ExecutionLog/") name
|
#define EXECUTIONLOG_SETTINGS_KEY(name) SETTINGS_KEY("Log/") name
|
||||||
const QString KEY_EXECUTIONLOG_ENABLED = EXECUTIONLOG_SETTINGS_KEY("Enabled");
|
const QString KEY_EXECUTIONLOG_ENABLED = EXECUTIONLOG_SETTINGS_KEY("Enabled");
|
||||||
const QString KEY_EXECUTIONLOG_TYPES = EXECUTIONLOG_SETTINGS_KEY("Types");
|
const QString KEY_EXECUTIONLOG_TYPES = EXECUTIONLOG_SETTINGS_KEY("Types");
|
||||||
|
|
||||||
|
// Notifications properties keys
|
||||||
|
#define NOTIFICATIONS_SETTINGS_KEY(name) SETTINGS_KEY("Notifications/") name
|
||||||
|
const QString KEY_NOTIFICATIONS_ENABLED = NOTIFICATIONS_SETTINGS_KEY("Enabled");
|
||||||
|
const QString KEY_NOTIFICATIONS_TORRENTADDED = NOTIFICATIONS_SETTINGS_KEY("TorrentAdded");
|
||||||
|
|
||||||
//just a shortcut
|
//just a shortcut
|
||||||
inline SettingsStorage *settings() { return SettingsStorage::instance(); }
|
inline SettingsStorage *settings() { return SettingsStorage::instance(); }
|
||||||
}
|
}
|
||||||
@ -181,6 +186,7 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
// Creating Bittorrent session
|
// Creating Bittorrent session
|
||||||
connect(BitTorrent::Session::instance(), SIGNAL(fullDiskError(BitTorrent::TorrentHandle *const, QString)), this, SLOT(fullDiskError(BitTorrent::TorrentHandle *const, QString)));
|
connect(BitTorrent::Session::instance(), SIGNAL(fullDiskError(BitTorrent::TorrentHandle *const, QString)), this, SLOT(fullDiskError(BitTorrent::TorrentHandle *const, QString)));
|
||||||
connect(BitTorrent::Session::instance(), SIGNAL(addTorrentFailed(const QString &)), this, SLOT(addTorrentFailed(const QString &)));
|
connect(BitTorrent::Session::instance(), SIGNAL(addTorrentFailed(const QString &)), this, SLOT(addTorrentFailed(const QString &)));
|
||||||
|
connect(BitTorrent::Session::instance(), SIGNAL(torrentAdded(BitTorrent::TorrentHandle *const)), this, SLOT(torrentAdded(BitTorrent::TorrentHandle *const)));
|
||||||
connect(BitTorrent::Session::instance(), SIGNAL(torrentFinished(BitTorrent::TorrentHandle *const)), this, SLOT(finishedTorrent(BitTorrent::TorrentHandle *const)));
|
connect(BitTorrent::Session::instance(), SIGNAL(torrentFinished(BitTorrent::TorrentHandle *const)), this, SLOT(finishedTorrent(BitTorrent::TorrentHandle *const)));
|
||||||
connect(BitTorrent::Session::instance(), SIGNAL(trackerAuthenticationRequired(BitTorrent::TorrentHandle *const)), this, SLOT(trackerAuthenticationRequired(BitTorrent::TorrentHandle *const)));
|
connect(BitTorrent::Session::instance(), SIGNAL(trackerAuthenticationRequired(BitTorrent::TorrentHandle *const)), this, SLOT(trackerAuthenticationRequired(BitTorrent::TorrentHandle *const)));
|
||||||
connect(BitTorrent::Session::instance(), SIGNAL(downloadFromUrlFailed(QString, QString)), this, SLOT(handleDownloadFromUrlFailure(QString, QString)));
|
connect(BitTorrent::Session::instance(), SIGNAL(downloadFromUrlFailed(QString, QString)), this, SLOT(handleDownloadFromUrlFailure(QString, QString)));
|
||||||
@ -421,6 +427,26 @@ void MainWindow::setExecutionLogMsgTypes(const int value)
|
|||||||
settings()->storeValue(KEY_EXECUTIONLOG_TYPES, value);
|
settings()->storeValue(KEY_EXECUTIONLOG_TYPES, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MainWindow::isNotificationsEnabled() const
|
||||||
|
{
|
||||||
|
return settings()->loadValue(KEY_NOTIFICATIONS_ENABLED, true).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setNotificationsEnabled(bool value)
|
||||||
|
{
|
||||||
|
settings()->storeValue(KEY_NOTIFICATIONS_ENABLED, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool MainWindow::isTorrentAddedNotificationsEnabled() const
|
||||||
|
{
|
||||||
|
return settings()->loadValue(KEY_NOTIFICATIONS_TORRENTADDED, false).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setTorrentAddedNotificationsEnabled(bool value)
|
||||||
|
{
|
||||||
|
settings()->storeValue(KEY_NOTIFICATIONS_TORRENTADDED, value);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::addToolbarContextMenu()
|
void MainWindow::addToolbarContextMenu()
|
||||||
{
|
{
|
||||||
const Preferences* const pref = Preferences::instance();
|
const Preferences* const pref = Preferences::instance();
|
||||||
@ -696,6 +722,13 @@ void MainWindow::addTorrentFailed(const QString &error) const
|
|||||||
showNotificationBaloon(tr("Error"), tr("Failed to add torrent: %1").arg(error));
|
showNotificationBaloon(tr("Error"), tr("Failed to add torrent: %1").arg(error));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// called when a torrent was added
|
||||||
|
void MainWindow::torrentAdded(BitTorrent::TorrentHandle *const torrent) const
|
||||||
|
{
|
||||||
|
if (isTorrentAddedNotificationsEnabled())
|
||||||
|
showNotificationBaloon(tr("Torrent added"), tr("'%1' was added.", "e.g: xxx.avi was added.").arg(torrent->name()));
|
||||||
|
}
|
||||||
|
|
||||||
// called when a torrent has finished
|
// called when a torrent has finished
|
||||||
void MainWindow::finishedTorrent(BitTorrent::TorrentHandle *const torrent) const
|
void MainWindow::finishedTorrent(BitTorrent::TorrentHandle *const torrent) const
|
||||||
{
|
{
|
||||||
@ -1279,7 +1312,7 @@ void MainWindow::updateGUI()
|
|||||||
|
|
||||||
void MainWindow::showNotificationBaloon(QString title, QString msg) const
|
void MainWindow::showNotificationBaloon(QString title, QString msg) const
|
||||||
{
|
{
|
||||||
if (!Preferences::instance()->useProgramNotification()) return;
|
if (!isNotificationsEnabled()) return;
|
||||||
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) && defined(QT_DBUS_LIB)
|
#if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) && defined(QT_DBUS_LIB)
|
||||||
org::freedesktop::Notifications notifications("org.freedesktop.Notifications",
|
org::freedesktop::Notifications notifications("org.freedesktop.Notifications",
|
||||||
"/org/freedesktop/Notifications",
|
"/org/freedesktop/Notifications",
|
||||||
|
@ -88,6 +88,12 @@ public:
|
|||||||
int executionLogMsgTypes() const;
|
int executionLogMsgTypes() const;
|
||||||
void setExecutionLogMsgTypes(const int value);
|
void setExecutionLogMsgTypes(const int value);
|
||||||
|
|
||||||
|
// Notifications properties
|
||||||
|
bool isNotificationsEnabled() const;
|
||||||
|
void setNotificationsEnabled(bool value);
|
||||||
|
bool isTorrentAddedNotificationsEnabled() const;
|
||||||
|
void setTorrentAddedNotificationsEnabled(bool value);
|
||||||
|
|
||||||
void activate();
|
void activate();
|
||||||
void cleanup();
|
void cleanup();
|
||||||
|
|
||||||
@ -120,6 +126,7 @@ private slots:
|
|||||||
void loadPreferences(bool configureSession = true);
|
void loadPreferences(bool configureSession = true);
|
||||||
void addUnauthenticatedTracker(const QPair<BitTorrent::TorrentHandle*, QString> &tracker);
|
void addUnauthenticatedTracker(const QPair<BitTorrent::TorrentHandle*, QString> &tracker);
|
||||||
void addTorrentFailed(const QString &error) const;
|
void addTorrentFailed(const QString &error) const;
|
||||||
|
void torrentAdded(BitTorrent::TorrentHandle *const torrent) const;
|
||||||
void finishedTorrent(BitTorrent::TorrentHandle *const torrent) const;
|
void finishedTorrent(BitTorrent::TorrentHandle *const torrent) const;
|
||||||
void askRecursiveTorrentDownloadConfirmation(BitTorrent::TorrentHandle *const torrent);
|
void askRecursiveTorrentDownloadConfirmation(BitTorrent::TorrentHandle *const torrent);
|
||||||
void optionsSaved();
|
void optionsSaved();
|
||||||
|
@ -320,7 +320,7 @@ void SearchWidget::searchStarted()
|
|||||||
// Error | Stopped by user | Finished normally
|
// Error | Stopped by user | Finished normally
|
||||||
void SearchWidget::searchFinished(bool cancelled)
|
void SearchWidget::searchFinished(bool cancelled)
|
||||||
{
|
{
|
||||||
if (Preferences::instance()->useProgramNotification() && (m_mainWindow->currentTabWidget() != this))
|
if (m_mainWindow->isNotificationsEnabled() && (m_mainWindow->currentTabWidget() != this))
|
||||||
m_mainWindow->showNotificationBaloon(tr("Search Engine"), tr("Search has finished"));
|
m_mainWindow->showNotificationBaloon(tr("Search Engine"), tr("Search has finished"));
|
||||||
|
|
||||||
if (m_activeSearchTab.isNull()) return; // The active tab was closed
|
if (m_activeSearchTab.isNull()) return; // The active tab was closed
|
||||||
@ -338,7 +338,7 @@ void SearchWidget::searchFinished(bool cancelled)
|
|||||||
|
|
||||||
void SearchWidget::searchFailed()
|
void SearchWidget::searchFailed()
|
||||||
{
|
{
|
||||||
if (Preferences::instance()->useProgramNotification() && (m_mainWindow->currentTabWidget() != this))
|
if (m_mainWindow->isNotificationsEnabled() && (m_mainWindow->currentTabWidget() != this))
|
||||||
m_mainWindow->showNotificationBaloon(tr("Search Engine"), tr("Search has failed"));
|
m_mainWindow->showNotificationBaloon(tr("Search Engine"), tr("Search has failed"));
|
||||||
|
|
||||||
if (m_activeSearchTab.isNull()) return; // The active tab was closed
|
if (m_activeSearchTab.isNull()) return; // The active tab was closed
|
||||||
|
Loading…
Reference in New Issue
Block a user