Branch: master

59ef38d2 2014-04-29 02:46:10 Michele Calgaro
Added possibility to hide the Cancel button from the Desktop Session Locked dialog.
This relates to bug 1584.
M kcontrol/screensaver/scrnsave.cpp
M kcontrol/screensaver/scrnsave.h
M kdesktop/kdesktop.kcfg
M kdesktop/lock/lockdlg.cc
M kdesktop/lock/lockprocess.cc
M kdesktop/lock/main.cc
diff --git a/kcontrol/screensaver/scrnsave.cpp b/kcontrol/screensaver/scrnsave.cpp
index 33df74f..18925e8 100644
--- a/kcontrol/screensaver/scrnsave.cpp
+++ b/kcontrol/screensaver/scrnsave.cpp
@@ -177,7 +177,7 @@
     mSettingsGroup = new TQGroupBox( i18n("Settings"), this );
     mSettingsGroup->setColumnLayout( 0, Qt::Vertical );
     leftColumnLayout->addWidget( mSettingsGroup );
-    TQGridLayout *settingsGroupLayout = new TQGridLayout( mSettingsGroup->layout(), 4, 2, KDialog::spacingHint() );
+    TQGridLayout *settingsGroupLayout = new TQGridLayout( mSettingsGroup->layout(), 5, 2, KDialog::spacingHint() );
 
     mEnabledCheckBox = new TQCheckBox(i18n("Start a&utomatically"), mSettingsGroup);
     mEnabledCheckBox->setChecked(mEnabled);
@@ -264,12 +264,19 @@
     settingsGroupLayout->addWidget(mUseUnmanagedLockWindowsCheckBox, 2, 1);
     TQWhatsThis::add( mUseUnmanagedLockWindowsCheckBox, i18n("Use old-style unmanaged X11 lock windows.") );
 
-    mHideActiveWindowsFromSaverCheckBox = new TQCheckBox( i18n("&Hide active windows from saver"), mSettingsGroup );
+    mHideActiveWindowsFromSaverCheckBox = new TQCheckBox( i18n("Hide active &windows from saver"), mSettingsGroup );
     mHideActiveWindowsFromSaverCheckBox->setEnabled( true );
     mHideActiveWindowsFromSaverCheckBox->setChecked( mHideActiveWindowsFromSaver );
     connect( mHideActiveWindowsFromSaverCheckBox, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotHideActiveWindowsFromSaver( bool ) ) );
     settingsGroupLayout->addWidget(mHideActiveWindowsFromSaverCheckBox, 3, 1);
     TQWhatsThis::add( mHideActiveWindowsFromSaverCheckBox, i18n("Hide all active windows from the screen saver and use the desktop background as the screen saver input.") );
+
+    mHideCancelButtonCheckBox = new TQCheckBox( i18n("&Hide Cancel &button"), mSettingsGroup );
+    mHideCancelButtonCheckBox->setEnabled( true );
+    mHideCancelButtonCheckBox->setChecked( mHideCancelButton );
+    connect( mHideCancelButtonCheckBox, TQT_SIGNAL(toggled(bool)), this, TQT_SLOT(slotHideCancelButton(bool)) );
+    settingsGroupLayout->addWidget(mHideCancelButtonCheckBox, 4, 1);
+    TQWhatsThis::add(mHideCancelButtonCheckBox, i18n("Hide Cancel button from the \"Desktop Session Locked\" dialog."));
 
     // right column
     TQBoxLayout* rightColumnLayout = new TQVBoxLayout(topLayout, KDialog::spacingHint());
@@ -432,6 +439,7 @@
     mUseTSAK = config->readBoolEntry("UseTDESAK", true);
     mUseUnmanagedLockWindows = config->readBoolEntry("UseUnmanagedLockWindows", false);
     mHideActiveWindowsFromSaver = config->readBoolEntry("HideActiveWindowsFromSaver", true);
+    mHideCancelButton = config->readBoolEntry("HideCancelButton", false);
     mSaver = config->readEntry("Saver");
 
     if (mTimeout < 60) mTimeout = 60;
@@ -484,6 +492,7 @@
     config->writeEntry("UseTDESAK", mUseTSAK);
     config->writeEntry("UseUnmanagedLockWindows", mUseUnmanagedLockWindows);
     config->writeEntry("HideActiveWindowsFromSaver", mHideActiveWindowsFromSaver);
+    config->writeEntry("HideCancelButton", mHideCancelButton);
 
     if ( !mSaver.isEmpty() )
         config->writeEntry("Saver", mSaver);
@@ -980,6 +989,16 @@
 
 //---------------------------------------------------------------------------
 //
+void KScreenSaver::slotHideCancelButton( bool h )
+{
+    if (mHideCancelButtonCheckBox->isEnabled()) mHideCancelButton = h;
+    processLockouts();
+    mChanged = true;
+    emit changed(true);
+}
+
+//---------------------------------------------------------------------------
+//
 void KScreenSaver::slotSetupDone(TDEProcess *)
 {
     mPrevSelected = -1;  // see ugly hack in slotPreviewExited()
diff --git a/kcontrol/screensaver/scrnsave.h b/kcontrol/screensaver/scrnsave.h
index a8f6e53..d52c812 100644
--- a/kcontrol/screensaver/scrnsave.h
+++ b/kcontrol/screensaver/scrnsave.h
@@ -60,6 +60,7 @@
     void slotUseTSAK( bool );
     void slotUseUnmanagedLockWindows( bool );
     void slotHideActiveWindowsFromSaver( bool );
+    void slotHideCancelButton( bool );
     void processLockouts();
     void slotSetupDone(TDEProcess*);
     // when selecting a new screensaver, the old preview will
@@ -103,6 +104,7 @@
     TQCheckBox   *mUseTSAKCheckBox;
     TQCheckBox   *mUseUnmanagedLockWindowsCheckBox;
     TQCheckBox   *mHideActiveWindowsFromSaverCheckBox;
+    TQCheckBox   *mHideCancelButtonCheckBox;
 
     int         mSelected;
     int         mPrevSelected;
@@ -121,6 +123,7 @@
     bool        mUseTSAK;
     bool        mUseUnmanagedLockWindows;
     bool        mHideActiveWindowsFromSaver;
+    bool        mHideCancelButton;
 
     KSimpleConfig* mTDMConfig;
 };
diff --git a/kdesktop/kdesktop.kcfg b/kdesktop/kdesktop.kcfg
index 2298e16..f2226f7 100644
--- a/kdesktop/kdesktop.kcfg
+++ b/kdesktop/kdesktop.kcfg
@@ -271,92 +271,71 @@
       <default>false</default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:308 -->
-      <!--     if(config.readBoolEntry("Lock", false)) -->
     </entry>
     <entry key="LockGrace" type="Int">
       <default>5000</default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:310 -->
-      <!--         mLockGrace = config.readNumEntry("LockGrace", LOCK_GRACE_DEFAULT); -->
     </entry>
     <entry key="AutoLogout" type="Bool">
       <default>false</default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:319 -->
-      <!--     if (config.readBoolEntry("AutoLogout", false)) -->
     </entry>
     <entry key="AutoLogoutTimeout" type="Int">
       <default>600</default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:322 -->
-      <!--         mAutoLogoutTimeout = config.readNumEntry("AutoLogoutTimeout", AUTOLOGOUT_DEFAULT); -->
     </entry>
     <entry key="Priority" type="Int">
       <default>19</default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:332 -->
-      <!--     mPriority = config.readNumEntry("Priority", 19); -->
     </entry>
     <entry key="Saver" type="String">
       <default></default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:336 -->
-      <!--     mSaver = config.readEntry("Saver"); -->
     </entry>
     <entry key="UseUnmanagedLockWindows" type="Bool">
       <default>false</default>
       <label></label>
       <whatsthis>When enabled this restores the old style unmanaged window behavior of desktop locking.</whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:336 -->
-      <!--     mSaver = config.readEntry("UseUnmanagedLockWindows"); -->
     </entry>
     <entry key="ShowLockDateTime" type="Bool">
       <default>true</default>
       <label></label>
       <whatsthis>When enabled the date and time when the desktop was locked is displayed as an additional intrusion detection measure.</whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:336 -->
-      <!--     mSaver = config.readEntry("ShowLockDateTime"); -->
     </entry>
     <entry key="DelaySaverStart" type="Bool">
       <default>true</default>
       <label></label>
       <whatsthis>When disabled the screensaver starts immediately when locking the desktop.</whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:336 -->
-      <!--     mSaver = config.readEntry("DelaySaverStart"); -->
     </entry>
     <entry key="HideActiveWindowsFromSaver" type="Bool">
       <default>true</default>
       <label></label>
       <whatsthis>When enabled all active windows are hidden from the screensaver, showing only the desktop background as a result.</whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:336 -->
-      <!--     mSaver = config.readEntry("HideActiveWindowsFromSaver"); -->
+    </entry>
+    <entry key="HideCancelButton" type="Bool">
+      <default>false</default>
+      <label></label>
+      <whatsthis>Hide Cancel button from the "Desktop Session Locked" dialog.</whatsthis>
     </entry>
     <entry key="UseTDESAK" type="Bool">
       <default>true</default>
       <label></label>
       <whatsthis>When enabled, the Trinity Secure Attention Key (TSAK) system will be used to secure the screen locker.  This requires system wide TSAK support to be enabled prior to use.</whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:336 -->
-      <!--     mSaver = config.readEntry("UseTDESAK"); -->
     </entry>
     <entry key="PluginsUnlock" type="StringList">
       <default></default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:342 -->
-      <!--     mPlugins = config.readListEntry("PluginsUnlock"); -->
     </entry>
     <entry key="PluginOptions" type="StringList">
       <default></default>
       <label></label>
       <whatsthis></whatsthis>
-      <!-- /home/paco/cvsroot/tdebase/kdesktop/lock/lockprocess.cc:345 -->
-      <!--     mPluginOptions = config.readListEntry("PluginOptions"); -->
     </entry>
   </group>
   <group name="MiniCli"> 
diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
index 30a892c..c377958 100644
--- a/kdesktop/lock/lockdlg.cc
+++ b/kdesktop/lock/lockdlg.cc
@@ -66,6 +66,7 @@
 extern bool trinity_desktop_lock_delay_screensaver_start;
 extern bool trinity_desktop_lock_use_system_modal_dialogs;
 extern bool trinity_desktop_lock_use_sak;
+extern bool trinity_desktop_lock_hide_cancel_button;
 
 int dialogHideTimeout = 10*1000;
 
@@ -149,8 +150,13 @@
 
     mNewSessButton = new KPushButton( KGuiItem(i18n("Sw&itch User..."), "fork"), frame );
     ok = new KPushButton( i18n("Unl&ock"), frame );
-    cancel = new KPushButton( KStdGuiItem::cancel(), frame );
-    //if (!trinity_desktop_lock_autohide_lockdlg && !trinity_desktop_lock_use_sak) cancel->setEnabled(false);
+    ok->setDefault(true);
+
+    if (!trinity_desktop_lock_hide_cancel_button)
+    {
+      cancel = new KPushButton( KStdGuiItem::cancel(), frame );
+      // if (!trinity_desktop_lock_autohide_lockdlg && !trinity_desktop_lock_use_sak) cancel->setEnabled(false);
+    }
 
     greet = plugin->info->create( this, 0, this, mLayoutButton, TQString::null,
               KGreeterPlugin::Authenticate, KGreeterPlugin::ExUnlock );
@@ -165,8 +171,11 @@
     TQHBoxLayout *layButtons = new TQHBoxLayout( 0, 0, KDialog::spacingHint());
     layButtons->addWidget( mNewSessButton );
     layButtons->addStretch();
-    layButtons->addWidget( ok );
-    layButtons->addWidget( cancel );
+    layButtons->addWidget(ok);
+    if (!trinity_desktop_lock_hide_cancel_button)
+    {
+      layButtons->addWidget(cancel);
+    }
 
     if (trinity_desktop_lock_use_system_modal_dialogs) {
         KSMModalDialogHeader* theader = new KSMModalDialogHeader( frame );
@@ -202,11 +211,17 @@
     }
 
     setTabOrder( ok, cancel );
-    setTabOrder( cancel, mNewSessButton );
+    if (!trinity_desktop_lock_hide_cancel_button)
+    {
+      setTabOrder( cancel, mNewSessButton );
+    }
     setTabOrder( mNewSessButton, mLayoutButton );
 
 ** Diff limit reached (max: 250 lines) **