[X2Go-Commits] [x2goclient] 01/01: Add splash screen option when starting in hidden mode.

git-admin at x2go.org git-admin at x2go.org
Thu Apr 21 11:43:35 CEST 2022


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch master
in repository x2goclient.

commit b60fa91f82aae683922abf83afad03ebcb81548f
Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
Date:   Thu Apr 21 11:43:24 2022 +0200

    Add splash screen option when starting in hidden mode.
---
 debian/changelog          |  1 +
 src/help.cpp              |  3 ++-
 src/onmainwindow.cpp      | 48 +++++++++++++++++++++++++++++++++++++++++++++++
 src/onmainwindow.h        |  5 +++++
 src/onmainwindow_privat.h |  2 +-
 5 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 36c46fe..d62e590 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -39,6 +39,7 @@ x2goclient (4.1.2.3-0x2go1) UNRELEASED; urgency=medium
     - Support for OPENSSH PRIVATE KEY format sent from broker.
     - Do not show client in broker mode if startet in "hidden" mode.
     - Enable/Disable session view buttons inside of sessions explorer.
+    - Add splash screen option when starting in hidden mode.
 
   [ Ryan Schmidt ]
   * New upstream version (4.1.2.3):
diff --git a/src/help.cpp b/src/help.cpp
index eeebab1..3dc3b8d 100644
--- a/src/help.cpp
+++ b/src/help.cpp
@@ -168,7 +168,8 @@ help::params_t help::build_params () {
   ADD_OPT ("--broker-logoutbt", QT_TRANSLATE_NOOP ("Help", "Enables broker logout button."));
   ADD_OPT ("--background=<svg-file|dir>", QT_TRANSLATE_NOOP ("Help", "Use a custom/branded background image (SVG format) for X2Go Client's main window. If a directory is given, will randomly pick an SVG file inside of it."));
   ADD_OPT ("--branding=<svg-file>", QT_TRANSLATE_NOOP ("Help", "Use a custom icon (SVG format) for additional branding to replace the default in the lower left corner of X2Go Client's main window."));
-#if defined (Q_OS_WIN)
+  ADD_OPT ("--splash=<pixmap-file>", QT_TRANSLATE_NOOP ("Help", "Show splash screen if starting in hidden mode using specified pixmap file."));
+  #if defined (Q_OS_WIN)
   ADD_OPT ("--xserver-start-limit=<num>", QT_TRANSLATE_NOOP ("Help", "Limit the X.Org Server start count to at most <num> tries. Default: \"3\"." NEWLINE
                                                              "If <num> is zero or a negative number, no limit is imposed." NEWLINE
                                                              "The limits for <num> are platform dependent. If the passed value is out of bounds, X2Go Client falls back to the default value."));
diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp
index 9be99d4..4f9e53a 100644
--- a/src/onmainwindow.cpp
+++ b/src/onmainwindow.cpp
@@ -136,6 +136,7 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
     changeBrokerPass=false;
     resumeAfterSuspending=false;
     forceToShowTrayicon=false;
+    splash=0;
 
     /* Initialize at least these variables before they get filled via loadSettings()
      * They have to be initialized as they are used in closeEvent() and closeClient()...
@@ -284,6 +285,32 @@ ONMainWindow::~ONMainWindow()
     x2goDebug<<"Finished destructor hooks for X2Go Client's main window.";
 }
 
+void ONMainWindow::initSplash()
+{
+    if(!startHidden)
+        return;
+    if(splashPix.length()<1)
+        return;
+    QPixmap px(splashPix);
+    if(px.isNull())
+    {
+        x2goDebug<<"Can't load "<<splashPix<<" not showing splash screen";
+        return;
+    }
+    splash=new QSplashScreen(px,  Qt::WindowStaysOnTopHint);
+    splash->show();
+}
+
+void ONMainWindow::destroySplash()
+{
+    if(splash)
+    {
+        splash->close();
+        delete splash;
+        splash=0;
+    }
+}
+
 
 void ONMainWindow::initUI()
 {
@@ -300,6 +327,8 @@ void ONMainWindow::initUI()
     }
 #endif
 
+    initSplash();
+
     if ( ONMainWindow::portable )
     {
         if ( portableDataPath.length() <=0 )
@@ -1138,6 +1167,10 @@ void ONMainWindow::setBrokerStatus(const QString& text, bool error)
         p.setColor(QPalette::WindowText, QColor(22,103,39));
     statusBar()->setPalette(p);
     statusBar()->showMessage(text);
+    if(splash)
+    {
+        splash->showMessage(text, Qt::AlignLeft|Qt::AlignBottom, Qt::white);
+    }
 }
 
 
@@ -1425,6 +1458,7 @@ void ONMainWindow::slotResize ( const QSize sz )
 
 void ONMainWindow::closeClient()
 {
+    destroySplash();
     x2goInfof(6)<<tr("Closing X2Go Client ...");
     if(trayIcon)
         trayIcon->hide();
@@ -2394,6 +2428,7 @@ void ONMainWindow::slotReadSessions()
     if ( !defaultSession&& startHidden )
     {
         startHidden=false;
+        destroySplash();
         slotResize();
         show();
         activateWindow();
@@ -2455,6 +2490,7 @@ void ONMainWindow::slotReadSessions()
         if ( !sfound && startHidden )
         {
             startHidden=false;
+            destroySplash();
             slotResize();
             show();
             activateWindow();
@@ -2954,6 +2990,7 @@ void ONMainWindow::slotSelectedFromList ( SessionButton* session )
     if ( startHidden && nopass==false && (!brokerMode) )
     {
         startHidden=false;
+        destroySplash();
         slotResize();
         show();
         activateWindow();
@@ -3277,6 +3314,7 @@ void ONMainWindow::slotSshServerAuthError ( int error, QString sshMessage, SshMa
     if ( startHidden )
     {
         startHidden=false;
+        destroySplash();
         slotResize();
         show();
         activateWindow();
@@ -6878,6 +6916,7 @@ void ONMainWindow::slotProxyStderr()
             sendEventToBroker(CONNECTED);
         }
         setStatStatus ( tr ( "running" ) );
+        destroySplash();
         if (trayEnabled)
         {
             if (!useLdap)
@@ -7264,6 +7303,10 @@ void ONMainWindow::setStatStatus ( QString status )
         }
         sessionStatusDlg->hide();
     }
+    if(splash)
+    {
+        splash->showMessage(status, Qt::AlignLeft|Qt::AlignBottom, Qt::white);
+    }
 }
 
 
@@ -8156,6 +8199,11 @@ bool ONMainWindow::parseParameter ( QString param )
         config.brokerurl=value;
         return true;
     }
+    if( setting == "--splash")
+    {
+        splashPix=value;
+        return true;
+    }
     if ( setting == "--broker-cacertfile")
     {
         config.brokerCaCertFile=expandHome(value);
diff --git a/src/onmainwindow.h b/src/onmainwindow.h
index b69b4ea..f84ff26 100644
--- a/src/onmainwindow.h
+++ b/src/onmainwindow.h
@@ -80,6 +80,7 @@ class InteractionDialog;
 class QNetworkAccessManager;
 class QNetworkReply;
 class SessionExplorer;
+class QSplashScreen;
 struct user
 {
     int uin;
@@ -600,6 +601,8 @@ private:
     bool startMaximized;
     bool closeDisconnect;
     bool startHidden;
+    QString splashPix;
+    QSplashScreen* splash;
     bool keepTrayIcon;
     bool hideFolderSharing;
     bool brokerNoauthWithSessionUsername;
@@ -943,6 +946,8 @@ private:
     QString suspendTerminateSessionFromBroker;
 
     void initUI();
+    void initSplash();
+    void destroySplash();
     void sendEventToBroker(client_events ev);
     void suspendFromBroker(const QString& sid);
     void terminateFromBroker(const QString& sid);
diff --git a/src/onmainwindow_privat.h b/src/onmainwindow_privat.h
index 3a4ba82..dd22134 100644
--- a/src/onmainwindow_privat.h
+++ b/src/onmainwindow_privat.h
@@ -40,7 +40,7 @@
 #include <QVBoxLayout>
 #include <QHBoxLayout>
 #include <QFile>
-
+#include <QSplashScreen>
 #include "httpbrokerclient.h"
 #include <QTimer>
 #include <QComboBox>

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git


More information about the x2go-commits mailing list