changeset 30965:291994766c55

add fusion dark style to gui * gui-preferences-global.h: added extra styles * main-window.cc (main_window): initiale new class variable with default style; (notice_settings): check desired style for extra fusion dark style and set style togehter with new palette accordingly; (getFusionDarkPalette): new function for creating the palette for new fusion dark style * main-window.h: new function getFusionDarkPalette, new class variable m_default_palette * settings-dialog.cc (settings_dialog): add new stayle to combo box with styles
author Farid Partonia <f.partonia@gmail.com>
date Thu, 21 Apr 2022 13:35:47 +0430
parents 04601f6c47f4
children 5c4d807b3aff
files libgui/src/gui-preferences-global.h libgui/src/main-window.cc libgui/src/main-window.h libgui/src/settings-dialog.cc
diffstat 4 files changed, 57 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/gui-preferences-global.h	Sat Apr 23 18:10:45 2022 +0200
+++ b/libgui/src/gui-preferences-global.h	Thu Apr 21 13:35:47 2022 +0430
@@ -117,6 +117,15 @@
 const gui_pref
 global_status_bar ("show_status_bar", QVariant (true));
 
+
+enum
+{
+  EXTRA_STYLE_FUSION_DARK = 0
+}  ;
+const QStringList
+global_extra_styles (QStringList ()
+                        << "Fusion-Dark");
+
 #if defined (Q_OS_MAC)
 // prevent native file dialogs on MAC by setting the default "false" and
 // setting the flag for ignoring the pref to "true" (3rd argument)
--- a/libgui/src/main-window.cc	Sat Apr 23 18:10:45 2022 +0200
+++ b/libgui/src/main-window.cc	Thu Apr 21 13:35:47 2022 +0430
@@ -172,6 +172,7 @@
     QApplication *qapp = m_octave_qobj.qapplication ();
 
     m_default_style = qapp->style ()->objectName ();
+    m_default_palette = qapp->palette ();
 
     gui_settings *settings = rmgr.get_settings ();
 
@@ -911,12 +912,24 @@
     if (preferred_style == global_style.def.toString ())
       preferred_style = m_default_style;
 
-    QStyle *new_style = QStyleFactory::create (preferred_style);
-    if (new_style)
+    QApplication* qapp = m_octave_qobj.qapplication();
+
+    if (preferred_style == global_extra_styles.at (EXTRA_STYLE_FUSION_DARK))
       {
-        QApplication *qapp = m_octave_qobj.qapplication ();
-
-        qapp->setStyle (new_style);
+        QStyle *new_style = QStyleFactory::create (QStringLiteral("Fusion"));
+        if (new_style)
+          qapp->setStyle (new_style);
+        qapp->setPalette (getFusionDarkPalette());
+        qapp->setStyleSheet ("QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }");
+      }
+    else
+      {
+        QStyle *new_style = QStyleFactory::create (preferred_style);
+        if (new_style)
+          {
+            qapp->setPalette (m_default_palette);
+            qapp->setStyle (new_style);
+          }
       }
 
     // the widget's icons (when floating)
@@ -997,6 +1010,33 @@
 
   }
 
+  QPalette main_window::getFusionDarkPalette()
+  {
+    QPalette darkPalette;
+    darkPalette.setColor(QPalette::Window, QColor(53, 53, 53));
+    darkPalette.setColor(QPalette::WindowText, Qt::white);
+    darkPalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor(127, 127, 127));
+    darkPalette.setColor(QPalette::Base, QColor(42, 42, 42));
+    darkPalette.setColor(QPalette::AlternateBase, QColor(66, 66, 66));
+    darkPalette.setColor(QPalette::ToolTipBase, Qt::white);
+    darkPalette.setColor(QPalette::ToolTipText, Qt::white);
+    darkPalette.setColor(QPalette::Text, Qt::white);
+    darkPalette.setColor(QPalette::Disabled, QPalette::Text, QColor(127, 127, 127));
+    darkPalette.setColor(QPalette::Dark, QColor(35, 35, 35));
+    darkPalette.setColor(QPalette::Shadow, QColor(20, 20, 20));
+    darkPalette.setColor(QPalette::Button, QColor(53, 53, 53));
+    darkPalette.setColor(QPalette::ButtonText, Qt::white);
+    darkPalette.setColor(QPalette::Disabled, QPalette::ButtonText, QColor(127, 127, 127));
+    darkPalette.setColor(QPalette::BrightText, Qt::red);
+    darkPalette.setColor(QPalette::Link, QColor(42, 130, 218));
+    darkPalette.setColor(QPalette::Highlight, QColor(42, 130, 218));
+    darkPalette.setColor(QPalette::Disabled, QPalette::Highlight, QColor(80, 80, 80));
+    darkPalette.setColor(QPalette::HighlightedText, Qt::white);
+    darkPalette.setColor(QPalette::Disabled, QPalette::HighlightedText, QColor(127, 127, 127));
+
+    return darkPalette;
+  }
+
   void main_window::prepare_to_exit (void)
   {
     // Find files dialog is constructed dynamically, not at time of main_window
--- a/libgui/src/main-window.h	Sat Apr 23 18:10:45 2022 +0200
+++ b/libgui/src/main-window.h	Thu Apr 21 13:35:47 2022 +0430
@@ -153,10 +153,10 @@
     void open_donate_page (void);
     void process_settings_dialog_request (const QString& desired_tab
                                           = QString ());
-
     void show_about_octave (void);
     void notice_settings (const gui_settings *settings,
                           bool update_by_worker = false);
+    QPalette getFusionDarkPalette();
     void prepare_to_exit (void);
     void go_to_previous_widget (void);
     void reset_windows (void);
@@ -309,6 +309,7 @@
     QString m_default_encoding;
 
     QString m_default_style;
+    QPalette m_default_palette;
 
     //! Toolbar.
 
--- a/libgui/src/settings-dialog.cc	Sat Apr 23 18:10:45 2022 +0200
+++ b/libgui/src/settings-dialog.cc	Thu Apr 21 13:35:47 2022 +0430
@@ -116,6 +116,7 @@
 
     // Global style
     QStringList styles = QStyleFactory::keys();
+    styles.append (global_extra_styles);
     combo_styles->addItems (styles);
     combo_styles->insertItem (0, global_style.def.toString ());
     combo_styles->insertSeparator (1);