Settings dialog: improve layout a bit
authorDaniel Molkentin <danimo@owncloud.com>
Mon, 10 Aug 2015 08:50:57 +0000 (10:50 +0200)
committerDaniel Molkentin <danimo@owncloud.com>
Mon, 10 Aug 2015 08:51:05 +0000 (10:51 +0200)
client.qrc
resources/account.png
resources/account@2x.png [new file with mode: 0644]
resources/activity.png
resources/activity@2x.png [new file with mode: 0644]
resources/network.png
resources/network@2x.png [new file with mode: 0644]
resources/settings.png
resources/settings@2x.png [new file with mode: 0644]
src/gui/settingsdialog.cpp

index 19e1bf1f031855d1e2cecb36ede039bc02ed25c9..f1116f63b99ba246806c5b12606d0d96910e853d 100644 (file)
         <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>
index c227f8d776cc3ca292afe2f5d886605fc212ddc0..e2eede81db25c64e702b6a29f782675bb5f67105 100644 (file)
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 (file)
index 0000000..c227f8d
Binary files /dev/null and b/resources/account@2x.png differ
index 8d4ae9f70eef2d52e0bab0d7a21ee096bb8f9eaf..a05e841c85f02c6e14def6bde8bb4e20edee4248 100644 (file)
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 (file)
index 0000000..8d4ae9f
Binary files /dev/null and b/resources/activity@2x.png differ
index 0e9fe774285a5b0e2f16c37584a93d54c94d864b..bed57f7de1edbaa73350d306fcfb0c94a147d165 100644 (file)
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 (file)
index 0000000..5190c9a
Binary files /dev/null and b/resources/network@2x.png differ
index d868ea845751ab15ac126b2b762df72c8822cdf5..b7c6b11ddc4ca97c4d9ec8b6b85ddb0948a97de2 100644 (file)
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 (file)
index 0000000..d868ea8
Binary files /dev/null and b/resources/settings@2x.png differ
index ce57eeb50f1c5637e02ce90b6632ee4fd089c446..20df8fe876446896dbed3a2ea85616a8019abb9b 100644 (file)
 #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);