diff --git a/client.qrc b/client.qrc index 19e1bf1f0..f1116f63b 100644 --- a/client.qrc +++ b/client.qrc @@ -10,8 +10,11 @@ <file>resources/warning.png</file> <file>resources/warning@2x.png</file> <file>resources/settings.png</file> + <file>resources/settings@2x.png</file> <file>resources/activity.png</file> + <file>resources/activity@2x.png</file> <file>resources/network.png</file> + <file>resources/network@2x.png</file> <file>resources/lock-http.png</file> <file>resources/lock-http@2x.png</file> <file>resources/lock-https.png</file> diff --git a/resources/account.png b/resources/account.png index c227f8d77..e2eede81d 100644 Binary files a/resources/account.png and b/resources/account.png differ diff --git a/resources/account@2x.png b/resources/account@2x.png new file mode 100644 index 000000000..c227f8d77 Binary files /dev/null and b/resources/account@2x.png differ diff --git a/resources/activity.png b/resources/activity.png index 8d4ae9f70..a05e841c8 100644 Binary files a/resources/activity.png and b/resources/activity.png differ diff --git a/resources/activity@2x.png b/resources/activity@2x.png new file mode 100644 index 000000000..8d4ae9f70 Binary files /dev/null and b/resources/activity@2x.png differ diff --git a/resources/network.png b/resources/network.png index 0e9fe7742..bed57f7de 100644 Binary files a/resources/network.png and b/resources/network.png differ diff --git a/resources/network@2x.png b/resources/network@2x.png new file mode 100644 index 000000000..5190c9a82 Binary files /dev/null and b/resources/network@2x.png differ diff --git a/resources/settings.png b/resources/settings.png index d868ea845..b7c6b11dd 100644 Binary files a/resources/settings.png and b/resources/settings.png differ diff --git a/resources/settings@2x.png b/resources/settings@2x.png new file mode 100644 index 000000000..d868ea845 Binary files /dev/null and b/resources/settings@2x.png differ diff --git a/src/gui/settingsdialog.cpp b/src/gui/settingsdialog.cpp index ce57eeb50..20df8fe87 100644 --- a/src/gui/settingsdialog.cpp +++ b/src/gui/settingsdialog.cpp @@ -32,13 +32,23 @@ #include <QDebug> #include <QSettings> #include <QToolBar> +#include <QToolButton> #include <QLayout> +#include <QVBoxLayout> namespace { const char TOOLBAR_CSS[] = "QToolBar { background: white; margin: 0; padding: 0; border: none; border-bottom: 1px solid %1; spacing: 0; } " "QToolBar QToolButton { background: white; border: none; border-bottom: 1px solid %1; margin: 0; padding: 0; } " "QToolBar QToolButton:checked { background: %2; color: %3; }"; + + void addActionToToolBar(QAction *action, QToolBar *tb) { + QToolButton* btn = new QToolButton; + btn->setDefaultAction(action); + btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + btn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + tb->addWidget(btn); + } } namespace OCC { @@ -54,11 +64,11 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); _ui->setupUi(this); QToolBar *toolBar = new QToolBar; - toolBar->setIconSize(QSize(32,32)); QString highlightColor(palette().highlight().color().name()); QString altBase(palette().alternateBase().color().name()); QString dark(palette().dark().color().name()); toolBar->setStyleSheet(QString::fromAscii(TOOLBAR_CSS).arg(dark).arg(highlightColor).arg(altBase)); + toolBar->setIconSize(QSize(32, 32)); toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); layout()->setMenuBar(toolBar); @@ -68,6 +78,7 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : connect(closeWindowAction, SIGNAL(triggered()), SLOT(accept())); addAction(closeWindowAction); + setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(Theme::instance()->appNameGUI()); @@ -75,24 +86,29 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : auto spacer = new QWidget(); spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); toolBar->addWidget(spacer); + QActionGroup *group = new QActionGroup(this); + group->setExclusive(true); // Note: all the actions have a '\n' because the account name is in two lines and // all buttons must have the same size in order to keep a good layout QIcon protocolIcon(QLatin1String(":/client/resources/activity.png")); - _protocolAction = toolBar->addAction(protocolIcon, tr("Activity") + QLatin1Char('\n')); + _protocolAction = group->addAction(protocolIcon, tr("Activity")); _protocolAction->setCheckable(true); + addActionToToolBar(_protocolAction, toolBar); ProtocolWidget *protocolWidget = new ProtocolWidget; _ui->stack->addWidget(protocolWidget); QIcon generalIcon(QLatin1String(":/client/resources/settings.png")); - QAction *generalAction = toolBar->addAction(generalIcon, tr("General") + QLatin1Char('\n')); + QAction *generalAction = group->addAction(generalIcon, tr("General")); generalAction->setCheckable(true); + addActionToToolBar(generalAction, toolBar); GeneralSettings *generalSettings = new GeneralSettings; _ui->stack->addWidget(generalSettings); QIcon networkIcon(QLatin1String(":/client/resources/network.png")); - QAction *networkAction = toolBar->addAction(networkIcon, tr("Network") + QLatin1Char('\n')); + QAction *networkAction = group->addAction(networkIcon, tr("Network")); networkAction->setCheckable(true); + addActionToToolBar(networkAction, toolBar); NetworkSettings *networkSettings = new NetworkSettings; _ui->stack->addWidget(networkSettings); @@ -100,11 +116,6 @@ SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : _actions.insert(generalAction, generalSettings); _actions.insert(networkAction, networkSettings); - QActionGroup *group = new QActionGroup(this); - group->addAction(_protocolAction); - group->addAction(generalAction); - group->addAction(networkAction); - group->setExclusive(true); connect(group, SIGNAL(triggered(QAction*)), SLOT(slotSwitchPage(QAction*))); connect(AccountManager::instance(), SIGNAL(accountAdded(AccountState*)), @@ -167,8 +178,14 @@ void SettingsDialog::accountAdded(AccountState *s) Q_ASSERT(toolBar); auto accountAction = new QAction(accountIcon, s->shortDisplayNameForSettings(), this); accountAction->setToolTip(s->account()->displayName()); - toolBar->insertAction(toolBar->actions().at(0), accountAction); accountAction->setCheckable(true); + + QToolButton* accountButton = new QToolButton; + accountButton->setDefaultAction(accountAction); + accountButton->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + accountButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); + toolBar->insertWidget(toolBar->actions().at(0), accountButton); + auto accountSettings = new AccountSettings(s, this); _ui->stack->insertWidget(0 , accountSettings); _actions.insert(accountAction, accountSettings);