diff options
Diffstat (limited to 'kdesktop')
-rw-r--r-- | kdesktop/CMakeLists.txt | 14 | ||||
-rw-r--r-- | kdesktop/DESIGN | 45 | ||||
-rw-r--r-- | kdesktop/KScreensaverIface.h | 18 | ||||
-rw-r--r-- | kdesktop/Makefile.am | 10 | ||||
-rw-r--r-- | kdesktop/bgmanager.cpp (renamed from kdesktop/bgmanager.cc) | 55 | ||||
-rw-r--r-- | kdesktop/bgmanager.h | 6 | ||||
-rw-r--r-- | kdesktop/desktop.cpp (renamed from kdesktop/desktop.cc) | 166 | ||||
-rw-r--r-- | kdesktop/desktop.h | 8 | ||||
-rw-r--r-- | kdesktop/init.cpp (renamed from kdesktop/init.cc) | 18 | ||||
-rw-r--r-- | kdesktop/kcustommenu.cpp (renamed from kdesktop/kcustommenu.cc) | 4 | ||||
-rw-r--r-- | kdesktop/kcustommenu.h | 2 | ||||
-rw-r--r-- | kdesktop/kdesktop.kcfg | 26 | ||||
-rw-r--r-- | kdesktop/kdesktopSetAsBackground.desktop | 38 | ||||
-rw-r--r-- | kdesktop/kdesktopapp.cpp | 8 | ||||
-rw-r--r-- | kdesktop/kdesktopapp.h | 12 | ||||
-rw-r--r-- | kdesktop/kdesktopbindings.cpp | 53 | ||||
-rw-r--r-- | kdesktop/kdesktopshadowsettings.h | 2 | ||||
-rw-r--r-- | kdesktop/kdiconview.cpp (renamed from kdesktop/kdiconview.cc) | 229 | ||||
-rw-r--r-- | kdesktop/kdiconview.h | 15 | ||||
-rw-r--r-- | kdesktop/krootwm.cpp (renamed from kdesktop/krootwm.cc) | 168 | ||||
-rw-r--r-- | kdesktop/krootwm.h | 4 | ||||
-rw-r--r-- | kdesktop/kwebdesktop/kwebdesktop.cpp | 22 | ||||
-rw-r--r-- | kdesktop/kwebdesktop/kwebdesktop.h | 6 | ||||
-rw-r--r-- | kdesktop/kwebdesktop/kwebdesktop.kcfg | 2 | ||||
-rw-r--r-- | kdesktop/lock/CMakeLists.txt | 8 | ||||
-rw-r--r-- | kdesktop/lock/Makefile.am | 2 | ||||
-rw-r--r-- | kdesktop/lock/autologout.cpp (renamed from kdesktop/lock/autologout.cc) | 6 | ||||
-rw-r--r-- | kdesktop/lock/autologout.h | 2 | ||||
-rw-r--r-- | kdesktop/lock/infodlg.cpp (renamed from kdesktop/lock/infodlg.cc) | 6 | ||||
-rw-r--r-- | kdesktop/lock/infodlg.h | 2 | ||||
-rw-r--r-- | kdesktop/lock/lockdlg.cpp (renamed from kdesktop/lock/lockdlg.cc) | 95 | ||||
-rw-r--r-- | kdesktop/lock/lockdlg.h | 2 | ||||
-rw-r--r-- | kdesktop/lock/lockprocess.cpp (renamed from kdesktop/lock/lockprocess.cc) | 337 | ||||
-rw-r--r-- | kdesktop/lock/lockprocess.h | 20 | ||||
-rw-r--r-- | kdesktop/lock/main.cpp (renamed from kdesktop/lock/main.cc) | 136 | ||||
-rw-r--r-- | kdesktop/lock/main.h | 4 | ||||
-rw-r--r-- | kdesktop/lock/querydlg.cpp (renamed from kdesktop/lock/querydlg.cc) | 8 | ||||
-rw-r--r-- | kdesktop/lock/querydlg.h | 2 | ||||
-rw-r--r-- | kdesktop/lock/sakdlg.cpp (renamed from kdesktop/lock/sakdlg.cc) | 6 | ||||
-rw-r--r-- | kdesktop/lock/sakdlg.h | 2 | ||||
-rw-r--r-- | kdesktop/lock/securedlg.cpp (renamed from kdesktop/lock/securedlg.cc) | 12 | ||||
-rw-r--r-- | kdesktop/lock/securedlg.h | 2 | ||||
-rw-r--r-- | kdesktop/lockeng.cc | 1004 | ||||
-rw-r--r-- | kdesktop/lockeng.cpp | 1049 | ||||
-rw-r--r-- | kdesktop/lockeng.h | 169 | ||||
-rw-r--r-- | kdesktop/main.cpp (renamed from kdesktop/main.cc) | 36 | ||||
-rw-r--r-- | kdesktop/minicli.cpp | 65 | ||||
-rw-r--r-- | kdesktop/minicli.h | 2 | ||||
-rw-r--r-- | kdesktop/minicli_ui.ui | 11 | ||||
-rwxr-xr-x[-rw-r--r--] | kdesktop/pics/ksslogo.png | bin | 5499 -> 7098 bytes | |||
-rwxr-xr-x[-rw-r--r--] | kdesktop/pics/splash.png | bin | 108731 -> 118404 bytes | |||
-rw-r--r-- | kdesktop/pixmapserver.cpp (renamed from kdesktop/pixmapserver.cc) | 4 | ||||
-rw-r--r-- | kdesktop/pixmapserver.h | 8 | ||||
-rw-r--r-- | kdesktop/startupid.cpp | 24 | ||||
-rw-r--r-- | kdesktop/startupid.h | 2 | ||||
-rw-r--r-- | kdesktop/tdefileividesktop.cpp | 12 | ||||
-rw-r--r-- | kdesktop/tdefileividesktop.h | 2 | ||||
-rw-r--r-- | kdesktop/xautolock.cpp (renamed from kdesktop/xautolock.cc) | 2 | ||||
-rw-r--r-- | kdesktop/xautolock.h | 2 |
59 files changed, 2135 insertions, 1840 deletions
diff --git a/kdesktop/CMakeLists.txt b/kdesktop/CMakeLists.txt index a4714ce59..c65986368 100644 --- a/kdesktop/CMakeLists.txt +++ b/kdesktop/CMakeLists.txt @@ -81,13 +81,13 @@ tde_add_executable( kcheckrunning ##### kdesktop (tdeinit) ######################## set( target kdesktop ) -set_property( SOURCE lockeng.cc APPEND PROPERTY COMPILE_DEFINITIONS KDE_CONFDIR="${TDE_CONFIG_DIR}" ) +set_property( SOURCE lockeng.cpp APPEND PROPERTY COMPILE_DEFINITIONS KDE_CONFDIR="${TDE_CONFIG_DIR}" ) set( ${target}_SRCS - main.cc krootwm.cc xautolock.cc kdiconview.cc init.cc - desktop.cc lockeng.cc KDesktopIface.skel bgmanager.cc + main.cpp krootwm.cpp xautolock.cpp kdiconview.cpp init.cpp + desktop.cpp lockeng.cpp KDesktopIface.skel bgmanager.cpp KScreensaverIface.skel minicli.cpp KBackgroundIface.skel - pixmapserver.cc kcustommenu.cc startupid.cpp minicli_ui.ui + pixmapserver.cpp kcustommenu.cpp startupid.cpp minicli_ui.ui xautolock_diy.c xautolock_engine.c kshadowengine.cpp kshadowsettings.cpp kdesktopshadowsettings.cpp tdefileividesktop.cpp kdesktopapp.cpp @@ -96,9 +96,9 @@ set( ${target}_SRCS tde_add_tdeinit_executable( ${target} AUTOMOC SOURCES ${${target}_SRCS} LINK - pthread kdesktopsettings-static bgnd-static dmctl-static - konq-shared tdeutils-shared tdesu-shared - ${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext ${DL_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} kdesktopsettings-static bgnd-static dmctl-static + konq-shared tdeutils-shared tdesu-shared ${TDEHW_LIBRARIES} + ${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext ${CMAKE_DL_LIBS} ${XSS_LIBRARIES} ${DBUS_1_TQT_LIBRARIES} ) diff --git a/kdesktop/DESIGN b/kdesktop/DESIGN index f69ee2198..170a86a75 100644 --- a/kdesktop/DESIGN +++ b/kdesktop/DESIGN @@ -7,6 +7,7 @@ Author : Last modified: 24 Oct 1999 + Overall design of KDesktop : ============================= @@ -14,6 +15,7 @@ KDesktop is the program that handles the desktop icons, the popup menus for the desktop, the mac menubar, and the screensaver system. + Files : ======= @@ -34,6 +36,7 @@ KDesktopIface* : DCOP interface for kdesktop, used by kfmclient lock* : screen saver/locker + Libs used by KDesktop ====================== @@ -41,6 +44,7 @@ tdecore, tdeui, tdefile - usual stuff :) libtdeio - I/O stuff, mimetypes, services, registry libkonq - properties dialog, templates ("new") menu, dir lister, settings + Screensaver =========== @@ -69,6 +73,7 @@ The new background code is in bgrender.cpp and bgmanager.cpp. Some features: * Support for xearth like programs. * Can export a pixmap of the desktop background for pseudo transparency. + Multiple monitors ================= Two monitors showing different things (not a mirror-setup) can be configured @@ -92,3 +97,43 @@ In case of 2 screen (multihead) | | | | desktopGeometry = 3200 x 1200 +----+ +-----+ screenGeometry = 1600 x 1200 (for each monitor) + +Interaction between kdesktop and kdesktop_lock +============================================== +kdesktop and kdesktop_lock interact using POSIX signals to coordinate their activities. +Each time the screensaver or lock is activated and then stopped/unlocked, the current +kdesktop_lock process is terminated and respawned, while kdesktop waits for the new process +to be ready. + +kdesktop to kdesktop_lock communication: + kdesktop uses four signals to request different types of locks. These signals do not activate + the lock/screensaver. Some of the signals can be combined together, for example to request a + lock with blank screen. + + - USR1 : request lock of the screen + - USR2 : request screensaver only, no lock + - WINCH: request lock of the screen using SAK (Secure Attention Key) + - TTIN : request blank screen for saver or lock + + The lock/screensaver is started using a fifth signal. + - TTOU : activate the scrensaver or lock + +kdesktop_lock to kdesktop communication: + kdesktop_lock uses three signals to inform kdesktop of status changes. + + - TTIN: the lock process is ready. This is sent after the process has been created/respawned + - USR2: the lock/screensaver has been activated + - USR1: the lock/screensaver has been unlocked/stopped + +Communication is handled by the screen saver engine defined in 'lockeng.{h,cpp}'. +The engine is split into two parts, the 'SaverEngine' running in the GUI thread and +the 'SaverEngineEventHandler' running in a separate thread and eventloop. +The 'SaverEngine' handles communication with X11, DCOP and DBUS while the +'SaverEngineEventHandler' handles communication with the actual lock process. +Several actions require cooperation of the two parts, so in various methods +there will be inter-thread calls (using timers or by emitting signals) to +trigger the other side remaining logic. +This complex design is necessary to avoid blocking the main GUI application event loop, +which has several tasks to manage and therefore can't affort to wait in a suspended state. +This was previously leading to deadlock when DCOP calls where executed on the secondary +thread/eventloop, for example when changing desktop while the lock process was restarting. diff --git a/kdesktop/KScreensaverIface.h b/kdesktop/KScreensaverIface.h index de5c19f2b..b6434738e 100644 --- a/kdesktop/KScreensaverIface.h +++ b/kdesktop/KScreensaverIface.h @@ -12,11 +12,10 @@ public: KScreensaverIface() : DCOPObject("KScreensaverIface") {} k_dcop: - /** Lock the screen now even if the screensaver does not lock by default. */ + /** Lock the screen now even if the screensaver does not lock by default */ virtual void lock() = 0; - /** Save the screen now. If the user has locking enabled, the screen is - * locked also. */ + /** Start the screensaver now. If the user has locking enabled, the screen is locked also */ virtual void save() = 0; /** Quit the screensaver if it is running */ @@ -29,22 +28,23 @@ k_dcop: * Enable/disable the screensaver * returns true if the action succeeded */ - virtual bool enable( bool e ) = 0; + virtual bool enable(bool e) = 0; /** Is the screen currently blanked? */ virtual bool isBlanked() = 0; - /** Reload the screensaver configuration. */ + /** Reload the screensaver configuration */ virtual void configure() = 0; - /** Only blank the screen (and possibly lock). Do not use a custom - * screen saver in the interest of saving battery. + /** + * Set the screensaver to blank (and possibly lock). + * This method does not actually start the screensaver. */ - virtual void setBlankOnly( bool blankOnly ) = 0; + virtual void setBlankOnly(bool blankOnly) = 0; /*** * @internal - */ + */ virtual void saverLockReady() = 0; }; diff --git a/kdesktop/Makefile.am b/kdesktop/Makefile.am index b28d1ee66..b2d4c2b2c 100644 --- a/kdesktop/Makefile.am +++ b/kdesktop/Makefile.am @@ -17,10 +17,10 @@ libkdesktopsettings_la_LDFLAGS = $(all_libraries) -no-undefined libkdesktopsettings_la_LIBADD = $(LIB_TDECORE) libkdesktopsettings_la_SOURCES = kdesktopsettings.kcfgc tdelaunchsettings.kcfgc -kdesktop_la_SOURCES = main.cc krootwm.cc xautolock.cc kdiconview.cc desktop.cc \ - lockeng.cc KDesktopIface.skel \ - bgmanager.cc init.cc KScreensaverIface.skel \ - minicli.cpp KBackgroundIface.skel pixmapserver.cc kcustommenu.cc \ +kdesktop_la_SOURCES = main.cpp krootwm.cpp xautolock.cpp kdiconview.cpp desktop.cpp \ + lockeng.cpp KDesktopIface.skel \ + bgmanager.cpp init.cpp KScreensaverIface.skel \ + minicli.cpp KBackgroundIface.skel pixmapserver.cpp kcustommenu.cpp \ startupid.cpp minicli_ui.ui xautolock_diy.c xautolock_engine.c \ kshadowengine.cpp kshadowsettings.cpp \ kdesktopshadowsettings.cpp tdefileividesktop.cpp \ @@ -59,7 +59,7 @@ startupid.lo: tdelaunchsettings.h messages: rc.cpp $(EXTRACTRC) lock/*.ui >> rc.cpp - $(XGETTEXT) lock/*.cc *.cc *.cpp *.h -o $(podir)/kdesktop.pot + $(XGETTEXT) lock/*.cpp *.cpp *.h -o $(podir)/kdesktop.pot menu_DATA = kdesktop_custom_menu1 kdesktop_custom_menu2 menudir = $(kde_confdir) diff --git a/kdesktop/bgmanager.cc b/kdesktop/bgmanager.cpp index 7c641dd9d..49cff2c16 100644 --- a/kdesktop/bgmanager.cc +++ b/kdesktop/bgmanager.cpp @@ -1,5 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 - * kate: space-indent on; tab-width 8; indent-width 4; indent-mode cstyle; +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org> @@ -79,7 +78,7 @@ KBackgroundManager::KBackgroundManager(TQWidget *desktop, KWinModule* twinModule m_pDesktop = desktop; if (desktop == 0L) - desktop = TQT_TQWIDGET(TDEApplication::desktop()->screen()); + desktop = TDEApplication::desktop()->screen(); m_Renderer.resize( 1 ); m_Cache.resize( 1 ); @@ -98,40 +97,40 @@ KBackgroundManager::KBackgroundManager(TQWidget *desktop, KWinModule* twinModule m_Cache[i]->hash = 0; m_Cache[i]->exp_from = -1; m_Renderer.insert (i, new KVirtualBGRenderer(i,m_pConfig)); - connect(m_Renderer[i], TQT_SIGNAL(imageDone(int)), TQT_SLOT(slotImageDone(int))); + connect(m_Renderer[i], TQ_SIGNAL(imageDone(int)), TQ_SLOT(slotImageDone(int))); m_Renderer[i]->enableTiling( true ); // optimize } #ifdef COMPOSITE - m_tPixmap = new KPixmap(kapp->desktop()->size()); + m_tPixmap = new KPixmap(tdeApp->desktop()->size()); m_tPixmap->fill(TQColor(0, 0x0)); - connect(myApp, TQT_SIGNAL(cmBackgroundChanged( bool )), - TQT_SLOT(slotCmBackgroundChanged( bool ))); + connect(myApp, TQ_SIGNAL(cmBackgroundChanged( bool )), + TQ_SLOT(slotCmBackgroundChanged( bool ))); #endif configure(); m_pTimer = new TQTimer(this); - connect(m_pTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotTimeout())); + connect(m_pTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotTimeout())); m_pTimer->start( 60000 ); /*CrossFade's config*/ m_crossTimer = new TQTimer(this); - connect(m_crossTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotCrossFadeTimeout())); + connect(m_crossTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotCrossFadeTimeout())); resizingDesktop = true; /*Ends here*/ - connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopChanged(int)), - TQT_SLOT(slotChangeDesktop(int))); - connect(m_pKwinmodule, TQT_SIGNAL(numberOfDesktopsChanged(int)), - TQT_SLOT(slotChangeNumberOfDesktops(int))); - connect(m_pKwinmodule, TQT_SIGNAL(currentDesktopViewportChanged(int, const TQPoint&)), - TQT_SLOT(slotChangeViewport(int, const TQPoint&))); + connect(m_pKwinmodule, TQ_SIGNAL(currentDesktopChanged(int)), + TQ_SLOT(slotChangeDesktop(int))); + connect(m_pKwinmodule, TQ_SIGNAL(numberOfDesktopsChanged(int)), + TQ_SLOT(slotChangeNumberOfDesktops(int))); + connect(m_pKwinmodule, TQ_SIGNAL(currentDesktopViewportChanged(int, const TQPoint&)), + TQ_SLOT(slotChangeViewport(int, const TQPoint&))); #if (TQT_VERSION-0 >= 0x030200) - connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); // RANDR support + connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized())); // RANDR support #endif TQSize s(m_pKwinmodule->numberOfViewports(m_pKwinmodule->currentDesktop())); @@ -339,7 +338,7 @@ void KBackgroundManager::slotChangeNumberOfDesktops(int num) m_Cache[i]->hash = 0; m_Cache[i]->exp_from = -1; m_Renderer.insert(i, new KVirtualBGRenderer(i,m_pConfig)); - connect(m_Renderer[i], TQT_SIGNAL(imageDone(int)), TQT_SLOT(slotImageDone(int))); + connect(m_Renderer[i], TQ_SIGNAL(imageDone(int)), TQ_SLOT(slotImageDone(int))); m_Renderer[i]->enableTiling( true ); // optimize } } @@ -543,16 +542,16 @@ void KBackgroundManager::setPixmap(KPixmap *pm, int hash, int desk) if( !root_cleared ) { // clear the root window pixmap set by tdm root_cleared = true; - TQTimer::singleShot( 0, this, TQT_SLOT( clearRoot())); + TQTimer::singleShot( 0, this, TQ_SLOT( clearRoot())); // but make the pixmap visible until m_pDesktop is visible - TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap(*ep); - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->setErasePixmap(*ep); + TDEApplication::desktop()->screen()->erase(); } } else { - TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap(*ep); - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->setErasePixmap(*ep); + TDEApplication::desktop()->screen()->erase(); } // and export it via Esetroot-style for gnome/GTK apps to share in the pretties @@ -572,8 +571,8 @@ void KBackgroundManager::setPixmap(KPixmap *pm, int hash, int desk) void KBackgroundManager::clearRoot() { - TQT_TQWIDGET(TDEApplication::desktop()->screen())->setErasePixmap( TQPixmap()); - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->setErasePixmap( TQPixmap()); + TDEApplication::desktop()->screen()->erase(); } /* @@ -682,7 +681,7 @@ void KBackgroundManager::slotImageDone(int desk) { m_bBgInitDone = true; emit initDone(); - TQTimer::singleShot( 30000, this, TQT_SLOT( saveImages())); + TQTimer::singleShot( 30000, this, TQ_SLOT( saveImages())); do_cleanup = false; } } @@ -1005,7 +1004,7 @@ void KBackgroundManager::repaintBackground() if (m_pDesktop) m_pDesktop->repaint(); else - TQT_TQWIDGET(TDEApplication::desktop()->screen())->erase(); + TDEApplication::desktop()->screen()->erase(); } void KBackgroundManager::desktopResized() @@ -1027,13 +1026,13 @@ void KBackgroundManager::desktopResized() #ifdef COMPOSITE if (m_tPixmap) delete m_tPixmap; - m_tPixmap = new KPixmap(kapp->desktop()->size()); + m_tPixmap = new KPixmap(tdeApp->desktop()->size()); m_tPixmap->fill(TQColor(0, 0x0)); #endif m_Hash = 0; if( m_pDesktop ) { - m_pDesktop->resize( kapp->desktop()->geometry().size()); + m_pDesktop->resize( tdeApp->desktop()->geometry().size()); if (m_Renderer[effectiveDesktop()]->renderer(0)->usingCrossXml()){ m_Renderer[effectiveDesktop()]->renderer(0)->changeWallpaper(); } diff --git a/kdesktop/bgmanager.h b/kdesktop/bgmanager.h index 43e57a372..d78ebebc3 100644 --- a/kdesktop/bgmanager.h +++ b/kdesktop/bgmanager.h @@ -1,4 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999,2000 Geert Jansen <jansen@kde.org> @@ -16,7 +16,7 @@ #include <tqdatetime.h> #include <KBackgroundIface.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -54,7 +54,7 @@ class KBackgroundManager : public TQObject, public KBackgroundIface { - Q_OBJECT + TQ_OBJECT public: diff --git a/kdesktop/desktop.cc b/kdesktop/desktop.cpp index 2732bff08..3ef0e33e7 100644 --- a/kdesktop/desktop.cc +++ b/kdesktop/desktop.cpp @@ -44,17 +44,17 @@ #include <dcopclient.h> #include <kcursor.h> #include <kdebug.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <kimageio.h> #include <kinputdialog.h> #include <kipc.h> #include <tdelocale.h> #include <tdeio/netaccess.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <tdesycoca.h> #include <tdetempfile.h> #include <tdemessagebox.h> -#include <kglobalaccel.h> +#include <tdeglobalaccel.h> #include <twinmodule.h> #include <krun.h> #include <twin.h> @@ -71,21 +71,21 @@ extern TQCString kdesktop_name, kicker_name, twin_name; KRootWidget::KRootWidget() : TQObject() { - kapp->desktop()->installEventFilter(this); - kapp->desktop()->setAcceptDrops( true ); + tdeApp->desktop()->installEventFilter(this); + tdeApp->desktop()->setAcceptDrops( true ); } bool KRootWidget::eventFilter ( TQObject *, TQEvent * e ) { if (e->type() == TQEvent::MouseButtonPress) { - TQMouseEvent *me = TQT_TQMOUSEEVENT(e); + TQMouseEvent *me = static_cast<TQMouseEvent*>(e); KRootWm::self()->mousePressed( me->globalPos(), me->button() ); return true; } else if (e->type() == TQEvent::Wheel) { - TQWheelEvent *we = TQT_TQWHEELEVENT(e); + TQWheelEvent *we = static_cast<TQWheelEvent*>(e); emit wheelRolled(we->delta()); return true; } @@ -113,7 +113,7 @@ bool KRootWidget::eventFilter ( TQObject *, TQEvent * e ) else if ( e->type() == TQEvent::Drop ) { TQDropEvent* de = static_cast<TQDropEvent*>( e ); - if ( KColorDrag::canDecode( de ) ) + if ( KColorDrag::canDecode( de ) ) emit colorDropEvent( de ); else if ( TQImageDrag::canDecode( de ) ) emit imageDropEvent( de ); @@ -155,17 +155,17 @@ KDesktop::KDesktop( SaverEngine* saver, bool x_root_hack, bool wait_for_kded ) : setCaption( "KDE Desktop"); setAcceptDrops(true); // WStyle_Customize seems to disable that - m_pKwinmodule = new KWinModule( TQT_TQOBJECT(this) ); + m_pKwinmodule = new KWinModule( this ); - kapp->dcopClient()->setNotifications(true); - kapp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(TQRect, int)", + tdeApp->dcopClient()->setNotifications(true); + tdeApp->dcopClient()->connectDCOPSignal(kicker_name, kicker_name, "desktopIconsAreaChanged(TQRect, int)", "KDesktopIface", "desktopIconsAreaChanged(TQRect, int)", false); // Dont repaint on configuration changes during construction m_bInit = true; // It's the child widget that gets the focus, not us - setFocusPolicy( TQ_NoFocus ); + setFocusPolicy( TQWidget::NoFocus ); if ( x_root_hack ) { @@ -184,28 +184,28 @@ KDesktop::KDesktop( SaverEngine* saver, bool x_root_hack, bool wait_for_kded ) : setGeometry( TQApplication::desktop()->geometry() ); lower(); - connect( kapp, TQT_SIGNAL( shutDown() ), - this, TQT_SLOT( slotShutdown() ) ); + connect( tdeApp, TQ_SIGNAL( shutDown() ), + this, TQ_SLOT( slotShutdown() ) ); - connect(kapp, TQT_SIGNAL(settingsChanged(int)), - this, TQT_SLOT(slotSettingsChanged(int))); - kapp->addKipcEventMask(KIPC::SettingsChanged); + connect(tdeApp, TQ_SIGNAL(settingsChanged(int)), + this, TQ_SLOT(slotSettingsChanged(int))); + tdeApp->addKipcEventMask(KIPC::SettingsChanged); - kapp->addKipcEventMask(KIPC::IconChanged); - connect(kapp, TQT_SIGNAL(iconChanged(int)), this, TQT_SLOT(slotIconChanged(int))); + tdeApp->addKipcEventMask(KIPC::IconChanged); + connect(tdeApp, TQ_SIGNAL(iconChanged(int)), this, TQ_SLOT(slotIconChanged(int))); - connect(KSycoca::self(), TQT_SIGNAL(databaseChanged()), - this, TQT_SLOT(slotDatabaseChanged())); + connect(KSycoca::self(), TQ_SIGNAL(databaseChanged()), + this, TQ_SLOT(slotDatabaseChanged())); m_pIconView = 0; m_pRootWidget = 0; bgMgr = 0; initRoot(); - TQTimer::singleShot(0, this, TQT_SLOT( slotStart() )); + TQTimer::singleShot(0, this, TQ_SLOT( slotStart() )); #if (TQT_VERSION-0 >= 0x030200) // XRANDR support - connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); + connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized())); #endif } @@ -215,7 +215,7 @@ KDesktop::initRoot() Display *dpy = tqt_xdisplay(); Window root = RootWindow(dpy, kdesktop_screen_number); XDefineCursor(dpy, root, cursor().handle()); - + m_bDesktopEnabled = KDesktopSettings::desktopEnabled(); if ( !m_bDesktopEnabled && !m_pRootWidget ) { @@ -238,21 +238,21 @@ KDesktop::initRoot() XSelectInput(dpy, root, attrs.your_event_mask | ButtonPressMask); m_pRootWidget = new KRootWidget; - connect(m_pRootWidget, TQT_SIGNAL(wheelRolled(int)), this, TQT_SLOT(slotSwitchDesktops(int))); - connect(m_pRootWidget, TQT_SIGNAL(colorDropEvent(TQDropEvent*)), this, TQT_SLOT(handleColorDropEvent(TQDropEvent*)) ); - connect(m_pRootWidget, TQT_SIGNAL(imageDropEvent(TQDropEvent*)), this, TQT_SLOT(handleImageDropEvent(TQDropEvent*)) ); - connect(m_pRootWidget, TQT_SIGNAL(newWallpaper(const KURL&)), this, TQT_SLOT(slotNewWallpaper(const KURL&)) ); + connect(m_pRootWidget, TQ_SIGNAL(wheelRolled(int)), this, TQ_SLOT(slotSwitchDesktops(int))); + connect(m_pRootWidget, TQ_SIGNAL(colorDropEvent(TQDropEvent*)), this, TQ_SLOT(handleColorDropEvent(TQDropEvent*)) ); + connect(m_pRootWidget, TQ_SIGNAL(imageDropEvent(TQDropEvent*)), this, TQ_SLOT(handleImageDropEvent(TQDropEvent*)) ); + connect(m_pRootWidget, TQ_SIGNAL(newWallpaper(const KURL&)), this, TQ_SLOT(slotNewWallpaper(const KURL&)) ); // Geert Jansen: backgroundmanager belongs here // TODO tell KBackgroundManager if we change widget() bgMgr = new KBackgroundManager( m_pIconView, m_pKwinmodule ); bgMgr->setExport(1); - connect( bgMgr, TQT_SIGNAL( initDone()), TQT_SLOT( backgroundInitDone())); + connect( bgMgr, TQ_SIGNAL( initDone()), TQ_SLOT( backgroundInitDone())); if (!m_bInit) { delete KRootWm::self(); KRootWm* krootwm = new KRootWm( m_pSaver, this ); // handler for root menu (used by kdesktop on RMB click) - keys->setSlot("Lock Session", krootwm, TQT_SLOT(slotLock())); + keys->setSlot("Lock Session", krootwm, TQ_SLOT(slotLock())); keys->updateConnections(); } } @@ -263,24 +263,24 @@ KDesktop::initRoot() delete m_pRootWidget; m_pRootWidget = 0; m_pIconView = new KDIconView( this, 0 ); - connect( m_pIconView, TQT_SIGNAL( imageDropEvent( TQDropEvent * ) ), - this, TQT_SLOT( handleImageDropEvent( TQDropEvent * ) ) ); - connect( m_pIconView, TQT_SIGNAL( colorDropEvent( TQDropEvent * ) ), - this, TQT_SLOT( handleColorDropEvent( TQDropEvent * ) ) ); - connect( m_pIconView, TQT_SIGNAL( newWallpaper( const KURL & ) ), - this, TQT_SLOT( slotNewWallpaper( const KURL & ) ) ); - connect( m_pIconView, TQT_SIGNAL( wheelRolled( int ) ), - this, TQT_SLOT( slotSwitchDesktops( int ) ) ); - - // All the QScrollView/QWidget-specific stuff should go here, so that we can use + connect( m_pIconView, TQ_SIGNAL( imageDropEvent( TQDropEvent * ) ), + this, TQ_SLOT( handleImageDropEvent( TQDropEvent * ) ) ); + connect( m_pIconView, TQ_SIGNAL( colorDropEvent( TQDropEvent * ) ), + this, TQ_SLOT( handleColorDropEvent( TQDropEvent * ) ) ); + connect( m_pIconView, TQ_SIGNAL( newWallpaper( const KURL & ) ), + this, TQ_SLOT( slotNewWallpaper( const KURL & ) ) ); + connect( m_pIconView, TQ_SIGNAL( wheelRolled( int ) ), + this, TQ_SLOT( slotSwitchDesktops( int ) ) ); + + // All the QScrollView/TQWidget-specific stuff should go here, so that we can use // another qscrollview/widget instead of the iconview and use the same code m_pIconView->setVScrollBarMode( TQScrollView::AlwaysOff ); m_pIconView->setHScrollBarMode( TQScrollView::AlwaysOff ); m_pIconView->setDragAutoScroll( false ); m_pIconView->setFrameStyle( TQFrame::NoFrame ); m_pIconView->viewport()->setBackgroundMode( X11ParentRelative ); - m_pIconView->setFocusPolicy( TQ_StrongFocus ); - m_pIconView->viewport()->setFocusPolicy( TQ_StrongFocus ); + m_pIconView->setFocusPolicy( TQWidget::StrongFocus ); + m_pIconView->viewport()->setFocusPolicy( TQWidget::StrongFocus ); m_pIconView->setGeometry( geometry() ); m_pIconView->show(); @@ -288,7 +288,7 @@ KDesktop::initRoot() // TODO tell KBackgroundManager if we change widget() bgMgr = new KBackgroundManager( m_pIconView, m_pKwinmodule ); bgMgr->setExport(1); - connect( bgMgr, TQT_SIGNAL( initDone()), TQT_SLOT( backgroundInitDone())); + connect( bgMgr, TQ_SIGNAL( initDone()), TQ_SLOT( backgroundInitDone())); // make sure it is initialized before we first call updateWorkArea() m_pIconView->initConfig( m_bInit ); @@ -301,7 +301,7 @@ KDesktop::initRoot() TQCString replyType; TQRect area; - if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", + if ( tdeApp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", data, replyType, result, false, 2000) ) { TQDataStream res(result, IO_ReadOnly); @@ -315,7 +315,7 @@ KDesktop::initRoot() // if we failed to get the information from kicker wait a little - probably // this is the KDE startup and kicker is simply not running yet m_waitForKicker = new TQTimer(this); - connect(m_waitForKicker, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotNoKicker())); + connect(m_waitForKicker, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotNoKicker())); m_waitForKicker->start(15000, true); } else // we are not called from the ctor, so kicker should already run @@ -330,7 +330,7 @@ KDesktop::initRoot() m_pIconView->start(); delete KRootWm::self(); KRootWm* krootwm = new KRootWm( m_pSaver, this ); // handler for root menu (used by kdesktop on RMB click) - keys->setSlot("Lock Session", krootwm, TQT_SLOT(slotLock())); + keys->setSlot("Lock Session", krootwm, TQ_SLOT(slotLock())); keys->updateConnections(); } } else { @@ -359,12 +359,12 @@ KDesktop::backgroundInitDone() // avoid flicker if (m_bDesktopEnabled) { - const TQPixmap *bg = TQT_TQWIDGET(TQApplication::desktop()->screen())->backgroundPixmap(); + const TQPixmap *bg = TQApplication::desktop()->screen()->backgroundPixmap(); if ( bg ) m_pIconView->setErasePixmap( *bg ); show(); - kapp->sendPostedEvents(); + tdeApp->sendPostedEvents(); } DCOPRef r( "ksmserver", "ksmserver" ); @@ -396,7 +396,7 @@ KDesktop::slotStart() m_pIconView->start(); // Global keys - keys = new TDEGlobalAccel( TQT_TQOBJECT(this) ); + keys = new TDEGlobalAccel( this ); (void) new KRootWm( m_pSaver, this ); #include "kdesktopbindings.cpp" @@ -404,9 +404,9 @@ KDesktop::slotStart() keys->readSettings(); keys->updateConnections(); - connect(kapp, TQT_SIGNAL(appearanceChanged()), TQT_SLOT(slotConfigure())); + connect(tdeApp, TQ_SIGNAL(appearanceChanged()), TQ_SLOT(slotConfigure())); - TQTimer::singleShot(300, this, TQT_SLOT( slotUpAndRunning() )); + TQTimer::singleShot(300, this, TQ_SLOT( slotUpAndRunning() )); } void @@ -504,7 +504,7 @@ void KDesktop::popupExecuteCommand(const TQString& command) if (m_bInit) return; - if (!kapp->authorize("run_command")) + if (!tdeApp->authorize("run_command")) return; // Created on demand @@ -648,21 +648,21 @@ void KDesktop::setShowDesktop( bool b ) } // on desktop changes or when a window is deiconified, we abort the show desktop mode - connect(twinModule(), TQT_SIGNAL(currentDesktopChanged(int)), - TQT_SLOT(slotCurrentDesktopChanged(int))); - connect(twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)), - TQT_SLOT(slotWindowChanged(WId,unsigned int))); - connect(twinModule(), TQT_SIGNAL(windowAdded(WId)), - TQT_SLOT(slotWindowAdded(WId))); + connect(twinModule(), TQ_SIGNAL(currentDesktopChanged(int)), + TQ_SLOT(slotCurrentDesktopChanged(int))); + connect(twinModule(), TQ_SIGNAL(windowChanged(WId,unsigned int)), + TQ_SLOT(slotWindowChanged(WId,unsigned int))); + connect(twinModule(), TQ_SIGNAL(windowAdded(WId)), + TQ_SLOT(slotWindowAdded(WId))); } else { - disconnect(twinModule(), TQT_SIGNAL(currentDesktopChanged(int)), - this, TQT_SLOT(slotCurrentDesktopChanged(int))); - disconnect(twinModule(), TQT_SIGNAL(windowChanged(WId,unsigned int)), - this, TQT_SLOT(slotWindowChanged(WId,unsigned int))); - disconnect(twinModule(), TQT_SIGNAL(windowAdded(WId)), - this, TQT_SLOT(slotWindowAdded(WId))); + disconnect(twinModule(), TQ_SIGNAL(currentDesktopChanged(int)), + this, TQ_SLOT(slotCurrentDesktopChanged(int))); + disconnect(twinModule(), TQ_SIGNAL(windowChanged(WId,unsigned int)), + this, TQ_SLOT(slotWindowChanged(WId,unsigned int))); + disconnect(twinModule(), TQ_SIGNAL(windowAdded(WId)), + this, TQ_SLOT(slotWindowAdded(WId))); for (TQValueVector<WId>::ConstIterator it = m_iconifiedList.begin(); it != m_iconifiedList.end(); @@ -839,7 +839,7 @@ void KDesktop::refresh() m_bNeedRepaint |= 1; updateWorkArea(); #endif - kapp->dcopClient()->send( twin_name, "", "refresh()", TQString("")); + tdeApp->dcopClient()->send( twin_name, "", "refresh()", TQString("")); refreshIcons(); } @@ -851,7 +851,7 @@ void KDesktop::slotSetVRoot() return; if (KWin::windowInfo(winId()).mappingState() == NET::Withdrawn) { - TQTimer::singleShot(100, this, TQT_SLOT(slotSetVRoot())); + TQTimer::singleShot(100, this, TQ_SLOT(slotSetVRoot())); return; } @@ -907,7 +907,7 @@ void KDesktop::desktopIconsAreaChanged(const TQRect &area, int screen) if (screen <= -2) screen = kdesktop_screen_number; else if (screen == -1) - screen = kapp->desktop()->primaryScreen(); + screen = tdeApp->desktop()->primaryScreen(); // This is pretty broken, mixes Xinerama and non-Xinerama multihead // and generally doesn't seem to be required anyway => ignore screen. @@ -1032,7 +1032,7 @@ void KDesktop::logout() void KDesktop::logout( TDEApplication::ShutdownConfirm confirm, TDEApplication::ShutdownType sdtype ) { - if( !kapp->requestShutDown( confirm, sdtype ) ) + if( !tdeApp->requestShutDown( confirm, sdtype ) ) // this i18n string is also in kicker/applets/run/runapplet KMessageBox::error( this, i18n("Could not log out properly.\nThe session manager cannot " "be contacted. You can try to force a shutdown by pressing " @@ -1064,6 +1064,30 @@ void KDesktop::slotRebootNoCnf() TDEApplication::ShutdownTypeReboot ); } +void KDesktop::slotFreeze() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 1); +} + +void KDesktop::slotSuspend() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 3); +} + +void KDesktop::slotHibernate() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 4); +} + +void KDesktop::slotHybridSuspend() +{ + DCOPRef r("ksmserver", "ksmserver"); + r.send("suspend", 5); +} + void KDesktop::setVRoot( bool enable ) { if ( enable == set_vroot ) @@ -1100,7 +1124,7 @@ void KDesktop::setIconsEnabled( bool enable ) void KDesktop::desktopResized() { - resize(kapp->desktop()->size()); + resize(tdeApp->desktop()->size()); if ( m_pIconView ) { @@ -1108,7 +1132,7 @@ void KDesktop::desktopResized() // remove all icons, resize desktop, tell kdiconview new iconsArea size // tell kdiconview to reget all icons m_pIconView->slotClear(); - m_pIconView->resize(kapp->desktop()->size()); + m_pIconView->resize(tdeApp->desktop()->size()); // get new desktopIconsArea from kicker TQByteArray data, result; @@ -1117,7 +1141,7 @@ void KDesktop::desktopResized() TQCString replyType; TQRect area; - if ( kapp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", + if ( tdeApp->dcopClient()->call(kicker_name, kicker_name, "desktopIconsArea(int)", data, replyType, result, false, 2000) ) { TQDataStream res(result, IO_ReadOnly); diff --git a/kdesktop/desktop.h b/kdesktop/desktop.h index c6a208f07..ca1eefc61 100644 --- a/kdesktop/desktop.h +++ b/kdesktop/desktop.h @@ -44,7 +44,7 @@ class SaverEngine; class KRootWidget : public TQObject { - Q_OBJECT + TQ_OBJECT public: KRootWidget(); bool eventFilter( TQObject *, TQEvent * e ); @@ -63,7 +63,7 @@ signals: class KDesktop : public TQWidget, public KDesktopIface { - Q_OBJECT + TQ_OBJECT public: @@ -135,6 +135,10 @@ private slots: void slotLogoutNoCnf(); void slotHaltNoCnf(); void slotRebootNoCnf(); + void slotFreeze(); + void slotSuspend(); + void slotHibernate(); + void slotHybridSuspend(); /** Connected to KSycoca */ void slotDatabaseChanged(); diff --git a/kdesktop/init.cc b/kdesktop/init.cpp index 6bf87f333..25e3dd717 100644 --- a/kdesktop/init.cc +++ b/kdesktop/init.cpp @@ -19,11 +19,11 @@ #include <tdeio/job.h> #include <tdeio/netaccess.h> -#include <kstandarddirs.h> -#include <kdesktopfile.h> +#include <tdestandarddirs.h> +#include <tdedesktopfile.h> #include <tdeglobalsettings.h> #include <tdeapplication.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <tdemessagebox.h> #include <tdelocale.h> #include <kdebug.h> @@ -40,7 +40,7 @@ #include <dirent.h> #include <stdlib.h> #include <errno.h> -#include <ksimpleconfig.h> +#include <tdesimpleconfig.h> // for multihead extern int kdesktop_screen_number; @@ -134,7 +134,7 @@ static TQString realDesktopPath() */ static void copyDesktopLinks() { - TDEConfig *config = kapp->config(); + TDEConfig *config = tdeApp->config(); config->setGroup("General"); if (!config->readBoolEntry("CopyDesktopLinks", true)) return; @@ -145,7 +145,7 @@ static void copyDesktopLinks() TQString desktopPath = realDesktopPath(); for (TQStringList::ConstIterator it = list.begin(); it != list.end(); it++) { - KDesktopFile desk( *it ); + TDEDesktopFile desk( *it ); if (desk.readBoolEntry("Hidden")) continue; copyFile( *it, desktopPath ); @@ -213,13 +213,13 @@ void testLocalInstallation() if ( emptyDesktop || firstTimeWithNewTrash || installNewTrashi18n ) { TQString oldIcon, oldEmptyIcon; if ( trashDesktopExists ) { - KDesktopFile trashDesktop( trashDesktopPath, true ); + TDEDesktopFile trashDesktop( trashDesktopPath, true ); oldIcon = trashDesktop.readIcon(); oldEmptyIcon = trashDesktop.readEntry( "EmptyIcon" ); } copyFile( locate( "data", "kdesktop/directory.trash" ), trashDesktopPath ); if ( trashDesktopExists ) { - KDesktopFile trashDesktop( trashDesktopPath ); + TDEDesktopFile trashDesktop( trashDesktopPath ); trashDesktop.writeEntry( "Icon", oldIcon ); trashDesktop.writeEntry( "EmptyIcon", oldEmptyIcon ); trashDesktop.sync(); @@ -234,7 +234,7 @@ void testLocalInstallation() (void)TDEIO::NetAccess::synchronousRun( job, 0 ); // OK the only thing missing is to convert the icon position... - KSimpleConfig cfg( locateLocal("appdata", "IconPositions") ); + TDESimpleConfig cfg( locateLocal("appdata", "IconPositions") ); if ( cfg.hasGroup( "IconPosition::Trash" ) && !cfg.hasGroup( "IconPosition::trash.desktop" ) ) { const TQMap<TQString, TQString> entries = cfg.entryMap( "IconPosition::Trash" ); cfg.setGroup( "IconPosition::trash.desktop" ); diff --git a/kdesktop/kcustommenu.cc b/kdesktop/kcustommenu.cpp index 2e825c0d9..f3d3cf817 100644 --- a/kdesktop/kcustommenu.cc +++ b/kdesktop/kcustommenu.cpp @@ -57,7 +57,7 @@ KCustomMenu::KCustomMenu(const TQString &configfile, TQWidget *parent) insertMenuItem( menuItem, -1 ); } - connect(this, TQT_SIGNAL(activated(int)), this, TQT_SLOT(slotActivated(int))); + connect(this, TQ_SIGNAL(activated(int)), this, TQ_SLOT(slotActivated(int))); } KCustomMenu::~KCustomMenu() @@ -71,7 +71,7 @@ KCustomMenu::slotActivated(int id) KService::Ptr s = d->entryMap[id]; if (!s) return; - kapp->startServiceByDesktopPath(s->desktopEntryPath()); + tdeApp->startServiceByDesktopPath(s->desktopEntryPath()); } // The following is copied from kicker's PanelServiceMenu diff --git a/kdesktop/kcustommenu.h b/kdesktop/kcustommenu.h index 93b8d671f..a8f2cf5c4 100644 --- a/kdesktop/kcustommenu.h +++ b/kdesktop/kcustommenu.h @@ -29,7 +29,7 @@ */ class KCustomMenu : public TQPopupMenu { - Q_OBJECT + TQ_OBJECT public: /** * Create a custome menu described by @p configfile. diff --git a/kdesktop/kdesktop.kcfg b/kdesktop/kdesktop.kcfg index 53a1cc781..183fcc417 100644 --- a/kdesktop/kdesktop.kcfg +++ b/kdesktop/kdesktop.kcfg @@ -52,7 +52,7 @@ <default>true</default> <label></label> <whatsthis></whatsthis> - <!-- init.cc:138 --> + <!-- init.cpp:138 --> <!-- if (!config->readBoolEntry("CopyDesktopLinks", true)) --> </entry> <entry key="AutoLineUpIcons" type="Bool"> @@ -64,9 +64,9 @@ <default>false</default> <label>Sort directories first</label> <whatsthis></whatsthis> - <!-- krootwm.cc:251 --> + <!-- krootwm.cpp:251 --> <!-- aSortDirsFirst->setChecked( tdeconfig->readBoolEntry("SortDirectoriesFirst", true)); --> - <!-- krootwm.cc:496 --> + <!-- krootwm.cpp:496 --> <!-- config->writeEntry( "SortDirectoriesFirst", b ); --> </entry> <entry key="TerminalApplication" type="Path"> @@ -85,7 +85,7 @@ <default>Forward</default> <label></label> <whatsthis></whatsthis> - <!-- desktop.cc:397 --> + <!-- desktop.cpp:397 --> <!-- (config->readEntry("WheelDirection", default_dir_string) == forward_string) ? Forward : Reverse; --> </entry> <entry key="Left" type="String"> @@ -123,7 +123,7 @@ </group> <group name="FMSettings"> <entry key="NormalTextColor" type="Color"> <!--SHARED--> - <default>Qt::white</default> + <default>TQt::white</default> <label>Normal text color used for icon labels</label> <whatsthis></whatsthis> </entry> @@ -155,6 +155,16 @@ <label>Align direction</label> <whatsthis>If this is enabled, icons are aligned vertically, otherwise horizontally.</whatsthis> </entry> + <entry key="IconSpacing" type="Int"> + <default>5</default> + <label>Icon spacing</label> + <whatsthis><p>This is the minimal distance (in pixels) between the icons on your desktop.</p></whatsthis> + </entry> + <entry key="SpacingCtrlScroll" type="Bool"> + <default>false</default> + <label>Change spacing by Ctrl+Mouse Scroll</label> + <whatsthis><p>If this is enabled, you can change desktop icon spacing by pressing Ctrl and scrolling on the desktop background.</p></whatsthis> + </entry> <entry key="Preview" type="StringList"> <default></default> <label>Show Icon Previews For</label> @@ -190,7 +200,7 @@ <default></default> <label></label> <whatsthis></whatsthis> - <!-- kdiconview.cc:254 --> + <!-- kdiconview.cpp:254 --> <!-- m_itemsAlwaysFirst = config->readListEntry("AlwaysFirstItems"); // Distributor plug-in --> </entry> </group> @@ -199,14 +209,14 @@ <default>true</default> <label></label> <whatsthis></whatsthis> - <!-- kdiconview.cc:258 --> + <!-- kdiconview.cpp:258 --> <!-- m_enableMedia=config->readBoolEntry("enabled",false); --> </entry> <entry key="exclude" type="String"> <default>media/nfs_mounted,media/nfs_unmounted,media/hdd_mounted,media/hdd_unmounted,media/floppy_unmounted,media/cdrom_unmounted,media/floppy5_unmounted</default> <label>Device Types to exclude</label> <whatsthis>The device types which you do not want to see on the desktop.</whatsthis> - <!-- kdiconview.cc:261 --> + <!-- kdiconview.cpp:261 --> <!-- TQString tmpList=config->readEntry("exclude","media/hdd_mounted,media/hdd_unmounted,media/floppy_unmounted,media/cdrom_unmounted,media/floppy5_unmounted"); --> </entry> <entry name="MediaFreeSpaceDisplayEnabled" key="FreeSpaceDisplayEnabled" type="Bool"> diff --git a/kdesktop/kdesktopSetAsBackground.desktop b/kdesktop/kdesktopSetAsBackground.desktop index a7ba4f14a..3bc655803 100644 --- a/kdesktop/kdesktopSetAsBackground.desktop +++ b/kdesktop/kdesktopSetAsBackground.desktop @@ -1,14 +1,44 @@ [Desktop Entry] X-TDE-ServiceTypes=image/* -Actions=setAsBackground;tileAsBackground; +Actions=centeredAsBackground;tiledAsBackground;centeredTiledAsBackground;centeredMaxpectAsBackground;tiledMaxpectAsBackground;scaledAsBackground;centeredAutoFitAsBackground;scaleAndCropAsBackground X-TDE-Submenu=Set as Background -[Desktop Action setAsBackground] +[Desktop Action centeredAsBackground] Name=Centered Icon=background -Exec=dcop kdesktop KBackgroundIface setWallpaper %u 6 +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 1 -[Desktop Action tileAsBackground] +[Desktop Action tiledAsBackground] Name=Tiled Icon=background Exec=dcop kdesktop KBackgroundIface setWallpaper %u 2 + +[Desktop Action centeredTiledAsBackground] +Name=Center Tiled +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 3 + +[Desktop Action centeredMaxpectAsBackground] +Name=Centered Maxpect +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 4 + +[Desktop Action tiledMaxpectAsBackground] +Name=Tiled Maxpect +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 5 + +[Desktop Action scaledAsBackground] +Name=Scaled +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 6 + +[Desktop Action centeredAutoFitAsBackground] +Name=Centered Auto Fit +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 7 + +[Desktop Action scaleAndCropAsBackground] +Name=Scale & Crop +Icon=background +Exec=dcop kdesktop KBackgroundIface setWallpaper %u 8 diff --git a/kdesktop/kdesktopapp.cpp b/kdesktop/kdesktopapp.cpp index ba05dc655..b19817bbd 100644 --- a/kdesktop/kdesktopapp.cpp +++ b/kdesktop/kdesktopapp.cpp @@ -20,15 +20,15 @@ #include <kdesktopapp.h> KDesktopApp::KDesktopApp(): -KUniqueApplication() +TDEUniqueApplication() { #ifdef COMPOSITE initCmBackground(); #endif } -KDesktopApp::KDesktopApp(Display * dpy, Qt::HANDLE visual, Qt::HANDLE colormap): -KUniqueApplication(dpy, visual, colormap) +KDesktopApp::KDesktopApp(Display * dpy, TQt::HANDLE visual, TQt::HANDLE colormap): +TDEUniqueApplication(dpy, visual, colormap) { #ifdef COMPOSITE initCmBackground(); @@ -87,7 +87,7 @@ bool KDesktopApp::x11EventFilter (XEvent * xevent) emit cmBackgroundChanged(supported); } } - return KUniqueApplication::x11EventFilter (xevent); + return TDEUniqueApplication::x11EventFilter (xevent); } #endif diff --git a/kdesktop/kdesktopapp.h b/kdesktop/kdesktopapp.h index 94cdd1d33..4ce52c3a2 100644 --- a/kdesktop/kdesktopapp.h +++ b/kdesktop/kdesktopapp.h @@ -21,9 +21,9 @@ #define __kdesktopapp_h__ #include <config.h> -#include <kuniqueapplication.h> +#include <tdeuniqueapplication.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -33,13 +33,13 @@ # include <fixx11h.h> #endif -class KDesktopApp : public KUniqueApplication +class KDesktopApp : public TDEUniqueApplication { - Q_OBJECT + TQ_OBJECT public: KDesktopApp(); - KDesktopApp(Display * dpy, Qt::HANDLE visual = 0, - Qt::HANDLE colormap = 0); + KDesktopApp(Display * dpy, TQt::HANDLE visual = 0, + TQt::HANDLE colormap = 0); #ifdef COMPOSITE bool x11EventFilter (XEvent *); diff --git a/kdesktop/kdesktopbindings.cpp b/kdesktop/kdesktopbindings.cpp index 91bddb5b3..a4f46e717 100644 --- a/kdesktop/kdesktopbindings.cpp +++ b/kdesktop/kdesktopbindings.cpp @@ -1,6 +1,6 @@ #ifndef NOSLOTS # define DEF( name, key3, key4, fnSlot ) \ - keys->insert( name, i18n(name), TQString(), key3, key4, TQT_TQOBJECT(this), TQT_SLOT(fnSlot) ) + keys->insert( name, i18n(name), TQString(), key3, key4, this, TQ_SLOT(fnSlot) ) # define DEF2( name, key3, key4, receiver, slot ) \ keys->insert( name, i18n(name), TQString(), key3, key4, receiver, slot ); #else @@ -14,41 +14,62 @@ keys->insert( "Program:kdesktop", i18n("Desktop") ); #ifndef NOSLOTS - if (kapp->authorize("run_command")) + if (tdeApp->authorize("run_command")) { #endif - DEF( I18N_NOOP("Run Command"), ALT+Qt::Key_F2, WIN+Qt::Key_Return, slotExecuteCommand() ); + DEF( I18N_NOOP("Run Command"), ALT+TQt::Key_F2, WIN+TQt::Key_Return, slotExecuteCommand() ); #ifndef NOSLOTS } #endif - DEF( I18N_NOOP("Show Taskmanager"), CTRL+Qt::Key_Escape, WIN+CTRL+Qt::Key_Pause, slotShowTaskManager() ); - DEF( I18N_NOOP("Show Window List"), ALT+Qt::Key_F5, WIN+Qt::Key_0, slotShowWindowList() ); - DEF( I18N_NOOP("Switch User"), ALT+CTRL+Qt::Key_Insert, WIN+Qt::Key_Insert, slotSwitchUser() ); + DEF( I18N_NOOP("Show Taskmanager"), CTRL+TQt::Key_Escape, WIN+CTRL+TQt::Key_Pause, slotShowTaskManager() ); + DEF( I18N_NOOP("Show Window List"), ALT+TQt::Key_F5, WIN+TQt::Key_0, slotShowWindowList() ); + DEF( I18N_NOOP("Switch User"), ALT+CTRL+TQt::Key_Insert, WIN+TQt::Key_Insert, slotSwitchUser() ); #ifndef NOSLOTS - if (kapp->authorize("lock_screen")) + if (tdeApp->authorize("lock_screen")) { #endif - DEF2( I18N_NOOP("Lock Session"), ALT+CTRL+Qt::Key_L, WIN+Qt::Key_ScrollLock, KRootWm::self(), TQT_SLOT(slotLock()) ); - DEF2( I18N_NOOP("Lock Session (Hotkey)"), TDEShortcut(TQString("XF86ScreenSaver")), TDEShortcut(TQString("XF86ScreenSaver")), KRootWm::self(), TQT_SLOT(slotLock()) ); + DEF2( I18N_NOOP("Lock Session"), ALT+CTRL+TQt::Key_L, WIN+TQt::Key_ScrollLock, KRootWm::self(), TQ_SLOT(slotLock()) ); + DEF2( I18N_NOOP("Lock Session (Hotkey)"), TDEShortcut(TQString("XF86ScreenSaver")), TDEShortcut(TQString("XF86ScreenSaver")), KRootWm::self(), TQ_SLOT(slotLock()) ); #ifndef NOSLOTS } - if (kapp->authorize("start_screensaver")) + if (tdeApp->authorize("start_screensaver")) { #endif - DEF2( I18N_NOOP("Start Screen Saver"), ALT+CTRL+Qt::Key_S, WIN+Qt::Key_S, KRootWm::self(), TQT_SLOT(slotSave()) ); + DEF2( I18N_NOOP("Start Screen Saver"), ALT+CTRL+TQt::Key_S, WIN+TQt::Key_S, KRootWm::self(), TQ_SLOT(slotSave()) ); #ifndef NOSLOTS } - if (kapp->authorize("logout")) + if (tdeApp->authorize("logout")) { #endif - DEF( I18N_NOOP("Log Out"), ALT+CTRL+Qt::Key_Delete, WIN+Qt::Key_Escape, slotLogout() ); - DEF( I18N_NOOP("Log Out Without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_Delete, WIN+SHIFT+Qt::Key_Escape, slotLogoutNoCnf() ); - DEF( I18N_NOOP("Halt without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_PageDown, WIN+CTRL+SHIFT+Qt::Key_PageDown, slotHaltNoCnf() ); - DEF( I18N_NOOP("Reboot without Confirmation"), ALT+CTRL+SHIFT+Qt::Key_PageUp, WIN+CTRL+SHIFT+Qt::Key_PageUp, slotRebootNoCnf() ); + DEF( I18N_NOOP("Log Out"), ALT+CTRL+TQt::Key_Delete, WIN+TQt::Key_Escape, slotLogout() ); + DEF( I18N_NOOP("Log Out Without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_Delete, WIN+SHIFT+TQt::Key_Escape, slotLogoutNoCnf() ); + DEF( I18N_NOOP("Halt without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_PageDown, WIN+CTRL+SHIFT+TQt::Key_PageDown, slotHaltNoCnf() ); + DEF( I18N_NOOP("Reboot without Confirmation"), ALT+CTRL+SHIFT+TQt::Key_PageUp, WIN+CTRL+SHIFT+TQt::Key_PageUp, slotRebootNoCnf() ); #ifndef NOSLOTS } #endif + // Only add these options if supported by ksmserver + DCOPRef ksmref("ksmserver", "ksmserver"); + DCOPReply reply = ksmref.call("suspendOptions"); + + TQStringList suspendOptions; + if (reply.isValid()) { + reply.get(suspendOptions); + } + + if (suspendOptions.contains("freeze")) + DEF( I18N_NOOP("Freeze"), TDEShortcut(), TDEShortcut(), slotFreeze() ); + + if (suspendOptions.contains("suspend")) + DEF( I18N_NOOP("Suspend"), TDEShortcut(TQString("XF86Sleep")), TDEShortcut(TQString("XF86Sleep")), slotSuspend() ); + + if (suspendOptions.contains("hibernate")) + DEF( I18N_NOOP("Hibernate"), TDEShortcut(), TDEShortcut(), slotHibernate() ); + + if (suspendOptions.contains("hybridSuspend")) + DEF( I18N_NOOP("Hybrid Suspend"), TDEShortcut(), TDEShortcut(), slotHybridSuspend() ); + #undef DEF #undef DEF2 #undef WIN diff --git a/kdesktop/kdesktopshadowsettings.h b/kdesktop/kdesktopshadowsettings.h index c7e73db71..3c08cd574 100644 --- a/kdesktop/kdesktopshadowsettings.h +++ b/kdesktop/kdesktopshadowsettings.h @@ -24,7 +24,7 @@ #define __FX_DATA_DESKTOP #include <tqcolor.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeconfig.h> #include <kshadowsettings.h> diff --git a/kdesktop/kdiconview.cc b/kdesktop/kdiconview.cpp index c8c5a1fe6..70f1010b7 100644 --- a/kdesktop/kdiconview.cc +++ b/kdesktop/kdiconview.cpp @@ -27,7 +27,7 @@ #include <tdeapplication.h> #include <kcolordrag.h> #include <kdebug.h> -#include <kdesktopfile.h> +#include <tdedesktopfile.h> #include <kdirlister.h> #include <tdeglobalsettings.h> #include <kpropertiesdialog.h> @@ -42,7 +42,7 @@ #include <kivfreespaceoverlay.h> #include <kprotocolinfo.h> #include <kstdaction.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <kurldrag.h> #include <twin.h> #include <twinmodule.h> @@ -74,7 +74,7 @@ TQRect KDIconView::desktopRect() // ----------------------------------------------------------------------------- -void KDIconView::saveIconPosition(KSimpleConfig *config, int x, int y) +void KDIconView::saveIconPosition(TDESimpleConfig *config, int x, int y) { // save the icon position in absolute coordinates config->writeEntry("Xabs", x); @@ -90,7 +90,7 @@ void KDIconView::saveIconPosition(KSimpleConfig *config, int x, int y) // ----------------------------------------------------------------------------- -void KDIconView::readIconPosition(KSimpleConfig *config, int &x, int &y) +void KDIconView::readIconPosition(TDESimpleConfig *config, int &x, int &y) { // check if we have the position for the current desktop size TQRect desk = desktopRect(); @@ -138,7 +138,7 @@ KDIconView::KDIconView( TQWidget *parent, const char* name ) m_bNeedSave( false ), m_autoAlign( false ), m_hasExistingPos( false ), - m_bEditableDesktopIcons( kapp->authorize("editable_desktop_icons") ), + m_bEditableDesktopIcons( tdeApp->authorize("editable_desktop_icons") ), m_bShowDot( false ), m_bVertAlign( true ), m_dirLister( 0L ), @@ -162,44 +162,42 @@ KDIconView::KDIconView( TQWidget *parent, const char* name ) // Initialize media handler mMediaListView = new TQListView(); - connect( TQApplication::clipboard(), TQT_SIGNAL(dataChanged()), this, TQT_SLOT(slotClipboardDataChanged()) ); + connect( TQApplication::clipboard(), TQ_SIGNAL(dataChanged()), this, TQ_SLOT(slotClipboardDataChanged()) ); setURL( desktopURL() ); // sets m_url m_desktopDirs = TDEGlobal::dirs()->findDirs( "appdata", "Desktop" ); initDotDirectories(); - connect( this, TQT_SIGNAL( executed( TQIconViewItem * ) ), - TQT_SLOT( slotExecuted( TQIconViewItem * ) ) ); - connect( this, TQT_SIGNAL( returnPressed( TQIconViewItem * ) ), - TQT_SLOT( slotReturnPressed( TQIconViewItem * ) ) ); - connect( this, TQT_SIGNAL( mouseButtonPressed(int, TQIconViewItem*, const TQPoint&)), - TQT_SLOT( slotMouseButtonPressed(int, TQIconViewItem*, const TQPoint&)) ); - connect( this, TQT_SIGNAL( mouseButtonClicked(int, TQIconViewItem*, const TQPoint&)), - TQT_SLOT( slotMouseButtonClickedKDesktop(int, TQIconViewItem*, const TQPoint&)) ); - connect( this, TQT_SIGNAL( contextMenuRequested(TQIconViewItem*, const TQPoint&)), - TQT_SLOT( slotContextMenuRequested(TQIconViewItem*, const TQPoint&)) ); + connect( this, TQ_SIGNAL( executed( TQIconViewItem * ) ), + TQ_SLOT( slotExecuted( TQIconViewItem * ) ) ); + connect( this, TQ_SIGNAL( returnPressed( TQIconViewItem * ) ), + TQ_SLOT( slotReturnPressed( TQIconViewItem * ) ) ); + connect( this, TQ_SIGNAL( mouseButtonPressed(int, TQIconViewItem*, const TQPoint&)), + TQ_SLOT( slotMouseButtonPressed(int, TQIconViewItem*, const TQPoint&)) ); + connect( this, TQ_SIGNAL( mouseButtonClicked(int, TQIconViewItem*, const TQPoint&)), + TQ_SLOT( slotMouseButtonClickedKDesktop(int, TQIconViewItem*, const TQPoint&)) ); + connect( this, TQ_SIGNAL( contextMenuRequested(TQIconViewItem*, const TQPoint&)), + TQ_SLOT( slotContextMenuRequested(TQIconViewItem*, const TQPoint&)) ); - connect( this, TQT_SIGNAL( enableAction( const char * , bool ) ), - TQT_SLOT( slotEnableAction( const char * , bool ) ) ); + connect( this, TQ_SIGNAL( enableAction( const char * , bool ) ), + TQ_SLOT( slotEnableAction( const char * , bool ) ) ); // Hack: KonqIconViewWidget::slotItemRenamed is not virtual :-( - disconnect( this, TQT_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), - this, TQT_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); - connect( this, TQT_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), - this, TQT_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); + disconnect( this, TQ_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), + this, TQ_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); + connect( this, TQ_SIGNAL(itemRenamed(TQIconViewItem *, const TQString &)), + this, TQ_SLOT(slotItemRenamed(TQIconViewItem *, const TQString &)) ); if (!m_bEditableDesktopIcons) { - setItemsMovable(false); - setAcceptDrops(false); - viewport()->setAcceptDrops(false); + setIconsLocked(true); } } KDIconView::~KDIconView() { - if (m_dotDirectory && !m_bEditableDesktopIcons) { + if (m_dotDirectory && !m_bEditableDesktopIcons || m_iconsLocked) { m_dotDirectory->rollback(false); // Don't save positions } @@ -228,7 +226,7 @@ void KDIconView::initDotDirectories() delete m_dotDirectory; - m_dotDirectory = new KSimpleConfig( dotFileName ); + m_dotDirectory = new TDESimpleConfig( dotFileName ); // If we don't allow editable desktop icons, empty m_dotDirectory if (!m_bEditableDesktopIcons) { @@ -250,7 +248,7 @@ void KDIconView::initDotDirectories() if (TQFile::exists(localDotFileName)) { - KSimpleConfig dotDir(localDotFileName, true); // Read only + TDESimpleConfig dotDir(localDotFileName, true); // Read only TQStringList groups = dotDir.groupList(); TQStringList::ConstIterator gIt = groups.begin(); @@ -296,6 +294,7 @@ void KDIconView::initConfig( bool init ) m_bVertAlign = KDesktopSettings::vertAlign(); TQStringList oldPreview = previewSettings(); setPreviewSettings( KDesktopSettings::preview() ); + setSpacing( KDesktopSettings::iconSpacing() ); // read arrange configuration m_eSortCriterion = (SortCriterion)KDesktopSettings::sortCriterion(); @@ -371,16 +370,16 @@ void KDIconView::start() m_bNeedSave = false; - connect( m_dirLister, TQT_SIGNAL( clear() ), this, TQT_SLOT( slotClear() ) ); - connect( m_dirLister, TQT_SIGNAL( started(const KURL&) ), this, TQT_SLOT( slotStarted(const KURL&) ) ); - connect( m_dirLister, TQT_SIGNAL( completed() ), this, TQT_SLOT( slotCompleted() ) ); - connect( m_dirLister, TQT_SIGNAL( newItems( const KFileItemList & ) ), this, TQT_SLOT( slotNewItems( const KFileItemList & ) ) ); - connect( m_dirLister, TQT_SIGNAL( deleteItem( KFileItem * ) ), this, TQT_SLOT( slotDeleteItem( KFileItem * ) ) ); - connect( m_dirLister, TQT_SIGNAL( refreshItems( const KFileItemList & ) ), this, TQT_SLOT( slotRefreshItems( const KFileItemList & ) ) ); + connect( m_dirLister, TQ_SIGNAL( clear() ), this, TQ_SLOT( slotClear() ) ); + connect( m_dirLister, TQ_SIGNAL( started(const KURL&) ), this, TQ_SLOT( slotStarted(const KURL&) ) ); + connect( m_dirLister, TQ_SIGNAL( completed() ), this, TQ_SLOT( slotCompleted() ) ); + connect( m_dirLister, TQ_SIGNAL( newItems( const KFileItemList & ) ), this, TQ_SLOT( slotNewItems( const KFileItemList & ) ) ); + connect( m_dirLister, TQ_SIGNAL( deleteItem( KFileItem * ) ), this, TQ_SLOT( slotDeleteItem( KFileItem * ) ) ); + connect( m_dirLister, TQ_SIGNAL( refreshItems( const KFileItemList & ) ), this, TQ_SLOT( slotRefreshItems( const KFileItemList & ) ) ); // Start the directory lister ! m_dirLister->setShowingDotFiles( m_bShowDot ); - kapp->allowURLAction("list", KURL(), url()); + tdeApp->allowURLAction("list", KURL(), url()); startDirLister(); createActions(); } @@ -421,35 +420,35 @@ void KDIconView::createActions() { if (m_bEditableDesktopIcons) { - TDEAction *undo = KStdAction::undo( KonqUndoManager::self(), TQT_SLOT( undo() ), &m_actionCollection, "undo" ); - connect( KonqUndoManager::self(), TQT_SIGNAL( undoAvailable( bool ) ), - undo, TQT_SLOT( setEnabled( bool ) ) ); - connect( KonqUndoManager::self(), TQT_SIGNAL( undoTextChanged( const TQString & ) ), - undo, TQT_SLOT( setText( const TQString & ) ) ); + TDEAction *undo = KStdAction::undo( KonqUndoManager::self(), TQ_SLOT( undo() ), &m_actionCollection, "undo" ); + connect( KonqUndoManager::self(), TQ_SIGNAL( undoAvailable( bool ) ), + undo, TQ_SLOT( setEnabled( bool ) ) ); + connect( KonqUndoManager::self(), TQ_SIGNAL( undoTextChanged( const TQString & ) ), + undo, TQ_SLOT( setText( const TQString & ) ) ); undo->setEnabled( KonqUndoManager::self()->undoAvailable() ); - TDEAction* paCut = KStdAction::cut( TQT_TQOBJECT(this), TQT_SLOT( slotCut() ), &m_actionCollection, "cut" ); + TDEAction* paCut = KStdAction::cut( this, TQ_SLOT( slotCut() ), &m_actionCollection, "cut" ); TDEShortcut cutShortCut = paCut->shortcut(); cutShortCut.remove( KKey( SHIFT + Key_Delete ) ); // used for deleting files paCut->setShortcut( cutShortCut ); - KStdAction::copy( TQT_TQOBJECT(this), TQT_SLOT( slotCopy() ), &m_actionCollection, "copy" ); - KStdAction::paste( TQT_TQOBJECT(this), TQT_SLOT( slotPaste() ), &m_actionCollection, "paste" ); - TDEAction *pasteTo = KStdAction::paste( TQT_TQOBJECT(this), TQT_SLOT( slotPopupPasteTo() ), &m_actionCollection, "pasteto" ); + KStdAction::copy( this, TQ_SLOT( slotCopy() ), &m_actionCollection, "copy" ); + KStdAction::paste( this, TQ_SLOT( slotPaste() ), &m_actionCollection, "paste" ); + TDEAction *pasteTo = KStdAction::paste( this, TQ_SLOT( slotPopupPasteTo() ), &m_actionCollection, "pasteto" ); pasteTo->setEnabled( false ); // only enabled during popupMenu() TDEShortcut reloadShortcut = TDEStdAccel::shortcut(TDEStdAccel::Reload); - new TDEAction( i18n( "&Reload" ), "reload", reloadShortcut, TQT_TQOBJECT(this), TQT_SLOT( refreshIcons() ), &m_actionCollection, "reload" ); + new TDEAction( i18n( "&Reload" ), "reload", reloadShortcut, this, TQ_SLOT( refreshIcons() ), &m_actionCollection, "reload" ); - (void) new TDEAction( i18n( "&Rename" ), /*"editrename",*/ Key_F2, TQT_TQOBJECT(this), TQT_SLOT( renameSelectedItem() ), &m_actionCollection, "rename" ); - (void) new TDEAction( i18n( "&Properties" ), ALT+Key_Return, TQT_TQOBJECT(this), TQT_SLOT( slotProperties() ), &m_actionCollection, "properties" ); + (void) new TDEAction( i18n( "&Rename" ), /*"editrename",*/ Key_F2, this, TQ_SLOT( renameSelectedItem() ), &m_actionCollection, "rename" ); + (void) new TDEAction( i18n( "&Properties" ), ALT+Key_Return, this, TQ_SLOT( slotProperties() ), &m_actionCollection, "properties" ); TDEAction* trash = new TDEAction( i18n( "&Move to Trash" ), "edittrash", Key_Delete, &m_actionCollection, "trash" ); - connect( trash, TQT_SIGNAL( activated( TDEAction::ActivationReason, TQt::ButtonState ) ), - this, TQT_SLOT( slotTrashActivated( TDEAction::ActivationReason, TQt::ButtonState ) ) ); + connect( trash, TQ_SIGNAL( activated( TDEAction::ActivationReason, TQt::ButtonState ) ), + this, TQ_SLOT( slotTrashActivated( TDEAction::ActivationReason, TQt::ButtonState ) ) ); TDEConfig config("kdeglobals", true, false); config.setGroup( "KDE" ); - (void) new TDEAction( i18n( "&Delete" ), "edit-delete", SHIFT+Key_Delete, TQT_TQOBJECT(this), TQT_SLOT( slotDelete() ), &m_actionCollection, "del" ); + (void) new TDEAction( i18n( "&Delete" ), "edit-delete", SHIFT+Key_Delete, this, TQ_SLOT( slotDelete() ), &m_actionCollection, "del" ); // Initial state of the actions (cut/copy/paste/...) slotSelectionChanged(); @@ -486,6 +485,30 @@ void KDIconView::lineupIcons() saveIconPositions(); } +void KDIconView::incIconSpacing() +{ + if ( m_autoAlign && !KDesktopSettings::lockIcons() && KDesktopSettings::spacingCtrlScroll() ) + { + setSpacing( ( spacing() + 1 ) ); + lineupIcons(); + + KDesktopSettings::setIconSpacing( spacing() ); + KDesktopSettings::writeConfig(); + } +} + +void KDIconView::decIconSpacing() +{ + if ( m_autoAlign && !KDesktopSettings::lockIcons() && KDesktopSettings::spacingCtrlScroll() && spacing() > 5 ) + { + setSpacing( ( spacing() - 1 ) ); + lineupIcons(); + + KDesktopSettings::setIconSpacing( spacing() ); + KDesktopSettings::writeConfig(); + } +} + void KDIconView::setAutoAlign( bool b ) { m_autoAlign = b; @@ -503,8 +526,8 @@ void KDIconView::setAutoAlign( bool b ) else { KRootWm::self()->startup = false; } - connect( this, TQT_SIGNAL( iconMoved() ), - this, TQT_SLOT( lineupIcons() ) ); + connect( this, TQ_SIGNAL( iconMoved() ), + this, TQ_SLOT( lineupIcons() ) ); } else { // change maxItemWidth, because when grid-align was active, it changed this for the grid @@ -512,11 +535,20 @@ void KDIconView::setAutoAlign( bool b ) setMaxItemWidth( TQMAX( TQMAX( sz, previewIconSize( iconSize() ) ), KonqFMSettings::settings()->iconTextWidth() ) ); setFont( font() ); // Force calcRect() - disconnect( this, TQT_SIGNAL( iconMoved() ), - this, TQT_SLOT( lineupIcons() ) ); + disconnect( this, TQ_SIGNAL( iconMoved() ), + this, TQ_SLOT( lineupIcons() ) ); } } +void KDIconView::setIconsLocked( bool lock ) +{ + m_iconsLocked = lock; + + setItemsMovable(!lock); + setAcceptDrops(!lock); + viewport()->setAcceptDrops(!lock); +} + void KDIconView::startDirLister() { // if desktop is resized before start() is called (XRandr) @@ -534,7 +566,7 @@ void KDIconView::startDirLister() u.setPath( *it ); m_mergeDirs.append( u ); // And start listing this dir right now - kapp->allowURLAction("list", KURL(), u); + tdeApp->allowURLAction("list", KURL(), u); m_dirLister->openURL( u, true ); } configureMedia(); @@ -618,7 +650,7 @@ void KDIconView::contentsMousePressEvent( TQMouseEvent *e ) if (!m_dirLister) return; //kdDebug(1204) << "KDIconView::contentsMousePressEvent" << endl; // TQIconView, as of Qt 2.2, doesn't emit mouseButtonPressed for LMB on background - if ( e->button() == Qt::LeftButton && KRootWm::self()->hasLeftButtonMenu() ) + if ( e->button() == TQt::LeftButton && KRootWm::self()->hasLeftButtonMenu() ) { TQIconViewItem *item = findItem( e->pos() ); if ( !item ) @@ -644,7 +676,22 @@ void KDIconView::wheelEvent( TQWheelEvent* e ) TQIconViewItem *item = findItem( e->pos() ); if ( !item ) { - emit wheelRolled( e->delta() ); + TQWheelEvent *we = static_cast<TQWheelEvent*>(e); + + if ( we->state() == ControlButton ) + { + if ( we->delta() >= 0 ) + incIconSpacing(); + else + decIconSpacing(); + + we->accept(); + } + else + { + emit wheelRolled( e->delta() ); + } + return; } @@ -684,7 +731,7 @@ void KDIconView::slotMouseButtonClickedKDesktop(int _button, TQIconViewItem* _it { if (!m_dirLister) return; //kdDebug(1204) << "KDIconView::slotMouseButtonClickedKDesktop" << endl; - if ( _item && _button == Qt::MidButton ) { + if ( _item && _button == TQt::MidButton ) { slotExecuted(_item); } } @@ -702,7 +749,7 @@ void KDIconView::slotReturnPressed( TQIconViewItem *item ) void KDIconView::slotExecuted( TQIconViewItem *item ) { - kapp->propagateSessionManager(); + tdeApp->propagateSessionManager(); m_lastDeletedIconPos = TQPoint(); // user action -> not renaming an icon if (item) { visualActivate(item); @@ -792,7 +839,7 @@ void KDIconView::saveMediaListView() appname = "kdesktop"; else appname.sprintf("kdesktop-screen-%d", konq_screen_number); - kapp->dcopClient()->send( appname, "KDesktopIface", "configure()", data ); + tdeApp->dcopClient()->send( appname, "KDesktopIface", "configure()", data ); delete g_pConfig; } @@ -859,7 +906,7 @@ bool KDIconView::deleteGlobalDesktopFiles() // Web Browser kfmclient openBrowser %u Application TDE; if ( isDesktopFile(fItem) ) { - KSimpleConfig cfg( fItem->url().path(), true ); + TDESimpleConfig cfg( fItem->url().path(), true ); cfg.setDesktopGroup(); if ( cfg.readEntry( "X-Trinity-BuiltIn" ) == "true" ) { removeBuiltinIcon(cfg.readEntry( "Name" )); @@ -867,7 +914,7 @@ bool KDIconView::deleteGlobalDesktopFiles() } } - KDesktopFile df(desktopPath + fItem->url().fileName()); + TDEDesktopFile df(desktopPath + fItem->url().fileName()); df.writeEntry("Hidden", true); df.sync(); @@ -900,7 +947,7 @@ void KDIconView::slotDelete() // Not to be confused with the global popup-menu, KRootWm, when doing RMB on the desktop void KDIconView::popupMenu( const TQPoint &_global, const KFileItemList& _items ) { - if (!kapp->authorize("action/kdesktop_rmb")) return; + if (!tdeApp->authorize("action/kdesktop_rmb")) return; if (!m_dirLister) return; if ( _items.count() == 1 ) m_popupURL = _items.getFirst()->url(); @@ -1015,7 +1062,7 @@ bool KDIconView::makeFriendlyText( KFileIVI *fileIVI ) if ( !desktopFile.isEmpty() ) { - KSimpleConfig cfg( desktopFile, true ); + TDESimpleConfig cfg( desktopFile, true ); cfg.setDesktopGroup(); if (cfg.readBoolEntry("Hidden")) { return false; @@ -1098,7 +1145,7 @@ void KDIconView::slotNewItems( const KFileItemList & entries ) if (m_nextItemPos.isNull() && !m_dotDirectory) { // Not found, we'll need to save the new pos kdDebug(1214)<<"Neither a drop position stored nor m_dotDirectory set"<<endl; - m_dotDirectory = new KSimpleConfig( dotDirectoryPath(), true ); + m_dotDirectory = new TDESimpleConfig( dotDirectoryPath(), true ); // recursion slotNewItems( entries ); delete m_dotDirectory; @@ -1359,7 +1406,7 @@ void KDIconView::refreshTrashIcon() KFileIVI * fileIVI = static_cast<KFileIVI *>(it); KFileItem* item = fileIVI->item(); if ( isDesktopFile( item ) ) { - KSimpleConfig cfg( item->url().path(), true ); + TDESimpleConfig cfg( item->url().path(), true ); cfg.setDesktopGroup(); if ( cfg.readEntry( "Type" ) == "Link" && cfg.readEntry( "URL" ) == "trash:/" ) { @@ -1399,7 +1446,7 @@ void KDIconView::showFreeSpaceOverlay(KFileIVI* item) if (!m_paOutstandingFreeSpaceOverlaysTimer) { m_paOutstandingFreeSpaceOverlaysTimer = new TQTimer(this); - connect(m_paOutstandingFreeSpaceOverlaysTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotFreeSpaceOverlayStart())); + connect(m_paOutstandingFreeSpaceOverlaysTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotFreeSpaceOverlayStart())); } m_paOutstandingFreeSpaceOverlaysTimer->start(20, true); } @@ -1419,7 +1466,7 @@ void KDIconView::slotFreeSpaceOverlayStart() if (overlay) { - connect( overlay, TQT_SIGNAL( finished() ), this, TQT_SLOT( slotFreeSpaceOverlayFinished() ) ); + connect( overlay, TQ_SIGNAL( finished() ), this, TQ_SLOT( slotFreeSpaceOverlayFinished() ) ); overlay->start(); // Watch out, may emit finished() immediately!! return; // Let it run.... } @@ -1531,7 +1578,7 @@ void KDIconView::slotClipboardDataChanged() void KDIconView::renameDesktopFile(const TQString &path, const TQString &name) { - KDesktopFile cfg( path, false ); + TDEDesktopFile cfg( path, false ); // if we don't have the desktop entry group, then we assume that // it's not a config file (and we don't nuke it!) @@ -1620,7 +1667,7 @@ void KDIconView::slotAboutToCreate(const TQPoint &pos, const TQValueList<TDEIO:: saveIconPosition(m_dotDirectory, m_lastDropPos.x(), m_lastDropPos.y()); int dX = m_lastDropPos.x() - m_dropPos.x(); int dY = m_lastDropPos.y() - m_dropPos.y(); - if ((QABS(dX) > QABS(dY)) || (m_lastDropPos.x() + 2*gridX > width())) + if ((TQABS(dX) > TQABS(dY)) || (m_lastDropPos.x() + 2*gridX > width())) m_lastDropPos = TQPoint(m_dropPos.x(), m_lastDropPos.y() + gridY); else m_lastDropPos = TQPoint(m_lastDropPos.x() + gridX, m_lastDropPos.y()); @@ -1726,25 +1773,25 @@ void KDIconView::viewportWheelEvent( TQWheelEvent * e ) void KDIconView::updateWorkArea( const TQRect &wr ) { m_gotIconsArea = true; // now we have it! - + if (( iconArea() == wr ) && (m_needDesktopAlign == false)) { // nothing changed; avoid repaint/saveIconPosition ... return; } - + TQRect oldArea = iconArea(); setIconArea( wr ); - + kdDebug(1204) << "KDIconView::updateWorkArea wr: " << wr.x() << "," << wr.y() << " " << wr.width() << "x" << wr.height() << endl; kdDebug(1204) << " oldArea: " << oldArea.x() << "," << oldArea.y() << " " << oldArea.width() << "x" << oldArea.height() << endl; - + bool needRepaint = false; TQIconViewItem* item; int dx, dy; - + dx = wr.left() - oldArea.left(); dy = wr.top() - oldArea.top(); - + if ( dx != 0 || dy != 0 ) { if ( (dx > 0) || (dy > 0) ) { // the iconArea was shifted right/down; less space now @@ -1762,14 +1809,14 @@ void KDIconView::updateWorkArea( const TQRect &wr ) // the iconArea was shifted left/up; more space now - use it needRepaint = true; } - + if ( needRepaint ) { for ( item = firstItem(); item; item = item->nextItem() ) { item->moveBy( dx, dy ); } } } - + for ( item = firstItem(); item; item = item->nextItem() ) { TQRect r( item->rect() ); int dx = 0, dy = 0; @@ -1785,11 +1832,11 @@ void KDIconView::updateWorkArea( const TQRect &wr ) } } if ( needRepaint ) { - viewport()->repaint( FALSE ); - repaint( FALSE ); + viewport()->repaint( false ); + repaint( false ); saveIconPositions(); } - + m_needDesktopAlign = false; lineupIcons(); } @@ -1858,21 +1905,21 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect &curre if (area.isNull()) area = iconArea(); // If the proposed item rect is not contained by the desktop, by definition the item position is not free! - if (!area.contains(r, FALSE)) { + if (!area.contains(r, false)) { return false; } - + TQIconViewItem *it = firstItem(); for (; it; it = it->nextItem() ) { if ( !it->rect().isValid() || it == item ) { continue; } - + if ( it->intersects( r ) ) { return false; } } - + return true; } @@ -1882,7 +1929,7 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect& rect, if (area.isNull()) area = iconArea(); // If the proposed item rect is not contained by the desktop, by definition the item position is not free! - if (!area.contains(rect, FALSE)) { + if (!area.contains(rect, false)) { return false; } @@ -1891,12 +1938,12 @@ bool KDIconView::isFreePosition( const TQIconViewItem *item, const TQRect& rect, if ( !rect.isValid() || it == item ) { continue; } - + if ( it->intersects( rect ) ) { return false; } } - + return true; } @@ -1921,12 +1968,12 @@ void KDIconView::moveToFreePosition(TQIconViewItem *item, const TQRect ¤tI m_lastDeletedIconPos = TQPoint(); return; } - + //try to find a free place to put the item, honouring the m_bVertAlign property TQRect rect=item->rect(); if (m_bVertAlign) { kdDebug(1214)<<"moveToFreePosition for vertical alignment"<<endl; - + rect.moveTopLeft(TQPoint(currentIconArea.x()+spacing(),currentIconArea.y()+spacing())); do { success=false; @@ -1939,7 +1986,7 @@ void KDIconView::moveToFreePosition(TQIconViewItem *item, const TQRect ¤tI break; } } - + if (!success) { rect.moveTopLeft(TQPoint(rect.right()+spacing(),spacing())); } diff --git a/kdesktop/kdiconview.h b/kdesktop/kdiconview.h index 7b20e1817..7ef8d4889 100644 --- a/kdesktop/kdiconview.h +++ b/kdesktop/kdiconview.h @@ -33,7 +33,7 @@ class KDirLister; class KonqSettings; -class KSimpleConfig; +class TDESimpleConfig; class TDEAccel; class KShadowEngine; class KDesktopShadowSettings; @@ -48,7 +48,7 @@ class KDesktopShadowSettings; */ class KDIconView : public KonqIconViewWidget, public KDirNotify { - Q_OBJECT + TQ_OBJECT public: KDIconView( TQWidget *parent, const char* name = 0L ); @@ -75,6 +75,7 @@ public: void lineupIcons(TQIconView::Arrangement); + void setIconsLocked( bool b ); void setAutoAlign( bool b ); TQStringList selectedURLs(); @@ -165,6 +166,9 @@ public slots: void slotClear(); void refreshIcons(); + void incIconSpacing(); + void decIconSpacing(); + protected slots: void slotFreeSpaceOverlayStart(); void slotFreeSpaceOverlayFinished(); @@ -201,8 +205,8 @@ private: void refreshTrashIcon(); static TQRect desktopRect(); - static void saveIconPosition(KSimpleConfig *config, int x, int y); - static void readIconPosition(KSimpleConfig *config, int &x, int &y); + static void saveIconPosition(TDESimpleConfig *config, int x, int y); + static void readIconPosition(TDESimpleConfig *config, int &x, int &y); void showFreeSpaceOverlay(KFileIVI* item); @@ -214,6 +218,7 @@ private: bool m_bNeedRepaint; bool m_bNeedSave; + bool m_iconsLocked; bool m_autoAlign; /** true if even one icon has an icon-position entry in the .directory */ @@ -238,7 +243,7 @@ private: TQStringList m_desktopDirs; /** The desktop's .directory, used for storing icon positions */ - KSimpleConfig *m_dotDirectory; + TDESimpleConfig *m_dotDirectory; /** Position of last deleted icon - used when renaming a file */ TQPoint m_lastDeletedIconPos; diff --git a/kdesktop/krootwm.cc b/kdesktop/krootwm.cpp index 9c68fc740..9e751d573 100644 --- a/kdesktop/krootwm.cc +++ b/kdesktop/krootwm.cpp @@ -1,5 +1,5 @@ /* - * krootwm.cc Part of the KDE project. + * krootwm.cpp Part of the KDE project. * * Copyright (C) 1997 Matthias Ettrich * (C) 1997 Torben Weis, weis@kde.org @@ -32,8 +32,8 @@ #include <dirent.h> #include <errno.h> -#include <kprocess.h> -#include <kstandarddirs.h> +#include <tdeprocess.h> +#include <tdestandarddirs.h> #include <tdepopupmenu.h> #include <tdeapplication.h> #include <tdeconfig.h> @@ -52,7 +52,7 @@ #include <tdemessagebox.h> #include <kuser.h> #include <tqfile.h> -#include <ntqthread.h> +#include <tqthread.h> #include <tqeventloop.h> #include "krootwm.h" @@ -72,7 +72,7 @@ KRootWm * KRootWm::s_rootWm = 0; extern TQCString kdesktop_name, kicker_name, twin_name; -KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), startup(FALSE) +KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), startup(false) { s_rootWm = this; m_actionCollection = new TDEActionCollection(_desktop, this, "KRootWm::m_actionCollection"); @@ -86,16 +86,16 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), // Creates the new menu menuBar = 0; // no menubar yet menuNew = 0; - if (m_bDesktopEnabled && kapp->authorize("editable_desktop_icons")) + if (m_bDesktopEnabled && tdeApp->authorize("editable_desktop_icons")) { menuNew = new KNewMenu( m_actionCollection, "new_menu" ); - connect(menuNew->popupMenu(), TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotFileNewAboutToShow() ) ); - connect( menuNew, TQT_SIGNAL( activated() ), - m_pDesktop->iconView(), TQT_SLOT( slotNewMenuActivated() ) ); + connect(menuNew->popupMenu(), TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotFileNewAboutToShow() ) ); + connect( menuNew, TQ_SIGNAL( activated() ), + m_pDesktop->iconView(), TQ_SLOT( slotNewMenuActivated() ) ); } - if (kapp->authorizeTDEAction("bookmarks")) + if (tdeApp->authorizeTDEAction("bookmarks")) { bookmarks = new TDEActionMenu( i18n("Bookmarks"), "bookmark", m_actionCollection, "bookmarks" ); // The KBookmarkMenu is needed to fill the Bookmarks menu in the desktop menubar. @@ -109,13 +109,13 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), bookmarks = 0; bookmarkMenu = 0; } - + // The windowList and desktop menus can be part of a menubar (Mac style) // so we create them here desktopMenu = new TQPopupMenu; windowListMenu = new KWindowListMenu; - connect( windowListMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotWindowListAboutToShow() ) ); + connect( windowListMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotWindowListAboutToShow() ) ); // Create the actions #if 0 @@ -132,82 +132,82 @@ KRootWm::KRootWm(SaverEngine* _saver, KDesktop* _desktop) : TQObject(_desktop), } #endif - if (kapp->authorize("run_command")) + if (tdeApp->authorize("run_command")) { - new TDEAction(i18n("Run Command..."), "system-run", 0, TQT_TQOBJECT(m_pDesktop), TQT_SLOT( slotExecuteCommand() ), m_actionCollection, "exec" ); - new TDEAction(i18n("Open Terminal Here..." ), "terminal", CTRL+Key_T, this, TQT_SLOT( slotOpenTerminal() ), + new TDEAction(i18n("Run Command..."), "system-run", 0, m_pDesktop, TQ_SLOT( slotExecuteCommand() ), m_actionCollection, "exec" ); + new TDEAction(i18n("Open Terminal Here..." ), "terminal", CTRL+Key_T, this, TQ_SLOT( slotOpenTerminal() ), m_actionCollection, "open_terminal" ); } if (!TDEGlobal::config()->isImmutable()) { - new TDEAction(i18n("Configure Desktop..."), "configure", 0, this, TQT_SLOT( slotConfigureDesktop() ), + new TDEAction(i18n("Configure Desktop..."), "configure", 0, this, TQ_SLOT( slotConfigureDesktop() ), m_actionCollection, "configdesktop" ); - new TDEAction(i18n("Disable Desktop Menu"), 0, this, TQT_SLOT( slotToggleDesktopMenu() ), + new TDEAction(i18n("Disable Desktop Menu"), 0, this, TQ_SLOT( slotToggleDesktopMenu() ), m_actionCollection, "togglemenubar" ); } - new TDEAction(i18n("Unclutter Windows"), 0, this, TQT_SLOT( slotUnclutterWindows() ), + new TDEAction(i18n("Unclutter Windows"), 0, this, TQ_SLOT( slotUnclutterWindows() ), m_actionCollection, "unclutter" ); - new TDEAction(i18n("Cascade Windows"), 0, this, TQT_SLOT( slotCascadeWindows() ), + new TDEAction(i18n("Cascade Windows"), 0, this, TQ_SLOT( slotCascadeWindows() ), m_actionCollection, "cascade" ); // arrange menu actions - if (m_bDesktopEnabled && kapp->authorize("editable_desktop_icons")) + if (m_bDesktopEnabled && tdeApp->authorize("editable_desktop_icons")) { - new TDEAction(i18n("By Name (Case Sensitive)"), 0, this, TQT_SLOT( slotArrangeByNameCS() ), + new TDEAction(i18n("By Name (Case Sensitive)"), 0, this, TQ_SLOT( slotArrangeByNameCS() ), m_actionCollection, "sort_ncs"); - new TDEAction(i18n("By Name (Case Insensitive)"), 0, this, TQT_SLOT( slotArrangeByNameCI() ), + new TDEAction(i18n("By Name (Case Insensitive)"), 0, this, TQ_SLOT( slotArrangeByNameCI() ), m_actionCollection, "sort_nci"); - new TDEAction(i18n("By Size"), 0, this, TQT_SLOT( slotArrangeBySize() ), + new TDEAction(i18n("By Size"), 0, this, TQ_SLOT( slotArrangeBySize() ), m_actionCollection, "sort_size"); - new TDEAction(i18n("By Type"), 0, this, TQT_SLOT( slotArrangeByType() ), + new TDEAction(i18n("By Type"), 0, this, TQ_SLOT( slotArrangeByType() ), m_actionCollection, "sort_type"); - new TDEAction(i18n("By Date"), 0, this, TQT_SLOT( slotArrangeByDate() ), + new TDEAction(i18n("By Date"), 0, this, TQ_SLOT( slotArrangeByDate() ), m_actionCollection, "sort_date"); TDEToggleAction *aSortDirsFirst = new TDEToggleAction( i18n("Directories First"), 0, m_actionCollection, "sort_directoriesfirst" ); - connect( aSortDirsFirst, TQT_SIGNAL( toggled( bool ) ), - this, TQT_SLOT( slotToggleDirFirst( bool ) ) ); + connect( aSortDirsFirst, TQ_SIGNAL( toggled( bool ) ), + this, TQ_SLOT( slotToggleDirFirst( bool ) ) ); new TDEAction(i18n("Line Up Horizontally"), 0, - this, TQT_SLOT( slotLineupIconsHoriz() ), + this, TQ_SLOT( slotLineupIconsHoriz() ), m_actionCollection, "lineupHoriz" ); new TDEAction(i18n("Line Up Vertically"), 0, - this, TQT_SLOT( slotLineupIconsVert() ), + this, TQ_SLOT( slotLineupIconsVert() ), m_actionCollection, "lineupVert" ); TDEToggleAction *aAutoAlign = new TDEToggleAction(i18n("Align to Grid"), 0, m_actionCollection, "realign" ); - connect( aAutoAlign, TQT_SIGNAL( toggled( bool ) ), - this, TQT_SLOT( slotToggleAutoAlign( bool ) ) ); + connect( aAutoAlign, TQ_SIGNAL( toggled( bool ) ), + this, TQ_SLOT( slotToggleAutoAlign( bool ) ) ); TDEToggleAction *aLockIcons = new TDEToggleAction(i18n("Lock in Place"), 0, m_actionCollection, "lock_icons"); - connect( aLockIcons, TQT_SIGNAL( toggled( bool ) ), - this, TQT_SLOT( slotToggleLockIcons( bool ) ) ); + connect( aLockIcons, TQ_SIGNAL( toggled( bool ) ), + this, TQ_SLOT( slotToggleLockIcons( bool ) ) ); } if (m_bDesktopEnabled) { - new TDEAction(i18n("Refresh Desktop"), "desktop", 0, this, TQT_SLOT( slotRefreshDesktop() ), + new TDEAction(i18n("Refresh Desktop"), "desktop", 0, this, TQ_SLOT( slotRefreshDesktop() ), m_actionCollection, "refresh" ); } // Icons in sync with kicker - if (kapp->authorize("lock_screen")) + if (tdeApp->authorize("lock_screen")) { - new TDEAction(i18n("Lock Session"), "system-lock-screen", 0, this, TQT_SLOT( slotLock() ), + new TDEAction(i18n("Lock Session"), "system-lock-screen", 0, this, TQ_SLOT( slotLock() ), m_actionCollection, "lock" ); } - if (kapp->authorize("logout")) + if (tdeApp->authorize("logout")) { new TDEAction(i18n("Log Out \"%1\"...").arg(KUser().loginName()), "system-log-out", 0, - this, TQT_SLOT( slotLogout() ), m_actionCollection, "logout" ); + this, TQ_SLOT( slotLogout() ), m_actionCollection, "logout" ); } - if (kapp->authorize("start_new_session") && DM().isSwitchable()) + if (tdeApp->authorize("start_new_session") && DM().isSwitchable()) { new TDEAction(i18n("Start New Session"), "fork", 0, this, - TQT_SLOT( slotNewSession() ), m_actionCollection, "newsession" ); - if (kapp->authorize("lock_screen")) + TQ_SLOT( slotNewSession() ), m_actionCollection, "newsession" ); + if (tdeApp->authorize("lock_screen")) { new TDEAction(i18n("Lock Current && Start New Session"), "system-lock-screen", 0, this, - TQT_SLOT( slotLockNNewSession() ), m_actionCollection, "lockNnewsession" ); + TQ_SLOT( slotLockNNewSession() ), m_actionCollection, "lockNnewsession" ); } } @@ -249,8 +249,8 @@ void KRootWm::initConfig() // Read configuration for icons alignment if ( m_bDesktopEnabled ) { m_pDesktop->iconView()->setAutoAlign( KDesktopSettings::autoLineUpIcons() ); - if ( kapp->authorize( "editable_desktop_icons" ) ) { - m_pDesktop->iconView()->setItemsMovable( !KDesktopSettings::lockIcons() ); + if ( tdeApp->authorize( "editable_desktop_icons" ) ) { + m_pDesktop->iconView()->setIconsLocked( KDesktopSettings::lockIcons() ); TDEToggleAction *aLockIcons = static_cast<TDEToggleAction*>(m_actionCollection->action("lock_icons")); if (aLockIcons) aLockIcons->setChecked( KDesktopSettings::lockIcons() ); @@ -314,8 +314,8 @@ void KRootWm::buildMenus() if (m_actionCollection->action("newsession")) { sessionsMenu = new TQPopupMenu; - connect( sessionsMenu, TQT_SIGNAL(aboutToShow()), TQT_SLOT(slotPopulateSessions()) ); - connect( sessionsMenu, TQT_SIGNAL(activated(int)), TQT_SLOT(slotSessionActivated(int)) ); + connect( sessionsMenu, TQ_SIGNAL(aboutToShow()), TQ_SLOT(slotPopulateSessions()) ); + connect( sessionsMenu, TQ_SIGNAL(activated(int)), TQ_SLOT(slotSessionActivated(int)) ); } if (menuBar) { @@ -450,7 +450,7 @@ void KRootWm::buildMenus() TQPopupMenu* pWindowOperationsMenu = new TQPopupMenu; m_actionCollection->action("cascade")->plug( pWindowOperationsMenu ); m_actionCollection->action("unclutter")->plug( pWindowOperationsMenu ); - desktopMenu->insertItem(SmallIconSet("window_list"), i18n("Windows"), pWindowOperationsMenu); + desktopMenu->insertItem(SmallIconSet("window_duplicate"), i18n("Windows"), pWindowOperationsMenu); if (m_bDesktopEnabled) { @@ -464,7 +464,7 @@ void KRootWm::buildMenus() } int lastSep = desktopMenu->insertSeparator(); - if (sessionsMenu && kapp->authorize("switch_user")) + if (sessionsMenu && tdeApp->authorize("switch_user")) { desktopMenu->insertItem(SmallIconSet("switchuser" ), i18n("Switch User"), sessionsMenu); needSeparator = true; @@ -489,7 +489,7 @@ void KRootWm::buildMenus() desktopMenu->removeItem(lastSep); } - connect( desktopMenu, TQT_SIGNAL( aboutToShow() ), this, TQT_SLOT( slotFileNewAboutToShow() ) ); + connect( desktopMenu, TQ_SIGNAL( aboutToShow() ), this, TQ_SLOT( slotFileNewAboutToShow() ) ); if (menuBar) { menuBar->insertItem(i18n("File"), file); @@ -609,16 +609,16 @@ void KRootWm::mousePressed( const TQPoint& _global, int _button ) { if (!desktopMenu) return; // initialisation not yet done switch ( _button ) { - case Qt::LeftButton: + case TQt::LeftButton: if ( m_bShowMenuBar && menuBar ) menuBar->raise(); activateMenu( leftButtonChoice, _global ); break; - case Qt::MidButton: + case TQt::MidButton: activateMenu( middleButtonChoice, _global ); break; - case Qt::RightButton: - if (!kapp->authorize("action/kdesktop_rmb")) return; + case TQt::RightButton: + if (!tdeApp->authorize("action/kdesktop_rmb")) return; activateMenu( rightButtonChoice, _global ); break; default: @@ -637,13 +637,13 @@ void KRootWm::slotWindowList() { else r = desktop->screenGeometry( desktop->screenNumber(TQCursor::pos())); windowListMenu->init(); - disconnect( windowListMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotWindowListAboutToShow() ) ); // avoid calling init() twice + disconnect( windowListMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotWindowListAboutToShow() ) ); // avoid calling init() twice // windowListMenu->rect() is not valid before showing, use sizeHint() windowListMenu->popup(r.center() - TQRect( TQPoint( 0, 0 ), windowListMenu->sizeHint()).center()); windowListMenu->selectActiveWindow(); // make the popup more useful - connect( windowListMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotWindowListAboutToShow() ) ); + connect( windowListMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotWindowListAboutToShow() ) ); } void KRootWm::slotSwitchUser() { @@ -657,11 +657,11 @@ void KRootWm::slotSwitchUser() { else r = desktop->screenGeometry( desktop->screenNumber(TQCursor::pos())); slotPopulateSessions(); - disconnect( sessionsMenu, TQT_SIGNAL( aboutToShow() ), - this, TQT_SLOT( slotPopulateSessions() ) ); // avoid calling init() twice + disconnect( sessionsMenu, TQ_SIGNAL( aboutToShow() ), + this, TQ_SLOT( slotPopulateSessions() ) ); // avoid calling init() twice sessionsMenu->popup(r.center() - TQRect( TQPoint( 0, 0 ), sessionsMenu->sizeHint()).center()); - connect( sessionsMenu, TQT_SIGNAL( aboutToShow() ), - TQT_SLOT( slotPopulateSessions() ) ); + connect( sessionsMenu, TQ_SIGNAL( aboutToShow() ), + TQ_SLOT( slotPopulateSessions() ) ); } void KRootWm::slotArrangeByNameCS() @@ -732,12 +732,24 @@ void KRootWm::slotLineupIcons() { void KRootWm::slotToggleLockIcons( bool lock ) { - if (m_bDesktopEnabled) - { - m_pDesktop->iconView()->setItemsMovable( !lock ); - KDesktopSettings::setLockIcons( lock ); - KDesktopSettings::writeConfig(); - } + KDesktopSettings::setLockIcons( lock ); + KDesktopSettings::writeConfig(); + + // Also save it globally... + int desktop = TDEApplication::desktop()->primaryScreen(); + TQCString cfilename; + if (desktop == 0) + cfilename = "kdesktoprc"; + else + cfilename.sprintf("kdesktop-screen-%drc", desktop); + + TDEConfig *kdg_config = new TDEConfig(cfilename, false, false); + kdg_config->setGroup( "General" ); + kdg_config->writeEntry( "LockIcons", lock ); + kdg_config->sync(); + delete kdg_config; + + m_pDesktop->iconView()->setIconsLocked( lock ); } void KRootWm::slotRefreshDesktop() { @@ -774,12 +786,12 @@ void KRootWm::slotConfigureDesktop() { if (!m_configDialog) { m_configDialog = new KCMultiDialog( (TQWidget*)0, "configureDialog" ); - connect(m_configDialog, TQT_SIGNAL(finished()), this, TQT_SLOT(slotConfigClosed())); + connect(m_configDialog, TQ_SIGNAL(finished()), this, TQ_SLOT(slotConfigClosed())); TQStringList modules = configModules(); for (TQStringList::const_iterator it = modules.constBegin(); it != modules.constEnd(); ++it) { - if (kapp->authorizeControlModule(*it)) + if (tdeApp->authorizeControlModule(*it)) { m_configDialog->addModule(*it); } @@ -803,22 +815,22 @@ void KRootWm::slotToggleDesktopMenu() KDesktopSettings::writeConfig(); TQByteArray data; - kapp->dcopClient()->send( kdesktop_name, "KDesktopIface", "configure()", data); + tdeApp->dcopClient()->send( kdesktop_name, "KDesktopIface", "configure()", data); // for the standalone menubar setting - kapp->dcopClient()->send( "menuapplet*", "menuapplet", "configure()", data ); - kapp->dcopClient()->send( kicker_name, kicker_name, "configureMenubar()", data ); - kapp->dcopClient()->send( "twin*", "", "reconfigure()", data ); + tdeApp->dcopClient()->send( "menuapplet*", "menuapplet", "configure()", data ); + tdeApp->dcopClient()->send( kicker_name, kicker_name, "configureMenubar()", data ); + tdeApp->dcopClient()->send( "twin*", "", "reconfigure()", data ); } void KRootWm::slotUnclutterWindows() { - kapp->dcopClient()->send(twin_name, "KWinInterface", "unclutterDesktop()", TQString("")); + tdeApp->dcopClient()->send(twin_name, "KWinInterface", "unclutterDesktop()", TQString("")); } void KRootWm::slotCascadeWindows() { - kapp->dcopClient()->send(twin_name, "KWinInterface", "cascadeDesktop()", TQString("")); + tdeApp->dcopClient()->send(twin_name, "KWinInterface", "cascadeDesktop()", TQString("")); } @@ -828,7 +840,7 @@ void KRootWm::slotLock() { void KRootWm::slotSave() { - kapp->dcopClient()->send(kdesktop_name, "KScreensaverIface", "save()", TQString("")); + tdeApp->dcopClient()->send(kdesktop_name, "KScreensaverIface", "save()", TQString("")); } diff --git a/kdesktop/krootwm.h b/kdesktop/krootwm.h index 8fb5af8b9..efdd64c3e 100644 --- a/kdesktop/krootwm.h +++ b/kdesktop/krootwm.h @@ -64,7 +64,7 @@ class KRootWmThreadHelperObject; * This class is the handler for the menus (root popup menu and desktop menubar) */ class KRootWm: public TQObject { - Q_OBJECT + TQ_OBJECT public: KRootWm(SaverEngine*, KDesktop*); @@ -80,7 +80,7 @@ public: static KRootWm * self() { return s_rootWm; } /** - * share this with desktop.cc + * share this with desktop.cpp */ KNewMenu * newMenu() const { return menuNew; } diff --git a/kdesktop/kwebdesktop/kwebdesktop.cpp b/kdesktop/kwebdesktop/kwebdesktop.cpp index 1e2499ea2..37358f758 100644 --- a/kdesktop/kwebdesktop/kwebdesktop.cpp +++ b/kdesktop/kwebdesktop/kwebdesktop.cpp @@ -52,10 +52,10 @@ KWebDesktopRun::KWebDesktopRun( KWebDesktop* webDesktop, const KURL & url ) { kdDebug() << "KWebDesktopRun::KWebDesktopRun starting get" << endl; TDEIO::Job * job = TDEIO::get(m_url, false, false); - connect( job, TQT_SIGNAL( result( TDEIO::Job *)), - this, TQT_SLOT( slotFinished(TDEIO::Job *))); - connect( job, TQT_SIGNAL( mimetype( TDEIO::Job *, const TQString &)), - this, TQT_SLOT( slotMimetype(TDEIO::Job *, const TQString &))); + connect( job, TQ_SIGNAL( result( TDEIO::Job *)), + this, TQ_SLOT( slotFinished(TDEIO::Job *))); + connect( job, TQ_SIGNAL( mimetype( TDEIO::Job *, const TQString &)), + this, TQ_SLOT( slotMimetype(TDEIO::Job *, const TQString &))); } void KWebDesktopRun::slotMimetype( TDEIO::Job *job, const TQString &_type ) @@ -79,7 +79,7 @@ void KWebDesktopRun::slotFinished( TDEIO::Job * job ) if (job->error()) { kdDebug() << job->errorString() << endl; - kapp->exit(1); + tdeApp->exit(1); } } @@ -141,7 +141,7 @@ void KWebDesktop::slotCompleted() TQPixmap snapshot = TQPixmap::grabWidget( m_part->widget() ); snapshot.save( m_imageFile, "PNG" ); // And terminate the app. - kapp->quit(); + tdeApp->quit(); } KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType ) @@ -166,7 +166,7 @@ KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType ) ((TQScrollView *)htmlPart->widget())->setHScrollBarMode( TQScrollView::AlwaysOff ); ((TQScrollView *)htmlPart->widget())->setVScrollBarMode( TQScrollView::AlwaysOff ); - connect( htmlPart, TQT_SIGNAL( completed() ), this, TQT_SLOT( slotCompleted() ) ); + connect( htmlPart, TQ_SIGNAL( completed() ), this, TQ_SLOT( slotCompleted() ) ); m_part = htmlPart; } else { // Try to find an appropriate viewer component @@ -176,13 +176,13 @@ KParts::ReadOnlyPart* KWebDesktop::createPart( const TQString& mimeType ) kdWarning() << "No handler found for " << mimeType << endl; else { kdDebug() << "Loaded " << m_part->className() << endl; - connect( m_part, TQT_SIGNAL( completed() ), - this, TQT_SLOT( slotCompleted() ) ); + connect( m_part, TQ_SIGNAL( completed() ), + this, TQ_SLOT( slotCompleted() ) ); } } if ( m_part ) { - connect( m_part, TQT_SIGNAL( canceled(const TQString &) ), - this, TQT_SLOT( slotCompleted() ) ); + connect( m_part, TQ_SIGNAL( canceled(const TQString &) ), + this, TQ_SLOT( slotCompleted() ) ); } return m_part; } diff --git a/kdesktop/kwebdesktop/kwebdesktop.h b/kdesktop/kwebdesktop/kwebdesktop.h index 2641378cf..686e40297 100644 --- a/kdesktop/kwebdesktop/kwebdesktop.h +++ b/kdesktop/kwebdesktop/kwebdesktop.h @@ -28,7 +28,7 @@ namespace TDEIO { class Job; } class KWebDesktop : public TQObject { - Q_OBJECT + TQ_OBJECT public: KWebDesktop( TQObject* parent, const TQCString & imageFile, int width, int height ) : TQObject( parent ), @@ -51,9 +51,9 @@ private: }; -class KWebDesktopRun : public QObject +class KWebDesktopRun : public TQObject { - Q_OBJECT + TQ_OBJECT public: KWebDesktopRun( KWebDesktop* webDesktop, const KURL & url ); ~KWebDesktopRun() {} diff --git a/kdesktop/kwebdesktop/kwebdesktop.kcfg b/kdesktop/kwebdesktop/kwebdesktop.kcfg index b0920f410..b9a1edbb5 100644 --- a/kdesktop/kwebdesktop/kwebdesktop.kcfg +++ b/kdesktop/kwebdesktop/kwebdesktop.kcfg @@ -11,7 +11,7 @@ <default>http://www.kde.org/</default> <label></label> <whatsthis></whatsthis> - <!-- kdiconview.cc:1103 --> + <!-- kdiconview.cpp:1103 --> <!-- cfg.readEntry( "URL" ) == "trash:/" ) { --> </entry> </group> diff --git a/kdesktop/lock/CMakeLists.txt b/kdesktop/lock/CMakeLists.txt index 05e14e938..abeebb3d2 100644 --- a/kdesktop/lock/CMakeLists.txt +++ b/kdesktop/lock/CMakeLists.txt @@ -34,14 +34,14 @@ link_directories( set( target kdesktop_lock ) set( ${target}_SRCS - lockprocess.cc lockdlg.cc infodlg.cc querydlg.cc sakdlg.cc - securedlg.cc autologout.cc main.cc + lockprocess.cpp lockdlg.cpp infodlg.cpp querydlg.cpp sakdlg.cpp + securedlg.cpp autologout.cpp main.cpp ) tde_add_executable( ${target} AUTOMOC SOURCES ${${target}_SRCS} - LINK kdesktopsettings-static dmctl-static tdeio-shared Xext - pthread ${GL_LIBRARIES} ${LIBTDELDAP_LIBRARIES} + LINK kdesktopsettings-static dmctl-static tdeio-shared Xext ${TDEHW_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} ${GL_LIBRARIES} "${LINKER_IMMEDIATE_BINDING_FLAGS}" DESTINATION ${BIN_INSTALL_DIR} ) diff --git a/kdesktop/lock/Makefile.am b/kdesktop/lock/Makefile.am index c686e3ea9..4c2fb22a8 100644 --- a/kdesktop/lock/Makefile.am +++ b/kdesktop/lock/Makefile.am @@ -8,7 +8,7 @@ kdesktop_lock_LDADD = ../libkdesktopsettings.la ../../tdmlib/libdmctl.la $(LI bin_PROGRAMS = kdesktop_lock -kdesktop_lock_SOURCES = lockprocess.cc lockdlg.cc infodlg.cc querydlg.cc autologout.cc main.cc +kdesktop_lock_SOURCES = lockprocess.cpp lockdlg.cpp infodlg.cpp querydlg.cpp autologout.cpp main.cpp noinst_HEADERS = lockprocess.h lockdlg.h infodlg.h querydlg.h autologout.h main.h diff --git a/kdesktop/lock/autologout.cc b/kdesktop/lock/autologout.cpp index 6e05c439d..ee1d8e1db 100644 --- a/kdesktop/lock/autologout.cc +++ b/kdesktop/lock/autologout.cpp @@ -67,7 +67,7 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog" unlockDialogLayout->addWidget( frame ); frameLayout = new TQGridLayout(frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint()); - frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, Qt::AlignCenter | Qt::AlignTop); + frameLayout->addMultiCellWidget(pixLabel, 0, 2, 0, 0, TQt::AlignCenter | TQt::AlignTop); frameLayout->addWidget(greetLabel, 0, 1); frameLayout->addWidget(mStatusLabel, 1, 1); frameLayout->addWidget(infoLabel, 2, 1); @@ -83,7 +83,7 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog" mCountdownTimerId = startTimer(1000/25); - connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity())); + connect(tqApp, TQ_SIGNAL(activity()), TQ_SLOT(slotActivity())); setFixedSize( sizeHint() ); } @@ -119,7 +119,7 @@ void AutoLogout::slotActivity() void AutoLogout::logout() { - TQT_TQOBJECT(this)->killTimers(); + this->killTimers(); DCOPRef("ksmserver","ksmserver").send("logout", 0, 0, 0); } diff --git a/kdesktop/lock/autologout.h b/kdesktop/lock/autologout.h index 89cbb880e..834f4fd0e 100644 --- a/kdesktop/lock/autologout.h +++ b/kdesktop/lock/autologout.h @@ -22,7 +22,7 @@ class TQProgressBar; class AutoLogout : public TQDialog { - Q_OBJECT + TQ_OBJECT public: AutoLogout(LockProcess *parent); diff --git a/kdesktop/lock/infodlg.cc b/kdesktop/lock/infodlg.cpp index 3efaf060d..a37c92b8e 100644 --- a/kdesktop/lock/infodlg.cc +++ b/kdesktop/lock/infodlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -97,7 +97,7 @@ InfoDlg::InfoDlg(LockProcess *parent) layStatus->addWidget( mStatusLabel ); frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, Qt::AlignTop ); + frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, TQt::AlignTop ); frameLayout->addLayout( layStatus, 1, 1 ); installEventFilter(this); @@ -111,7 +111,7 @@ InfoDlg::~InfoDlg() void InfoDlg::updateLabel(TQString &txt) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText("<b>" + txt + "</b>"); } diff --git a/kdesktop/lock/infodlg.h b/kdesktop/lock/infodlg.h index 3daf4d2ce..ec5569748 100644 --- a/kdesktop/lock/infodlg.h +++ b/kdesktop/lock/infodlg.h @@ -26,7 +26,7 @@ class TQListView; // class InfoDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: InfoDlg(LockProcess *parent); diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cpp index d4b456a9e..c5d3d1aea 100644 --- a/kdesktop/lock/lockdlg.cc +++ b/kdesktop/lock/lockdlg.cpp @@ -20,7 +20,8 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> +#include <tdesimpleconfig.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -43,7 +44,10 @@ #include <tqlistview.h> #include <tqheader.h> #include <tqcheckbox.h> +#ifdef WITH_TDEHWLIB #include <tqfile.h> +#include <tdecryptographiccarddevice.h> +#endif #include <ctype.h> #include <unistd.h> @@ -58,9 +62,6 @@ #include <X11/Xatom.h> #include <fixx11h.h> -#ifdef HAVE_KRB5 -#include <libtdeldap.h> -#endif #ifndef AF_LOCAL # define AF_LOCAL AF_UNIX @@ -101,6 +102,7 @@ PasswordDlg::PasswordDlg(LockProcess *parent, GreeterPluginHandle *plugin, TQDat mPlugin( plugin ), mCapsLocked(-1), mUnlockingFailed(false), + validUserCardInserted(false), showInfoMessages(true), mCardLoginInProgress(false) { @@ -198,7 +200,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) if (!m_lockStartDT.isNull()) { frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, Qt::AlignTop ); + frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, TQt::AlignTop ); frameLayout->addWidget( greetLabel, 1, 1 ); frameLayout->addWidget( lockDTLabel, 2, 1 ); frameLayout->addItem( greet->getLayoutItem(), 3, 1 ); @@ -208,7 +210,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) } else { frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, Qt::AlignTop ); + frameLayout->addMultiCellWidget( theader, 0, 0, 0, 2, TQt::AlignTop ); frameLayout->addWidget( greetLabel, 1, 1 ); frameLayout->addItem( greet->getLayoutItem(), 2, 1 ); frameLayout->addLayout( layStatus, 3, 1 ); @@ -218,7 +220,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) } else { frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( pixLabel, 0, 2, 0, 0, Qt::AlignTop ); + frameLayout->addMultiCellWidget( pixLabel, 0, 2, 0, 0, TQt::AlignTop ); frameLayout->addWidget( greetLabel, 0, 1 ); frameLayout->addItem( greet->getLayoutItem(), 1, 1 ); frameLayout->addLayout( layStatus, 2, 1 ); @@ -235,14 +237,14 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) } setTabOrder( mNewSessButton, mLayoutButton ); - connect(mLayoutButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(layoutClicked())); + connect(mLayoutButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(layoutClicked())); if (show_cancel_button) { - connect(cancel, TQT_SIGNAL(clicked()), TQT_SLOT(reject())); + connect(cancel, TQ_SIGNAL(clicked()), TQ_SLOT(reject())); } - connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK())); - connect(mNewSessButton, TQT_SIGNAL(clicked()), TQT_SLOT(slotSwitchUser())); + connect(ok, TQ_SIGNAL(clicked()), TQ_SLOT(slotOK())); + connect(mNewSessButton, TQ_SIGNAL(clicked()), TQ_SLOT(slotSwitchUser())); - if (!DM().isSwitchable() || !kapp->authorize("switch_user")) { + if (!DM().isSwitchable() || !tdeApp->authorize("switch_user")) { mNewSessButton->hide(); } @@ -251,7 +253,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin) mFailedTimerId = 0; mTimeoutTimerId = startTimer(PASSDLG_HIDE_TIMEOUT); - connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity()) ); + connect(tqApp, TQ_SIGNAL(activity()), TQ_SLOT(slotActivity()) ); greet->setInfoMessageDisplay(showInfoMessages); greet->start(); @@ -327,12 +329,12 @@ void PasswordDlg::setLayoutText( const TQString &txt ) void PasswordDlg::updateLabel() { if (mUnlockingFailed) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText(i18n("<b>Unlocking failed</b>")); // mStatusLabel->show(); } else if (mCapsLocked) { - mStatusLabel->setPaletteForegroundColor(Qt::red); + mStatusLabel->setPaletteForegroundColor(TQt::red); mStatusLabel->setText(i18n("<b>Warning: Caps Lock on</b>")); // mStatusLabel->show(); } @@ -479,6 +481,7 @@ void PasswordDlg::reapVerify() switch (WEXITSTATUS(status)) { case AuthOk: { +#ifdef WITH_TDEHWLIB KUser userinfo; TQString fileName = userinfo.homeDir() + "/.tde_card_login_state"; TQFile flagFile(fileName); @@ -493,6 +496,7 @@ void PasswordDlg::reapVerify() // Card was not used to log in flagFile.remove(); } +#endif // Signal success greet->succeeded(); @@ -555,6 +559,7 @@ void PasswordDlg::handleVerify() setFixedSize( sizeHint().width(), sizeHint().height() + 1 ); setFixedSize( sizeHint() ); +#ifdef WITH_TDEHWLIB // Check if cryptographic card login is being used if (mCardLoginInProgress) { // Attempt authentication if configured @@ -563,11 +568,12 @@ void PasswordDlg::handleVerify() TQString autoPIN = cdevice->autoPIN(); if (autoPIN != TQString::null) { greet->setPassword(autoPIN); - TQTimer::singleShot(0, this, SLOT(slotOK())); + TQTimer::singleShot(0, this, TQ_SLOT(slotOK())); } } mCardLoginInProgress = false; } +#endif } else { greet->textPrompt( arr, false, false ); @@ -706,12 +712,12 @@ void PasswordDlg::gplugMsgBox( TQMessageBox::Icon type, const TQString &text ) KPushButton *button = new KPushButton( KStdGuiItem::ok(), winFrame ); button->setDefault( true ); button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) ); - connect( button, TQT_SIGNAL( clicked() ), TQT_SLOT( accept() ) ); + connect( button, TQ_SIGNAL( clicked() ), TQ_SLOT( accept() ) ); TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 ); - grid->addWidget( label1, 0, 0, Qt::AlignCenter ); - grid->addWidget( label2, 0, 1, Qt::AlignCenter ); - grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter ); + grid->addWidget( label1, 0, 0, TQt::AlignCenter ); + grid->addWidget( label2, 0, 1, TQt::AlignCenter ); + grid->addMultiCellWidget( button, 1,1, 0,1, TQt::AlignCenter ); static_cast< LockProcess* >(parent())->execDialog( &dialog ); } @@ -777,16 +783,16 @@ void PasswordDlg::slotStartNewSession() TQLabel *label2 = new TQLabel( qt_text, winFrame ); KPushButton *okbutton = new KPushButton( KGuiItem(i18n("&Start New Session"), "fork"), winFrame ); okbutton->setDefault( true ); - connect( okbutton, TQT_SIGNAL( clicked() ), dialog, TQT_SLOT( accept() ) ); + connect( okbutton, TQ_SIGNAL( clicked() ), dialog, TQ_SLOT( accept() ) ); KPushButton *cbutton = new KPushButton( KStdGuiItem::cancel(), winFrame ); - connect( cbutton, TQT_SIGNAL( clicked() ), dialog, TQT_SLOT( reject() ) ); + connect( cbutton, TQ_SIGNAL( clicked() ), dialog, TQ_SLOT( reject() ) ); TQBoxLayout *mbox = new TQVBoxLayout( winFrame, KDialog::marginHint(), KDialog::spacingHint() ); TQGridLayout *grid = new TQGridLayout( mbox, 2, 2, 2 * KDialog::spacingHint() ); grid->setMargin( KDialog::marginHint() ); - grid->addWidget( label1, 0, 0, Qt::AlignCenter ); - grid->addWidget( label2, 0, 1, Qt::AlignCenter ); + grid->addWidget( label1, 0, 0, TQt::AlignCenter ); + grid->addWidget( label2, 0, 1, TQt::AlignCenter ); TQCheckBox *cb = new TQCheckBox( i18n("&Do not ask again"), winFrame ); grid->addMultiCellWidget( cb, 1,1, 0,1 ); @@ -895,8 +901,8 @@ void PasswordDlg::slotSwitchUser() SessList sess; if (dm.localSessions( sess )) { lv = new TQListView( winFrame ); - connect( lv, TQT_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), TQT_SLOT(slotSessionActivated()) ); - connect( lv, TQT_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), &dialog, TQT_SLOT(accept()) ); + connect( lv, TQ_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), TQ_SLOT(slotSessionActivated()) ); + connect( lv, TQ_SIGNAL(doubleClicked(TQListViewItem *, const TQPoint&, int)), &dialog, TQ_SLOT(accept()) ); lv->setAllColumnsShowFocus( true ); lv->addColumn( i18n("Session") ); lv->addColumn( i18n("Location") ); @@ -927,16 +933,16 @@ void PasswordDlg::slotSwitchUser() vbox1->addWidget( lv ); btn = new KPushButton( KGuiItem(i18n("session", "&Activate"), "fork"), winFrame ); - connect( btn, TQT_SIGNAL(clicked()), TQT_SLOT(slotSessionActivated()) ); - connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(accept()) ); + connect( btn, TQ_SIGNAL(clicked()), TQ_SLOT(slotSessionActivated()) ); + connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(accept()) ); vbox2->addWidget( btn ); vbox2->addStretch( 2 ); } - if (kapp->authorize("start_new_session") && (p = dm.numReserve()) >= 0) { + if (tdeApp->authorize("start_new_session") && (p = dm.numReserve()) >= 0) { btn = new KPushButton( KGuiItem(i18n("Start &New Session"), "fork"), winFrame ); - connect( btn, TQT_SIGNAL(clicked()), TQT_SLOT(slotStartNewSession()) ); - connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(accept()) ); + connect( btn, TQ_SIGNAL(clicked()), TQ_SLOT(slotStartNewSession()) ); + connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(accept()) ); if (!p) btn->setEnabled( false ); vbox2->addWidget( btn ); @@ -944,7 +950,7 @@ void PasswordDlg::slotSwitchUser() } btn = new KPushButton( KStdGuiItem::cancel(), winFrame ); - connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(reject()) ); + connect( btn, TQ_SIGNAL(clicked()), &dialog, TQ_SLOT(reject()) ); vbox2->addWidget( btn ); dialog.setFixedSize( dialog.sizeHint() ); @@ -974,16 +980,22 @@ void PasswordDlg::capsLocked() } void PasswordDlg::attemptCardLogin() { -#ifdef HAVE_KRB5 - // Make sure card logins are enabled before attempting one - if (!LDAPManager::pkcsLoginEnabled()) { - return; - } -#else +#ifdef WITH_TDEHWLIB +#ifndef HAVE_KRB5 // Don't enable card-based logins if Kerberos integration was disabled return; #endif + // Make sure card logins are enabled before attempting one + TDESimpleConfig *systemconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/ldap/ldapconfigrc" )); + systemconfig->setGroup(NULL); + bool enabled = systemconfig->readBoolEntry("EnablePKCS11Login", false); + delete systemconfig; + if (!enabled) + { + return; + } + if (mCardLoginInProgress) { return; } @@ -1003,10 +1015,12 @@ void PasswordDlg::attemptCardLogin() { // Bypass initial password prompt greet->start(); greet->setPassword(""); - TQTimer::singleShot(0, this, SLOT(slotOK())); + TQTimer::singleShot(0, this, TQ_SLOT(slotOK())); +#endif } void PasswordDlg::resetCardLogin() { +#ifdef WITH_TDEHWLIB validUserCardInserted = false; greet->abort(); greet->clear(); @@ -1019,9 +1033,10 @@ void PasswordDlg::resetCardLogin() { setFixedSize(sizeHint()); // Restore information message display settings - greet->setInfoMessageDisplay(showInfoMessages); + greet->setInfoMessageDisplay(showInfoMessages); mCardLoginInProgress = false; +#endif } #include "lockdlg.moc" diff --git a/kdesktop/lock/lockdlg.h b/kdesktop/lock/lockdlg.h index 571d825fa..3f8500a42 100644 --- a/kdesktop/lock/lockdlg.h +++ b/kdesktop/lock/lockdlg.h @@ -33,7 +33,7 @@ class TQListView; // class PasswordDlg : public TQDialog, public KGreeterPluginHandler { - Q_OBJECT + TQ_OBJECT public: PasswordDlg(LockProcess *parent, GreeterPluginHandle *plugin); diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cpp index fdde3fc9e..2ad89f5ab 100644 --- a/kdesktop/lock/lockprocess.cc +++ b/kdesktop/lock/lockprocess.cpp @@ -17,6 +17,14 @@ //some image will be corrupted). #include <config.h> +#include <tdeglobal.h> + +#ifdef WITH_TDEHWLIB +#include <ksslcertificate.h> +#include <kuser.h> +#include <tdehardwaredevices.h> +#include <tdecryptographiccarddevice.h> +#endif #include "lockprocess.h" #include "lockdlg.h" @@ -30,11 +38,10 @@ #include <dmctl.h> #include <dcopref.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeapplication.h> #include <kservicegroup.h> #include <kdebug.h> -#include <kuser.h> #include <tdemessagebox.h> #include <tdeglobalsettings.h> #include <tdelocale.h> @@ -78,7 +85,7 @@ #include <sys/types.h> #include <fcntl.h> -#include <kcrash.h> +#include <tdecrash.h> #include <pthread.h> @@ -144,14 +151,6 @@ Atom kde_wm_system_modal_notification = 0; Atom kde_wm_transparent_to_desktop = 0; Atom kde_wm_transparent_to_black = 0; -static void segv_handler(int) -{ - kdError(KDESKTOP_DEBUG_ID) << "A fatal exception was encountered." - << " Trapping and ignoring it so as not to compromise desktop security..." - << kdBacktrace() << endl; - sleep(1); -} - extern Atom tqt_wm_state; extern bool trinity_desktop_lock_use_system_modal_dialogs; extern bool trinity_desktop_lock_delay_screensaver_start; @@ -159,24 +158,32 @@ extern bool trinity_desktop_lock_use_sak; extern bool trinity_desktop_lock_hide_active_windows; extern bool trinity_desktop_lock_hide_cancel_button; extern bool trinity_desktop_lock_forced; - -extern LockProcess* trinity_desktop_lock_process; +extern bool trinity_desktop_lock_failed_grab; extern bool argb_visual; extern pid_t kdesktop_pid; extern TQXLibWindowList trinity_desktop_lock_hidden_window_list; -bool trinity_desktop_lock_autohide_lockdlg = TRUE; +bool trinity_desktop_lock_autohide_lockdlg = true; + +static void segv_handler(int) +{ + kdError(KDESKTOP_DEBUG_ID) << "A fatal exception was encountered." + << " Trapping and ignoring it so as not to compromise desktop security..." + << kdBacktrace() << endl; + + sleep(1); +} #define ENABLE_CONTINUOUS_LOCKDLG_DISPLAY \ -if (!mForceContinualLockDisplayTimer->isActive()) mForceContinualLockDisplayTimer->start(100, FALSE); \ -trinity_desktop_lock_autohide_lockdlg = FALSE; \ +if (!mForceContinualLockDisplayTimer->isActive()) mForceContinualLockDisplayTimer->start(100, false); \ +trinity_desktop_lock_autohide_lockdlg = false; \ mHackDelayStartupTimer->stop(); #define DISABLE_CONTINUOUS_LOCKDLG_DISPLAY \ mForceContinualLockDisplayTimer->stop(); \ -trinity_desktop_lock_autohide_lockdlg = TRUE; \ +trinity_desktop_lock_autohide_lockdlg = true; \ mHackDelayStartupTimer->stop(); //=========================================================================== @@ -227,7 +234,9 @@ LockProcess::LockProcess() m_notifyReadyRequested(false), m_loginCardDevice(NULL), m_maskWidget(NULL), - m_saverRootWindow(0) + m_saverRootWindow(0), + mControlPipeHandler(nullptr), + mControlPipeHandlerThread(nullptr) { #ifdef KEEP_MOUSE_UNGRABBED setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize); @@ -240,7 +249,7 @@ LockProcess::LockProcess() kde_wm_transparent_to_desktop = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_DESKTOP", False); kde_wm_transparent_to_black = XInternAtom(tqt_xdisplay(), "_TDE_TRANSPARENT_TO_BLACK", False); - kapp->installX11EventFilter(this); + tdeApp->installX11EventFilter(this); mForceContinualLockDisplayTimer = new TQTimer( this ); mHackDelayStartupTimer = new TQTimer( this ); @@ -249,7 +258,7 @@ LockProcess::LockProcess() if (!argb_visual) { // Try to get the root pixmap if (!m_rootPixmap) m_rootPixmap = new KRootPixmap(this); - connect(m_rootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotPaintBackground(const TQPixmap &))); + connect(m_rootPixmap, TQ_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQ_SLOT(slotPaintBackground(const TQPixmap &))); m_rootPixmap->setCustomPainting(true); m_rootPixmap->start(); } @@ -291,18 +300,20 @@ LockProcess::LockProcess() } } +#ifdef WITH_TDEHWLIB // Initialize SmartCard readers TDEGenericDevice *hwdevice; TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard); for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) { TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); - // connect(cdevice, SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*))); - connect(cdevice, TQT_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); - connect(cdevice, TQT_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); + // connect(cdevice, TQ_SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*))); + connect(cdevice, TQ_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); + connect(cdevice, TQ_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQ_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); cdevice->enableCardMonitoring(true); // cdevice->enablePINEntryCallbacks(true); } +#endif #ifdef KEEP_MOUSE_UNGRABBED setEnabled(false); @@ -322,8 +333,6 @@ LockProcess::~LockProcess() mControlPipeHandler->terminateThread(); mControlPipeHandlerThread->wait(); delete mControlPipeHandler; -// delete mControlPipeHandlerThread; - if (resizeTimer != NULL) { resizeTimer->stop(); delete resizeTimer; @@ -379,12 +388,12 @@ void LockProcess::init(bool child, bool useBlankOnly) generateBackingImages(); // Connect all signals - connect( mForceContinualLockDisplayTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(displayLockDialogIfNeeded()) ); - connect( mHackDelayStartupTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(closeDialogAndStartHack()) ); - connect( mEnsureVRootWindowSecurityTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(repaintRootWindowIfNeeded()) ); - connect(tqApp, TQT_SIGNAL(mouseInteraction(XEvent *)), TQT_SLOT(slotMouseActivity(XEvent *))); - connect(&mHackProc, TQT_SIGNAL(processExited(TDEProcess *)), TQT_SLOT(hackExited(TDEProcess *))); - connect(&mSuspendTimer, TQT_SIGNAL(timeout()), TQT_SLOT(suspend())); + connect( mForceContinualLockDisplayTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(displayLockDialogIfNeeded()) ); + connect( mHackDelayStartupTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(closeDialogAndStartHack()) ); + connect( mEnsureVRootWindowSecurityTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(repaintRootWindowIfNeeded()) ); + connect(tqApp, TQ_SIGNAL(mouseInteraction(XEvent *)), TQ_SLOT(slotMouseActivity(XEvent *))); + connect(&mHackProc, TQ_SIGNAL(processExited(TDEProcess *)), TQ_SLOT(hackExited(TDEProcess *))); + connect(&mSuspendTimer, TQ_SIGNAL(timeout()), TQ_SLOT(suspend())); #ifdef HAVE_DPMS //if the user decided that the screensaver should run independent from @@ -394,7 +403,7 @@ void LockProcess::init(bool child, bool useBlankOnly) CARD16 state; if (DPMSInfo(tqt_xdisplay(), &state, &on)) { if (on) { - connect(&mCheckDPMS, TQT_SIGNAL(timeout()), TQT_SLOT(checkDPMSActive())); + connect(&mCheckDPMS, TQ_SIGNAL(timeout()), TQ_SLOT(checkDPMSActive())); // we can save CPU if we stop it as quickly as possible // but we waste CPU if we check too often -> so take 10s mCheckDPMS.start(10000); @@ -403,9 +412,7 @@ void LockProcess::init(bool child, bool useBlankOnly) } #endif -#if (TQT_VERSION-0 >= 0x030200) // XRANDR support - connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized())); -#endif + connect( tdeApp->desktop(), TQ_SIGNAL( resized( int )), TQ_SLOT( desktopResized())); if (!trinity_desktop_lock_use_system_modal_dialogs) { setWFlags((WFlags)WX11BypassWM); @@ -426,21 +433,25 @@ void LockProcess::init(bool child, bool useBlankOnly) mControlPipeHandler = new ControlPipeHandlerObject(); mControlPipeHandler->mParent = this; mControlPipeHandler->moveToThread(mControlPipeHandlerThread); - TQObject::connect(mControlPipeHandler, SIGNAL(processCommand(TQString)), this, SLOT(processInputPipeCommand(TQString))); - TQTimer::singleShot(0, mControlPipeHandler, SLOT(run())); + TQObject::connect(mControlPipeHandler, TQ_SIGNAL(processCommand(TQString)), this, TQ_SLOT(processInputPipeCommand(TQString))); + TQTimer::singleShot(0, mControlPipeHandler, TQ_SLOT(run())); mControlPipeHandlerThread->start(); + // If the lock process terminates before 'mControlPipeHandler::run()' has been called, the + // 'mControlPipeHandlerThread' thread would not terminate and the lock process would have a + // dirty exit, potentially leaving 'kdesktop' in a dirty state that prevents the lock from + // working correctly till 'kdesktop' is killed and restarted. By forcing a call to 'processEvents()' + // we make sure to handle pending timer events and execute the required call + tdeApp->processEvents(); } static int signal_pipe[2]; static void sigterm_handler(int) { - if ((!trinity_desktop_lock_process) || (!trinity_desktop_lock_process->inSecureDialog())) { - // Exit uncleanly - char tmp = 'U'; - if (::write( signal_pipe[1], &tmp, 1) == -1) { - // Error handler to shut up gcc warnings - } + // Exit uncleanly + char tmp = 'U'; + if (::write( signal_pipe[1], &tmp, 1) == -1) { + // Error handler to shut up gcc warnings } } @@ -454,7 +465,7 @@ static void sighup_handler(int) bool LockProcess::closeCurrentWindow() { - mClosingWindows = TRUE; + mClosingWindows = true; if (currentDialog != NULL) { mForceReject = true; if (dynamic_cast<SAKDlg*>(currentDialog)) { @@ -469,12 +480,12 @@ bool LockProcess::closeCurrentWindow() } if( mDialogs.isEmpty() ) { - mClosingWindows = FALSE; + mClosingWindows = false; mForceReject = false; return false; } else { - mClosingWindows = TRUE; + mClosingWindows = true; return true; } } @@ -524,8 +535,8 @@ void LockProcess::setupSignals() if (pipe(signal_pipe) == -1) { // Error handler to shut up gcc warnings } - TQSocketNotifier* notif = new TQSocketNotifier(signal_pipe[0], TQSocketNotifier::Read, TQT_TQOBJECT(this) ); - connect( notif, TQT_SIGNAL(activated(int)), TQT_SLOT(signalPipeSignal())); + TQSocketNotifier* notif = new TQSocketNotifier(signal_pipe[0], TQSocketNotifier::Read, this ); + connect( notif, TQ_SIGNAL(activated(int)), TQ_SLOT(signalPipeSignal())); } @@ -543,9 +554,11 @@ void LockProcess::signalPipeSignal() startLock(); } else if( tmp == 'U' ) { - // Exit uncleanly - quitSaver(); - exit(1); + if (!inSecureDialog()) { + // Exit uncleanly + quitSaver(); + exit(1); + } } } @@ -557,7 +570,7 @@ bool LockProcess::lock() m_startupStatusDialog->setStatusMessage(i18n("Securing desktop session").append("...")); m_startupStatusDialog->show(); m_startupStatusDialog->setActiveWindow(); - tqApp->processEvents(); + tdeApp->processEvents(); #endif if (startSaver(true)) { @@ -568,7 +581,7 @@ bool LockProcess::lock() // selecting "lock screen", that looks really untidy. mBusy = true; if (startLock()) { - TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed())); + TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed())); return true; } stopSaver(); @@ -589,7 +602,7 @@ bool LockProcess::defaultSave() mOverrideHackStartupEnabled = true; if (startSaver()) { if (mLockGrace >= 0) { - TQTimer::singleShot(mLockGrace, this, TQT_SLOT(startLock())); + TQTimer::singleShot(mLockGrace, this, TQ_SLOT(startLock())); } return true; } @@ -609,18 +622,18 @@ void LockProcess::quitSaver() { DISABLE_CONTINUOUS_LOCKDLG_DISPLAY if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(quitSaver()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(quitSaver()) ); return; } stopSaver(); - kapp->quit(); + tdeApp->quit(); } //--------------------------------------------------------------------------- void LockProcess::startSecureDialog() { if ((backingPixmap.isNull()) && (mBackingStartupDelayTimer < 100)) { - TQTimer::singleShot(10, this, TQT_SLOT(startSecureDialog())); + TQTimer::singleShot(10, this, TQ_SLOT(startSecureDialog())); mBackingStartupDelayTimer++; return; } @@ -641,7 +654,7 @@ void LockProcess::startSecureDialog() mInSecureDialog = false; if (ret == 0) { mClosingWindows = 1; - kapp->quit(); + tdeApp->quit(); } if (ret == 1) { // In case of a forced lock we don't react to events during @@ -652,18 +665,18 @@ void LockProcess::startSecureDialog() mBusy = true; trinity_desktop_lock_forced = true; // Make sure the cursor is not showing busy status - setCursor( tqarrowCursor ); + setCursor( TQt::arrowCursor ); if (startLock()) { if (trinity_desktop_lock_delay_screensaver_start) { mBusy = false; } else { - TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed())); + TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed())); } if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { if (mHackStartupEnabled == true) { @@ -672,7 +685,7 @@ void LockProcess::startSecureDialog() else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { startHack(); @@ -690,18 +703,18 @@ void LockProcess::startSecureDialog() if (system("ksysguard &") == -1) { // Error handler to shut up gcc warnings } - kapp->quit(); + tdeApp->quit(); } if (ret == 3) { mClosingWindows = 1; DCOPRef("ksmserver","ksmserver").send("logout", (int)TDEApplication::ShutdownConfirmYes, (int)TDEApplication::ShutdownTypeNone, (int)TDEApplication::ShutdownModeInteractive); - kapp->quit(); + tdeApp->quit(); } // FIXME // Handle remaining case (switch user) if (forcecontdisp) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } stopSaver(); } @@ -713,13 +726,13 @@ bool LockProcess::runSecureDialog() m_startupStatusDialog->setStatusMessage(i18n("Securing desktop session").append("...")); m_startupStatusDialog->show(); m_startupStatusDialog->setActiveWindow(); - tqApp->processEvents(); + tdeApp->processEvents(); #endif mInSecureDialog = true; if (startSaver()) { mBackingStartupDelayTimer = 0; - TQTimer::singleShot(0, this, TQT_SLOT(startSecureDialog())); + TQTimer::singleShot(0, this, TQ_SLOT(startSecureDialog())); return true; } else { @@ -789,9 +802,9 @@ void LockProcess::readSaver() if (!mSaver.isEmpty()) { TQString file = locate("scrsav", mSaver); - bool opengl = kapp->authorize("opengl_screensavers"); - bool manipulatescreen = kapp->authorize("manipulatescreen_screensavers"); - KDesktopFile config(file, true); + bool opengl = tdeApp->authorize("opengl_screensavers"); + bool manipulatescreen = tdeApp->authorize("manipulatescreen_screensavers"); + TDEDesktopFile config(file, true); if (config.readEntry("X-TDE-Type").utf8() != 0) { TQString saverType = config.readEntry("X-TDE-Type").utf8(); TQStringList saverTypes = TQStringList::split(";", saverType); @@ -1031,7 +1044,7 @@ void LockProcess::desktopResized() } else { mEnsureScreenHiddenTimer = new TQTimer( this ); - connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) ); + connect( mEnsureScreenHiddenTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotForcePaintBackground()) ); } mEnsureScreenHiddenTimer->start(DESKTOP_WALLPAPER_OBTAIN_TIMEOUT_MS, true); } @@ -1054,9 +1067,9 @@ void LockProcess::desktopResized() // being displayed, so we finish the hack restarting/display prettying operations in a separate timed slot if (resizeTimer == NULL) { resizeTimer = new TQTimer( this ); - connect( resizeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(doDesktopResizeFinish()) ); + connect( resizeTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(doDesktopResizeFinish()) ); } - resizeTimer->start( 100, TRUE ); // 100 millisecond single shot timer; should allow display switching operations to finish before hack is started + resizeTimer->start( 100, true ); // 100 millisecond single shot timer; should allow display switching operations to finish before hack is started } void LockProcess::doDesktopResizeFinish() @@ -1066,7 +1079,7 @@ void LockProcess::doDesktopResizeFinish() } mDialogControlLock = true; if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(doDesktopResizeFinish()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(doDesktopResizeFinish()) ); mDialogControlLock = false; return; } @@ -1075,7 +1088,7 @@ void LockProcess::doDesktopResizeFinish() // Restart the hack as the window size is now different if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { if (mHackStartupEnabled == true) { @@ -1084,7 +1097,7 @@ void LockProcess::doDesktopResizeFinish() else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { startHack(); @@ -1234,10 +1247,10 @@ bool LockProcess::grabMouse() { HANDLE cursorHandle; if (mHackActive) { - cursorHandle = TQCursor(tqblankCursor).handle(); + cursorHandle = TQCursor(TQt::blankCursor).handle(); } else { - cursorHandle = TQCursor(tqbusyCursor).handle(); + cursorHandle = TQCursor(TQt::busyCursor).handle(); } int rv = XGrabPointer( tqt_xdisplay(), TQApplication::desktop()->winId(), True, GRABEVENTS, GrabModeAsync, GrabModeAsync, None, @@ -1334,6 +1347,7 @@ bool LockProcess::startSaver(bool notify_ready) if (!child_saver && !grabInput()) { kdWarning(KDESKTOP_DEBUG_ID) << "LockProcess::startSaver() grabInput() failed!!!!" << endl; + trinity_desktop_lock_failed_grab = true; return false; } mBusy = false; @@ -1344,8 +1358,8 @@ bool LockProcess::startSaver(bool notify_ready) saveVRoot(); if (mParent) { - TQSocketNotifier *notifier = new TQSocketNotifier(mParent, TQSocketNotifier::Read, TQT_TQOBJECT(this), "notifier"); - connect(notifier, TQT_SIGNAL( activated (int)), TQT_SLOT( quitSaver())); + TQSocketNotifier *notifier = new TQSocketNotifier(mParent, TQSocketNotifier::Read, this, "notifier"); + connect(notifier, TQ_SIGNAL( activated (int)), TQ_SLOT( quitSaver())); } createSaverWindow(); move(0, 0); @@ -1361,7 +1375,8 @@ bool LockProcess::startSaver(bool notify_ready) slotPaintBackground(rootWinSnapShot); } - if (((!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced)) && (!mInSecureDialog)) && (mHackStartupEnabled || mOverrideHackStartupEnabled)) { + if (!(trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) && !mInSecureDialog && + (mHackStartupEnabled || mOverrideHackStartupEnabled)) { if (argb_visual) { setTransparentBackgroundARGB(); } @@ -1388,10 +1403,10 @@ bool LockProcess::startSaver(bool notify_ready) } } - if (mInSecureDialog == FALSE) { + if (!mInSecureDialog) { if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { if (mHackStartupEnabled || mOverrideHackStartupEnabled) { @@ -1401,7 +1416,7 @@ bool LockProcess::startSaver(bool notify_ready) else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { startHack(); @@ -1520,7 +1535,7 @@ void LockProcess::closeDialogAndStartHack() // Make sure saver will attempt to start again after DPMS wakeup // This is related to Bug 1475 ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); // Should not start saver here, because the DPMS check method below would turn it right back off! // This is related to Bug 1475 return; @@ -1533,7 +1548,7 @@ void LockProcess::closeDialogAndStartHack() DISABLE_CONTINUOUS_LOCKDLG_DISPLAY mSuspended = true; if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(closeDialogAndStartHack()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(closeDialogAndStartHack()) ); } else { resume(true); @@ -1568,10 +1583,10 @@ void LockProcess::repaintRootWindowIfNeeded() bool LockProcess::startHack() { - mHackActive = TRUE; + mHackActive = true; if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) { - mEnsureVRootWindowSecurityTimer->start(250, FALSE); + mEnsureVRootWindowSecurityTimer->start(250, false); } if (currentDialog || (!mDialogs.isEmpty())) { @@ -1593,8 +1608,8 @@ bool LockProcess::startHack() return false; } - setCursor( tqblankCursor ); - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime); + setCursor( TQt::blankCursor ); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::blankCursor).handle(), CurrentTime); if (mSaverExec.isEmpty()) { return false; @@ -1650,7 +1665,7 @@ bool LockProcess::startHack() mSuspended = false; } - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqblankCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::blankCursor).handle(), CurrentTime); if (mHackProc.start() == true) { #ifdef HAVE_SETPRIORITY setpriority(PRIO_PROCESS, mHackProc.pid(), mPriority); @@ -1660,7 +1675,7 @@ bool LockProcess::startHack() if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) { // Close any active dialogs if (closeCurrentWindow()) { - TQTimer::singleShot( 0, this, SLOT(closeCurrentWindow()) ); + TQTimer::singleShot( 0, this, TQ_SLOT(closeCurrentWindow()) ); } } if (m_startupStatusDialog) { m_startupStatusDialog->closeSMDialog(); m_startupStatusDialog=NULL; } @@ -1700,7 +1715,7 @@ bool LockProcess::startHack() } if (trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } saverReadyIfNeeded(); } @@ -1724,9 +1739,9 @@ void LockProcess::stopHack() mHackProc.kill(SIGKILL); } } - setCursor( tqarrowCursor ); + setCursor( TQt::arrowCursor ); - mHackActive = FALSE; + mHackActive = false; } //--------------------------------------------------------------------------- @@ -1735,7 +1750,7 @@ void LockProcess::hackExited(TDEProcess *) { // Hack exited while we're supposed to be saving the screen. // Make sure the saver window is black. - mHackActive = FALSE; + mHackActive = false; usleep(100); TQApplication::syncX(); if (!trinity_desktop_lock_use_system_modal_dialogs) { @@ -1770,7 +1785,7 @@ void LockProcess::hackExited(TDEProcess *) if (!mSuspended) { if (trinity_desktop_lock_use_system_modal_dialogs) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } } saverReadyIfNeeded(); @@ -1782,19 +1797,17 @@ void LockProcess::displayLockDialogIfNeeded() m_startupStatusDialog->closeSMDialog(); m_startupStatusDialog = NULL; } - if (!mInSecureDialog) { - if (trinity_desktop_lock_use_system_modal_dialogs) { - if (!mBusy) { - mBusy = true; - if (mLocked) { - if (checkPass()) { - mClosingWindows = true; - stopSaver(); - kapp->quit(); - } + if (!mInSecureDialog && trinity_desktop_lock_use_system_modal_dialogs) { + if (!mBusy) { + mBusy = true; + if (mLocked) { + if (checkPass()) { + mClosingWindows = true; + stopSaver(); + tdeApp->quit(); } - mBusy = false; } + mBusy = false; } } } @@ -1807,7 +1820,7 @@ void LockProcess::suspend() stopHack(); ENABLE_CONTINUOUS_LOCKDLG_DISPLAY if (mHackStartupEnabled) { - mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } } else { @@ -1825,7 +1838,7 @@ void LockProcess::suspend() } hackstat[8191] = 0; hackStatus = hackstat; - hackStatus = hackStatus.remove(TQRegExp("(*) ", TRUE, TRUE)); + hackStatus = hackStatus.remove(TQRegExp("(*) ", true, true)); TQStringList hackStatusList = TQStringList::split(" ", hackStatus); hackStatus = (*(hackStatusList.at(1))); } @@ -1980,7 +1993,7 @@ int LockProcess::execDialog( TQDialog *dlg ) if (mDialogs.isEmpty()) { suspend(); - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::arrowCursor).handle(), CurrentTime); } mDialogs.prepend( dlg ); fakeFocusIn( dlg->winId()); @@ -2007,20 +2020,20 @@ int LockProcess::execDialog( TQDialog *dlg ) if( mDialogs.isEmpty() ) { HANDLE cursorHandle; if (mHackActive) { - cursorHandle = TQCursor(tqblankCursor).handle(); + cursorHandle = TQCursor(TQt::blankCursor).handle(); } else { - cursorHandle = TQCursor(tqbusyCursor).handle(); + cursorHandle = TQCursor(TQt::busyCursor).handle(); } XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, cursorHandle, CurrentTime); if (trinity_desktop_lock_use_system_modal_dialogs) { // Slight delay before screensaver resume to allow the dialog window to fully disappear if (hackResumeTimer == NULL) { hackResumeTimer = new TQTimer( this ); - connect( hackResumeTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(resumeUnforced()) ); + connect( hackResumeTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(resumeUnforced()) ); } if (mResizingDesktopLock == false) { - hackResumeTimer->start( 10, TRUE ); + hackResumeTimer->start( 10, true ); } } else { @@ -2037,7 +2050,7 @@ int LockProcess::execDialog( TQDialog *dlg ) void LockProcess::slotForcePaintBackground() { TQPixmap blankPixmap(mRootWidth, mRootHeight); - blankPixmap.fill(Qt::black); + blankPixmap.fill(TQt::black); slotPaintBackground(blankPixmap); printf("[WARNING] Unable to obtain desktop wallpaper in a timely manner. High system load or possibly a TDE bug!\n"); fflush(stdout); } @@ -2056,7 +2069,7 @@ void LockProcess::slotPaintBackground(const TQPixmap &rpm) } else { mEnsureScreenHiddenTimer = new TQTimer( this ); - connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) ); + connect( mEnsureScreenHiddenTimer, TQ_SIGNAL(timeout()), this, TQ_SLOT(slotForcePaintBackground()) ); } // Only remove the mask widget once the resize is 100% complete! @@ -2118,7 +2131,7 @@ void LockProcess::doFunctionKeyBroadcast() { // This does NOT work with the SAK or system modal dialogs! if ((!trinity_desktop_lock_use_system_modal_dialogs) && (!trinity_desktop_lock_use_sak)) { mBusy=true; - TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed())); + TQTimer::singleShot(1000, this, TQ_SLOT(slotDeadTimePassed())); if (mkeyCode == XKeysymToKeycode(tqt_xdisplay(), XF86XK_Display)) { while (mDialogControlLock == true) { usleep(100000); @@ -2158,7 +2171,7 @@ bool LockProcess::x11Event(XEvent *event) (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_AudioRaiseVolume)) || \ (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_AudioLowerVolume))) { mkeyCode = event->xkey.keycode; - TQTimer::singleShot( 100, this, TQT_SLOT(doFunctionKeyBroadcast()) ); + TQTimer::singleShot( 100, this, TQ_SLOT(doFunctionKeyBroadcast()) ); return true; } // ACPI power keys @@ -2167,7 +2180,7 @@ bool LockProcess::x11Event(XEvent *event) (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_Suspend)) || \ (event->xkey.keycode == XKeysymToKeycode(event->xkey.display, XF86XK_Hibernate))) { mkeyCode = event->xkey.keycode; - TQTimer::singleShot( 100, this, TQT_SLOT(doFunctionKeyBroadcast()) ); + TQTimer::singleShot( 100, this, TQ_SLOT(doFunctionKeyBroadcast()) ); return true; } } @@ -2183,7 +2196,7 @@ bool LockProcess::x11Event(XEvent *event) // fall through case KeyPress: if ((mHackDelayStartupTimer) && (mHackDelayStartupTimer->isActive())) { - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } if (mBusy || !mDialogs.isEmpty()) { break; @@ -2193,12 +2206,12 @@ bool LockProcess::x11Event(XEvent *event) if (mLocked) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY if (mHackStartupEnabled) { - mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } } - if ((!mLocked) && (!mInSecureDialog)) { + if (!mLocked && !mInSecureDialog) { stopSaver(); - kapp->quit(); + tdeApp->quit(); } if (mAutoLogout) { // we need to restart the auto logout countdown @@ -2210,7 +2223,7 @@ bool LockProcess::x11Event(XEvent *event) if (!mLocked || checkPass()) { mClosingWindows = true; stopSaver(); - kapp->quit(); + tdeApp->quit(); } else if (mAutoLogout) { // we need to restart the auto logout countdown @@ -2242,7 +2255,7 @@ bool LockProcess::x11Event(XEvent *event) else { if (trinity_desktop_lock_use_system_modal_dialogs == true) { ENABLE_CONTINUOUS_LOCKDLG_DISPLAY - if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE); + if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, true); } else { resume( false ); @@ -2299,7 +2312,7 @@ bool LockProcess::x11Event(XEvent *event) && event->xkey.window != mDialogs.first()->winId()) { XEvent ev2 = *event; ev2.xkey.window = ev2.xkey.subwindow = mDialogs.first()->winId(); - tqApp->x11ProcessEvent( &ev2 ); + tdeApp->x11ProcessEvent( &ev2 ); return true; } @@ -2433,14 +2446,14 @@ void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt ) KPushButton *button = new KPushButton( KStdGuiItem::ok(), winFrame ); button->setDefault( true ); button->setSizePolicy( TQSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Preferred ) ); - connect( button, TQT_SIGNAL( clicked() ), &box, TQT_SLOT( accept() ) ); + connect( button, TQ_SIGNAL( clicked() ), &box, TQ_SLOT( accept() ) ); TQVBoxLayout *vbox = new TQVBoxLayout( &box ); vbox->addWidget( winFrame ); TQGridLayout *grid = new TQGridLayout( winFrame, 2, 2, 10 ); - grid->addWidget( label1, 0, 0, Qt::AlignCenter ); - grid->addWidget( label2, 0, 1, Qt::AlignCenter ); - grid->addMultiCellWidget( button, 1,1, 0,1, Qt::AlignCenter ); + grid->addWidget( label1, 0, 0, TQt::AlignCenter ); + grid->addWidget( label2, 0, 1, TQt::AlignCenter ); + grid->addMultiCellWidget( button, 1,1, 0,1, TQt::AlignCenter ); execDialog( &box ); } @@ -2449,19 +2462,13 @@ static int run_vkbd = -1; void LockProcess::showVkbd() { if( run_vkbd == - 1 ) { -#ifdef WITH_HAL - int status = system( "hal-find-by-property --key system.formfactor.subtype --string tabletpc" ); -// status = 0; // enable for testing - run_vkbd = ( WIFEXITED( status ) && WEXITSTATUS( status ) == 0 && !TDEStandardDirs::findExe( "xvkbd" ).isEmpty()) ? 1 : 0; -#else // WITH_HAL run_vkbd = (!TDEStandardDirs::findExe( "xvkbd" ).isEmpty()); -#endif // WITH_HAL } if( run_vkbd ) { mVkbdWindows.clear(); mVkbdLastEventWindow = None; mKWinModule = new KWinModule( NULL, KWinModule::INFO_WINDOWS ); - connect( mKWinModule, TQT_SIGNAL( windowAdded( WId )), TQT_SLOT( windowAdded( WId ))); + connect( mKWinModule, TQ_SIGNAL( windowAdded( WId )), TQ_SLOT( windowAdded( WId ))); mVkbdProcess = new TDEProcess; *mVkbdProcess << "xvkbd" << "-compact" << "-geometry" << "-0-0" << "-xdm"; mVkbdProcess->start(); @@ -2567,7 +2574,7 @@ bool LockProcess::forwardVkbdEvent( XEvent* event ) } // vkbd windows are kept topmost, so just find the first one in the position for( TQValueList< VkbdWindow >::ConstIterator it = mVkbdWindows.begin(); it != mVkbdWindows.end(); ++it ) { - if( TQT_TQRECT_OBJECT((*it).rect).contains( pos )) { + if( (*it).rect.contains( pos )) { // Find the subwindow where the event should actually go. // Not exactly cheap in the number of X roundtrips but oh well. Window window = (*it).id; @@ -2675,7 +2682,7 @@ void LockProcess::slotMouseActivity(XEvent *event) } // Clicked inside dialog; set focus - if (inFrame == TRUE) { + if (inFrame) { WId window = mDialogs.first()->winId(); XSetInputFocus(tqt_xdisplay(), window, RevertToParent, CurrentTime); fakeFocusIn(window); @@ -2685,20 +2692,20 @@ void LockProcess::slotMouseActivity(XEvent *event) } // Clicked inside window handle (or border); drag window - if ((inFrame == TRUE) && (inDialog == FALSE)) { + if (inFrame && !inDialog) { TQPoint oldPoint = mDialogs.first()->pos(); m_mouseDown = 1; m_dialogPrevX = oldPoint.x(); m_dialogPrevY = oldPoint.y(); m_mousePrevX = be->x_root; m_mousePrevY = be->y_root; - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqsizeAllCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::sizeAllCursor).handle(), CurrentTime); } } // Drag the window... if (event->type == MotionNotify) { - if (m_mouseDown == TRUE) { + if (m_mouseDown) { int deltaX = me->x_root - m_mousePrevX; int deltaY = me->y_root - m_mousePrevY; m_dialogPrevX = m_dialogPrevX + deltaX; @@ -2712,7 +2719,7 @@ void LockProcess::slotMouseActivity(XEvent *event) if (event->type == ButtonRelease) { m_mouseDown = 0; - XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime); + XChangeActivePointerGrab( tqt_xdisplay(), GRABEVENTS, TQCursor(TQt::arrowCursor).handle(), CurrentTime); } } @@ -2823,6 +2830,7 @@ void LockProcess::processInputPipeCommand(TQString inputcommand) { } void LockProcess::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) { +#ifdef WITH_TDEHWLIB TQString login_name = TQString::null; X509CertificatePtrList certList = cdevice->cardX509Certificates(); if (certList.count() > 0) { @@ -2845,31 +2853,36 @@ void LockProcess::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) m_loginCardDevice = cdevice; if (dynamic_cast<SAKDlg*>(currentDialog)) { dynamic_cast<SAKDlg*>(currentDialog)->closeDialogForced(); - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin())); } else if (dynamic_cast<SecureDlg*>(currentDialog)) { dynamic_cast<SecureDlg*>(currentDialog)->closeDialogForced(); - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin())); } else if (dynamic_cast<PasswordDlg*>(currentDialog)) { signalPassDlgToAttemptCardLogin(); } } } +#endif } void LockProcess::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) { +#ifdef WITH_TDEHWLIB PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog); if (passDlg) { passDlg->resetCardLogin(); } else { m_loginCardDevice = NULL; - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardAbort())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardAbort())); } +#endif } -void LockProcess::signalPassDlgToAttemptCardLogin() { +void LockProcess::signalPassDlgToAttemptCardLogin() +{ +#ifdef WITH_TDEHWLIB PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog); if (passDlg && m_loginCardDevice) { passDlg->attemptCardLogin(); @@ -2877,12 +2890,15 @@ void LockProcess::signalPassDlgToAttemptCardLogin() { else { if (currentDialog && m_loginCardDevice) { // Try again later - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardLogin())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardLogin())); } } +#endif } -void LockProcess::signalPassDlgToAttemptCardAbort() { +void LockProcess::signalPassDlgToAttemptCardAbort() +{ +#ifdef WITH_TDEHWLIB PasswordDlg* passDlg = dynamic_cast<PasswordDlg*>(currentDialog); if (passDlg) { passDlg->resetCardLogin(); @@ -2890,12 +2906,15 @@ void LockProcess::signalPassDlgToAttemptCardAbort() { else { if (currentDialog) { // Try again later - TQTimer::singleShot(0, this, SLOT(signalPassDlgToAttemptCardAbort())); + TQTimer::singleShot(0, this, TQ_SLOT(signalPassDlgToAttemptCardAbort())); } } +#endif } -void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice) { +void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice) +{ +#ifdef WITH_TDEHWLIB TQCString password; TQString pin_entry; @@ -2911,10 +2930,16 @@ void LockProcess::cryptographicCardPinRequested(TQString prompt, TDECryptographi else { cdevice->setProvidedPin(TQString::null); } +#endif } -TDECryptographicCardDevice* LockProcess::cryptographicCardDevice() { +TDECryptographicCardDevice* LockProcess::cryptographicCardDevice() +{ +#ifdef WITH_TDEHWLIB return m_loginCardDevice; +#else + return NULL; +#endif } void LockProcess::fullyOnline() { @@ -2942,7 +2967,7 @@ void LockProcess::saverReady() { // Control pipe handler // ControlPipeHandlerObject::ControlPipeHandlerObject() : TQObject() { - mParent = NULL; + mParent = nullptr; mRunning = false; mTerminate = false; mThreadID = 0L; @@ -2966,7 +2991,7 @@ void ControlPipeHandlerObject::run(void) { int display_number = atoi(TQString(XDisplayString(tqt_xdisplay())).replace(":","").ascii()); if (display_number < 0) { - printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n"); + printf("[kdesktop_lock] Warning: unable to create control socket. Interactive logon modules may not function properly.\n"); mRunning = false; TQApplication::eventLoop()->exit(-1); return; @@ -2997,7 +3022,7 @@ void ControlPipeHandlerObject::run(void) { } if (!mParent->mPipeOpen) { - printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n", fifo_file); + printf("[kdesktop_lock] Warning: unable to create control socket '%s'. Interactive logon modules may not function properly.\n", fifo_file); mRunning = false; TQApplication::eventLoop()->exit(-1); return; diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h index 4dc2d8bab..1afc9bb46 100644 --- a/kdesktop/lock/lockprocess.h +++ b/kdesktop/lock/lockprocess.h @@ -10,14 +10,8 @@ #ifndef __LOCKENG_H__ #define __LOCKENG_H__ -#include <ksslcertificate.h> - -#include <tdehardwaredevices.h> -#include <tdecryptographiccarddevice.h> - #include <kgreeterplugin.h> - -#include <kprocess.h> +#include <tdeprocess.h> #include <kpixmap.h> #include <krootpixmap.h> @@ -35,6 +29,11 @@ class KLibrary; class KWinModule; class KSMModalDialog; class LockProcess; +#ifdef WITH_TDEHWLIB +class TDECryptographicCardDevice; +#else +#define TDECryptographicCardDevice void +#endif struct GreeterPluginHandle { KLibrary *library; @@ -53,7 +52,7 @@ typedef TQValueList<Window> TQXLibWindowList; // class ControlPipeHandlerObject : public TQObject { - Q_OBJECT + TQ_OBJECT public: ControlPipeHandlerObject(); @@ -82,7 +81,7 @@ class ControlPipeHandlerObject : public TQObject // class LockProcess : public TQWidget { - Q_OBJECT + TQ_OBJECT public: LockProcess(); @@ -107,9 +106,6 @@ class LockProcess : public TQWidget TDECryptographicCardDevice* cryptographicCardDevice(); - signals: - void terminateHelperThread(); - public slots: void quitSaver(); void preparePopup(); diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cpp index f1407070c..9f707c35d 100644 --- a/kdesktop/lock/main.cc +++ b/kdesktop/lock/main.cpp @@ -33,14 +33,14 @@ #include <kdebug.h> #include <tdeglobalsettings.h> #include <dcopref.h> -#include <ksimpleconfig.h> -#include <kstandarddirs.h> +#include <tdesimpleconfig.h> +#include <tdestandarddirs.h> #include <tdmtsak.h> #include <stdlib.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -58,49 +58,49 @@ TQXLibWindowList trinity_desktop_lock_hidden_window_list; // [FIXME] Add GUI configuration checkboxes for these three settings (see kdesktoprc [ScreenSaver] UseUnmanagedLockWindows, DelaySaverStart, and UseTDESAK) -bool trinity_desktop_lock_use_system_modal_dialogs = FALSE; -bool trinity_desktop_lock_delay_screensaver_start = FALSE; -bool trinity_desktop_lock_use_sak = FALSE; -bool trinity_desktop_lock_hide_active_windows = FALSE; -bool trinity_desktop_lock_hide_cancel_button = FALSE; -bool trinity_desktop_lock_forced = FALSE; - -LockProcess* trinity_desktop_lock_process = NULL; +bool trinity_desktop_lock_use_system_modal_dialogs = false; +bool trinity_desktop_lock_delay_screensaver_start = false; +bool trinity_desktop_lock_use_sak = false; +bool trinity_desktop_lock_hide_active_windows = false; +bool trinity_desktop_lock_hide_cancel_button = false; +bool trinity_desktop_lock_forced = false; +// This is a temporary variable used till a fix for the grab issue is prepared +bool trinity_desktop_lock_failed_grab = false; bool signalled_forcelock; bool signalled_dontlock; bool signalled_securedialog; bool signalled_blank; bool signalled_run; -bool in_internal_mode = FALSE; +bool in_internal_mode = false; -bool argb_visual = FALSE; +bool argb_visual = false; pid_t kdesktop_pid = -1; -bool trinity_desktop_lock_settings_initialized = FALSE; +bool trinity_desktop_lock_settings_initialized = false; static void sigusr1_handler(int) { - signalled_forcelock = TRUE; + signalled_forcelock = true; } static void sigusr2_handler(int) { - signalled_dontlock = TRUE; + signalled_dontlock = true; } -static void sigusr3_handler(int) +static void sigwinch_handler(int) { - signalled_securedialog = TRUE; + signalled_securedialog = true; } -static void sigusr4_handler(int) +static void sigttin_handler(int) { - signalled_blank = TRUE; + signalled_blank = true; } -static void sigusr5_handler(int) +static void sigttou_handler(int) { - signalled_run = TRUE; + signalled_run = true; } static int trapXErrors(Display *, XErrorEvent *) @@ -236,9 +236,9 @@ int main( int argc, char **argv ) XSetErrorHandler(trapXErrors); - MyApp* app = NULL; + MyApp *app = nullptr; - while (1 == 1) { + while (true) { sigset_t new_mask; sigset_t orig_mask; @@ -246,11 +246,11 @@ int main( int argc, char **argv ) sigfillset(&new_mask); sigprocmask(SIG_BLOCK, &new_mask, NULL); - signalled_forcelock = FALSE; - signalled_dontlock = FALSE; - signalled_securedialog = FALSE; - signalled_blank = FALSE; - signalled_run = FALSE; + signalled_forcelock = false; + signalled_dontlock = false; + signalled_securedialog = false; + signalled_blank = false; + signalled_run = false; int kdesktop_screen_number = 0; int starting_screen = 0; @@ -261,7 +261,7 @@ int main( int argc, char **argv ) if (TDEGlobalSettings::isMultiHead()) { Display *dpy = XOpenDisplay(NULL); - if (! dpy) { + if (!dpy) { fprintf(stderr, "%s: FATAL ERROR: couldn't open display '%s'\n", argv[0], XDisplayName(NULL)); @@ -303,14 +303,11 @@ int main( int argc, char **argv ) } } - env.sprintf("DISPLAY=%s.%d", display_name.data(), - kdesktop_screen_number); + env.sprintf("DISPLAY=%s.%d", display_name.data(), kdesktop_screen_number); kdDebug() << "env " << env << endl; if (putenv(strdup(env.data()))) { - fprintf(stderr, - "%s: WARNING: unable to set DISPLAY environment variable\n", - argv[0]); + fprintf(stderr, "%s: WARNING: unable to set DISPLAY environment variable\n", argv[0]); perror("putenv()"); } } @@ -374,17 +371,17 @@ int main( int argc, char **argv ) TDEGlobal::locale()->insertCatalogue("libdmctl"); struct stat st; - KSimpleConfig* tdmconfig; + TDESimpleConfig* tdmconfig; if( stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st ) == 0) { - tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); + tdmconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); } else { - tdmconfig = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); + tdmconfig = new TDESimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); } tdmconfig->setGroup("X-:*-Greeter"); // Create new LockProcess, which also spawns threads inheriting the blocked signal mask - trinity_desktop_lock_process = new LockProcess; + LockProcess lock_process; // Unblock reception of all signals in this thread sigprocmask(SIG_UNBLOCK, &new_mask, NULL); @@ -396,7 +393,7 @@ int main( int argc, char **argv ) kdesktop_pid = atoi(args->getOption( "internal" )); struct sigaction act; - in_internal_mode = TRUE; + in_internal_mode = true; // handle SIGUSR1 act.sa_handler= sigusr1_handler; @@ -410,20 +407,20 @@ int main( int argc, char **argv ) sigaddset(&(act.sa_mask), SIGUSR2); act.sa_flags = 0; sigaction(SIGUSR2, &act, 0L); - // handle SIGWINCH (an ersatz SIGUSR3) - act.sa_handler= sigusr3_handler; + // handle SIGWINCH (as custom user signal rather than its inherent meaning) + act.sa_handler= sigwinch_handler; sigemptyset(&(act.sa_mask)); sigaddset(&(act.sa_mask), SIGWINCH); act.sa_flags = 0; sigaction(SIGWINCH, &act, 0L); - // handle SIGTTIN (an ersatz SIGUSR4) - act.sa_handler= sigusr4_handler; + // handle SIGTTIN (as custom user signal rather than its inherent meaning) + act.sa_handler= sigttin_handler; sigemptyset(&(act.sa_mask)); sigaddset(&(act.sa_mask), SIGTTIN); act.sa_flags = 0; sigaction(SIGTTIN, &act, 0L); - // handle SIGTTOU (an ersatz SIGUSR5) - act.sa_handler= sigusr5_handler; + // handle SIGTTOU (as custom user signal rather than its inherent meaning) + act.sa_handler= sigttou_handler; sigemptyset(&(act.sa_mask)); sigaddset(&(act.sa_mask), SIGTTOU); act.sa_flags = 0; @@ -437,7 +434,7 @@ int main( int argc, char **argv ) sigaddset(&new_mask,SIGTTIN); sigaddset(&new_mask,SIGTTOU); - while (signalled_run == FALSE) { + while (!signalled_run) { // let kdesktop know the saver process is ready if (kill(kdesktop_pid, SIGTTIN) < 0) { // The controlling kdesktop process probably died. Commit suicide... @@ -454,7 +451,7 @@ int main( int argc, char **argv ) // wait for SIGUSR1, SIGUSR2, SIGWINCH, SIGTTIN, or SIGTTOU sigprocmask(SIG_BLOCK, &new_mask, &orig_mask); - if (signalled_run != TRUE) { + if (!signalled_run) { sigsuspend(&orig_mask); } sigprocmask(SIG_UNBLOCK, &new_mask, NULL); @@ -494,42 +491,54 @@ int main( int argc, char **argv ) delete tdmconfig; - if (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)) { - trinity_desktop_lock_forced = TRUE; + if (args->isSet( "forcelock" ) || signalled_forcelock) { + trinity_desktop_lock_forced = true; } - trinity_desktop_lock_process->init(child, (args->isSet( "blank" ) || (signalled_blank == TRUE))); + lock_process.init(child, (args->isSet( "blank" ) || signalled_blank)); if (!child) { - trinity_desktop_lock_process->setChildren(child_sockets); + lock_process.setChildren(child_sockets); } else { - trinity_desktop_lock_process->setParent(parent_connection); + lock_process.setParent(parent_connection); } + trinity_desktop_lock_failed_grab = false; bool rt; - if( (((!child) && (args->isSet( "forcelock" ))) || (signalled_forcelock == TRUE))) { - rt = trinity_desktop_lock_process->lock(); + if( (!child && args->isSet( "forcelock" )) || signalled_forcelock) { + rt = lock_process.lock(); } - else if( child || (args->isSet( "dontlock" ) || (signalled_dontlock == TRUE))) { - rt = trinity_desktop_lock_process->dontLock(); + else if( child || (args->isSet( "dontlock" ) || signalled_dontlock)) { + rt = lock_process.dontLock(); } - else if( child || (args->isSet( "securedialog" ) || (signalled_securedialog == TRUE))) { + else if( child || (args->isSet( "securedialog" ) || signalled_securedialog)) { int retcode = tde_sak_verify_calling_process(); if (retcode == 0) { - rt = trinity_desktop_lock_process->runSecureDialog(); + rt = lock_process.runSecureDialog(); } else { return 1; } } else { - rt = trinity_desktop_lock_process->defaultSave(); + rt = lock_process.defaultSave(); } + + // Make sure to handle all pending responses from the X server. + // If we don't do this, in case of failed activation of the saver/lock screen, + // we will end up in a dirty state and the screen lock will no longer hide the windows + // on the screen due to 'm_rootPixmap' failing to load the background image. + // This is caused by a 'XConvertSelection' request in 'TDESharedPixmap::loadFromShared' + // not being handled and causing the corresponding property to become unusuable in X for + // subsequent lock requests. + XSync(tqt_xdisplay(), False); + app->processEvents(); + if (!rt) { - return 0; + return (trinity_desktop_lock_failed_grab ? 0 : 12); } - if (in_internal_mode == FALSE) { + if (!in_internal_mode) { trinity_desktop_lock_hidden_window_list.clear(); int ret = app->exec(); restore_hidden_override_redirect_windows(); @@ -548,9 +557,6 @@ int main( int argc, char **argv ) return 12; } - delete trinity_desktop_lock_process; - trinity_desktop_lock_process = NULL; - // FIXME // We should not have to return (restart) at all, // but it seems that some X11 connections are left active, diff --git a/kdesktop/lock/main.h b/kdesktop/lock/main.h index fd19c6183..162542555 100644 --- a/kdesktop/lock/main.h +++ b/kdesktop/lock/main.h @@ -25,10 +25,10 @@ #include <time.h> class MyApp : public TDEApplication { - Q_OBJECT + TQ_OBJECT public: MyApp() : TDEApplication(), lastTick( 0 ) {} - MyApp(Display *display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {} + MyApp(Display *display, TQt::HANDLE visual = 0, TQt::HANDLE colormap = 0, bool allowStyles=true) : TDEApplication(display, visual, colormap, allowStyles), lastTick( 0 ) {} protected: bool x11EventFilter( XEvent * ); diff --git a/kdesktop/lock/querydlg.cc b/kdesktop/lock/querydlg.cpp index 1fc5d260c..5b1fea0f3 100644 --- a/kdesktop/lock/querydlg.cc +++ b/kdesktop/lock/querydlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -111,13 +111,13 @@ QueryDlg::QueryDlg(LockProcess *parent) layButtons->addWidget( ok ); frameLayout = new TQGridLayout( frame, 1, 1, KDialog::marginHint(), KDialog::spacingHint() ); - frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, Qt::AlignTop ); + frameLayout->addMultiCellWidget( mpixLabel, 0, 2, 0, 0, TQt::AlignTop ); frameLayout->addLayout( layStatus, 0, 1 ); frameLayout->addLayout( layPin, 2, 1 ); frameLayout->addMultiCellWidget( sep, 3, 3, 0, 1 ); frameLayout->addMultiCellLayout( layButtons, 4, 4, 0, 1 ); - connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK())); + connect(ok, TQ_SIGNAL(clicked()), TQ_SLOT(slotOK())); installEventFilter(this); setFixedSize( sizeHint() ); @@ -140,7 +140,7 @@ TQString QueryDlg::getEntry() void QueryDlg::updateLabel(TQString &txt) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText("<b>" + txt + "</b>"); } diff --git a/kdesktop/lock/querydlg.h b/kdesktop/lock/querydlg.h index d5c4f7f33..0b3e55aa8 100644 --- a/kdesktop/lock/querydlg.h +++ b/kdesktop/lock/querydlg.h @@ -28,7 +28,7 @@ class TQListView; // class QueryDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: QueryDlg(LockProcess *parent); diff --git a/kdesktop/lock/sakdlg.cc b/kdesktop/lock/sakdlg.cpp index 803c77919..5b23a9c5a 100644 --- a/kdesktop/lock/sakdlg.cc +++ b/kdesktop/lock/sakdlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -108,7 +108,7 @@ SAKDlg::SAKDlg(LockProcess *parent) mSAKProcess = new TDEProcess; *mSAKProcess << "tdmtsak"; - connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited())); + connect(mSAKProcess, TQ_SIGNAL(processExited(TDEProcess*)), this, TQ_SLOT(slotSAKProcessExited())); mSAKProcess->start(); } @@ -142,7 +142,7 @@ void SAKDlg::reject() void SAKDlg::updateLabel(TQString &txt) { - mStatusLabel->setPaletteForegroundColor(Qt::black); + mStatusLabel->setPaletteForegroundColor(TQt::black); mStatusLabel->setText("<b>" + txt + "</b>"); } diff --git a/kdesktop/lock/sakdlg.h b/kdesktop/lock/sakdlg.h index faded4b6e..12d80b8cb 100644 --- a/kdesktop/lock/sakdlg.h +++ b/kdesktop/lock/sakdlg.h @@ -26,7 +26,7 @@ class TQListView; // class SAKDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: SAKDlg(LockProcess *parent); diff --git a/kdesktop/lock/securedlg.cc b/kdesktop/lock/securedlg.cpp index fca79a707..ba2b08af0 100644 --- a/kdesktop/lock/securedlg.cc +++ b/kdesktop/lock/securedlg.cpp @@ -14,7 +14,7 @@ #include <tdelocale.h> #include <kpushbutton.h> #include <kseparator.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeglobalsettings.h> #include <tdeconfig.h> #include <kiconloader.h> @@ -137,11 +137,11 @@ SecureDlg::SecureDlg(LockProcess *parent) frameLayout->addMultiCellWidget( sep, 2, 2, 0, 1 ); frameLayout->addMultiCellLayout( layPBGrid, 3, 3, 0, 1, AlignLeft | AlignVCenter); - connect(mCancelButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnCancel())); - connect(mLockButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnLock())); - connect(mTaskButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnTask())); - connect(mShutdownButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnShutdown())); - connect(mSwitchButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotBtnSwitchUser())); + connect(mCancelButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnCancel())); + connect(mLockButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnLock())); + connect(mTaskButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnTask())); + connect(mShutdownButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnShutdown())); + connect(mSwitchButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(slotBtnSwitchUser())); TQSize dlgSz = sizeHint(); int btnSize = dlgSz.width(); diff --git a/kdesktop/lock/securedlg.h b/kdesktop/lock/securedlg.h index 9ad0ac1da..c6c9fa7fe 100644 --- a/kdesktop/lock/securedlg.h +++ b/kdesktop/lock/securedlg.h @@ -27,7 +27,7 @@ class TQListView; // class SecureDlg : public TQDialog { - Q_OBJECT + TQ_OBJECT public: SecureDlg(LockProcess *parent); diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc deleted file mode 100644 index f02e51440..000000000 --- a/kdesktop/lockeng.cc +++ /dev/null @@ -1,1004 +0,0 @@ -//=========================================================================== -// -// This file is part of the TDE project -// -// Copyright (c) 1999 Martin R. Jones <mjones@kde.org> -// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net> -// - - -#include <config.h> - -#include <stdlib.h> -#include <sys/stat.h> - -#include <ksslcertificate.h> - -#include <tdehardwaredevices.h> -#include <tdecryptographiccarddevice.h> - -#include <kstandarddirs.h> -#include <tdeapplication.h> -#include <kservicegroup.h> -#include <ksimpleconfig.h> -#include <kdebug.h> -#include <kuser.h> -#include <tdelocale.h> -#include <tqfile.h> -#include <tqtimer.h> -#include <tqeventloop.h> -#include <dcopclient.h> -#include <assert.h> - -#include <dmctl.h> - -#include <dbus/dbus-shared.h> -#include <tqdbusdata.h> -#include <tqdbuserror.h> -#include <tqdbusmessage.h> -#include <tqdbusobjectpath.h> -#include <tqdbusproxy.h> - -#include "lockeng.h" -#include "lockeng.moc" -#include "kdesktopsettings.h" - -#define SYSTEMD_LOGIN1_SERVICE "org.freedesktop.login1" -#define SYSTEMD_LOGIN1_PATH "/org/freedesktop/login1" -#define SYSTEMD_LOGIN1_MANAGER_IFACE "org.freedesktop.login1.Manager" -#define SYSTEMD_LOGIN1_SESSION_IFACE "org.freedesktop.login1.Session" -#define SYSTEMD_LOGIN1_SEAT_IFACE "org.freedesktop.login1.Seat" - -#define DBUS_CONN_NAME "kdesktop_lock" - -#include "xautolock_c.h" -extern xautolock_corner_t xautolock_corners[ 4 ]; - -bool trinity_lockeng_sak_available = TRUE; - -SaverEngine* m_masterSaverEngine = NULL; -static void sigusr1_handler(int) -{ - if (m_masterSaverEngine) { - m_masterSaverEngine->m_threadHelperObject->slotLockProcessWaiting(); - } -} -static void sigusr2_handler(int) -{ - if (m_masterSaverEngine) { - m_masterSaverEngine->m_threadHelperObject->slotLockProcessFullyActivated(); - } -} -static void sigttin_handler(int) -{ - if (m_masterSaverEngine) { - m_masterSaverEngine->slotLockProcessReady(); - } -} - -//=========================================================================== -// -// Screen saver engine. Doesn't handle the actual screensaver window, -// starting screensaver hacks, or password entry. That's done by -// a newly started process. -// -SaverEngine::SaverEngine() - : TQWidget(), - KScreensaverIface(), - mBlankOnly(false), - mSAKProcess(NULL), - mTerminationRequested(false), - mSaverProcessReady(false), - mNewVTAfterLockEngage(false), - mValidCryptoCardInserted(false), - mSwitchVTAfterLockEngage(-1), - dBusLocal(0), - dBusWatch(0), - systemdSession(0) -{ - // handle SIGUSR1 - m_masterSaverEngine = this; - mSignalAction.sa_handler= sigusr1_handler; - sigemptyset(&(mSignalAction.sa_mask)); - sigaddset(&(mSignalAction.sa_mask), SIGUSR1); - mSignalAction.sa_flags = 0; - sigaction(SIGUSR1, &mSignalAction, 0L); - - // handle SIGUSR2 - m_masterSaverEngine = this; - mSignalAction.sa_handler= sigusr2_handler; - sigemptyset(&(mSignalAction.sa_mask)); - sigaddset(&(mSignalAction.sa_mask), SIGUSR2); - mSignalAction.sa_flags = 0; - sigaction(SIGUSR2, &mSignalAction, 0L); - - // handle SIGTTIN - m_masterSaverEngine = this; - mSignalAction.sa_handler= sigttin_handler; - sigemptyset(&(mSignalAction.sa_mask)); - sigaddset(&(mSignalAction.sa_mask), SIGTTIN); - mSignalAction.sa_flags = 0; - sigaction(SIGTTIN, &mSignalAction, 0L); - - // Save X screensaver parameters - XGetScreenSaver(tqt_xdisplay(), &mXTimeout, &mXInterval, - &mXBlanking, &mXExposures); - - mState = Waiting; - mXAutoLock = 0; - mEnabled = false; - - m_helperThread = new TQEventLoopThread; - m_helperThread->start(); - m_threadHelperObject = new SaverEngineThreadHelperObject; - m_threadHelperObject->moveToThread(m_helperThread); - connect(this, TQT_SIGNAL(terminateHelperThread()), m_threadHelperObject, TQT_SLOT(terminateThread())); - connect(m_threadHelperObject, TQT_SIGNAL(lockProcessWaiting()), this, TQT_SLOT(lockProcessWaiting())); - connect(m_threadHelperObject, TQT_SIGNAL(lockProcessFullyActivated()), this, TQT_SLOT(lockProcessFullyActivated())); - - connect(&mLockProcess, TQT_SIGNAL(processExited(TDEProcess *)), - TQT_SLOT(lockProcessExited())); - - configure(); - - // Create SAK process only if SAK is enabled - KSimpleConfig *config; - struct stat st; - if (stat( KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0) { - config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmdistrc" )); - } - else { - config = new KSimpleConfig( TQString::fromLatin1( KDE_CONFDIR "/tdm/tdmrc" )); - } - config->setGroup("X-:*-Greeter"); - bool useSAKProcess = false; -#ifdef BUILD_TSAK - useSAKProcess = config->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK(); -#endif - if (useSAKProcess) { - mSAKProcess = new TDEProcess; - *mSAKProcess << "tdmtsak"; - connect(mSAKProcess, TQT_SIGNAL(processExited(TDEProcess*)), this, TQT_SLOT(slotSAKProcessExited())); - TQTimer::singleShot( 0, this, TQT_SLOT(handleSecureDialog()) ); - } - - mLockProcess.clearArguments(); - TQString path = TDEStandardDirs::findExe( "kdesktop_lock" ); - if( path.isEmpty()) - { - kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl; - } - mLockProcess << path; - mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid()); - if (mLockProcess.start() == false ) - { - kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl; - } - - // Prevent kdesktop_lock signals from being handled by the wrong (GUI) thread - sigemptyset(&mThreadBlockSet); - sigaddset(&mThreadBlockSet, SIGUSR1); - sigaddset(&mThreadBlockSet, SIGUSR2); - sigaddset(&mThreadBlockSet, SIGTTIN); - pthread_sigmask(SIG_BLOCK, &mThreadBlockSet, NULL); - - // Wait for the saver process to signal ready... - if (!waitForLockProcessStart()) { - kdDebug( 1204 ) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl; - } - - // lock the desktop if required - config->setGroup("X-:0-Core"); - bool autoLoginEnable = config->readBoolEntry("AutoLoginEnable", false); - bool autoLoginLocked = config->readBoolEntry("AutoLoginLocked", false); - if (autoLoginEnable && autoLoginLocked) { - mLockProcess.kill(SIGTTOU); - mLockProcess.kill(SIGUSR1); - } - delete config; - config = NULL; - - // Initialize SmartCard readers - TDEGenericDevice *hwdevice; - TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); - TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard); - for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) { - TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); - connect(cdevice, TQT_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); - connect(cdevice, TQT_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); - cdevice->enableCardMonitoring(true); - } - - // Check card login status - KUser userinfo; - TQString fileName = userinfo.homeDir() + "/.tde_card_login_state"; - TQFile flagFile(fileName); - if (flagFile.open(IO_ReadOnly)) { - TQTextStream stream(&flagFile); - if (stream.readLine().startsWith("1")) { - // Card was likely used to log in - TQTimer::singleShot(5000, this, SLOT(cardStartupTimeout())); - } - flagFile.close(); - } - - dBusConnect(); -} - -//--------------------------------------------------------------------------- -// -// Destructor - usual cleanups. -// -SaverEngine::~SaverEngine() -{ - if (mState == Waiting) { - kill(mLockProcess.pid(), SIGKILL); - } - - mLockProcess.detach(); // don't kill it if we crash - delete mXAutoLock; - - dBusClose(); - - // Restore X screensaver parameters - XSetScreenSaver(tqt_xdisplay(), mXTimeout, mXInterval, mXBlanking, - mXExposures); - - terminateHelperThread(); - m_helperThread->wait(); - delete m_threadHelperObject; - delete m_helperThread; -} - -void SaverEngine::cardStartupTimeout() { - if (!mValidCryptoCardInserted) { - // Restore saver timeout - configure(); - - // Force lock - lockScreen(); - } -} - -void SaverEngine::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) { - TQString login_name = TQString::null; - X509CertificatePtrList certList = cdevice->cardX509Certificates(); - if (certList.count() > 0) { - KSSLCertificate* card_cert = NULL; - card_cert = KSSLCertificate::fromX509(certList[0]); - TQStringList cert_subject_parts = TQStringList::split("/", card_cert->getSubject(), false); - for (TQStringList::Iterator it = cert_subject_parts.begin(); it != cert_subject_parts.end(); ++it ) { - TQString lcpart = (*it).lower(); - if (lcpart.startsWith("cn=")) { - login_name = lcpart.right(lcpart.length() - strlen("cn=")); - } - } - delete card_cert; - } - - if (login_name != "") { - KUser user; - if (login_name == user.loginName()) { - mValidCryptoCardInserted = true; - } - } -} - -void SaverEngine::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) { - if (mValidCryptoCardInserted) { - mValidCryptoCardInserted = false; - - // Restore saver timeout - configure(); - - // Force lock - lockScreen(); - } -} - -//--------------------------------------------------------------------------- -// -// This should be called only using DCOP. -// -void SaverEngine::lock() -{ - lockScreen(true); -} - -//--------------------------------------------------------------------------- -// -// Lock the screen -// -void SaverEngine::lockScreen(bool DCOP) -{ - if (mValidCryptoCardInserted) { - return; - } - - bool ok = true; - if (mState == Waiting) - { - ok = startLockProcess( ForceLock ); - // It takes a while for kdesktop_lock to start and lock the screen. - // Therefore delay the DCOP call until it tells kdesktop that the locking is in effect. - // This is done only for --forcelock . - if( ok && mState != Saving ) - { - if (DCOP) { - DCOPClientTransaction* trans = kapp->dcopClient()->beginTransaction(); - if (trans) { - mLockTransactions.append( trans ); - } - } - } - } - else - { - mLockProcess.kill( SIGHUP ); - } -} - -void SaverEngine::processLockTransactions() -{ - for( TQValueVector< DCOPClientTransaction* >::ConstIterator it = mLockTransactions.begin(); - it != mLockTransactions.end(); - ++it ) - { - TQCString replyType = "void"; - TQByteArray arr; - kapp->dcopClient()->endTransaction( *it, replyType, arr ); - } - mLockTransactions.clear(); -} - -void SaverEngine::saverLockReady() -{ - if( mState != Engaging ) - { - kdDebug( 1204 ) << "Got unexpected saverReady()" << endl; - } - kdDebug( 1204 ) << "Saver Lock Ready" << endl; - processLockTransactions(); -} - -//--------------------------------------------------------------------------- -void SaverEngine::save() -{ - if (!mValidCryptoCardInserted) { - if (mState == Waiting) { - startLockProcess( DefaultLock ); - } - } -} - -//--------------------------------------------------------------------------- -void SaverEngine::quit() -{ - if (mState == Saving || mState == Engaging) - { - stopLockProcess(); - } -} - -//--------------------------------------------------------------------------- -bool SaverEngine::isEnabled() -{ - return mEnabled; -} - -//--------------------------------------------------------------------------- -bool SaverEngine::enable( bool e ) -{ - if ( e == mEnabled ) - return true; - - // If we aren't in a suitable state, we will not reconfigure. - if (mState != Waiting) - return false; - - mEnabled = e; - - if (mEnabled) { - if ( !mXAutoLock ) { - mXAutoLock = new XAutoLock(); - connect(mXAutoLock, TQT_SIGNAL(timeout()), TQT_SLOT(idleTimeout())); - } - mXAutoLock->setTimeout(mTimeout); - mXAutoLock->setDPMS(true); - //mXAutoLock->changeCornerLockStatus( mLockCornerTopLeft, mLockCornerTopRight, mLockCornerBottomLeft, mLockCornerBottomRight); - - // We'll handle blanking - XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); - kdDebug() << "XSetScreenSaver " << mTimeout + 10 << endl; - - mXAutoLock->start(); - - kdDebug(1204) << "Saver Engine started, timeout: " << mTimeout << endl; - } - else { - if (mXAutoLock) { - delete mXAutoLock; - mXAutoLock = 0; - } - - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); - kdDebug(1204) << "Saver Engine disabled" << endl; - } - - return true; -} - -//--------------------------------------------------------------------------- -bool SaverEngine::isBlanked() -{ - return (mState != Waiting); -} - -void SaverEngine::enableExports() -{ -#ifdef Q_WS_X11 - kdDebug(270) << k_lineinfo << "activating background exports.\n"; - DCOPClient *client = kapp->dcopClient(); - if (!client->isAttached()) { - client->attach(); - } - TQByteArray data; - TQDataStream args( data, IO_WriteOnly ); - args << 1; - - TQCString appname( "kdesktop" ); - int screen_number = DefaultScreen(tqt_xdisplay()); - if ( screen_number ) { - appname.sprintf("kdesktop-screen-%d", screen_number ); - } - - client->send( appname, "KBackgroundIface", "setExport(int)", data ); -#endif -} - -//--------------------------------------------------------------------------- -void SaverEngine::handleSecureDialog() -{ - // Wait for SAK press - if (mSAKProcess && !mSAKProcess->isRunning()) { - mSAKProcess->start(); - } -} - -void SaverEngine::slotSAKProcessExited() -{ - if (!mSAKProcess) { - printf("[kdesktop] SAK process does not exist. Something went wrong. Ignoring...\n"); fflush(stdout); - return; - } - int retcode = mSAKProcess->exitStatus(); - if ((retcode != 0) && (mSAKProcess->normalExit())) { - trinity_lockeng_sak_available = FALSE; - printf("[kdesktop] SAK driven secure dialog is not available for use (retcode %d). Check tdmtsak for proper functionality.\n", retcode); fflush(stdout); - } - - if (mState == Preparing) { - return; - } - - if ((mSAKProcess->normalExit()) && (trinity_lockeng_sak_available == TRUE)) { - bool ok = true; - if (mState == Waiting) - { - ok = startLockProcess( SecureDialog ); - if( ok && mState != Saving ) - { - } - } - else - { - mLockProcess.kill( SIGHUP ); - } - } -} - -//--------------------------------------------------------------------------- -// -// Read and apply configuration. -// -void SaverEngine::configure() -{ - // If we aren't in a suitable state, we will not reconfigure. - if (mState != Waiting) { - return; - } - - // create a new config obj to ensure we read the latest options - KDesktopSettings::self()->readConfig(); - - bool e = KDesktopSettings::screenSaverEnabled(); - mTimeout = KDesktopSettings::timeout(); - - mEnabled = !e; // force the enable() - - int action; - action = KDesktopSettings::actionTopLeft(); - xautolock_corners[0] = applyManualSettings(action); - action = KDesktopSettings::actionTopRight(); - xautolock_corners[1] = applyManualSettings(action); - action = KDesktopSettings::actionBottomLeft(); - xautolock_corners[2] = applyManualSettings(action); - action = KDesktopSettings::actionBottomRight(); - xautolock_corners[3] = applyManualSettings(action); - - enable( e ); -} - -//--------------------------------------------------------------------------- -// -// Set a variable to indicate only using the blanker and not the saver. -// -void SaverEngine::setBlankOnly( bool blankOnly ) -{ - mBlankOnly = blankOnly; - // FIXME: if running, stop and restart? What about security - // implications of this? -} - -bool SaverEngine::restartDesktopLockProcess() -{ - if (!mLockProcess.isRunning()) { - mSaverProcessReady = false; - mLockProcess.clearArguments(); - TQString path = TDEStandardDirs::findExe( "kdesktop_lock" ); - if (path.isEmpty()) { - kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl; - return false; - } - mLockProcess << path; - mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid()); - if (mLockProcess.start() == false) { - kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl; - return false; - } - // Wait for the saver process to signal ready... - if (!waitForLockProcessStart()) { - kdDebug( 1204 ) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl; - return false; - } - } - return true; -} - -//--------------------------------------------------------------------------- -// -// Start the screen saver. -// -bool SaverEngine::startLockProcess( LockType lock_type ) -{ - int ret; - - if (mState == Saving) { - return true; - } - - mState = Preparing; - if (mSAKProcess) { - mSAKProcess->kill(SIGTERM); - } - - enableExports(); - - kdDebug(1204) << "SaverEngine: starting saver" << endl; - emitDCOPSignal("KDE_start_screensaver()", TQByteArray()); - - if (!restartDesktopLockProcess()) { - mState = Waiting; - return false; - } - - switch( lock_type ) - { - case ForceLock: - mLockProcess.kill(SIGUSR1); // Request forcelock - break; - case DontLock: - mLockProcess.kill(SIGUSR2); // Request dontlock - break; - case SecureDialog: - mLockProcess.kill(SIGWINCH); // Request secure dialog - break; - default: - break; - } - if (mBlankOnly) { - mLockProcess.kill(SIGTTIN); // Request blanking - } - - ret = mLockProcess.kill(SIGTTOU); // Start lock - if (!ret) { - mState = Waiting; - return false; - } - XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures); - - mState = Engaging; - if (mXAutoLock) { - mXAutoLock->stop(); - } - return true; -} - -//--------------------------------------------------------------------------- -// -// Stop the screen saver. -// -void SaverEngine::stopLockProcess() -{ - if (mState == Waiting) { - kdWarning(1204) << "SaverEngine::stopSaver() saver not active" << endl; - return; - } - kdDebug(1204) << "SaverEngine: stopping lock" << endl; - emitDCOPSignal("KDE_stop_screensaver()", TQByteArray()); - - mTerminationRequested = true; - mLockProcess.kill(); - - if (mEnabled) { - if (mXAutoLock) { - mXAutoLock->start(); - } - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); - } - processLockTransactions(); - mState = Waiting; - - if( systemdSession && systemdSession->canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromBool(false); - TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); - } -} - -void SaverEngine::recoverFromHackingAttempt() -{ - // Try to relaunch saver with forcelock - if (!startLockProcess(ForceLock)) { - // Terminate the TDE session ASAP! - // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387 - TQByteArray data; - TQDataStream arg(data, IO_WriteOnly); - arg << (int)0 << (int)0 << (int)2; - if (!kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data)) { - // Someone got to DCOP before we did - // Try an emergency system logout - system("logout"); - } - } -} - -void SaverEngine::lockProcessExited() -{ - bool abnormalExit = false; - if (mLockProcess.normalExit() == false) { - abnormalExit = true; - } - else { - if (mLockProcess.exitStatus() != 0) { - abnormalExit = true; - } - } - if (mTerminationRequested == true) { - abnormalExit = false; - mTerminationRequested = false; - } - if (abnormalExit == true) { - // PROBABLE HACKING ATTEMPT DETECTED - restartDesktopLockProcess(); - mState = Waiting; - TQTimer::singleShot( 100, this, SLOT(recoverFromHackingAttempt()) ); - } - else { - // Restart the lock process - restartDesktopLockProcess(); - } -} - -void SaverEngineThreadHelperObject::slotLockProcessWaiting() -{ - // lockProcessWaiting cannot be called directly from a signal handler, as it will hang in certain obscure circumstances - // Instead we use a single-shot timer to immediately call lockProcessWaiting once control has returned to the Qt main loop - lockProcessWaiting(); -} - -void SaverEngineThreadHelperObject::slotLockProcessFullyActivated() -{ - lockProcessFullyActivated(); -} - -void SaverEngine::lockProcessFullyActivated() -{ - mState = Saving; - - if( systemdSession && systemdSession->canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromBool(true); - TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); - } - - if (mNewVTAfterLockEngage) { - DM().startReserve(); - mNewVTAfterLockEngage = false; - } - else if (mSwitchVTAfterLockEngage != -1) { - DM().switchVT(mSwitchVTAfterLockEngage); - mSwitchVTAfterLockEngage = -1; - } -} - -void SaverEngine::slotLockProcessReady() -{ - mSaverProcessReady = true; -} - -void SaverEngine::lockProcessWaiting() -{ - kdDebug(1204) << "SaverEngine: lock exited" << endl; - if (trinity_lockeng_sak_available == TRUE) { - handleSecureDialog(); - } - if( mState == Waiting ) { - return; - } - emitDCOPSignal("KDE_stop_screensaver()", TQByteArray()); - if (mEnabled) { - if (mXAutoLock) { - mXAutoLock->start(); - } - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); - } - processLockTransactions(); - mState = Waiting; - - if( systemdSession && systemdSession->canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromBool(false); - TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); - } -} - -//--------------------------------------------------------------------------- -// -// XAutoLock has detected the required idle time. -// -void SaverEngine::idleTimeout() -{ - if (!mValidCryptoCardInserted) { - // disable X screensaver - XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset ); - XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); - startLockProcess( DefaultLock ); - } -} - -xautolock_corner_t SaverEngine::applyManualSettings(int action) -{ - if (action == 0) { - kdDebug() << "no lock" << endl; - return ca_nothing; - } - else if (action == 1) { - kdDebug() << "lock screen" << endl; - return ca_forceLock; - } - else if (action == 2) { - kdDebug() << "prevent lock" << endl; - return ca_dontLock; - } - else{ - kdDebug() << "no lock nothing" << endl; - return ca_nothing; - } -} - -/*! - * This function try a reconnect to D-Bus. - * \return boolean with the result of the operation - * \retval true if successful reconnected to D-Bus - * \retval false if unsuccessful - */ -bool SaverEngine::dBusReconnect() { - // close D-Bus connection - dBusClose(); - // init D-Bus conntection - return (dBusConnect()); -} - -/*! - * This function is used to close D-Bus connection. - */ -void SaverEngine::dBusClose() { - if( dBusConn.isConnected() ) { - if( dBusLocal ) { - delete dBusLocal; - dBusLocal = 0; - } - if( dBusWatch ) { - delete dBusWatch; - dBusWatch = 0; - } - if( systemdSession ) { - delete systemdSession; - systemdSession = 0; - } - } - dBusConn.closeConnection(DBUS_CONN_NAME); -} - -/*! - * This function is used to connect to D-Bus. - */ -bool SaverEngine::dBusConnect() { - dBusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus, DBUS_CONN_NAME); - if( !dBusConn.isConnected() ) { - kdError() << "Failed to open connection to system message bus: " << dBusConn.lastError().message() << endl; - TQTimer::singleShot(4000, this, TQT_SLOT(dBusReconnect())); - return false; - } - - // watcher for Disconnect signal - dBusLocal = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL, dBusConn); - TQObject::connect(dBusLocal, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)), - this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&))); - - // watcher for NameOwnerChanged signals - dBusWatch = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); - TQObject::connect(dBusWatch, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)), - this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&))); - - // find already running SystemD - TQT_DBusProxy checkSystemD(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); - if( checkSystemD.canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromString(SYSTEMD_LOGIN1_SERVICE); - TQT_DBusMessage reply = checkSystemD.sendWithReply("NameHasOwner", params); - if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 && reply[0].toBool() ) { - onDBusServiceRegistered(SYSTEMD_LOGIN1_SERVICE); - } - } - return true; -} - -/*! - * This function handles D-Bus service registering - */ -void SaverEngine::onDBusServiceRegistered(const TQString& service) { - if( service == SYSTEMD_LOGIN1_SERVICE ) { - // get current systemd session - TQT_DBusProxy managerIface(SYSTEMD_LOGIN1_SERVICE, SYSTEMD_LOGIN1_PATH, SYSTEMD_LOGIN1_MANAGER_IFACE, dBusConn); - TQT_DBusObjectPath systemdSessionPath = TQT_DBusObjectPath(); - if( managerIface.canSend() ) { - TQValueList<TQT_DBusData> params; - params << TQT_DBusData::fromUInt32( getpid() ); - TQT_DBusMessage reply = managerIface.sendWithReply("GetSessionByPID", params); - if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 ) { - systemdSessionPath = reply[0].toObjectPath(); - } - } - // wather for systemd session signals - if( systemdSessionPath.isValid() ) { - systemdSession = new TQT_DBusProxy(SYSTEMD_LOGIN1_SERVICE, systemdSessionPath, SYSTEMD_LOGIN1_SESSION_IFACE, dBusConn); - TQObject::connect(systemdSession, TQT_SIGNAL(dbusSignal(const TQT_DBusMessage&)), - this, TQT_SLOT(handleDBusSignal(const TQT_DBusMessage&))); - } - return; - } -} - -/*! - * This function handles D-Bus service unregistering - */ -void SaverEngine::onDBusServiceUnregistered(const TQString& service) { - if( service == SYSTEMD_LOGIN1_SERVICE ) { - if( systemdSession ) { - delete systemdSession; - systemdSession = 0; - } - return; - } -} - -/*! - * This function handles signals from the D-Bus daemon. - */ -void SaverEngine::handleDBusSignal(const TQT_DBusMessage& msg) { - // dbus terminated - if( msg.path() == DBUS_PATH_LOCAL - && msg.interface() == DBUS_INTERFACE_LOCAL - && msg.member() == "Disconnected" ) { - dBusClose(); - TQTimer::singleShot(1000, this, TQT_SLOT(dBusReconnect())); - return; - } - - // service registered / unregistered - if( msg.path() == DBUS_PATH_DBUS - && msg.interface() == DBUS_INTERFACE_DBUS - && msg.member() == "NameOwnerChanged" ) { - if( msg[1].toString().isEmpty() ) { - // old-owner is empty - onDBusServiceRegistered(msg[0].toString()); - } - if( msg[2].toString().isEmpty() ) { - // new-owner is empty - onDBusServiceUnregistered(msg[0].toString()); - } - return; - } - - // systemd signal Lock() - if( systemdSession && systemdSession->canSend() - && msg.path() == systemdSession->path() - && msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE - && msg.member() == "Lock") { - lockScreen(); - return; - } - - // systemd signal Unlock() - if( systemdSession && systemdSession->canSend() - && msg.path() == systemdSession->path() - && msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE - && msg.member() == "Unlock") { - // unlock? - return; - } -} - -bool SaverEngine::waitForLockProcessStart() { - sigset_t new_mask; - sigset_t empty_mask; - sigemptyset(&empty_mask); - - // ensure that SIGCHLD is not subject to a race condition - sigemptyset(&new_mask); - sigaddset(&new_mask, SIGCHLD); - - pthread_sigmask(SIG_BLOCK, &new_mask, NULL); - while ((mLockProcess.isRunning()) && (!mSaverProcessReady)) { - // wait for any signal(s) to arrive - sigsuspend(&empty_mask); - } - pthread_sigmask(SIG_UNBLOCK, &new_mask, NULL); - - return mLockProcess.isRunning(); -} - -bool SaverEngine::waitForLockEngage() { - sigset_t empty_mask; - sigemptyset(&empty_mask); - - // wait for SIGUSR1, SIGUSR2, SIGTTIN - while ((mLockProcess.isRunning()) && (mState != Waiting) && (mState != Saving)) { - // wait for any signal(s) to arrive - sigsuspend(&empty_mask); - } - - return mLockProcess.isRunning(); -} - -void SaverEngine::lockScreenAndDoNewSession() { - mNewVTAfterLockEngage = true; - lockScreen(); -} - -void SaverEngine::lockScreenAndSwitchSession(int vt) { - mSwitchVTAfterLockEngage = vt; - lockScreen(); -} - -void SaverEngineThreadHelperObject::terminateThread() { - TQEventLoop* eventLoop = TQApplication::eventLoop(); - if (eventLoop) { - eventLoop->exit(0); - } -} diff --git a/kdesktop/lockeng.cpp b/kdesktop/lockeng.cpp new file mode 100644 index 000000000..fc3c9db6e --- /dev/null +++ b/kdesktop/lockeng.cpp @@ -0,0 +1,1049 @@ +//=========================================================================== +// +// This file is part of the TDE project +// +// Copyright (c) 1999 Martin R. Jones <mjones@kde.org> +// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net> +// + +#include <config.h> + +#include <stdlib.h> +#include <sys/stat.h> +#include <tdeglobal.h> + +#ifdef WITH_TDEHWLIB +#include <ksslcertificate.h> +#include <kuser.h> +#include <tdehardwaredevices.h> +#include <tdecryptographiccarddevice.h> +#endif + +#include <tdestandarddirs.h> +#include <tdeapplication.h> +#include <kservicegroup.h> +#include <tdesimpleconfig.h> +#include <kdebug.h> +#include <tdelocale.h> +#include <tqfile.h> +#include <tqtimer.h> +#include <tqeventloop.h> +#include <dcopclient.h> +#include <assert.h> + +#include <dmctl.h> + +#include <dbus/dbus-shared.h> +#include <tqdbusdata.h> +#include <tqdbuserror.h> +#include <tqdbusmessage.h> +#include <tqdbusobjectpath.h> +#include <tqdbusproxy.h> + +#include "lockeng.h" +#include "lockeng.moc" +#include "kdesktopsettings.h" + +#include "xautolock_c.h" + +#define SYSTEMD_LOGIN1_SERVICE "org.freedesktop.login1" +#define SYSTEMD_LOGIN1_MANAGER_IFACE "org.freedesktop.login1.Manager" +#define SYSTEMD_LOGIN1_SESSION_IFACE "org.freedesktop.login1.Session" +#define SYSTEMD_LOGIN1_SEAT_IFACE "org.freedesktop.login1.Seat" +#define SYSTEMD_LOGIN1_PATH "/org/freedesktop/login1" + +#define DBUS_CONN_NAME "kdesktop_lock" + +extern xautolock_corner_t xautolock_corners[ 4 ]; +bool trinity_lockeng_sak_available = true; + +SaverEngineEventHandler *gbl_saverEngineEventHandler = nullptr; + +static void sigusr1_handler(int) +{ + if (gbl_saverEngineEventHandler) + { + gbl_saverEngineEventHandler->lockCompleted(); + } +} + +static void sigusr2_handler(int) +{ + if (gbl_saverEngineEventHandler) + { + gbl_saverEngineEventHandler->lockFullyActivated(); + } +} + +static void sigttin_handler(int) +{ + if (gbl_saverEngineEventHandler) + { + gbl_saverEngineEventHandler->lockReady(); + } +} + +SaverEngine::SaverEngine() + : TQObject(), + KScreensaverIface(), + mBlankOnly(false), + mNewVTAfterLockEngage(false), + mValidCryptoCardInserted(false), + mSwitchVTAfterLockEngage(-1), + dBusLocal(0), + dBusWatch(0), + systemdSession(0) +{ + // handle SIGUSR1 + mSignalAction.sa_handler= sigusr1_handler; + sigemptyset(&(mSignalAction.sa_mask)); + sigaddset(&(mSignalAction.sa_mask), SIGUSR1); + mSignalAction.sa_flags = 0; + sigaction(SIGUSR1, &mSignalAction, 0L); + + // handle SIGUSR2 + mSignalAction.sa_handler= sigusr2_handler; + sigemptyset(&(mSignalAction.sa_mask)); + sigaddset(&(mSignalAction.sa_mask), SIGUSR2); + mSignalAction.sa_flags = 0; + sigaction(SIGUSR2, &mSignalAction, 0L); + + // handle SIGTTIN (as custom user signal rather than its inherent meaning) + mSignalAction.sa_handler= sigttin_handler; + sigemptyset(&(mSignalAction.sa_mask)); + sigaddset(&(mSignalAction.sa_mask), SIGTTIN); + mSignalAction.sa_flags = 0; + sigaction(SIGTTIN, &mSignalAction, 0L); + + // Save X screensaver parameters + XGetScreenSaver(tqt_xdisplay(), &mXTimeout, &mXInterval, &mXBlanking, &mXExposures); + + // Create event handler thread, event loop and object + m_eventHandlerThread = new TQEventLoopThread; + m_eventHandlerThread->start(); + m_saverEngineEventHandler = new SaverEngineEventHandler(this); + gbl_saverEngineEventHandler = m_saverEngineEventHandler; + m_saverEngineEventHandler->moveToThread(m_eventHandlerThread); + connect(this, TQ_SIGNAL(terminateEventHandlerThread()), m_saverEngineEventHandler, TQ_SLOT(terminateThread())); + connect(this, TQ_SIGNAL(lockScreenSignal(bool)), m_saverEngineEventHandler, TQ_SLOT(lockScreen(bool))); + connect(this, TQ_SIGNAL(activateSaverOrLockSignal(LockType)), + m_saverEngineEventHandler, TQ_SLOT(activateSaverOrLock(LockType))); + + mXAutoLock = nullptr; + mEnabled = false; + + configure(); + + // Prevent kdesktop_lock signals from being handled by the main GUI thread. + // Those signals will be handled by m_eventHandlerThread instead + // + // Make sure to keep this code after the constructor of `m_eventHandlerThread`, so that + // the new thread starts with the signals unblocked. + sigset_t sigBlockMask; + sigemptyset(&sigBlockMask); + sigaddset(&sigBlockMask, SIGUSR1); + sigaddset(&sigBlockMask, SIGUSR2); + sigaddset(&sigBlockMask, SIGTTIN); + sigaddset(&sigBlockMask, SIGCHLD); + pthread_sigmask(SIG_BLOCK, &sigBlockMask, NULL); + + // Start SAK and lock processes + TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(restartLockProcess())); + +#ifdef WITH_TDEHWLIB + // Initialize SmartCard readers + TDEGenericDevice *hwdevice; + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard); + for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) + { + TDECryptographicCardDevice *cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); + connect(cdevice, TQ_SIGNAL(certificateListAvailable(TDECryptographicCardDevice*)), + this, TQ_SLOT(cryptographicCardInserted(TDECryptographicCardDevice*))); + connect(cdevice, TQ_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), + this, TQ_SLOT(cryptographicCardRemoved(TDECryptographicCardDevice*))); + cdevice->enableCardMonitoring(true); + } + + // Check card login status + KUser userinfo; + TQString fileName = userinfo.homeDir() + "/.tde_card_login_state"; + TQFile flagFile(fileName); + if (flagFile.open(IO_ReadOnly)) + { + TQTextStream stream(&flagFile); + if (stream.readLine().startsWith("1")) + { + // Card was likely used to log in + TQTimer::singleShot(5000, this, TQ_SLOT(cardStartupTimeout())); + } + flagFile.close(); + } +#endif + + dBusConnect(); +} + +SaverEngine::~SaverEngine() +{ + m_saverEngineEventHandler->terminateLockProcess(); + delete mXAutoLock; + dBusClose(); + + // Restore X screensaver parameters + XSetScreenSaver(tqt_xdisplay(), mXTimeout, mXInterval, mXBlanking, mXExposures); + emit terminateEventHandlerThread(); + m_eventHandlerThread->wait(); + delete m_saverEngineEventHandler; + delete m_eventHandlerThread; +} + +void SaverEngine::cardStartupTimeout() +{ + if (!mValidCryptoCardInserted) + { + configure(); // Restore saver timeout + lockScreen(); // Force lock + } +} + +void SaverEngine::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) +{ +#ifdef WITH_TDEHWLIB + TQString login_name = TQString::null; + X509CertificatePtrList certList = cdevice->cardX509Certificates(); + if (certList.count() > 0) + { + KSSLCertificate* card_cert = NULL; + card_cert = KSSLCertificate::fromX509(certList[0]); + TQStringList cert_subject_parts = TQStringList::split("/", card_cert->getSubject(), false); + for (TQStringList::Iterator it = cert_subject_parts.begin(); it != cert_subject_parts.end(); ++it) + { + TQString lcpart = (*it).lower(); + if (lcpart.startsWith("cn=")) + { + login_name = lcpart.right(lcpart.length() - strlen("cn=")); + } + } + delete card_cert; + } + + if (login_name != "") + { + KUser user; + if (login_name == user.loginName()) + { + mValidCryptoCardInserted = true; + } + } +#endif +} + +void SaverEngine::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) +{ +#ifdef WITH_TDEHWLIB + if (mValidCryptoCardInserted) + { + mValidCryptoCardInserted = false; + + // Restore saver timeout + configure(); + + // Force lock + lockScreen(); + } +#endif +} + +// DCOP interface method +void SaverEngine::lock() +{ + lockScreen(true); +} + +void SaverEngine::lockScreen(bool dcop) +{ + if (mValidCryptoCardInserted) + { + kdDebug(1204) << "SaverEngine: crypto card inserted, ignore lock request" << endl; + return; + } + emit lockScreenSignal(dcop); +} + +void SaverEngine::lockScreenGUI() +{ + DCOPClientTransaction *trans = tdeApp->dcopClient()->beginTransaction(); + if (trans) + { + mLockTransactions.append(trans); + } +} + +void SaverEngine::processLockTransactions() +{ + TQValueVector<DCOPClientTransaction*>::ConstIterator it = mLockTransactions.begin(); + for (; it != mLockTransactions.end(); ++it) + { + TQCString replyType = "void"; + TQByteArray arr; + tdeApp->dcopClient()->endTransaction(*it, replyType, arr); + } + mLockTransactions.clear(); +} + +void SaverEngine::saverLockReady() +{ + if (m_saverEngineEventHandler->getState() != SaverState::Engaging) + { + kdDebug(1204) << "Got unexpected saverLockReady()" << endl; + } + + kdDebug(1204) << "Saver Lock Ready" << endl; + processLockTransactions(); +} + +// DCOP interface method +void SaverEngine::save() +{ + if (mValidCryptoCardInserted) + { + kdDebug(1204) << "SaverEngine: crypto card inserted, ignore save request" << endl; + return; + } + TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(saveScreen())); +} + +// DCOP interface method +void SaverEngine::quit() +{ + TQTimer::singleShot(0, m_saverEngineEventHandler, TQ_SLOT(stopLockProcess())); +} + +// DCOP interface method +bool SaverEngine::isEnabled() +{ + return mEnabled; +} + +// DCOP interface method +bool SaverEngine::enable(bool e) +{ + if (e == mEnabled) + return true; + + // If we aren't in a suitable state, we will not reconfigure. + if (m_saverEngineEventHandler->getState() != SaverState::Waiting) + return false; + + mEnabled = e; + + if (mEnabled) + { + if (!mXAutoLock) + { + mXAutoLock = new XAutoLock(); + connect(mXAutoLock, TQ_SIGNAL(timeout()), TQ_SLOT(idleTimeout())); + } + mXAutoLock->setTimeout(mTimeout); + mXAutoLock->setDPMS(true); + + // We'll handle blanking + XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); + mXAutoLock->start(); + kdDebug(1204) << "Saver engine started, timeout: " << mTimeout << endl; + } + else + { + if (mXAutoLock) + { + delete mXAutoLock; + mXAutoLock = nullptr; + } + + XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset); + XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); + kdDebug(1204) << "Saver engine disabled" << endl; + } + + return true; +} + +// DCOP interface method +bool SaverEngine::isBlanked() +{ + return (m_saverEngineEventHandler->getState() != SaverState::Waiting); +} + +void SaverEngine::enableExports() +{ +#ifdef TQ_WS_X11 + kdDebug(270) << k_lineinfo << "activating background exports" << endl; + DCOPClient *client = tdeApp->dcopClient(); + if (!client->isAttached()) + { + client->attach(); + } + TQByteArray data; + TQDataStream args(data, IO_WriteOnly); + args << 1; + + TQCString appname("kdesktop"); + int screen_number = DefaultScreen(tqt_xdisplay()); + if (screen_number) + { + appname.sprintf("kdesktop-screen-%d", screen_number); + } + + client->send(appname, "KBackgroundIface", "setExport(int)", data); +#endif +} + +// Read and apply configuration. +void SaverEngine::configure() +{ + // If we aren't in a suitable state, we will not reconfigure. + if (m_saverEngineEventHandler->getState() != SaverState::Waiting) + { + return; + } + + // create a new config obj to ensure we read the latest options + KDesktopSettings::self()->readConfig(); + + mTimeout = KDesktopSettings::timeout(); + bool e = KDesktopSettings::screenSaverEnabled(); + mEnabled = !e; // enable the screensaver by forcibly toggling it + enable(e); + + int action; + action = KDesktopSettings::actionTopLeft(); + xautolock_corners[0] = applyManualSettings(action); + action = KDesktopSettings::actionTopRight(); + xautolock_corners[1] = applyManualSettings(action); + action = KDesktopSettings::actionBottomLeft(); + xautolock_corners[2] = applyManualSettings(action); + action = KDesktopSettings::actionBottomRight(); + xautolock_corners[3] = applyManualSettings(action); +} + +// DCOP interface method +// Set a variable to indicate only to blank the screen and not use the saver +void SaverEngine::setBlankOnly(bool blankOnly) +{ + mBlankOnly = blankOnly; +} + +void SaverEngine::activateSaverOrLockGUI() +{ + XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures); + if (mXAutoLock) + { + mXAutoLock->stop(); + } + emitDCOPSignal("KDE_start_screensaver()", TQByteArray()); +} + +void SaverEngine::stopLockProcessGUI() +{ + emitDCOPSignal("KDE_stop_screensaver()", TQByteArray()); + + if (mEnabled) + { + if (mXAutoLock) + { + mXAutoLock->start(); + } + XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset); + XSetScreenSaver(tqt_xdisplay(), mTimeout + 10, mXInterval, PreferBlanking, mXExposures); + } + processLockTransactions(); + + if (systemdSession && systemdSession->canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromBool(false); + TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); + } +} + +void SaverEngine::terminateTDESession() +{ + // Terminate the TDE session ASAP! + // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387 + TQByteArray data; + TQDataStream arg(data, IO_WriteOnly); + arg << (int)0 << (int)0 << (int)2; + if (!tdeApp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data)) + { + // Someone got to DCOP before we did. Try an emergency system logout + system("logout"); + } +} + +void SaverEngine::lockProcessFullyActivatedGUI() +{ + if (systemdSession && systemdSession->canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromBool(true); + TQT_DBusMessage reply = systemdSession->sendWithReply("SetIdleHint", params); + } + + if (mNewVTAfterLockEngage) + { + DM().startReserve(); + mNewVTAfterLockEngage = false; + } + else if (mSwitchVTAfterLockEngage != -1) + { + DM().switchVT(mSwitchVTAfterLockEngage); + mSwitchVTAfterLockEngage = -1; + } +} + +// XAutoLock has detected the required idle time. +void SaverEngine::idleTimeout() +{ + if (!mValidCryptoCardInserted) + { + // disable X screensaver + XForceScreenSaver(tqt_xdisplay(), ScreenSaverReset); + XSetScreenSaver(tqt_xdisplay(), 0, mXInterval, PreferBlanking, DontAllowExposures); + emit activateSaverOrLockSignal(DefaultLock); + } +} + +xautolock_corner_t SaverEngine::applyManualSettings(int action) +{ + if (action == 0) + { + kdDebug() << "no lock" << endl; + return ca_nothing; + } + else if (action == 1) + { + kdDebug() << "lock screen" << endl; + return ca_forceLock; + } + else if (action == 2) + { + kdDebug() << "prevent lock" << endl; + return ca_dontLock; + } + else + { + kdDebug() << "no lock nothing" << endl; + return ca_nothing; + } +} + +/* + * This function try to reconnect to D-Bus. + * \return boolean with the result of the operation + * \retval true if successful reconnected to D-Bus + * \retval false if unsuccessful + */ +bool SaverEngine::dBusReconnect() +{ + dBusClose(); // close D-Bus connection + return (dBusConnect()); // init D-Bus conntection +} + +// This function is used to close D-Bus connection. +void SaverEngine::dBusClose() +{ + if (dBusConn.isConnected()) + { + if (dBusLocal) + { + delete dBusLocal; + dBusLocal = nullptr; + } + if (dBusWatch) + { + delete dBusWatch; + dBusWatch = nullptr; + } + if (systemdSession) + { + delete systemdSession; + systemdSession = nullptr; + } + } + dBusConn.closeConnection(DBUS_CONN_NAME); +} + +// This function is used to connect to D-Bus. +bool SaverEngine::dBusConnect() +{ + dBusConn = TQT_DBusConnection::addConnection(TQT_DBusConnection::SystemBus, DBUS_CONN_NAME); + if (!dBusConn.isConnected()) + { + kdError() << "Failed to open connection to system message bus: " << dBusConn.lastError().message() << endl; + TQTimer::singleShot(4000, this, TQ_SLOT(dBusReconnect())); + return false; + } + + // watcher for Disconnect signal + dBusLocal = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_LOCAL, DBUS_INTERFACE_LOCAL, dBusConn); + TQObject::connect(dBusLocal, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)), + this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&))); + + // watcher for NameOwnerChanged signals + dBusWatch = new TQT_DBusProxy(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); + TQObject::connect(dBusWatch, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)), + this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&))); + + // find already running SystemD + TQT_DBusProxy checkSystemD(DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS, dBusConn); + if (checkSystemD.canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromString(SYSTEMD_LOGIN1_SERVICE); + TQT_DBusMessage reply = checkSystemD.sendWithReply("NameHasOwner", params); + if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1 && reply[0].toBool()) + { + onDBusServiceRegistered(SYSTEMD_LOGIN1_SERVICE); + } + } + return true; +} + +// This function handles D-Bus service registering +void SaverEngine::onDBusServiceRegistered(const TQString& service) +{ + if (service == SYSTEMD_LOGIN1_SERVICE) + { + // get current systemd session + TQT_DBusProxy managerIface(SYSTEMD_LOGIN1_SERVICE, SYSTEMD_LOGIN1_PATH, SYSTEMD_LOGIN1_MANAGER_IFACE, dBusConn); + TQT_DBusObjectPath systemdSessionPath = TQT_DBusObjectPath(); + if (managerIface.canSend()) + { + TQValueList<TQT_DBusData> params; + params << TQT_DBusData::fromUInt32(getpid()); + TQT_DBusMessage reply = managerIface.sendWithReply("GetSessionByPID", params); + if (reply.type() == TQT_DBusMessage::ReplyMessage && reply.count() == 1) + { + systemdSessionPath = reply[0].toObjectPath(); + } + } + // wather for systemd session signals + if (systemdSessionPath.isValid()) + { + systemdSession = new TQT_DBusProxy(SYSTEMD_LOGIN1_SERVICE, systemdSessionPath, SYSTEMD_LOGIN1_SESSION_IFACE, dBusConn); + TQObject::connect(systemdSession, TQ_SIGNAL(dbusSignal(const TQT_DBusMessage&)), + this, TQ_SLOT(handleDBusSignal(const TQT_DBusMessage&))); + } + return; + } +} + +// This function handles D-Bus service unregistering +void SaverEngine::onDBusServiceUnregistered(const TQString& service) +{ + if (service == SYSTEMD_LOGIN1_SERVICE) + { + if (systemdSession) + { + delete systemdSession; + systemdSession = nullptr; + } + return; + } +} + +// This function handles signals from the D-Bus daemon. +void SaverEngine::handleDBusSignal(const TQT_DBusMessage& msg) +{ + // dbus terminated + if (msg.path() == DBUS_PATH_LOCAL && msg.interface() == DBUS_INTERFACE_LOCAL && + msg.member() == "Disconnected") + { + dBusClose(); + TQTimer::singleShot(1000, this, TQ_SLOT(dBusReconnect())); + return; + } + + // service registered / unregistered + if (msg.path() == DBUS_PATH_DBUS && msg.interface() == DBUS_INTERFACE_DBUS && + msg.member() == "NameOwnerChanged") + { + if (msg[1].toString().isEmpty()) + { + // old-owner is empty + onDBusServiceRegistered(msg[0].toString()); + } + if (msg[2].toString().isEmpty()) + { + // new-owner is empty + onDBusServiceUnregistered(msg[0].toString()); + } + return; + } + + // systemd signal Lock() + if (systemdSession && systemdSession->canSend() && msg.path() == systemdSession->path() && + msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE && msg.member() == "Lock") + { + lockScreen(); + return; + } + + // systemd signal Unlock() + if (systemdSession && systemdSession->canSend() && msg.path() == systemdSession->path() && + msg.interface() == SYSTEMD_LOGIN1_SESSION_IFACE && msg.member() == "Unlock") + { + // unlock? + return; + } +} + +void SaverEngine::lockScreenAndDoNewSession() +{ + mNewVTAfterLockEngage = true; + lockScreen(); +} + +void SaverEngine::lockScreenAndSwitchSession(int vt) +{ + mSwitchVTAfterLockEngage = vt; + lockScreen(); +} + +SaverEngineEventHandler::SaverEngineEventHandler(SaverEngine *engine) : + m_state(Waiting), m_saverProcessReady(false), m_lockProcessRestarting(false), + m_terminationRequest(false), m_saverEngine(engine), m_SAKProcess(nullptr) +{ + connect(&m_lockProcess, TQ_SIGNAL(processExited(TDEProcess*)), + this, TQ_SLOT(slotLockProcessExited())); +} + +void SaverEngineEventHandler::terminateLockProcess() +{ + if (m_state == Waiting) + { + kill(m_lockProcess.pid(), SIGKILL); + } + m_lockProcess.detach(); // don't kill it if we crash +} + +void SaverEngineEventHandler::lockCompleted() +{ + kdDebug(1204) << "SaverEngineEventHandler: lock completed" << endl; + + if (m_state == Waiting) + { + return; + } + + m_state = Waiting; + if (trinity_lockeng_sak_available) + { + startSAKProcess(); + } + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(stopLockProcessGUI())); +} + +void SaverEngineEventHandler::lockFullyActivated() +{ + m_state = Saving; + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(lockProcessFullyActivatedGUI())); +} + +void SaverEngineEventHandler::lockReady() +{ + m_saverProcessReady = true; +} + +void SaverEngineEventHandler::lockScreen(bool dcop) +{ + if (m_lockProcessRestarting) + { + kdDebug(1204) << "SaverEngineEventHandler: lock process is restarting, can't handle lock request" << endl; + return; + } + + bool ok = true; + if (m_state == Waiting) + { + ok = activateSaverOrLock(ForceLock); + // It takes a while for kdesktop_lock to start and lock the screen. + // Therefore delay the DCOP call until it tells kdesktop that the locking is in effect. + // This is done only for --forcelock . + if (ok && m_state != Saving) + { + if (dcop) + { + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(lockScreenGUI())); + } + } + } +} + +void SaverEngineEventHandler::saveScreen() +{ + if (m_lockProcessRestarting) + { + kdDebug(1204) << "SaverEngineEventHandler: lock process is restarting, can't handle save request" << endl; + return; + } + + if (m_state == Waiting) + { + activateSaverOrLock(DefaultLock); + } +} + +void SaverEngineEventHandler::slotLockProcessExited() +{ + // Clean up status after the lock process has exited + lockCompleted(); + + m_lockProcessRestarting = true; + + bool abnormalExit = false; + if (!m_lockProcess.normalExit()) + { + abnormalExit = true; + } + else if (m_lockProcess.exitStatus() != 0) + { + abnormalExit = true; + } + if (m_terminationRequest) + { + abnormalExit = false; + m_terminationRequest = false; + } + + // Restart the lock process. This call blocks till + // the lock process has restarted. + restartLockProcess(); + + if (abnormalExit) + { + // Possible hacking attempt detected, try to relaunch the saver with force lock + m_state = Waiting; + if (!activateSaverOrLock(ForceLock)) + { + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(terminateTDESession())); + } + } + m_lockProcessRestarting = false; +} + +/* + * Start or restart the lock process. + * On the very first invocation, launch the SAK process if required and + * auto lock the screen if the option has been enabled in the configuration. + */ +bool SaverEngineEventHandler::restartLockProcess() +{ + static bool firstStart = true; + + bool autoLoginEnable = false; + bool autoLoginLocked = false; + if (firstStart) + { + firstStart = false; + + // Create SAK process only if SAK is enabled + struct stat st; + TDESimpleConfig *config; + if (stat(KDE_CONFDIR "/tdm/tdmdistrc" , &st) == 0) + { + config = new TDESimpleConfig(TQString::fromLatin1(KDE_CONFDIR "/tdm/tdmdistrc")); + } + else + { + config = new TDESimpleConfig(TQString::fromLatin1(KDE_CONFDIR "/tdm/tdmrc")); + } + config->setGroup("X-:*-Greeter"); + bool useSAKProcess = false; +#ifdef BUILD_TSAK + useSAKProcess = config->readBoolEntry("UseSAK", false) && KDesktopSettings::useTDESAK(); +#endif + if (useSAKProcess) + { + startSAKProcess(); + } + + // autolock the desktop if required + config->setGroup("X-:0-Core"); + autoLoginEnable = config->readBoolEntry("AutoLoginEnable", false); + autoLoginLocked = config->readBoolEntry("AutoLoginLocked", false); + delete config; + } + + // (Re)start the lock process + if (!m_lockProcess.isRunning()) + { + m_lockProcess.clearArguments(); + TQString path = TDEStandardDirs::findExe("kdesktop_lock"); + if (path.isEmpty()) + { + kdDebug(1204) << "Can't find kdesktop_lock!" << endl; + return false; + } + m_lockProcess << path; + m_lockProcess << TQString("--internal") << TQString("%1").arg(getpid()); + + m_saverProcessReady = false; + if (!m_lockProcess.start()) + { + kdDebug(1204) << "Failed to start kdesktop_lock!" << endl; + return false; + } + // Wait for the lock process to signal that it is ready + sigset_t empty_mask; + sigemptyset(&empty_mask); + while (!m_saverProcessReady) + { + sigsuspend(&empty_mask); + } + if (!m_lockProcess.isRunning()) + { + kdDebug(1204) << "Failed to initialize kdesktop_lock (unexpected termination)!" << endl; + return false; + } + } + + if (autoLoginEnable && autoLoginLocked) + { + m_lockProcess.kill(SIGTTOU); + m_lockProcess.kill(SIGUSR1); + } + return true; +} + +// Start the screen saver or lock screen +bool SaverEngineEventHandler::activateSaverOrLock(LockType lock_type) +{ + if (m_state == Saving) + { + return true; + } + + kdDebug(1204) << "SaverEngineEventHandler: starting saver" << endl; + m_state = Preparing; + if (m_SAKProcess) + { + m_SAKProcess->kill(SIGTERM); + } + + m_saverEngine->enableExports(); + if (!restartLockProcess()) + { + m_state = Waiting; + return false; + } + + switch (lock_type) + { + case ForceLock: + m_lockProcess.kill(SIGUSR1); // Request forcelock + break; + case DontLock: + m_lockProcess.kill(SIGUSR2); // Request dontlock + break; + case SecureDialog: + m_lockProcess.kill(SIGWINCH); // Request secure dialog + break; + default: + break; + } + + if (m_saverEngine->mBlankOnly) + { + m_lockProcess.kill(SIGTTIN); // Request blanking + } + + int ret = m_lockProcess.kill(SIGTTOU); // Start lock + if (!ret) + { + m_state = Waiting; + return false; + } + m_state = Engaging; + + // Ask to the GUI thread to activate X11 saver + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(activateSaverOrLockGUI())); + + return true; +} + +// Stop the screen saver. +void SaverEngineEventHandler::stopLockProcess() +{ + if (m_state == Waiting) + { + return; + } + + kdDebug(1204) << "SaverEngineEventHandler: stopping lock process" << endl; + + m_terminationRequest = true; + m_lockProcess.kill(); + m_state = Waiting; + + // Ask to the GUI thread to stop the X11 saver + TQTimer::singleShot(0, m_saverEngine, TQ_SLOT(stopLockProcessGUI())); +} + +void SaverEngineEventHandler::startSAKProcess() +{ + if (!m_SAKProcess) + { + m_SAKProcess = new TDEProcess; + *m_SAKProcess << "tdmtsak"; + connect(m_SAKProcess, TQ_SIGNAL(processExited(TDEProcess*)), this, TQ_SLOT(slotSAKProcessExited())); + } + if (!m_SAKProcess->isRunning()) + { + m_SAKProcess->start(); + } +} + +void SaverEngineEventHandler::slotSAKProcessExited() +{ + if (!m_SAKProcess) + { + tqWarning("[kdesktop] SAK process does not exist. Something went wrong. Ignoring."); + return; + } + + int retcode = m_SAKProcess->exitStatus(); + if (retcode && m_SAKProcess->normalExit()) + { + trinity_lockeng_sak_available = false; + tqWarning("[kdesktop] SAK driven secure dialog is not available for use (retcode %d). " + "Check tdmtsak for proper functionality.", retcode); + } + + if (m_state == Preparing) + { + return; + } + + if (m_SAKProcess->normalExit() && trinity_lockeng_sak_available) + { + if (m_state == Waiting) + { + activateSaverOrLock(SecureDialog); + } + else + { + m_lockProcess.kill(SIGHUP); + } + } +} + +void SaverEngineEventHandler::terminateThread() +{ + TQEventLoop *eventLoop = TQApplication::eventLoop(); + if (eventLoop) + { + eventLoop->exit(0); + } +} diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h index 11f751db8..11806e73c 100644 --- a/kdesktop/lockeng.h +++ b/kdesktop/lockeng.h @@ -1,6 +1,5 @@ -//=========================================================================== // -// This file is part of the KDE project +// This file is part of the TDE project // // Copyright (c) 1999 Martin R. Jones <mjones@kde.org> // @@ -8,9 +7,8 @@ #ifndef __LOCKENG_H__ #define __LOCKENG_H__ -#include <tqwidget.h> #include <tqthread.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <tqvaluevector.h> #include "KScreensaverIface.h" #include "xautolock.h" @@ -18,33 +16,54 @@ #include <tqdbusconnection.h> +#ifdef WITH_TDEHWLIB class TDECryptographicCardDevice; +#else +#define TDECryptographicCardDevice void +#endif + +/** + * Screen saver engine. Handles communication with the lock process. + * The engine is split into two parts, the 'SaverEngine' running in the GUI thread and + * the 'SaverEngineEventHandler' running in a separate thread and eventloop. + * The 'SaverEngine' handles communication with X11, DCOP and DBUS while the + * 'SaverEngineEventHandler' handles communication with the actual lock process. + * Several actions require cooperation of the two parts, so in various methods + * there will be inter-thread calls (using timers or by emitting signals) to + * trigger the other side remaining logic. + * This complex design is necessary to avoid blocking the main GUI application event loop, + * which has several tasks to manage and therefore can't affort to wait in a suspended state. + * This was previously leading to deadlock when DCOP calls where executed on the secondary + * thread/eventloop, for example when changing desktop while the lock process was restarting. + */ + class DCOPClientTransaction; class TQT_DBusMessage; class TQT_DBusProxy; +class SaverEngineEventHandler; -class SaverEngineThreadHelperObject : public TQObject +// Type of lock screen +enum LockType : int { - Q_OBJECT - -public slots: - void terminateThread(); - void slotLockProcessWaiting(); - void slotLockProcessFullyActivated(); + DontLock = 0, + DefaultLock, + ForceLock, + SecureDialog +}; -signals: - void lockProcessWaiting(); - void lockProcessFullyActivated(); +enum SaverState +{ + Waiting, + Preparing, + Engaging, + Saving }; -//=========================================================================== -/** - * Screen saver engine. Handles screensaver window, starting screensaver - * hacks, and password entry. - */ -class SaverEngine : public TQWidget, public KScreensaverIface +class SaverEngine : public TQObject, public KScreensaverIface { - Q_OBJECT + friend class SaverEngineEventHandler; + + TQ_OBJECT public: SaverEngine(); ~SaverEngine(); @@ -96,80 +115,52 @@ public: */ virtual void saverLockReady(); - /** - * @internal - */ void lockScreen(bool DCOP = false); - /** - * Called by KDesktop to wait for saver engage - * @internal - */ - bool waitForLockEngage(); - - /** - * @internal - */ void lockScreenAndDoNewSession(); - - /** - * @internal - */ void lockScreenAndSwitchSession(int vt); + void enableExports(); // Enable wallpaper exports + signals: - void terminateHelperThread(); - void asyncLock(); + void activateSaverOrLockSignal(LockType lock_type); + void lockScreenSignal(bool); + void terminateEventHandlerThread(); public slots: - void slotLockProcessReady(); - void lockProcessWaiting(); - void lockProcessFullyActivated(); void handleDBusSignal(const TQT_DBusMessage&); + void terminateTDESession(); protected slots: void idleTimeout(); - void lockProcessExited(); private slots: - void handleSecureDialog(); - void slotSAKProcessExited(); - void cryptographicCardInserted(TDECryptographicCardDevice*); void cryptographicCardRemoved(TDECryptographicCardDevice*); - - /** - * Enable wallpaper exports - */ - void enableExports(); - void recoverFromHackingAttempt(); void cardStartupTimeout(); - bool dBusReconnect(); + // The following slots are invoked by corresponding methods named without the 'GUI' suffix + // in 'SaverEngineEventHandler' to complete the remaining X11 part of the actions + void activateSaverOrLockGUI(); + void lockProcessFullyActivatedGUI(); + void lockScreenGUI(); + void stopLockProcessGUI(); + private: - bool restartDesktopLockProcess(); void dBusClose(); bool dBusConnect(); void onDBusServiceRegistered(const TQString&); void onDBusServiceUnregistered(const TQString&); protected: - enum SaverState { Waiting, Preparing, Engaging, Saving }; - enum LockType { DontLock, DefaultLock, ForceLock, SecureDialog }; - bool startLockProcess( LockType lock_type ); - bool waitForLockProcessStart(); - void stopLockProcess(); - bool handleKeyPress(XKeyEvent *xke); void processLockTransactions(); xautolock_corner_t applyManualSettings(int); protected: bool mEnabled; - SaverState mState; XAutoLock *mXAutoLock; - TDEProcess mLockProcess; int mTimeout; // the original X screensaver parameters @@ -178,26 +169,60 @@ protected: int mXBlanking; int mXExposures; - bool mBlankOnly; // only use the blanker, not the defined saver TQValueVector< DCOPClientTransaction* > mLockTransactions; public: - SaverEngineThreadHelperObject* m_threadHelperObject; + bool mBlankOnly; // only use the blanker, not the defined saver // protected + SaverEngineEventHandler *m_saverEngineEventHandler; private: - TQEventLoopThread* m_helperThread; - sigset_t mThreadBlockSet; - TDEProcess* mSAKProcess; - bool mTerminationRequested; - bool mSaverProcessReady; + TQEventLoopThread* m_eventHandlerThread; bool mNewVTAfterLockEngage; bool mValidCryptoCardInserted; int mSwitchVTAfterLockEngage; struct sigaction mSignalAction; TQT_DBusConnection dBusConn; - TQT_DBusProxy* dBusLocal; - TQT_DBusProxy* dBusWatch; - TQT_DBusProxy* systemdSession; + TQT_DBusProxy *dBusLocal; + TQT_DBusProxy *dBusWatch; + TQT_DBusProxy *systemdSession; +}; + +class SaverEngineEventHandler : public TQObject +{ + TQ_OBJECT + +public: + SaverEngineEventHandler(SaverEngine *engine); + + SaverState getState() const { return m_state; } + + void lockCompleted(); + void lockFullyActivated(); + void lockReady(); + void terminateLockProcess(); + +public slots: + bool activateSaverOrLock(LockType lock_type); + void lockScreen(bool DCOP = false); + bool restartLockProcess(); + void saveScreen(); + void stopLockProcess(); + void terminateThread(); + +protected slots: + void slotLockProcessExited(); + void slotSAKProcessExited(); + +protected: + void startSAKProcess(); + + bool m_saverProcessReady; + bool m_lockProcessRestarting; + bool m_terminationRequest; + SaverState m_state; + SaverEngine *m_saverEngine; + TDEProcess *m_SAKProcess; + TDEProcess m_lockProcess; }; #endif diff --git a/kdesktop/main.cc b/kdesktop/main.cpp index b54c03cb7..0465068b6 100644 --- a/kdesktop/main.cc +++ b/kdesktop/main.cpp @@ -18,13 +18,13 @@ */ #include <config.h> -#include <kuniqueapplication.h> +#include <tdeuniqueapplication.h> #include <tdelocale.h> #include <dcopclient.h> #include <tdeaboutdata.h> #include <tdecmdlineargs.h> #include <kopenwith.h> -#include <kcrash.h> +#include <tdecrash.h> #include <kdebug.h> #include <tdeglobalsettings.h> #include <tdeglobal.h> @@ -43,7 +43,7 @@ #include <fcntl.h> #include <stdlib.h> -#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 +#if defined(TQ_WS_X11) && defined(HAVE_XRENDER) && TQT_VERSION >= 0x030300 #define COMPOSITE #endif @@ -71,7 +71,7 @@ static TDECmdLineOptions options[] = }; bool argb_visual = false; -KDesktopApp *myApp = NULL; +KDesktopApp *myApp = nullptr; // ----------------------------------------------------------------------------- @@ -94,8 +94,8 @@ static void signalHandler(int sigId) // try to cleanup all windows signal(SIGTERM, SIG_DFL); // next one kills signal(SIGHUP, SIG_DFL); // next one kills - if (kapp) - kapp->quit(); // turn catchable signals into clean shutdown + if (tdeApp) + tdeApp->quit(); // turn catchable signals into clean shutdown } void KDesktop::slotUpAndRunning() @@ -105,7 +105,7 @@ void KDesktop::slotUpAndRunning() TDECrash::setEmergencySaveFunction(crashHandler); // Try to restart on crash } -extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) +extern "C" TDE_EXPORT int kdemain( int argc, char **argv ) { //setup signal handling signal(SIGTERM, signalHandler); @@ -184,7 +184,7 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) TDECmdLineArgs::init( argc, argv, &aboutData ); TDECmdLineArgs::addCmdLineOptions( options ); - if (!KUniqueApplication::start()) { + if (!TDEUniqueApplication::start()) { fprintf(stderr, "kdesktop is already running!\n"); exit(0); } @@ -247,11 +247,11 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) *qt_no_foreign_hack = true; // else argb_visual = false ... ? *shrug* if( argb_visual ) - myApp = new KDesktopApp( dpy, Qt::HANDLE( visual ), 0 ); + myApp = new KDesktopApp( dpy, TQt::HANDLE( visual ), 0 ); else XCloseDisplay( dpy ); } - if( myApp == NULL ) + if (!myApp) myApp = new KDesktopApp; #else myApp = new KDesktopApp; @@ -260,9 +260,6 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) KDesktopSettings::instance(kdesktop_name + "rc"); - bool x_root_hack = args->isSet("x-root"); - bool wait_for_kded = args->isSet("waitforkded"); - // This MUST be created before any widgets are created SaverEngine saver; @@ -273,22 +270,21 @@ extern "C" KDE_EXPORT int kdemain( int argc, char **argv ) // Mark kdeskop as immutable if all of its config modules have been disabled if (!myApp->config()->isImmutable() && - kapp->authorizeControlModules(KRootWm::configModules()).isEmpty()) + tdeApp->authorizeControlModules(KRootWm::configModules()).isEmpty()) { myApp->config()->setReadOnly(true); myApp->config()->reparseConfiguration(); } - // for the KDE-already-running check in starttde - TDESelectionOwner kde_running( "_KDE_RUNNING", 0 ); - kde_running.claim( false ); + // for the TDE-already-running check in starttde + TDESelectionOwner tde_running( "_KDE_RUNNING", 0 ); + tde_running.claim( false ); + bool x_root_hack = args->isSet("x-root"); + bool wait_for_kded = args->isSet("waitforkded"); KDesktop desktop( &saver, x_root_hack, wait_for_kded ); args->clear(); - myApp->dcopClient()->setDefaultObject( "KDesktopIface" ); - - return myApp->exec(); } diff --git a/kdesktop/minicli.cpp b/kdesktop/minicli.cpp index 769c49849..2ac8b3ecd 100644 --- a/kdesktop/minicli.cpp +++ b/kdesktop/minicli.cpp @@ -50,7 +50,7 @@ #include <dcopclient.h> #include <tdelocale.h> #include <tdemessagebox.h> -#include <kprocess.h> +#include <tdeprocess.h> #include <kcombobox.h> #include <klineedit.h> #include <tdeapplication.h> @@ -59,7 +59,7 @@ #include <krun.h> #include <twin.h> #include <tdesu/su.h> -#include <kstandarddirs.h> +#include <tdestandarddirs.h> #include <tdeconfig.h> #include <kiconloader.h> #include <kpushbutton.h> @@ -101,7 +101,7 @@ Minicli::Minicli( TQWidget *parent, const char *name) // Cancel button... m_dlg->pbCancel->setGuiItem ( KStdGuiItem::cancel() ); - if (!kapp->authorize("shell_access")) + if (!tdeApp->authorize("shell_access")) m_dlg->pbOptions->hide(); m_dlg->pbRun->setEnabled(!m_dlg->cbCommand->currentText().isEmpty()); @@ -131,34 +131,34 @@ Minicli::Minicli( TQWidget *parent, const char *name) m_pURLCompletion = new KURLCompletion(KURLCompletion::FileCompletion); m_pEXECompletion = new KURLCompletion(KURLCompletion::SystemExeCompletion); //m_pURLCompletion->setCompletionMode( TDEGlobalSettings::completionMode() ); - connect( m_pURLCompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotMatch(const TQString&) )); - connect( m_pEXECompletion, TQT_SIGNAL( match(const TQString&) ), TQT_SLOT( slotEXEMatch(const TQString&) )); + connect( m_pURLCompletion, TQ_SIGNAL( match(const TQString&) ), TQ_SLOT( slotMatch(const TQString&) )); + connect( m_pEXECompletion, TQ_SIGNAL( match(const TQString&) ), TQ_SLOT( slotEXEMatch(const TQString&) )); // Main widget buttons... - connect( m_dlg->pbRun, TQT_SIGNAL(clicked()), this, TQT_SLOT(accept()) ); - connect( m_dlg->pbCancel, TQT_SIGNAL(clicked()), this, TQT_SLOT(reject()) ); - connect( m_dlg->pbOptions, TQT_SIGNAL(clicked()), TQT_SLOT(slotAdvanced()) ); - connect( m_parseTimer, TQT_SIGNAL(timeout()), TQT_SLOT(slotParseTimer()) ); + connect( m_dlg->pbRun, TQ_SIGNAL(clicked()), this, TQ_SLOT(accept()) ); + connect( m_dlg->pbCancel, TQ_SIGNAL(clicked()), this, TQ_SLOT(reject()) ); + connect( m_dlg->pbOptions, TQ_SIGNAL(clicked()), TQ_SLOT(slotAdvanced()) ); + connect( m_parseTimer, TQ_SIGNAL(timeout()), TQ_SLOT(slotParseTimer()) ); - connect( m_dlg->cbCommand, TQT_SIGNAL( textChanged( const TQString& ) ), - TQT_SLOT( slotCmdChanged(const TQString&) ) ); + connect( m_dlg->cbCommand, TQ_SIGNAL( textChanged( const TQString& ) ), + TQ_SLOT( slotCmdChanged(const TQString&) ) ); - connect( m_dlg->cbCommand, TQT_SIGNAL( returnPressed() ), - m_dlg->pbRun, TQT_SLOT( animateClick() ) ); + connect( m_dlg->cbCommand, TQ_SIGNAL( returnPressed() ), + m_dlg->pbRun, TQ_SLOT( animateClick() ) ); m_dlg->cbCommand->setHistoryEditorEnabled( true ); - connect( m_dlg->cbCommand, TQT_SIGNAL(removed( const TQString&) ), TQT_SLOT(saveConfig()) ); + connect( m_dlg->cbCommand, TQ_SIGNAL(removed( const TQString&) ), TQ_SLOT(saveConfig()) ); // Advanced group box... - connect(m_dlg->cbPriority, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotChangeScheduler(bool))); - connect(m_dlg->slPriority, TQT_SIGNAL(valueChanged(int)), TQT_SLOT(slotPriority(int))); - connect(m_dlg->cbRealtime, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotRealtime(bool))); - connect(m_dlg->cbAppcomplete, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAppcompleteToggled(bool))); - connect(m_dlg->cbAutocomplete, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAutocompleteToggled(bool))); - connect(m_dlg->cbAutohistory, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotAutohistoryToggled(bool))); - connect(m_dlg->cbRunAsOther, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotChangeUid(bool))); - connect(m_dlg->leUsername, TQT_SIGNAL(lostFocus()), TQT_SLOT(updateAuthLabel())); - connect(m_dlg->cbRunInTerminal, TQT_SIGNAL(toggled(bool)), TQT_SLOT(slotTerminal(bool))); + connect(m_dlg->cbPriority, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotChangeScheduler(bool))); + connect(m_dlg->slPriority, TQ_SIGNAL(valueChanged(int)), TQ_SLOT(slotPriority(int))); + connect(m_dlg->cbRealtime, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotRealtime(bool))); + connect(m_dlg->cbAppcomplete, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAppcompleteToggled(bool))); + connect(m_dlg->cbAutocomplete, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAutocompleteToggled(bool))); + connect(m_dlg->cbAutohistory, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotAutohistoryToggled(bool))); + connect(m_dlg->cbRunAsOther, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotChangeUid(bool))); + connect(m_dlg->leUsername, TQ_SIGNAL(lostFocus()), TQ_SLOT(updateAuthLabel())); + connect(m_dlg->cbRunInTerminal, TQ_SIGNAL(toggled(bool)), TQ_SLOT(slotTerminal(bool))); m_dlg->slPriority->setValue(50); @@ -317,8 +317,8 @@ void Minicli::accept() if ( logout ) { - kapp->propagateSessionManager(); - kapp->requestShutDown(); + tdeApp->propagateSessionManager(); + tdeApp->requestShutDown(); } if ( lock ) { @@ -326,7 +326,7 @@ void Minicli::accept() int kicker_screen_number = tqt_xscreen(); if ( kicker_screen_number ) appname.sprintf("kdesktop-screen-%d", kicker_screen_number); - kapp->dcopClient()->send(appname, "KScreensaverIface", "lock()", TQString("")); + tdeApp->dcopClient()->send(appname, "KScreensaverIface", "lock()", TQString("")); } } @@ -375,7 +375,7 @@ void Minicli::reset() void Minicli::keyPressEvent( TQKeyEvent* e ) { - if ( e->key() == Qt::Key_Escape ) + if ( e->key() == TQt::Key_Escape ) { e->accept(); m_dlg->pbCancel->animateClick(); @@ -437,7 +437,7 @@ int Minicli::runCommand() kdDebug (1207) << "Use terminal ? " << useTerminal << endl; - if (!kapp->authorize("shell_access")) + if (!tdeApp->authorize("shell_access")) useTerminal = false; if( needsTDEsu() ) @@ -585,7 +585,7 @@ int Minicli::runCommand() // fall-through to shell case case KURIFilterData::SHELL: { - if (kapp->authorize("shell_access")) + if (tdeApp->authorize("shell_access")) { exec = cmd; @@ -651,7 +651,7 @@ void Minicli::notifyServiceStarted(KService::Ptr service) TQDataStream stream(params, IO_WriteOnly); stream << "minicli" << service->storageId(); kdDebug() << "minicli appLauncher dcop signal: " << service->storageId() << endl; - TDEApplication::kApplication()->dcopClient()->emitDCOPSignal("appLauncher", + tdeApp->dcopClient()->emitDCOPSignal("appLauncher", "serviceStartedByStorageId(TQString,TQString)", params); } @@ -877,7 +877,7 @@ void Minicli::setIcon () { TQBitmap mask = *icon.mask(); bitBlt( &mask, x, y, - overlay.mask() ? TQT_TQPIXMAP(const_cast<TQBitmap *>(overlay.mask())) : &overlay, + overlay.mask() ? const_cast<TQBitmap *>(overlay.mask()) : &overlay, 0, 0, overlay.width(), overlay.height(), overlay.mask() ? OrROP : SetROP ); icon.setMask(mask); @@ -1094,6 +1094,3 @@ void Minicli::fontChange( const TQFont & ) { adjustSize(); } - -// vim: set et ts=2 sts=2 sw=2: - diff --git a/kdesktop/minicli.h b/kdesktop/minicli.h index 9d92825c7..c3974a13b 100644 --- a/kdesktop/minicli.h +++ b/kdesktop/minicli.h @@ -46,7 +46,7 @@ class KURIFilterData; class Minicli : public KDialog { - Q_OBJECT + TQ_OBJECT public: Minicli( TQWidget *parent=0, const char *name=0 ); diff --git a/kdesktop/minicli_ui.ui b/kdesktop/minicli_ui.ui index 13d3b9736..93c95c8f0 100644 --- a/kdesktop/minicli_ui.ui +++ b/kdesktop/minicli_ui.ui @@ -640,21 +640,14 @@ </tabstops> <includes> <include location="global" impldecl="in declaration">fixx11h.h</include> + <include location="local" impldecl="in implementation">kcombobox.h</include> <include location="local" impldecl="in implementation">kdialog.h</include> <include location="local" impldecl="in implementation">kiconloader.h</include> - <include location="local" impldecl="in implementation">kpassdlg.h</include> - <include location="local" impldecl="in implementation">kcombobox.h</include> <include location="local" impldecl="in implementation">klineedit.h</include> + <include location="local" impldecl="in implementation">kpassdlg.h</include> <include location="local" impldecl="in implementation">kpushbutton.h</include> </includes> <pixmapfunction>BarIcon</pixmapfunction> <layoutdefaults spacing="3" margin="6"/> <layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/> -<includehints> - <includehint>kpushbutton.h</includehint> - <includehint>kpushbutton.h</includehint> - <includehint>kpushbutton.h</includehint> - <includehint>kpassdlg.h</includehint> - <includehint>kcombobox.h</includehint> -</includehints> </UI> diff --git a/kdesktop/pics/ksslogo.png b/kdesktop/pics/ksslogo.png Binary files differindex 466215dee..db984eedf 100644..100755 --- a/kdesktop/pics/ksslogo.png +++ b/kdesktop/pics/ksslogo.png diff --git a/kdesktop/pics/splash.png b/kdesktop/pics/splash.png Binary files differindex 1d5738697..52d76596f 100644..100755 --- a/kdesktop/pics/splash.png +++ b/kdesktop/pics/splash.png diff --git a/kdesktop/pixmapserver.cc b/kdesktop/pixmapserver.cpp index 7a480cdb6..b60942277 100644 --- a/kdesktop/pixmapserver.cc +++ b/kdesktop/pixmapserver.cpp @@ -1,4 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999 Geert Jansen <g.t.jansen@stud.tue.nl> @@ -39,7 +39,7 @@ KPixmapServer::KPixmapServer() : TQWidget(0L, "shpixmap comm window") { - kapp->installX11EventFilter(this); + tdeApp->installX11EventFilter(this); pixmap = XInternAtom(tqt_xdisplay(), "PIXMAP", false); } diff --git a/kdesktop/pixmapserver.h b/kdesktop/pixmapserver.h index 3084cd0a3..661d531ad 100644 --- a/kdesktop/pixmapserver.h +++ b/kdesktop/pixmapserver.h @@ -1,4 +1,4 @@ -/* vi: ts=8 sts=4 sw=4 +/* * * This file is part of the KDE project, module kdesktop. * Copyright (C) 1999 Geert Jansen <g.t.jansen@stud.tue.nl> @@ -24,7 +24,7 @@ struct KPixmapInode { - Qt::HANDLE handle; + TQt::HANDLE handle; Atom selection; }; @@ -37,7 +37,7 @@ struct KPixmapData struct TDESelectionInode { - Qt::HANDLE handle; + TQt::HANDLE handle; TQString name; }; @@ -50,7 +50,7 @@ struct TDESelectionInode */ class KPixmapServer: public TQWidget { - Q_OBJECT + TQ_OBJECT public: KPixmapServer(); diff --git a/kdesktop/startupid.cpp b/kdesktop/startupid.cpp index 4027b7e9a..2aeac904a 100644 --- a/kdesktop/startupid.cpp +++ b/kdesktop/startupid.cpp @@ -54,18 +54,18 @@ StartupId::StartupId( TQWidget* parent, const char* name ) XWindowAttributes attrs; XGetWindowAttributes( tqt_xdisplay(), tqt_xrootwin(), &attrs); XSelectInput( tqt_xdisplay(), tqt_xrootwin(), attrs.your_event_mask | SubstructureNotifyMask); - kapp->installX11EventFilter( this ); + tdeApp->installX11EventFilter( this ); } - connect( &update_timer, TQT_SIGNAL( timeout()), TQT_SLOT( update_startupid())); + connect( &update_timer, TQ_SIGNAL( timeout()), TQ_SLOT( update_startupid())); connect( &startup_info, - TQT_SIGNAL( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), - TQT_SLOT( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& ))); + TQ_SIGNAL( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), + TQ_SLOT( gotNewStartup( const TDEStartupInfoId&, const TDEStartupInfoData& ))); connect( &startup_info, - TQT_SIGNAL( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )), - TQT_SLOT( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& ))); + TQ_SIGNAL( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& )), + TQ_SLOT( gotStartupChange( const TDEStartupInfoId&, const TDEStartupInfoData& ))); connect( &startup_info, - TQT_SIGNAL( gotRemoveStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), - TQT_SLOT( gotRemoveStartup( const TDEStartupInfoId& ))); + TQ_SIGNAL( gotRemoveStartup( const TDEStartupInfoId&, const TDEStartupInfoData& )), + TQ_SLOT( gotRemoveStartup( const TDEStartupInfoId& ))); } StartupId::~StartupId() @@ -129,10 +129,10 @@ bool StartupId::x11Event( XEvent* e ) if( startups.count() == 0 ) start_startupid( KDE_STARTUP_ICON ); // 60(?) sec timeout - shouldn't be hopefully needed anyway, ksmserver should have it too - TQTimer::singleShot( 60000, this, TQT_SLOT( finishKDEStartup())); + TQTimer::singleShot( 60000, this, TQ_SLOT( finishKDEStartup())); } else if( strcmp( s, "session ready" ) == 0 && kde_startup_status < StartupDone ) - TQTimer::singleShot( 2000, this, TQT_SLOT( finishKDEStartup())); + TQTimer::singleShot( 2000, this, TQ_SLOT( finishKDEStartup())); } return false; } @@ -140,7 +140,7 @@ bool StartupId::x11Event( XEvent* e ) void StartupId::finishKDEStartup() { kde_startup_status = StartupDone; - kapp->removeX11EventFilter( this ); + tdeApp->removeX11EventFilter( this ); if( startups.count() == 0 ) stop_startupid(); } @@ -176,7 +176,7 @@ void StartupId::start_startupid( const TQString& icon_P ) { const TQColor startup_colors[ StartupId::NUM_BLINKING_PIXMAPS ] - = { Qt::black, Qt::darkGray, Qt::lightGray, Qt::white, Qt::white }; + = { TQt::black, TQt::darkGray, TQt::lightGray, TQt::white, TQt::white }; TQPixmap icon_pixmap = TDEGlobal::iconLoader()->loadIcon( icon_P, TDEIcon::Small, 0, diff --git a/kdesktop/startupid.h b/kdesktop/startupid.h index 893d0b8db..27345d598 100644 --- a/kdesktop/startupid.h +++ b/kdesktop/startupid.h @@ -34,7 +34,7 @@ class TQStyle; class StartupId : public TQWidget { - Q_OBJECT + TQ_OBJECT public: StartupId( TQWidget* parent = 0, const char* name = 0 ); virtual ~StartupId(); diff --git a/kdesktop/tdefileividesktop.cpp b/kdesktop/tdefileividesktop.cpp index bf9aa074c..464b5490d 100644 --- a/kdesktop/tdefileividesktop.cpp +++ b/kdesktop/tdefileividesktop.cpp @@ -144,10 +144,10 @@ void KFileIVIDesktop::drawShadowedText( TQPainter *p, const TQColorGroup &cg ) int textX; if (drawRoundedRect == true) - textX = textRect( FALSE ).x() + 4; + textX = textRect( false ).x() + 4; else - textX = textRect( FALSE ).x() + 2; - int textY = textRect( FALSE ).y(); + textX = textRect( false ).x() + 2; + int textY = textRect( false ).y(); int align = ((TDEIconView *) iconView())->itemTextPos() == TQIconView::Bottom ? AlignHCenter : AlignAuto; // FIXME @@ -222,11 +222,11 @@ TQImage *KFileIVIDesktop::buildShadow( TQPainter *p, const int align, TQPainter pixPainter; int spread = shadowThickness(); - TQPixmap textPixmap(textRect( FALSE ).width() + spread * 2 + 2, - textRect( FALSE ).height() + spread * 2 + 2); + TQPixmap textPixmap(textRect( false ).width() + spread * 2 + 2, + textRect( false ).height() + spread * 2 + 2); textPixmap.fill(TQColor(0,0,0)); - textPixmap.setMask( textPixmap.createHeuristicMask(TRUE) ); + textPixmap.setMask( textPixmap.createHeuristicMask(true) ); pixPainter.begin(&textPixmap); pixPainter.setPen(white); // get the pen from the root painter diff --git a/kdesktop/tdefileividesktop.h b/kdesktop/tdefileividesktop.h index 46f77f636..0434a706e 100644 --- a/kdesktop/tdefileividesktop.h +++ b/kdesktop/tdefileividesktop.h @@ -33,7 +33,7 @@ /* * The dither flags used to display the shadow image */ -#define DITHER_FLAGS (Qt::DiffuseAlphaDither | Qt::ColorOnly | Qt::AvoidDither) +#define DITHER_FLAGS (TQt::DiffuseAlphaDither | TQt::ColorOnly | TQt::AvoidDither) class TQFont; diff --git a/kdesktop/xautolock.cc b/kdesktop/xautolock.cpp index 3c7e62670..95de8f3d6 100644 --- a/kdesktop/xautolock.cc +++ b/kdesktop/xautolock.cpp @@ -71,7 +71,7 @@ XAutoLock::XAutoLock() #endif if( !xautolock_useXidle && !xautolock_useMit ) { - kapp->installX11EventFilter( this ); + tdeApp->installX11EventFilter( this ); int (*oldHandler)(Display *, XErrorEvent *); oldHandler = XSetErrorHandler(catchFalseAlarms); XSync(tqt_xdisplay(), False ); diff --git a/kdesktop/xautolock.h b/kdesktop/xautolock.h index 5684ce6ef..a30405339 100644 --- a/kdesktop/xautolock.h +++ b/kdesktop/xautolock.h @@ -19,7 +19,7 @@ // class XAutoLock : public TQWidget { - Q_OBJECT + TQ_OBJECT public: XAutoLock(); ~XAutoLock(); |