summaryrefslogtreecommitdiffstats
path: root/ksmserver/startup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksmserver/startup.cpp')
-rw-r--r--ksmserver/startup.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/ksmserver/startup.cpp b/ksmserver/startup.cpp
index 2778b9dd9..4527aadaf 100644
--- a/ksmserver/startup.cpp
+++ b/ksmserver/startup.cpp
@@ -81,15 +81,26 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "server.h"
#include "global.h"
+#include "startupdlg.h"
#include "client.h"
#include <kdebug.h>
+// shall we show a nice fancy login screen?
+bool showFancyLogin = FALSE;
+bool trinity_startup_main_sequence_done = FALSE;
+
/*! Restores the previous session. Ensures the window manager is
running (if specified).
*/
void KSMServer::restoreSession( TQString sessionName )
{
+ showFancyLogin = KConfigGroup(KGlobal::config(), "Login").readBoolEntry("showFancyLogin", true);
+ KConfig ksplashcfg( "ksplashrc", true );
+ ksplashcfg.setGroup( "KSplash" );
+ if ( ksplashcfg.readEntry( "Theme", "Default" ) != TQString("None") )
+ showFancyLogin = false;
+
if( state != Idle )
return;
state = LaunchingWM;
@@ -131,8 +142,14 @@ void KSMServer::restoreSession( TQString sessionName )
// visually more appealing startup.
for (uint i = 0; i < wmCommands.count(); i++)
startApplication( wmCommands[i] );
+ if ((showFancyLogin) && (!startupNotifierIPDlg)) {
+ startupNotifierIPDlg = KSMStartupIPDlg::showStartupIP();
+ }
TQTimer::singleShot( 4000, this, TQT_SLOT( autoStart0() ) );
} else {
+ if ((showFancyLogin) && (!startupNotifierIPDlg)) {
+ startupNotifierIPDlg = KSMStartupIPDlg::showStartupIP();
+ }
autoStart0();
}
}
@@ -144,6 +161,12 @@ void KSMServer::restoreSession( TQString sessionName )
*/
void KSMServer::startDefaultSession()
{
+ showFancyLogin = KConfigGroup(KGlobal::config(), "Login").readBoolEntry("showFancyLogin", true);
+ KConfig ksplashcfg( "ksplashrc", true );
+ ksplashcfg.setGroup( "KSplash" );
+ if ( ksplashcfg.readEntry( "Theme", "Default" ) != TQString("None") )
+ showFancyLogin = false;
+
if( state != Idle )
return;
@@ -158,6 +181,9 @@ void KSMServer::startDefaultSession()
connectDCOPSignal( launcher, launcher, "autoStart2Done()",
"autoStart2Done()", true);
startApplication( wm );
+ if ((showFancyLogin) && (!startupNotifierIPDlg)) {
+ startupNotifierIPDlg = KSMStartupIPDlg::showStartupIP();
+ }
TQTimer::singleShot( 4000, this, TQT_SLOT( autoStart0() ) );
}
@@ -348,6 +374,13 @@ void KSMServer::finishStartup()
state = Idle;
+ // [FIXME] When this fires applications are still being loaded, especially the task tray apps
+ // See if there is a way to detect when all session managed applications have been fully started and wait to fire this until that point!
+ if (startupNotifierIPDlg) {
+ static_cast<KSMStartupIPDlg*>(startupNotifierIPDlg)->closeSMDialog();
+ startupNotifierIPDlg=0;
+ }
+
setupXIOErrorHandler(); // From now on handle X errors as normal shutdown.
}
@@ -417,6 +450,12 @@ void KSMServer::publishProgress( int progress, bool max )
void KSMServer::upAndRunning( const TQString& msg )
{
+ if (startupNotifierIPDlg) {
+ static_cast<KSMStartupIPDlg*>(startupNotifierIPDlg)->setStartupPhase(msg);
+ if (msg == TQString("session ready")) {
+ trinity_startup_main_sequence_done = TRUE;
+ }
+ }
DCOPRef( "ksplash" ).send( "upAndRunning", msg );
XEvent e;
e.xclient.type = ClientMessage;