ich versuche gerade den Shutdown-Dialog von KDE zu erweitern. Mein Ziel ist es zwei zusätzliche Buttons zu haben. Und zwar "Suspend to disk" und "Suspend to ram".
Also hab ich mir die Quellen von ksmserver besorgt und darin die shutdown.cpp bearbeitet.
Folgende Zeilen hab ich erweitert und die Buttons werden auch angezeigt
Code: Alles auswählen
// Suspend to disk
KPushButton* btnSuspend2disk = new KPushButton( KGuiItem( i18n("&Suspend to disk"), "disk"), frame );
btnSuspend2disk->setFont( btnFont );
buttonlay->addWidget( btnSuspend2disk );
connect(btnSuspend2disk, SIGNAL(clicked()), SLOT(slotSuspend2disk()));
if ( sdtype == 3 )
btnSuspend2disk->setFocus();
// Suspend to ram
KPushButton* btnSuspend2ram = new KPushButton( KGuiItem( i18n("&Suspend to ram"), "ram"), frame );
btnSuspend2ram->setFont( btnFont );
buttonlay->addWidget( btnSuspend2ram );
connect(btnSuspend2ram, SIGNAL(clicked()), SLOT(reject()));
if ( sdtype == 4 )
btnSuspend2ram->setFocus();
Code: Alles auswählen
void KSMShutdownDlg::slotSuspend2disk()
{
execlp("/usr/bin/sudo", "~/.kde/share/apps/ksmserver/suspend2disk.sh", (char*)0);
reject();
}
Im slotSuspend2disk() ruf ich am Ende auch die reject()-Methode auf. Aber hier gibt es ein unterschiedliches Verhalten.
Bei "Suspend to ram" wird das Shutdown-Dialog geschlossen, genau wie beim Abbrechen-Button.
Bei "Suspend to disk" wird aber das Shutdown-Dialog nicht geschlossen, sondern ich werde einfach ausgeloggt. Obwohl ich am Ende der Methode reject() aufrufe. Also ich erwarte eigentlich genau das gleiche Verhalten wie beim "Suspend to ram"-Button.
Kann mir jemand helfen? Ich bin doch totaler Anfänger in der KDE-Programmierung.
Grüssle, napo