diff --git a/plasmoid/lib/appearanceoptionpage.ui b/plasmoid/lib/appearanceoptionpage.ui index 05bcff0c..9344549b 100644 --- a/plasmoid/lib/appearanceoptionpage.ui +++ b/plasmoid/lib/appearanceoptionpage.ui @@ -114,26 +114,6 @@ - - - - States to enable passive mode - - - true - - - - - - - QAbstractItemView::NoSelection - - - QListView::Batched - - - @@ -142,9 +122,30 @@ - + + + 0 + + + + + Downloads + + + + + + + Show tab texts + + + + + + + - Show tab texts + Icons @@ -162,10 +163,23 @@ - - + + - Icons + States to enable passive mode + + + true + + + + + + + QAbstractItemView::NoSelection + + + QListView::Batched @@ -190,6 +204,7 @@ widthSpinBox heightSpinBox + showDownloadsCheckBox showTabTextsCheckBox preferIconsFromThemeCheckBox passiveListView diff --git a/plasmoid/lib/settingsdialog.cpp b/plasmoid/lib/settingsdialog.cpp index c00fe49e..fa3f74e5 100644 --- a/plasmoid/lib/settingsdialog.cpp +++ b/plasmoid/lib/settingsdialog.cpp @@ -92,6 +92,7 @@ bool AppearanceOptionPage::apply() KConfigGroup config = m_applet->config(); config.writeEntry("size", QSize(ui()->widthSpinBox->value(), ui()->heightSpinBox->value())); config.writeEntry("showTabTexts", ui()->showTabTextsCheckBox->isChecked()); + config.writeEntry("showDownloads", ui()->showDownloadsCheckBox->isChecked()); config.writeEntry("preferIconsFromTheme", ui()->preferIconsFromThemeCheckBox->isChecked()); config.writeEntry("passiveStates", m_passiveStatusSelection.toVariantList()); @@ -105,6 +106,7 @@ void AppearanceOptionPage::reset() ui()->widthSpinBox->setValue(size.width()); ui()->heightSpinBox->setValue(size.height()); ui()->showTabTextsCheckBox->setChecked(config.readEntry<>("showTabTexts", false)); + ui()->showDownloadsCheckBox->setChecked(config.readEntry<>("showDownloads", false)); ui()->preferIconsFromThemeCheckBox->setChecked(config.readEntry<>("preferIconsFromTheme", false)); m_passiveStatusSelection.applyVariantList(config.readEntry("passiveStates", QVariantList())); } diff --git a/plasmoid/lib/syncthingapplet.cpp b/plasmoid/lib/syncthingapplet.cpp index 6c96edc6..2deaf013 100644 --- a/plasmoid/lib/syncthingapplet.cpp +++ b/plasmoid/lib/syncthingapplet.cpp @@ -96,6 +96,7 @@ SyncthingApplet::SyncthingApplet(QObject *parent, const QVariantList &data) , m_hasInternalErrors(false) , m_initialized(false) , m_showTabTexts(false) + , m_showDownloads(false) , m_applyingSettingsForWizard(false) { // configure connection @@ -694,6 +695,7 @@ void SyncthingApplet::applySettings(int changeConnectionIndex) // apply appearance settings setSize(config.readEntry("size", QSize(25, 25))); setShowingTabTexts(config.readEntry("showTabTexts", false)); + setShowingDownloads(config.readEntry("showDownloads", false)); IconManager::instance().applySettings(&settings.icons.status, nullptr, settings.icons.usePaletteForStatus, false); // restore selected states diff --git a/plasmoid/lib/syncthingapplet.h b/plasmoid/lib/syncthingapplet.h index 10b6021e..ec71a24f 100644 --- a/plasmoid/lib/syncthingapplet.h +++ b/plasmoid/lib/syncthingapplet.h @@ -82,6 +82,7 @@ class SyncthingApplet : public Plasma::Applet { Q_PROPERTY(bool hasInternalErrors READ hasInternalErrors NOTIFY hasInternalErrorsChanged) Q_PROPERTY(QSize size READ size WRITE setSize NOTIFY sizeChanged) Q_PROPERTY(bool showTabTexts READ isShowingTabTexts WRITE setShowingTabTexts NOTIFY showTabTextsChanged) + Q_PROPERTY(bool showDownloads READ isShowingDownloads WRITE setShowingDownloads NOTIFY showDownloadsChanged) Q_PROPERTY(bool passive READ isPassive NOTIFY passiveChanged) Q_PROPERTY(QList passiveStates READ passiveStates WRITE setPassiveStates) Q_PROPERTY(QString faUrl READ faUrl NOTIFY faUrlChanged) @@ -124,6 +125,8 @@ class SyncthingApplet : public Plasma::Applet { void setSize(const QSize &size); bool isShowingTabTexts() const; void setShowingTabTexts(bool showTabTexts); + bool isShowingDownloads() const; + void setShowingDownloads(bool showDownloads); bool isPassive() const; const QList &passiveStates() const; void setPassiveStates(const QList &passiveStates); @@ -165,6 +168,7 @@ public Q_SLOTS: void hasInternalErrorsChanged(bool hasInternalErrors); void sizeChanged(const QSize &size); void showTabTextsChanged(bool isShowingTabTexts); + void showDownloadsChanged(bool isShowingDownloads); void passiveChanged(bool passive); void faUrlChanged(const QString &faUrl); @@ -224,6 +228,7 @@ private Q_SLOTS: bool m_hasInternalErrors; bool m_initialized; bool m_showTabTexts; + bool m_showDownloads; bool m_applyingSettingsForWizard; QSize m_size; }; @@ -326,6 +331,18 @@ inline void SyncthingApplet::setShowingTabTexts(bool showTabTexts) } } +inline bool SyncthingApplet::isShowingDownloads() const +{ + return m_showDownloads; +} + +inline void SyncthingApplet::setShowingDownloads(bool showDownloads) +{ + if (showDownloads != m_showDownloads) { + emit showDownloadsChanged(m_showDownloads = showDownloads); + } +} + inline bool SyncthingApplet::isPassive() const { return status() == Plasma::Types::PassiveStatus; diff --git a/plasmoid/package5/contents/ui/FullRepresentation.qml b/plasmoid/package5/contents/ui/FullRepresentation.qml index d6e991a9..ed078055 100644 --- a/plasmoid/package5/contents/ui/FullRepresentation.qml +++ b/plasmoid/package5/contents/ui/FullRepresentation.qml @@ -24,7 +24,8 @@ PlasmaExtras.Representation { height: units.iconSizes.medium PlasmaComponents3.TabBar { id: tabBar - readonly property double buttonWidth: parent.width / count + readonly property int buttonCount: plasmoid.nativeInterface.showDownloads ? 4 : 3 + readonly property double buttonWidth: parent.width / buttonCount position: PlasmaComponents3.TabBar.Footer Layout.fillWidth: true Layout.fillHeight: true @@ -40,18 +41,19 @@ PlasmaExtras.Representation { icon.source: plasmoid.nativeInterface.faUrl + "sitemap" width: tabBar.buttonWidth } - TabButton { - id: downloadsTabButton - text: qsTr("Downloads") - icon.source: plasmoid.nativeInterface.faUrl + "download" - width: tabBar.buttonWidth - } TabButton { id: recentChangesTabButton text: qsTr("History") icon.source: plasmoid.nativeInterface.faUrl + "history" width: tabBar.buttonWidth } + TabButton { + id: downloadsTabButton + text: qsTr("Downloads") + icon.source: plasmoid.nativeInterface.faUrl + "download" + visible: plasmoid.nativeInterface.showDownloads + width: visible ? tabBar.buttonWidth : 0 + } } } @@ -60,8 +62,8 @@ PlasmaExtras.Representation { switch (tabBar.currentIndex) { case 0: return directoriesPage case 1: return devicesPage - case 2: return downloadsPage - case 3: return recentChangesPage + case 2: return recentChangesPage + case 3: return downloadsPage default: return directoriesPage } } @@ -290,12 +292,12 @@ PlasmaExtras.Representation { DevicesPage { id: devicesPage } - DownloadsPage { - id: downloadsPage - } RecentChangesPage { id: recentChangesPage } + DownloadsPage { + id: downloadsPage + } } } } diff --git a/plasmoid/package6/contents/ui/FullRepresentation.qml b/plasmoid/package6/contents/ui/FullRepresentation.qml index d4dbaa44..10ef310d 100644 --- a/plasmoid/package6/contents/ui/FullRepresentation.qml +++ b/plasmoid/package6/contents/ui/FullRepresentation.qml @@ -29,7 +29,8 @@ PlasmaExtras.Representation { height: Kirigami.Units.iconSizes.medium contentItem: PlasmaComponents3.TabBar { id: tabBar - readonly property double buttonWidth: parent.width / count + readonly property int buttonCount: plasmoid.showDownloads ? 4 : 3 + readonly property double buttonWidth: parent.width / buttonCount position: PlasmaComponents3.TabBar.Footer Layout.fillWidth: true Layout.fillHeight: true @@ -46,18 +47,19 @@ PlasmaExtras.Representation { icon.source: plasmoid.faUrl + "sitemap" width: tabBar.buttonWidth } - TabButton { - id: downloadsTabButton - text: qsTr("Downloads") - icon.source: plasmoid.faUrl + "download" - width: tabBar.buttonWidth - } TabButton { id: recentChangesTabButton text: qsTr("History") icon.source: plasmoid.faUrl + "history" width: tabBar.buttonWidth } + TabButton { + id: downloadsTabButton + text: qsTr("Downloads") + icon.source: plasmoid.faUrl + "download" + visible: plasmoid.showDownloads + width: visible ? tabBar.buttonWidth : 0 + } } } @@ -66,8 +68,8 @@ PlasmaExtras.Representation { switch (tabBar.currentIndex) { case 0: return directoriesPage case 1: return devicesPage - case 2: return downloadsPage - case 3: return recentChangesPage + case 2: return recentChangesPage + case 3: return downloadsPage default: return directoriesPage } } @@ -296,12 +298,12 @@ PlasmaExtras.Representation { DevicesPage { id: devicesPage } - DownloadsPage { - id: downloadsPage - } RecentChangesPage { id: recentChangesPage } + DownloadsPage { + id: downloadsPage + } } } } diff --git a/syncthingwidgets/misc/utils.cpp b/syncthingwidgets/misc/utils.cpp index a875de2b..5b9482b0 100644 --- a/syncthingwidgets/misc/utils.cpp +++ b/syncthingwidgets/misc/utils.cpp @@ -12,8 +12,8 @@ namespace QtGui { void handleRelevantControlsChanged(bool visible, int tabIndex, Data::SyncthingConnection &connection) { auto flags = connection.pollingFlags(); - CppUtilities::modFlagEnum(flags, Data::SyncthingConnection::PollingFlags::DownloadProgress, visible && tabIndex == 2); - CppUtilities::modFlagEnum(flags, Data::SyncthingConnection::PollingFlags::DiskEvents, visible && tabIndex == 3); + CppUtilities::modFlagEnum(flags, Data::SyncthingConnection::PollingFlags::DownloadProgress, visible && tabIndex == 3); + CppUtilities::modFlagEnum(flags, Data::SyncthingConnection::PollingFlags::DiskEvents, visible && tabIndex == 2); CppUtilities::modFlagEnum(flags, Data::SyncthingConnection::PollingFlags::TrafficStatistics, visible); CppUtilities::modFlagEnum(flags, Data::SyncthingConnection::PollingFlags::DeviceStatistics, visible && tabIndex == 1); connection.setPollingFlags(flags); diff --git a/syncthingwidgets/settings/appearanceoptionpage.ui b/syncthingwidgets/settings/appearanceoptionpage.ui index f350f7e6..43a1f820 100644 --- a/syncthingwidgets/settings/appearanceoptionpage.ui +++ b/syncthingwidgets/settings/appearanceoptionpage.ui @@ -335,6 +335,13 @@ + + + + Downloads + + + @@ -412,6 +419,7 @@ widthSpinBox heightSpinBox showTrafficCheckBox + showDownloadsCheckBox showTabTextsCheckBox preferIconsFromThemeCheckBox useCursorPosCheckBox diff --git a/syncthingwidgets/settings/settings.cpp b/syncthingwidgets/settings/settings.cpp index b776d576..82d90514 100644 --- a/syncthingwidgets/settings/settings.cpp +++ b/syncthingwidgets/settings/settings.cpp @@ -342,6 +342,7 @@ bool restore() v.ignoreInavailabilityAfterStart = settings.value(QStringLiteral("ignoreInavailabilityAfterStart"), v.ignoreInavailabilityAfterStart).toUInt(); auto &appearance = v.appearance; appearance.showTraffic = settings.value(QStringLiteral("showTraffic"), appearance.showTraffic).toBool(); + appearance.showDownloads = settings.value(QStringLiteral("showDownloads"), appearance.showDownloads).toBool(); appearance.showTabTexts = settings.value(QStringLiteral("showTabTexts"), appearance.showTabTexts).toBool(); if (auto windowType = settings.value(QStringLiteral("windowType")); windowType.isValid()) { appearance.windowType = windowType.toInt(); @@ -487,6 +488,7 @@ bool save() settings.setValue(QStringLiteral("ignoreInavailabilityAfterStart"), v.ignoreInavailabilityAfterStart); const auto &appearance = v.appearance; settings.setValue(QStringLiteral("showTraffic"), appearance.showTraffic); + settings.setValue(QStringLiteral("showDownloads"), appearance.showDownloads); settings.setValue(QStringLiteral("showTabTexts"), appearance.showTabTexts); settings.setValue(QStringLiteral("windowType"), appearance.windowType); settings.setValue(QStringLiteral("trayMenuSize"), appearance.trayMenuSize); diff --git a/syncthingwidgets/settings/settings.h b/syncthingwidgets/settings/settings.h index 64d81eae..bde05f44 100644 --- a/syncthingwidgets/settings/settings.h +++ b/syncthingwidgets/settings/settings.h @@ -64,6 +64,7 @@ struct SYNCTHINGWIDGETS_EXPORT NotifyOn { struct SYNCTHINGWIDGETS_EXPORT Appearance { bool showTraffic = true; + bool showDownloads = false; bool showTabTexts = true; int windowType = 0; // corresponds to TrayMenu::WindowType QSize trayMenuSize = QSize(575, 475); diff --git a/syncthingwidgets/settings/settingsdialog.cpp b/syncthingwidgets/settings/settingsdialog.cpp index c8a206a9..9f8c17af 100644 --- a/syncthingwidgets/settings/settingsdialog.cpp +++ b/syncthingwidgets/settings/settingsdialog.cpp @@ -536,6 +536,7 @@ bool AppearanceOptionPage::apply() settings.trayMenuSize.setWidth(ui()->widthSpinBox->value()); settings.trayMenuSize.setHeight(ui()->heightSpinBox->value()); settings.showTraffic = ui()->showTrafficCheckBox->isChecked(); + settings.showDownloads = ui()->showDownloadsCheckBox->isChecked(); settings.showTabTexts = ui()->showTabTextsCheckBox->isChecked(); v.icons.preferIconsFromTheme = ui()->preferIconsFromThemeCheckBox->isChecked(); int style; @@ -588,6 +589,7 @@ void AppearanceOptionPage::reset() resetPositioningSettings(); ui()->windowTypeComboBox->setCurrentIndex(settings.windowType); ui()->showTrafficCheckBox->setChecked(settings.showTraffic); + ui()->showDownloadsCheckBox->setChecked(settings.showDownloads); ui()->showTabTextsCheckBox->setChecked(settings.showTabTexts); ui()->preferIconsFromThemeCheckBox->setChecked(v.icons.preferIconsFromTheme); auto index = int(); diff --git a/tray/gui/traywidget.cpp b/tray/gui/traywidget.cpp index 6a1833c8..c3698280 100644 --- a/tray/gui/traywidget.cpp +++ b/tray/gui/traywidget.cpp @@ -603,6 +603,7 @@ void TrayWidget::applySettings(const QString &connectionConfig) } } } + m_ui->tabWidget->setTabVisible(3, settings.appearance.showDownloads); if (m_menu) { m_menu->setWindowType(settings.appearance.windowType); } diff --git a/tray/gui/traywidget.ui b/tray/gui/traywidget.ui index 2be706cd..d96d77c9 100644 --- a/tray/gui/traywidget.ui +++ b/tray/gui/traywidget.ui @@ -2,6 +2,11 @@ QtGui::TrayWidget + + + Noto Sans + + Syncthing Tray @@ -357,8 +362,7 @@ For <i>all</i> notifications, checkout the log New notifications - - .. + true @@ -445,15 +449,15 @@ For <i>all</i> notifications, checkout the log - + - download.fadownload.fa + history.fahistory.fa - Downloads + Recent changes - + 0 @@ -470,19 +474,23 @@ For <i>all</i> notifications, checkout the log 0 - + + + false + + - + - history.fahistory.fa + download.fadownload.fa - Recent changes + Downloads - + 0 @@ -499,11 +507,7 @@ For <i>all</i> notifications, checkout the log 0 - - - false - - +