Make option pages configurable for different GUI types
This commit is contained in:
parent
030cb35dbd
commit
ee5c38dd7d
|
@ -67,7 +67,8 @@ QtGui::SettingsDialog *setupSettingsDialog(SyncthingApplet &applet)
|
||||||
category = new OptionCategory;
|
category = new OptionCategory;
|
||||||
category->setDisplayName(QCoreApplication::translate("Plasmoid::SettingsDialog", "Plasmoid"));
|
category->setDisplayName(QCoreApplication::translate("Plasmoid::SettingsDialog", "Plasmoid"));
|
||||||
category->assignPages(QList<Dialogs::OptionPage *>()
|
category->assignPages(QList<Dialogs::OptionPage *>()
|
||||||
<< new ConnectionOptionPage(applet.connection()) << new NotificationsOptionPage(true) << new ShortcutOptionPage(applet));
|
<< new ConnectionOptionPage(applet.connection()) << new NotificationsOptionPage(GuiType::Plasmoid)
|
||||||
|
<< new AppearanceOptionPage(GuiType::Plasmoid) << new ShortcutOptionPage(applet));
|
||||||
category->setIcon(QIcon::fromTheme(QStringLiteral("plasma")));
|
category->setIcon(QIcon::fromTheme(QStringLiteral("plasma")));
|
||||||
categories << category;
|
categories << category;
|
||||||
|
|
||||||
|
|
|
@ -266,9 +266,17 @@ void SyncthingApplet::showDirectoryErrors(unsigned int directoryIndex) const
|
||||||
|
|
||||||
void SyncthingApplet::handleSettingsChanged()
|
void SyncthingApplet::handleSettingsChanged()
|
||||||
{
|
{
|
||||||
|
// apply appearance settings
|
||||||
|
const auto &appearanceSettings = Settings::values().appearance;
|
||||||
|
m_dirModel.setBrightColors(appearanceSettings.brightTextColors);
|
||||||
|
m_devModel.setBrightColors(appearanceSettings.brightTextColors);
|
||||||
|
m_downloadModel.setBrightColors(appearanceSettings.brightTextColors);
|
||||||
|
|
||||||
|
// apply connection config
|
||||||
const int currentConfig = m_currentConnectionConfig;
|
const int currentConfig = m_currentConnectionConfig;
|
||||||
m_currentConnectionConfig = -1; // force update
|
m_currentConnectionConfig = -1; // force update
|
||||||
setCurrentConnectionConfigIndex(currentConfig);
|
setCurrentConnectionConfigIndex(currentConfig);
|
||||||
|
|
||||||
emit settingsChanged();
|
emit settingsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -337,9 +337,9 @@ void ConnectionOptionPage::applyAndReconnect()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NotificationsOptionPage
|
// NotificationsOptionPage
|
||||||
NotificationsOptionPage::NotificationsOptionPage(bool noApi, QWidget *parentWidget)
|
NotificationsOptionPage::NotificationsOptionPage(GuiType guiType, QWidget *parentWidget)
|
||||||
: NotificationsOptionPageBase(parentWidget)
|
: NotificationsOptionPageBase(parentWidget)
|
||||||
, m_noApi(noApi)
|
, m_guiType(guiType)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -350,7 +350,13 @@ NotificationsOptionPage::~NotificationsOptionPage()
|
||||||
QWidget *NotificationsOptionPage::setupWidget()
|
QWidget *NotificationsOptionPage::setupWidget()
|
||||||
{
|
{
|
||||||
auto *w = NotificationsOptionPageBase::setupWidget();
|
auto *w = NotificationsOptionPageBase::setupWidget();
|
||||||
ui()->apiGroupBox->setHidden(m_noApi);
|
switch (m_guiType) {
|
||||||
|
case GuiType::TrayWidget:
|
||||||
|
break;
|
||||||
|
case GuiType::Plasmoid:
|
||||||
|
ui()->apiGroupBox->setHidden(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
return w;
|
return w;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,8 +400,9 @@ void NotificationsOptionPage::reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AppearanceOptionPage
|
// AppearanceOptionPage
|
||||||
AppearanceOptionPage::AppearanceOptionPage(QWidget *parentWidget)
|
AppearanceOptionPage::AppearanceOptionPage(GuiType guiType, QWidget *parentWidget)
|
||||||
: AppearanceOptionPageBase(parentWidget)
|
: AppearanceOptionPageBase(parentWidget)
|
||||||
|
, m_guiType(guiType)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -403,10 +410,28 @@ AppearanceOptionPage::~AppearanceOptionPage()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QWidget *AppearanceOptionPage::setupWidget()
|
||||||
|
{
|
||||||
|
auto *w = AppearanceOptionPageBase::setupWidget();
|
||||||
|
switch (m_guiType) {
|
||||||
|
case GuiType::TrayWidget:
|
||||||
|
break;
|
||||||
|
case GuiType::Plasmoid:
|
||||||
|
for (unsigned char i = 0; i != 6; ++i) {
|
||||||
|
ui()->formLayout->removeRow(0);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
|
||||||
bool AppearanceOptionPage::apply()
|
bool AppearanceOptionPage::apply()
|
||||||
{
|
{
|
||||||
if (hasBeenShown()) {
|
if (!hasBeenShown()) {
|
||||||
auto &settings = values().appearance;
|
return true;
|
||||||
|
}
|
||||||
|
auto &settings = values().appearance;
|
||||||
|
if (m_guiType == GuiType::TrayWidget) {
|
||||||
settings.trayMenuSize.setWidth(ui()->widthSpinBox->value());
|
settings.trayMenuSize.setWidth(ui()->widthSpinBox->value());
|
||||||
settings.trayMenuSize.setHeight(ui()->heightSpinBox->value());
|
settings.trayMenuSize.setHeight(ui()->heightSpinBox->value());
|
||||||
settings.showTraffic = ui()->showTrafficCheckBox->isChecked();
|
settings.showTraffic = ui()->showTrafficCheckBox->isChecked();
|
||||||
|
@ -436,15 +461,19 @@ bool AppearanceOptionPage::apply()
|
||||||
}
|
}
|
||||||
settings.frameStyle = style;
|
settings.frameStyle = style;
|
||||||
settings.tabPosition = ui()->tabPosComboBox->currentIndex();
|
settings.tabPosition = ui()->tabPosComboBox->currentIndex();
|
||||||
settings.brightTextColors = ui()->brightTextColorsCheckBox->isChecked();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settings.brightTextColors = ui()->brightTextColorsCheckBox->isChecked();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AppearanceOptionPage::reset()
|
void AppearanceOptionPage::reset()
|
||||||
{
|
{
|
||||||
if (hasBeenShown()) {
|
if (!hasBeenShown()) {
|
||||||
const auto &settings = values().appearance;
|
return;
|
||||||
|
}
|
||||||
|
const auto &settings = values().appearance;
|
||||||
|
if (m_guiType == GuiType::TrayWidget) {
|
||||||
ui()->widthSpinBox->setValue(settings.trayMenuSize.width());
|
ui()->widthSpinBox->setValue(settings.trayMenuSize.width());
|
||||||
ui()->heightSpinBox->setValue(settings.trayMenuSize.height());
|
ui()->heightSpinBox->setValue(settings.trayMenuSize.height());
|
||||||
ui()->showTrafficCheckBox->setChecked(settings.showTraffic);
|
ui()->showTrafficCheckBox->setChecked(settings.showTraffic);
|
||||||
|
@ -475,8 +504,8 @@ void AppearanceOptionPage::reset()
|
||||||
}
|
}
|
||||||
ui()->frameShadowComboBox->setCurrentIndex(index);
|
ui()->frameShadowComboBox->setCurrentIndex(index);
|
||||||
ui()->tabPosComboBox->setCurrentIndex(settings.tabPosition);
|
ui()->tabPosComboBox->setCurrentIndex(settings.tabPosition);
|
||||||
ui()->brightTextColorsCheckBox->setChecked(settings.brightTextColors);
|
|
||||||
}
|
}
|
||||||
|
ui()->brightTextColorsCheckBox->setChecked(settings.brightTextColors);
|
||||||
}
|
}
|
||||||
|
|
||||||
// AutostartOptionPage
|
// AutostartOptionPage
|
||||||
|
@ -492,6 +521,7 @@ AutostartOptionPage::~AutostartOptionPage()
|
||||||
QWidget *AutostartOptionPage::setupWidget()
|
QWidget *AutostartOptionPage::setupWidget()
|
||||||
{
|
{
|
||||||
auto *widget = AutostartOptionPageBase::setupWidget();
|
auto *widget = AutostartOptionPageBase::setupWidget();
|
||||||
|
|
||||||
ui()->infoIconLabel->setPixmap(
|
ui()->infoIconLabel->setPixmap(
|
||||||
QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation, nullptr, ui()->infoIconLabel).pixmap(ui()->infoIconLabel->size()));
|
QApplication::style()->standardIcon(QStyle::SP_MessageBoxInformation, nullptr, ui()->infoIconLabel).pixmap(ui()->infoIconLabel->size()));
|
||||||
#if defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID)
|
#if defined(PLATFORM_LINUX) && !defined(PLATFORM_ANDROID)
|
||||||
|
|
|
@ -22,6 +22,17 @@ class SyncthingProcess;
|
||||||
|
|
||||||
namespace QtGui {
|
namespace QtGui {
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief The GuiType enum specifies a GUI type.
|
||||||
|
*
|
||||||
|
* Such a value can be passed to some option pages to show only the options which are relevant
|
||||||
|
* for the particular GUI type.
|
||||||
|
*/
|
||||||
|
enum class GuiType {
|
||||||
|
TrayWidget,
|
||||||
|
Plasmoid,
|
||||||
|
};
|
||||||
|
|
||||||
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(ConnectionOptionPage)
|
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(ConnectionOptionPage)
|
||||||
public:
|
public:
|
||||||
ConnectionOptionPage(Data::SyncthingConnection *connection, QWidget *parentWidget = nullptr);
|
ConnectionOptionPage(Data::SyncthingConnection *connection, QWidget *parentWidget = nullptr);
|
||||||
|
@ -47,14 +58,21 @@ END_DECLARE_OPTION_PAGE
|
||||||
|
|
||||||
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(NotificationsOptionPage)
|
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(NotificationsOptionPage)
|
||||||
public:
|
public:
|
||||||
NotificationsOptionPage(bool noApi = false, QWidget *parentWidget = nullptr);
|
NotificationsOptionPage(GuiType guiType = GuiType::TrayWidget, QWidget *parentWidget = nullptr);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_SETUP_WIDGETS
|
DECLARE_SETUP_WIDGETS
|
||||||
bool m_noApi;
|
const GuiType m_guiType;
|
||||||
END_DECLARE_OPTION_PAGE
|
END_DECLARE_OPTION_PAGE
|
||||||
|
|
||||||
DECLARE_UI_FILE_BASED_OPTION_PAGE(AppearanceOptionPage)
|
BEGIN_DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_CTOR(AppearanceOptionPage)
|
||||||
|
public:
|
||||||
|
AppearanceOptionPage(GuiType guiType = GuiType::TrayWidget, QWidget *parentWidget = nullptr);
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_SETUP_WIDGETS
|
||||||
|
const GuiType m_guiType;
|
||||||
|
END_DECLARE_OPTION_PAGE
|
||||||
|
|
||||||
DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_SETUP(AutostartOptionPage)
|
DECLARE_UI_FILE_BASED_OPTION_PAGE_CUSTOM_SETUP(AutostartOptionPage)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue