From 9d3378bd3bb35a826bc3cf325c59ddd8ac55f6c9 Mon Sep 17 00:00:00 2001 From: Eugene Shalygin Date: Fri, 13 Jan 2017 17:01:36 +0100 Subject: [PATCH 1/3] Support fallback when selecting theme icons Fallback icon theme are not supported everywhere. Hence we mimic signature of QIcon::fromTheme(). --- src/gui/guiiconprovider.cpp | 9 ++++++++- src/gui/guiiconprovider.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gui/guiiconprovider.cpp b/src/gui/guiiconprovider.cpp index ae968115f..55e71194f 100644 --- a/src/gui/guiiconprovider.cpp +++ b/src/gui/guiiconprovider.cpp @@ -57,10 +57,17 @@ GuiIconProvider *GuiIconProvider::instance() } QIcon GuiIconProvider::getIcon(const QString &iconId) +{ + return getIcon(iconId, iconId); +} + +QIcon GuiIconProvider::getIcon(const QString &iconId, const QString &fallback) { #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) if (m_useSystemTheme) { - QIcon icon = QIcon::fromTheme(iconId, QIcon(IconProvider::getIconPath(iconId))); + QIcon icon = QIcon::fromTheme(iconId); + if (icon.name() != iconId) + icon = QIcon::fromTheme(fallback, QIcon(IconProvider::getIconPath(iconId))); icon = generateDifferentSizes(icon); return icon; } diff --git a/src/gui/guiiconprovider.h b/src/gui/guiiconprovider.h index 2b6ad07d5..665a7fabe 100644 --- a/src/gui/guiiconprovider.h +++ b/src/gui/guiiconprovider.h @@ -44,6 +44,7 @@ public: static GuiIconProvider *instance(); QIcon getIcon(const QString &iconId); + QIcon getIcon(const QString &iconId, const QString &fallback); QIcon getFlagIcon(const QString &countryIsoCode); QString getIconPath(const QString &iconId); From 3de105704ef5c43944d190f30aad8f7668d58106 Mon Sep 17 00:00:00 2001 From: Eugene Shalygin Date: Wed, 18 Jan 2017 10:21:41 +0100 Subject: [PATCH 2/3] Do not resize SVG icons An icon which is loaded from SVG file can be rendered in any size and resolutions natively. We were generating 16x16, 24x24, and 32x32 pixmaps, and not appending but creating new icon. Therefore for SVG icons we effectively were reducing their quality. If icon already contains 7 (or more) sizes (16 to 256 px) we do not resize it anymore. --- src/gui/guiiconprovider.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gui/guiiconprovider.cpp b/src/gui/guiiconprovider.cpp index 55e71194f..2a7ab9cd9 100644 --- a/src/gui/guiiconprovider.cpp +++ b/src/gui/guiiconprovider.cpp @@ -88,6 +88,13 @@ QIcon GuiIconProvider::getFlagIcon(const QString &countryIsoCode) #if (defined(Q_OS_UNIX) && !defined(Q_OS_MAC)) QIcon GuiIconProvider::generateDifferentSizes(const QIcon &icon) { + // if icon is loaded from SVG format, it already contains all the required sizes and we shall not resize it + // In that case it will be available in the following sizes: + // (QSize(16, 16), QSize(22, 22), QSize(32, 32), QSize(48, 48), QSize(64, 64), QSize(128, 128), QSize(256, 256)) + + if (icon.availableSizes(QIcon::Normal, QIcon::On).size() > 6) + return icon; + QIcon newIcon; QList requiredSizes; requiredSizes << QSize(16, 16) << QSize(24, 24) << QSize(32, 32); From 9bab2291089c43f57711188efb3d987df2146d4a Mon Sep 17 00:00:00 2001 From: Eugene Shalygin Date: Tue, 17 Jan 2017 18:05:08 +0100 Subject: [PATCH 3/3] Adjust icons names to better fit FDO scheme An icon theme may use variously styled icons for various types of UI elements. For example, Breeze theme uses monochrome icons for actions (toolbars) and statuses, but colourful for view contents. qBittorrent was using icon names without putting attention to categories, creating mix of styles in UI elements (i.e. the main toolbar). This commit fixes icon names (and move some of them to theme) to avoid this style mixes where possible. Unfortunately, options dialog page icons for network and speed limits are remained monochrome because there are no Breeze or Adwaita icons to match. --- src/gui/mainwindow.cpp | 10 +++++----- src/gui/optionsdlg.cpp | 4 ++-- src/gui/rss/rss_imp.cpp | 2 +- src/gui/transferlistwidget.cpp | 6 +++--- src/icons.qrc | 11 ++++++----- .../{preferences-system.svg => configure.svg} | 0 .../build-icons/icons/folder-download.svg | 16 ++++++++++++++++ .../icons/{chronometer.svg => speedometer.svg} | 0 .../{preferences-system.png => configure.png} | Bin src/icons/qbt-theme/folder-download.png | Bin 0 -> 3607 bytes .../{magnet.png => qbt-theme/kt-magnet.png} | Bin .../kt-set-max-download-speed.png} | Bin .../kt-set-max-upload-speed.png} | Bin .../{chronometer.png => speedometer.png} | Bin src/webui/www/private/index.html | 6 +++--- 15 files changed, 36 insertions(+), 19 deletions(-) rename src/icons/qbt-theme/build-icons/icons/{preferences-system.svg => configure.svg} (100%) create mode 100644 src/icons/qbt-theme/build-icons/icons/folder-download.svg rename src/icons/qbt-theme/build-icons/icons/{chronometer.svg => speedometer.svg} (100%) rename src/icons/qbt-theme/{preferences-system.png => configure.png} (100%) create mode 100644 src/icons/qbt-theme/folder-download.png rename src/icons/{magnet.png => qbt-theme/kt-magnet.png} (100%) rename src/icons/{skin/downloadLimit.png => qbt-theme/kt-set-max-download-speed.png} (100%) rename src/icons/{skin/uploadLimit.png => qbt-theme/kt-set-max-upload-speed.png} (100%) rename src/icons/qbt-theme/{chronometer.png => speedometer.png} (100%) diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp index 8c889e5f1..e0f15f192 100644 --- a/src/gui/mainwindow.cpp +++ b/src/gui/mainwindow.cpp @@ -150,10 +150,10 @@ MainWindow::MainWindow(QWidget *parent) m_ui->actionOpen->setIcon(GuiIconProvider::instance()->getIcon("list-add")); m_ui->actionDownloadFromURL->setIcon(GuiIconProvider::instance()->getIcon("insert-link")); - m_ui->actionSetUploadLimit->setIcon(QIcon(":/icons/skin/uploadLimit.png")); - m_ui->actionSetDownloadLimit->setIcon(QIcon(":/icons/skin/downloadLimit.png")); - m_ui->actionSetGlobalUploadLimit->setIcon(QIcon(":/icons/skin/uploadLimit.png")); - m_ui->actionSetGlobalDownloadLimit->setIcon(QIcon(":/icons/skin/downloadLimit.png")); + m_ui->actionSetUploadLimit->setIcon(GuiIconProvider::instance()->getIcon("kt-set-max-upload-speed")); + m_ui->actionSetDownloadLimit->setIcon(GuiIconProvider::instance()->getIcon("kt-set-max-download-speed")); + m_ui->actionSetGlobalUploadLimit->setIcon(GuiIconProvider::instance()->getIcon("kt-set-max-upload-speed")); + m_ui->actionSetGlobalDownloadLimit->setIcon(GuiIconProvider::instance()->getIcon("kt-set-max-download-speed")); m_ui->actionCreateTorrent->setIcon(GuiIconProvider::instance()->getIcon("document-edit")); m_ui->actionAbout->setIcon(GuiIconProvider::instance()->getIcon("help-about")); m_ui->actionStatistics->setIcon(GuiIconProvider::instance()->getIcon("view-statistics")); @@ -166,7 +166,7 @@ MainWindow::MainWindow(QWidget *parent) m_ui->actionIncreasePriority->setIcon(GuiIconProvider::instance()->getIcon("go-up")); m_ui->actionTopPriority->setIcon(GuiIconProvider::instance()->getIcon("go-top")); m_ui->actionLock->setIcon(GuiIconProvider::instance()->getIcon("object-locked")); - m_ui->actionOptions->setIcon(GuiIconProvider::instance()->getIcon("preferences-system")); + m_ui->actionOptions->setIcon(GuiIconProvider::instance()->getIcon("configure", "open-menu")); m_ui->actionPause->setIcon(GuiIconProvider::instance()->getIcon("media-playback-pause")); m_ui->actionPauseAll->setIcon(GuiIconProvider::instance()->getIcon("media-playback-pause")); m_ui->actionStart->setIcon(GuiIconProvider::instance()->getIcon("media-playback-start")); diff --git a/src/gui/optionsdlg.cpp b/src/gui/optionsdlg.cpp index f4cf2c7ef..a3bde6b8c 100644 --- a/src/gui/optionsdlg.cpp +++ b/src/gui/optionsdlg.cpp @@ -80,8 +80,8 @@ OptionsDialog::OptionsDialog(QWidget *parent) m_ui->tabSelection->item(TAB_UI)->setIcon(GuiIconProvider::instance()->getIcon("preferences-desktop")); m_ui->tabSelection->item(TAB_BITTORRENT)->setIcon(GuiIconProvider::instance()->getIcon("preferences-system-network")); m_ui->tabSelection->item(TAB_CONNECTION)->setIcon(GuiIconProvider::instance()->getIcon("network-wired")); - m_ui->tabSelection->item(TAB_DOWNLOADS)->setIcon(GuiIconProvider::instance()->getIcon("download")); - m_ui->tabSelection->item(TAB_SPEED)->setIcon(GuiIconProvider::instance()->getIcon("chronometer")); + m_ui->tabSelection->item(TAB_DOWNLOADS)->setIcon(GuiIconProvider::instance()->getIcon("folder-download")); + m_ui->tabSelection->item(TAB_SPEED)->setIcon(GuiIconProvider::instance()->getIcon("speedometer", "chronometer")); #ifndef DISABLE_WEBUI m_ui->tabSelection->item(TAB_WEBUI)->setIcon(GuiIconProvider::instance()->getIcon("network-server")); #else diff --git a/src/gui/rss/rss_imp.cpp b/src/gui/rss/rss_imp.cpp index 909b6432a..2a3e67cd0 100644 --- a/src/gui/rss/rss_imp.cpp +++ b/src/gui/rss/rss_imp.cpp @@ -702,7 +702,7 @@ RSSImp::RSSImp(QWidget *parent): markReadButton->setIcon(GuiIconProvider::instance()->getIcon("mail-mark-read")); updateAllButton->setIcon(GuiIconProvider::instance()->getIcon("view-refresh")); rssDownloaderBtn->setIcon(GuiIconProvider::instance()->getIcon("download")); - settingsButton->setIcon(GuiIconProvider::instance()->getIcon("preferences-system")); + settingsButton->setIcon(GuiIconProvider::instance()->getIcon("configure", "open-menu")); m_feedList = new FeedListWidget(splitterSide, m_rssManager); splitterSide->insertWidget(0, m_feedList); diff --git a/src/gui/transferlistwidget.cpp b/src/gui/transferlistwidget.cpp index ae193f55c..cb13a2dc8 100644 --- a/src/gui/transferlistwidget.cpp +++ b/src/gui/transferlistwidget.cpp @@ -654,9 +654,9 @@ void TransferListWidget::displayListMenu(const QPoint&) connect(&actionPreview_file, SIGNAL(triggered()), this, SLOT(previewSelectedTorrents())); QAction actionSet_max_ratio(QIcon(QString::fromUtf8(":/icons/skin/ratio.png")), tr("Limit share ratio..."), 0); connect(&actionSet_max_ratio, SIGNAL(triggered()), this, SLOT(setMaxRatioSelectedTorrents())); - QAction actionSet_upload_limit(QIcon(QString::fromUtf8(":/icons/skin/uploadLimit.png")), tr("Limit upload rate..."), 0); + QAction actionSet_upload_limit(GuiIconProvider::instance()->getIcon("kt-set-max-upload-speed"), tr("Limit upload rate..."), 0); connect(&actionSet_upload_limit, SIGNAL(triggered()), this, SLOT(setUpLimitSelectedTorrents())); - QAction actionSet_download_limit(QIcon(QString::fromUtf8(":/icons/skin/downloadLimit.png")), tr("Limit download rate..."), 0); + QAction actionSet_download_limit(GuiIconProvider::instance()->getIcon("kt-set-max-download-speed"), tr("Limit download rate..."), 0); connect(&actionSet_download_limit, SIGNAL(triggered()), this, SLOT(setDlLimitSelectedTorrents())); QAction actionOpen_destination_folder(GuiIconProvider::instance()->getIcon("inode-directory"), tr("Open destination folder"), 0); connect(&actionOpen_destination_folder, SIGNAL(triggered()), this, SLOT(openSelectedTorrentsFolder())); @@ -672,7 +672,7 @@ void TransferListWidget::displayListMenu(const QPoint&) connect(&actionSetTorrentPath, SIGNAL(triggered()), this, SLOT(setSelectedTorrentsLocation())); QAction actionForce_recheck(GuiIconProvider::instance()->getIcon("document-edit-verify"), tr("Force recheck"), 0); connect(&actionForce_recheck, SIGNAL(triggered()), this, SLOT(recheckSelectedTorrents())); - QAction actionCopy_magnet_link(QIcon(":/icons/magnet.png"), tr("Copy magnet link"), 0); + QAction actionCopy_magnet_link(GuiIconProvider::instance()->getIcon("kt-magnet"), tr("Copy magnet link"), 0); connect(&actionCopy_magnet_link, SIGNAL(triggered()), this, SLOT(copySelectedMagnetURIs())); QAction actionCopy_name(GuiIconProvider::instance()->getIcon("edit-copy"), tr("Copy name"), 0); connect(&actionCopy_name, SIGNAL(triggered()), this, SLOT(copySelectedNames())); diff --git a/src/icons.qrc b/src/icons.qrc index 4cf75b828..8a7441ef6 100644 --- a/src/icons.qrc +++ b/src/icons.qrc @@ -4,7 +4,6 @@ icons/3-state-checkbox.gif icons/L.gif icons/loading.png - icons/magnet.png icons/slow.png icons/slow_off.png icons/sphere.png @@ -254,7 +253,7 @@ icons/qbt-theme/application-exit.png icons/qbt-theme/application-rss+xml.png icons/qbt-theme/application-x-mswinurl.png - icons/qbt-theme/chronometer.png + icons/qbt-theme/configure.png icons/qbt-theme/dialog-cancel.png icons/qbt-theme/dialog-information.png icons/qbt-theme/dialog-warning.png @@ -276,6 +275,7 @@ icons/qbt-theme/edit-paste.png icons/qbt-theme/edit-rename.png icons/qbt-theme/folder-documents.png + icons/qbt-theme/folder-download.png icons/qbt-theme/folder-new.png icons/qbt-theme/folder-remote.png icons/qbt-theme/gear.png @@ -286,6 +286,9 @@ icons/qbt-theme/help-contents.png icons/qbt-theme/inode-directory.png icons/qbt-theme/insert-link.png + icons/qbt-theme/kt-magnet.png + icons/qbt-theme/kt-set-max-download-speed.png + icons/qbt-theme/kt-set-max-upload-speed.png icons/qbt-theme/list-add.png icons/qbt-theme/list-remove.png icons/qbt-theme/mail-folder-inbox.png @@ -299,11 +302,11 @@ icons/qbt-theme/preferences-desktop.png icons/qbt-theme/preferences-other.png icons/qbt-theme/preferences-system-network.png - icons/qbt-theme/preferences-system.png icons/qbt-theme/preferences-web-browser-cookies.png icons/qbt-theme/security-high.png icons/qbt-theme/security-low.png icons/qbt-theme/services.png + icons/qbt-theme/speedometer.png icons/qbt-theme/tab-close.png icons/qbt-theme/task-attention.png icons/qbt-theme/task-complete.png @@ -373,7 +376,5 @@ icons/qbt-theme/go-top.png icons/qbt-theme/checked.png icons/qbt-theme/office-chart-line.png - icons/skin/downloadLimit.png - icons/skin/uploadLimit.png diff --git a/src/icons/qbt-theme/build-icons/icons/preferences-system.svg b/src/icons/qbt-theme/build-icons/icons/configure.svg similarity index 100% rename from src/icons/qbt-theme/build-icons/icons/preferences-system.svg rename to src/icons/qbt-theme/build-icons/icons/configure.svg diff --git a/src/icons/qbt-theme/build-icons/icons/folder-download.svg b/src/icons/qbt-theme/build-icons/icons/folder-download.svg new file mode 100644 index 000000000..f966e9921 --- /dev/null +++ b/src/icons/qbt-theme/build-icons/icons/folder-download.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/src/icons/qbt-theme/build-icons/icons/chronometer.svg b/src/icons/qbt-theme/build-icons/icons/speedometer.svg similarity index 100% rename from src/icons/qbt-theme/build-icons/icons/chronometer.svg rename to src/icons/qbt-theme/build-icons/icons/speedometer.svg diff --git a/src/icons/qbt-theme/preferences-system.png b/src/icons/qbt-theme/configure.png similarity index 100% rename from src/icons/qbt-theme/preferences-system.png rename to src/icons/qbt-theme/configure.png diff --git a/src/icons/qbt-theme/folder-download.png b/src/icons/qbt-theme/folder-download.png new file mode 100644 index 0000000000000000000000000000000000000000..40c25f154288205b51d28294c008e828b67e3d46 GIT binary patch literal 3607 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 QBT_TR(&Tools)QBT_TR
  • @@ -118,8 +118,8 @@
  • QBT_TR(Move to bottom)QBT_TR QBT_TR(Move to bottom)QBT_TR
  • -
  • QBT_TR(Limit download rate...)QBT_TR QBT_TR(Limit download rate...)QBT_TR
  • -
  • QBT_TR(Limit upload rate...)QBT_TR QBT_TR(Limit upload rate...)QBT_TR
  • +
  • QBT_TR(Limit download rate...)QBT_TR QBT_TR(Limit download rate...)QBT_TR
  • +
  • QBT_TR(Limit upload rate...)QBT_TR QBT_TR(Limit upload rate...)QBT_TR
  • QBT_TR(Super seeding mode)QBT_TR QBT_TR(Super seeding mode)QBT_TR
  • QBT_TR(Download in sequential order)QBT_TR QBT_TR(Download in sequential order)QBT_TR
  • QBT_TR(Download first and last pieces first)QBT_TR QBT_TR(Download first and last pieces first)QBT_TR