changeset 19847:597fc0fd8e54

make size of toolbar icons depending on scaling of display * files-dock-widget.cc (notice_settings): set icon size to small, normal or large by using qt pixel metrics * file-editor.cc notice_settings): set icon size to small, normal or large by using qt pixel metrics * main-window.cc (notice_settings): set icon size to small, normal or large by using qt pixel metrics * settings-dialog.ui: use radio buttons for small, normal and large icon size instead of spin box with pixel sizes * settings-dialog.cc (settings_dialog): initialize the radio buttons depending on the settings file; (write_changed_settings): save the icon size depending on radio buttons
author Torsten <ttl@justmail.de>
date Tue, 24 Feb 2015 09:35:34 +0100
parents 72fe9df87fe8
children 9b7ca334a104
files libgui/src/files-dock-widget.cc libgui/src/m-editor/file-editor.cc libgui/src/main-window.cc libgui/src/settings-dialog.cc libgui/src/settings-dialog.ui
diffstat 5 files changed, 64 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/files-dock-widget.cc	Tue Feb 24 07:12:13 2015 +0100
+++ b/libgui/src/files-dock-widget.cc	Tue Feb 24 09:35:34 2015 +0100
@@ -774,9 +774,15 @@
 {
   // Qsettings pointer is checked before emitting.
 
-  int icon_size = settings->value ("toolbar_icon_size",16).toInt ();
-  if (icon_size > 16)
-    icon_size = icon_size - 4;
+  int icon_size_settings = settings->value ("toolbar_icon_size",0).toInt ();
+  QStyle *st = style ();
+  int icon_size = st->pixelMetric (QStyle::PM_ToolBarIconSize);
+
+  if (icon_size_settings == 1)
+    icon_size = st->pixelMetric (QStyle::PM_LargeIconSize);
+  else if (icon_size_settings == -1)
+    icon_size = st->pixelMetric (QStyle::PM_SmallIconSize);
+
   _navigation_tool_bar->setIconSize (QSize (icon_size,icon_size));
 
   // file names are always shown, other columns can be hidden by settings
--- a/libgui/src/m-editor/file-editor.cc	Tue Feb 24 07:12:13 2015 +0100
+++ b/libgui/src/m-editor/file-editor.cc	Tue Feb 24 09:35:34 2015 +0100
@@ -1128,8 +1128,16 @@
 void
 file_editor::notice_settings (const QSettings *settings)
 {
-  int icon_size = settings->value ("toolbar_icon_size", 16).toInt ();
-  _tool_bar->setIconSize (QSize (icon_size, icon_size));
+  int icon_size_settings = settings->value ("toolbar_icon_size",0).toInt ();
+  QStyle *st = style ();
+  int icon_size = st->pixelMetric (QStyle::PM_ToolBarIconSize);
+
+  if (icon_size_settings == 1)
+    icon_size = st->pixelMetric (QStyle::PM_LargeIconSize);
+  else if (icon_size_settings == -1)
+    icon_size = st->pixelMetric (QStyle::PM_SmallIconSize);
+
+  _tool_bar->setIconSize (QSize (icon_size,icon_size));
 
   int tab_width_min = settings->value ("editor/notebook_tab_width_min", 160)
                                       .toInt ();
--- a/libgui/src/main-window.cc	Tue Feb 24 07:12:13 2015 +0100
+++ b/libgui/src/main-window.cc	Tue Feb 24 09:35:34 2015 +0100
@@ -731,7 +731,15 @@
   else
     _release_notes_icon = ":/actions/icons/logo.png";
 
-  int icon_size = settings->value ("toolbar_icon_size",16).toInt ();
+  int icon_size_settings = settings->value ("toolbar_icon_size",0).toInt ();
+  QStyle *st = style ();
+  int icon_size = st->pixelMetric (QStyle::PM_ToolBarIconSize);
+
+  if (icon_size_settings == 1)
+    icon_size = st->pixelMetric (QStyle::PM_LargeIconSize);
+  else if (icon_size_settings == -1)
+    icon_size = st->pixelMetric (QStyle::PM_SmallIconSize);
+
   _main_tool_bar->setIconSize (QSize (icon_size,icon_size));
 
   if (settings->value ("show_status_bar",true).toBool ())
--- a/libgui/src/settings-dialog.cc	Tue Feb 24 07:12:13 2015 +0100
+++ b/libgui/src/settings-dialog.cc	Tue Feb 24 09:35:34 2015 +0100
@@ -85,10 +85,21 @@
   else
     ui->comboBox_language->setCurrentIndex (0);  // System is default
 
-  ui->toolbar_icon_size->setValue (settings->value ("toolbar_icon_size",
-                                                    16).toInt ());
+  // icon size
+  QButtonGroup *icon_size_group = new QButtonGroup (this);
+  icon_size_group->addButton (ui->icon_size_small);
+  icon_size_group->addButton (ui->icon_size_normal);
+  icon_size_group->addButton (ui->icon_size_large);
+  int icon_size = settings->value ("toolbar_icon_size", 0).toInt ();
+  ui->icon_size_normal->setChecked (true);  // the default
+  ui->icon_size_small->setChecked (icon_size == -1);
+  ui->icon_size_large->setChecked (icon_size == 1);
 
   // which icon has to be selected
+  QButtonGroup *icon_group = new QButtonGroup (this);
+  icon_group->addButton (ui->general_icon_octave);
+  icon_group->addButton (ui->general_icon_graphic);
+  icon_group->addButton (ui->general_icon_letter);
   QString widget_icon_set =
     settings->value ("DockWidgets/widget_icon_set","NONE").toString ();
   ui->general_icon_octave-> setChecked (true);  // the default (if invalid set)
@@ -643,7 +654,12 @@
                       _widget_title_fg_color_active->color ());
 
   // icon size
-  settings->setValue ("toolbar_icon_size", ui->toolbar_icon_size->value ());
+  int icon_size = 0;
+  if (ui->icon_size_small->isChecked ())
+    icon_size = -1;
+  else if (ui->icon_size_large->isChecked ())
+    icon_size = 1;
+  settings->setValue ("toolbar_icon_size", icon_size);
 
   // promp to exit
   settings->setValue ("prompt_to_exit", ui->cb_prompt_to_exit->isChecked ());
--- a/libgui/src/settings-dialog.ui	Tue Feb 24 07:12:13 2015 +0100
+++ b/libgui/src/settings-dialog.ui	Tue Feb 24 09:35:34 2015 +0100
@@ -119,18 +119,26 @@
                 <item row="2" column="1">
                  <layout class="QHBoxLayout" name="horizontalLayout_6">
                   <item>
-                   <widget class="QSpinBox" name="toolbar_icon_size">
-                    <property name="minimum">
-                     <number>16</number>
+                   <widget class="QRadioButton" name="icon_size_small">
+                    <property name="text">
+                     <string>Small</string>
                     </property>
-                    <property name="maximum">
-                     <number>32</number>
+                   </widget>
+                  </item>
+                  <item>
+                   <widget class="QRadioButton" name="icon_size_normal">
+                    <property name="text">
+                     <string> Normal</string>
                     </property>
-                    <property name="singleStep">
-                     <number>4</number>
+                    <property name="checked">
+                     <bool>true</bool>
                     </property>
-                    <property name="value">
-                     <number>24</number>
+                   </widget>
+                  </item>
+                  <item>
+                   <widget class="QRadioButton" name="icon_size_large">
+                    <property name="text">
+                     <string>Large</string>
                     </property>
                    </widget>
                   </item>