File ksmserver-leave-countdown.diff of Package kdebase4-workspace

Index: libs/kworkspace/kworkspace.h
===================================================================
--- libs/kworkspace/kworkspace.h	(revision 832330)
+++ libs/kworkspace/kworkspace.h	(working copy)
@@ -52,7 +52,7 @@
      */
     ShutdownTypeDefault = -1,
     /**
-     * Only log out.
+     * Only show log out dialog
      */
     ShutdownTypeNone = 0,
     /**
@@ -62,7 +62,11 @@
     /**
      * Log out and halt the machine.
      */
-    ShutdownTypeHalt = 2
+    ShutdownTypeHalt = 2,
+    /**
+     * Only log out
+     */
+    ShutdownTypeLogout = 3
   };
 
   /**
Index: libs/kworkspace/kdisplaymanager.cpp
===================================================================
--- libs/kworkspace/kdisplaymanager.cpp	(revision 875843)
+++ libs/kworkspace/kdisplaymanager.cpp	(working copy)
@@ -201,7 +201,7 @@
               KWorkSpace::ShutdownMode shutdownMode, /* NOT Default */
               const QString &bootOption )
 {
-	if (shutdownType == KWorkSpace::ShutdownTypeNone)
+	if (shutdownType == KWorkSpace::ShutdownTypeNone || shutdownType == KWorkSpace::ShutdownTypeLogout)
 		return;
 
 	bool cap_ask;
Index: ksmserver/shutdowndlg.h
===================================================================
--- ksmserver/shutdowndlg.h	(revision 875843)
+++ ksmserver/shutdowndlg.h	(working copy)
@@ -131,6 +131,7 @@
     KSMPushButton *m_btnLogout;
     KSMPushButton *m_btnHalt;
     KSMPushButton *m_btnReboot;
+    KSMPushButton *btnBack;
     int m_automaticallyDoSeconds;
 
 private Q_SLOTS:
Index: ksmserver/shutdowndlg.cpp
===================================================================
--- ksmserver/shutdowndlg.cpp	(revision 875843)
+++ ksmserver/shutdowndlg.cpp	(working copy)
@@ -339,7 +339,7 @@
     m_btnLogout(0),
     m_btnHalt(0),
     m_btnReboot(0),
-    m_automaticallyDoSeconds(60)
+    m_automaticallyDoSeconds(30)
     // this is a WType_Popup on purpose. Do not change that! Not
     // having a popup here has severe side effects.
 {
@@ -361,14 +361,19 @@
     m_svg->setImagePath("dialogs/shutdowndialog");
     connect( m_svg, SIGNAL(repaintNeeded()), this, SLOT(update()) );
     setModal( true );
-    resize(400, 220);
+    resize(400, 120);
     KDialog::centerOnScreen(this);
 
     QVBoxLayout *mainLayout = new QVBoxLayout();
 
     mainLayout->setContentsMargins(12, 9, 12, 7);
+
     QVBoxLayout *buttonLayout = new QVBoxLayout();
     QHBoxLayout *buttonMainLayout = new QHBoxLayout();
+
+    m_automaticallyDoLabel = new QLabel(this);
+    mainLayout->addWidget(m_automaticallyDoLabel, 0, Qt::AlignRight);
+
     if (m_svg->hasElement("picture")) {
         buttonMainLayout->addSpacing(m_svg->elementRect("picture").toRect().right() + 12);
     }
@@ -383,9 +388,12 @@
     QPalette palette;
     palette.setColor(QPalette::WindowText, fntColor);
 
+    buttonLayout->addSpacing(10);
+
     m_btnLogout = new KSMPushButton( i18n("&Logout"), this );
     m_btnLogout->setPixmap(KIconLoader::global()->loadIcon("system-log-out", KIconLoader::NoGroup, 32));
-    m_btnLogout->setFocus();
+    if ( sdtype == KWorkSpace::ShutdownTypeLogout )
+        m_btnLogout->setFocus();
     connect(m_btnLogout, SIGNAL(clicked()), SLOT(slotLogout()));
     buttonLayout->addWidget(m_btnLogout, Qt::AlignRight | Qt::AlignTop);
 
@@ -449,21 +457,39 @@
         }
     }
 
-    KSMPushButton* btnBack = new KSMPushButton(i18n("&Cancel"), this, true);
+    if ( sdtype == KWorkSpace::ShutdownTypeLogout ) {
+        m_btnReboot->setHidden(true);
+        m_btnHalt->setHidden(true);
+	buttonLayout->addSpacing(70);
+    }
+    else if ( sdtype == KWorkSpace::ShutdownTypeHalt ) {
+        m_btnReboot->setHidden(true);
+        m_btnLogout->setHidden(true);
+	buttonLayout->addSpacing(70);
+    }
+    else if ( sdtype == KWorkSpace::ShutdownTypeReboot ) {
+        m_btnHalt->setHidden(true);
+        m_btnLogout->setHidden(true);
+	buttonLayout->addSpacing(70);
+    }
+
+    btnBack = new KSMPushButton(i18n("&Cancel"), this, true);
     btnBack->setPixmap(KIconLoader::global()->loadIcon( "dialog-cancel", KIconLoader::NoGroup, 16));
 
-    m_automaticallyDoLabel = new QLabel(this);
+    //m_automaticallyDoLabel = new QLabel(this);
     m_automaticallyDoLabel->setPalette(palette);
     fnt.setPixelSize(11);
     m_automaticallyDoLabel->setFont(fnt);
-    m_automaticallyDoLabel->setWordWrap(true);
+    //m_automaticallyDoLabel->setWordWrap(true);
     automaticallyDoTimeout();
 
     QTimer *automaticallyDoTimer = new QTimer(this);
     connect(automaticallyDoTimer, SIGNAL(timeout()), this, SLOT(automaticallyDoTimeout()));
     automaticallyDoTimer->start(1000);
 
-    bottomLayout->addWidget(m_automaticallyDoLabel, 1, Qt::AlignBottom);
+    //bottomLayout->addWidget(m_automaticallyDoLabel, 1, Qt::AlignBottom);
+    bottomLayout->addStretch();
+    //buttonLayout->addWidget(m_automaticallyDoLabel);
     bottomLayout->addWidget(btnBack);
     connect(btnBack, SIGNAL(clicked()), SLOT(reject()));
 
@@ -482,14 +508,14 @@
                 focusedButton->click();
         // following code is required to provide a clean way to translate strings
         } else if (focusedButton == m_btnLogout) {
-            m_automaticallyDoLabel->setText(i18np("Log out in 1 second.",
-                                            "Log out in %1 seconds.", m_automaticallyDoSeconds));
+            m_automaticallyDoLabel->setText(i18np("Logging out in 1 second.",
+                                            "Logging out in %1 seconds.", m_automaticallyDoSeconds));
         } else if (focusedButton == m_btnHalt) {
-                m_automaticallyDoLabel->setText(i18np("Turn off computer in 1 second.",
-                                                      "Turn off computer in %1 seconds.", m_automaticallyDoSeconds));
+                m_automaticallyDoLabel->setText(i18np("Turning off computer in 1 second.",
+                                                      "Turning off computer in %1 seconds.", m_automaticallyDoSeconds));
         } else if (focusedButton == m_btnReboot) {
-                m_automaticallyDoLabel->setText(i18np("Reboot computer in 1 second.",
-                                                      "Reboot computer in %1 seconds.", m_automaticallyDoSeconds));
+                m_automaticallyDoLabel->setText(i18np("Restarting computer in 1 second.",
+                                                      "Restarting computer in %1 seconds.", m_automaticallyDoSeconds));
         } else {
             m_automaticallyDoLabel->setText(QString());
         }
@@ -511,9 +537,19 @@
     p.fillRect(QRect(0, 0, width(), height()), Qt::transparent);
     m_svg->paint(&p, QRect(0, 0, width(), height()), "background");
 
+    //FIXME should crop rather than resize this
     if (m_svg->hasElement("picture")) {
         QRect r = m_svg->elementRect("picture").toRect();
-        r.moveTop(m_btnLogout->geometry().top());
+        KSMPushButton* button;
+        if (m_btnLogout->isVisible()) {
+	  button = m_btnLogout;
+	} else if (m_btnHalt->isVisible()) {
+	  button = m_btnHalt;
+	} else {
+	  button = m_btnReboot;
+	}      
+        r.moveTop(button->geometry().top() - 10);
+       	r.setBottom(btnBack->geometry().top());
         m_svg->paint(&p, r, "picture");
     }
 }
openSUSE Build Service is sponsored by