summaryrefslogtreecommitdiffstats
path: root/kdesktop
diff options
context:
space:
mode:
Diffstat (limited to 'kdesktop')
-rw-r--r--kdesktop/CMakeL10n.txt9
-rw-r--r--kdesktop/CMakeLists.txt38
-rw-r--r--kdesktop/DESIGN45
-rw-r--r--kdesktop/KScreensaverIface.h18
-rw-r--r--kdesktop/Makefile.am18
-rw-r--r--kdesktop/bgmanager.cpp (renamed from kdesktop/bgmanager.cc)55
-rw-r--r--kdesktop/bgmanager.h6
-rw-r--r--kdesktop/desktop.cpp (renamed from kdesktop/desktop.cc)166
-rw-r--r--kdesktop/desktop.h8
-rw-r--r--kdesktop/init.cpp (renamed from kdesktop/init.cc)18
-rw-r--r--kdesktop/init/CMakeL10n.txt15
-rw-r--r--kdesktop/init/CMakeLists.txt21
-rw-r--r--kdesktop/init/Home.desktop163
-rw-r--r--kdesktop/init/My_Computer8
-rw-r--r--kdesktop/init/My_Documents63
-rw-r--r--kdesktop/init/My_Network_Places73
-rw-r--r--kdesktop/init/Printers79
-rw-r--r--kdesktop/init/System.desktop146
-rw-r--r--kdesktop/init/Templates/CDROM-Device.desktop81
-rw-r--r--kdesktop/init/Templates/CDWRITER-Device.desktop81
-rw-r--r--kdesktop/init/Templates/CMakeLists.txt26
-rw-r--r--kdesktop/init/Templates/DVDROM-Device.desktop81
-rw-r--r--kdesktop/init/Templates/Directory.desktop140
-rw-r--r--kdesktop/init/Templates/Floppy.desktop65
-rw-r--r--kdesktop/init/Templates/HTMLFile.desktop142
-rw-r--r--kdesktop/init/Templates/HTMLFile.html2
-rw-r--r--kdesktop/init/Templates/TextFile.desktop142
-rw-r--r--kdesktop/init/Templates/ZIP-Device.desktop81
-rw-r--r--kdesktop/init/Templates/linkCAMERA.desktop144
-rw-r--r--kdesktop/init/Templates/linkCDROM.desktop144
-rw-r--r--kdesktop/init/Templates/linkCDWRITER.desktop146
-rw-r--r--kdesktop/init/Templates/linkDVDROM.desktop144
-rw-r--r--kdesktop/init/Templates/linkFloppy.desktop152
-rw-r--r--kdesktop/init/Templates/linkHD.desktop151
-rw-r--r--kdesktop/init/Templates/linkMO.desktop144
-rw-r--r--kdesktop/init/Templates/linkNFS.desktop85
-rw-r--r--kdesktop/init/Templates/linkProgram.desktop147
-rw-r--r--kdesktop/init/Templates/linkURL.desktop147
-rw-r--r--kdesktop/init/Templates/linkZIP.desktop144
-rw-r--r--kdesktop/init/Trash86
-rw-r--r--kdesktop/init/Web_Browser35
-rw-r--r--kdesktop/init/directory.autostart65
-rw-r--r--kdesktop/init/directory.desktop76
-rw-r--r--kdesktop/init/directory.templates75
-rw-r--r--kdesktop/kcustommenu.cpp (renamed from kdesktop/kcustommenu.cc)4
-rw-r--r--kdesktop/kcustommenu.h2
-rw-r--r--kdesktop/kdesktop.desktop.cmake81
-rw-r--r--kdesktop/kdesktop.kcfg36
-rw-r--r--kdesktop/kdesktopSetAsBackground.desktop234
-rw-r--r--kdesktop/kdesktopapp.cpp8
-rw-r--r--kdesktop/kdesktopapp.h12
-rw-r--r--kdesktop/kdesktopbindings.cpp53
-rw-r--r--kdesktop/kdesktopshadowsettings.h2
-rw-r--r--kdesktop/kdiconview.cpp (renamed from kdesktop/kdiconview.cc)231
-rw-r--r--kdesktop/kdiconview.h15
-rw-r--r--kdesktop/krootwm.cpp (renamed from kdesktop/krootwm.cc)172
-rw-r--r--kdesktop/krootwm.h4
-rw-r--r--kdesktop/kwebdesktop/CMakeLists.txt6
-rw-r--r--kdesktop/kwebdesktop/kwebdesktop.cpp22
-rw-r--r--kdesktop/kwebdesktop/kwebdesktop.desktop74
-rw-r--r--kdesktop/kwebdesktop/kwebdesktop.h6
-rw-r--r--kdesktop/kwebdesktop/kwebdesktop.kcfg2
-rw-r--r--kdesktop/kxdglauncher.cpp188
-rw-r--r--kdesktop/kxdglauncher.h25
-rw-r--r--kdesktop/lock/CMakeLists.txt8
-rw-r--r--kdesktop/lock/Makefile.am2
-rw-r--r--kdesktop/lock/autologout.cpp (renamed from kdesktop/lock/autologout.cc)6
-rw-r--r--kdesktop/lock/autologout.h2
-rw-r--r--kdesktop/lock/infodlg.cpp (renamed from kdesktop/lock/infodlg.cc)6
-rw-r--r--kdesktop/lock/infodlg.h2
-rw-r--r--kdesktop/lock/lockdlg.cpp (renamed from kdesktop/lock/lockdlg.cc)95
-rw-r--r--kdesktop/lock/lockdlg.h2
-rw-r--r--kdesktop/lock/lockprocess.cpp (renamed from kdesktop/lock/lockprocess.cc)337
-rw-r--r--kdesktop/lock/lockprocess.h20
-rw-r--r--kdesktop/lock/main.cpp (renamed from kdesktop/lock/main.cc)142
-rw-r--r--kdesktop/lock/main.h4
-rw-r--r--kdesktop/lock/querydlg.cpp (renamed from kdesktop/lock/querydlg.cc)8
-rw-r--r--kdesktop/lock/querydlg.h2
-rw-r--r--kdesktop/lock/sakdlg.cpp (renamed from kdesktop/lock/sakdlg.cc)6
-rw-r--r--kdesktop/lock/sakdlg.h2
-rw-r--r--kdesktop/lock/securedlg.cpp (renamed from kdesktop/lock/securedlg.cc)12
-rw-r--r--kdesktop/lock/securedlg.h2
-rw-r--r--kdesktop/lockeng.cc1004
-rw-r--r--kdesktop/lockeng.cpp1049
-rw-r--r--kdesktop/lockeng.h169
-rw-r--r--kdesktop/main.cpp (renamed from kdesktop/main.cc)36
-rw-r--r--kdesktop/minicli.cpp69
-rw-r--r--kdesktop/minicli.h2
-rw-r--r--kdesktop/minicli_ui.ui11
-rw-r--r--kdesktop/patterns/CMakeLists.txt26
-rw-r--r--kdesktop/patterns/fish.desktop71
-rw-r--r--kdesktop/patterns/flowers.desktop76
-rw-r--r--kdesktop/patterns/night-rock.desktop72
-rw-r--r--kdesktop/patterns/pavement.desktop72
-rw-r--r--kdesktop/patterns/rattan.desktop37
-rw-r--r--kdesktop/patterns/stonewall2.desktop73
-rw-r--r--kdesktop/patterns/triangles.desktop73
-rwxr-xr-x[-rw-r--r--]kdesktop/pics/ksslogo.pngbin5499 -> 7098 bytes
-rwxr-xr-x[-rw-r--r--]kdesktop/pics/splash.pngbin108731 -> 118404 bytes
-rw-r--r--kdesktop/pixmapserver.cpp (renamed from kdesktop/pixmapserver.cc)4
-rw-r--r--kdesktop/pixmapserver.h8
-rw-r--r--kdesktop/programs/CMakeLists.txt7
-rw-r--r--kdesktop/programs/xearth.desktop75
-rw-r--r--kdesktop/programs/xglobe.desktop75
-rw-r--r--kdesktop/programs/xplanet.desktop76
-rw-r--r--kdesktop/startupid.cpp24
-rw-r--r--kdesktop/startupid.h2
-rw-r--r--kdesktop/tdefileividesktop.cpp12
-rw-r--r--kdesktop/tdefileividesktop.h2
-rw-r--r--kdesktop/xautolock.cpp (renamed from kdesktop/xautolock.cc)2
-rw-r--r--kdesktop/xautolock.h2
111 files changed, 2296 insertions, 6343 deletions
diff --git a/kdesktop/CMakeL10n.txt b/kdesktop/CMakeL10n.txt
index ed3027467..b5fc87470 100644
--- a/kdesktop/CMakeL10n.txt
+++ b/kdesktop/CMakeL10n.txt
@@ -1,3 +1,12 @@
##### create translation templates ##############
tde_l10n_create_template( "kdesktop" )
+
+tde_l10n_create_template(
+ CATALOG "desktop_files/kdesktop-desktops/"
+ SOURCES kdesktop.desktop.cmake *.desktop
+ EXCLUDES "init/"
+ DESTINATION "${CMAKE_SOURCE_DIR}/translations"
+)
+
+tde_l10n_auto_add_subdirectories()
diff --git a/kdesktop/CMakeLists.txt b/kdesktop/CMakeLists.txt
index c8fdabf36..c65986368 100644
--- a/kdesktop/CMakeLists.txt
+++ b/kdesktop/CMakeLists.txt
@@ -52,11 +52,20 @@ install( FILES
##### other data ################################
-configure_file( kdesktop.desktop.cmake kdesktop.desktop @ONLY )
+tde_create_translated_desktop(
+ SOURCE kdesktop.desktop.cmake
+ DESTINATION ${AUTOSTART_INSTALL_DIR}
+ PO_DIR kdesktop-desktops
+)
-install( FILES ${CMAKE_CURRENT_BINARY_DIR}/kdesktop.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} )
install( FILES kdesktop_custom_menu1 kdesktop_custom_menu2 DESTINATION ${CONFIG_INSTALL_DIR} )
-install( FILES kdesktopSetAsBackground.desktop DESTINATION ${DATA_INSTALL_DIR}/konqueror/servicemenus )
+
+tde_create_translated_desktop(
+ SOURCE kdesktopSetAsBackground.desktop
+ DESTINATION ${DATA_INSTALL_DIR}/konqueror/servicemenus
+ PO_DIR kdesktop-desktops
+)
+
install( FILES kdesktop.kcfg tdelaunch.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
@@ -69,25 +78,16 @@ tde_add_executable( kcheckrunning
)
-##### kxdglauncher (executable) #################
-
-tde_add_executable( kxdglauncher
- SOURCES kxdglauncher.cpp
- LINK tdeutils-shared
- DESTINATION ${BIN_INSTALL_DIR}
-)
-
-
##### 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
- ${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 5da121d19..b2d4c2b2c 100644
--- a/kdesktop/Makefile.am
+++ b/kdesktop/Makefile.am
@@ -8,7 +8,7 @@ SUBDIRS = . lock pics patterns programs init kwebdesktop
####### Files
-bin_PROGRAMS = kcheckrunning kxdglauncher
+bin_PROGRAMS = kcheckrunning
lib_LTLIBRARIES =
tdeinit_LTLIBRARIES = kdesktop.la
noinst_LTLIBRARIES = libkdesktopsettings.la
@@ -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 \
@@ -31,16 +31,12 @@ include_HEADERS = KDesktopIface.h KScreensaverIface.h KBackgroundIface.h
noinst_HEADERS = desktop.h bgmanager.h krootwm.h \
xautolock.h lockeng.h init.h minicli.h \
pixmapserver.h startupid.h xautolock_c.h \
- kdesktopapp.h kxdglauncher.h
+ kdesktopapp.h
kcheckrunning_SOURCES = kcheckrunning.cpp
kcheckrunning_LDFLAGS = $(all_libraries)
kcheckrunning_LDADD = $(LIB_X11) $(LIB_TQT)
-kxdglauncher_SOURCES = kxdglauncher.cpp
-kxdglauncher_LDFLAGS = $(all_libraries)
-kxdglauncher_LDADD = $(LIB_TDEUTILS)
-
METASOURCES = AUTO
####### Build rules
@@ -63,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/init/CMakeL10n.txt b/kdesktop/init/CMakeL10n.txt
new file mode 100644
index 000000000..ffa23880a
--- /dev/null
+++ b/kdesktop/init/CMakeL10n.txt
@@ -0,0 +1,15 @@
+##### create translation templates ##############
+
+file(
+ GLOB_RECURSE _desktops
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/*
+)
+list( SORT _desktops )
+
+tde_l10n_create_template(
+ CATALOG "desktop_files/kdesktop-icons/"
+ SOURCES_DESKTOP ${_desktops}
+ EXCLUDES CMakeL10n.txt CMakeLists.txt Makefile.am
+ DESTINATION "${CMAKE_SOURCE_DIR}/translations"
+)
diff --git a/kdesktop/init/CMakeLists.txt b/kdesktop/init/CMakeLists.txt
index c771e6dfb..245f84b8e 100644
--- a/kdesktop/init/CMakeLists.txt
+++ b/kdesktop/init/CMakeLists.txt
@@ -11,14 +11,23 @@
add_subdirectory( Templates )
-install( FILES
+tde_create_translated_desktop(
+ SOURCE
directory.autostart directory.templates directory.desktop
- DESTINATION ${DATA_INSTALL_DIR}/kdesktop )
+ DESTINATION ${DATA_INSTALL_DIR}/kdesktop
+ PO_DIR kdesktop-icons
+)
-install( FILES
+tde_create_translated_desktop(
+ SOURCE
My_Computer My_Documents My_Network_Places Printers Trash Web_Browser
- DESTINATION ${DATA_INSTALL_DIR}/kdesktop/Desktop )
+ DESTINATION ${DATA_INSTALL_DIR}/kdesktop/Desktop
+ PO_DIR kdesktop-icons
+)
-install( FILES
+tde_create_translated_desktop(
+ SOURCE
Home.desktop System.desktop
- DESTINATION ${DATA_INSTALL_DIR}/kdesktop/DesktopLinks )
+ DESTINATION ${DATA_INSTALL_DIR}/kdesktop/DesktopLinks
+ PO_DIR kdesktop-icons
+)
diff --git a/kdesktop/init/Home.desktop b/kdesktop/init/Home.desktop
index 58f5302c8..96fffb472 100644
--- a/kdesktop/init/Home.desktop
+++ b/kdesktop/init/Home.desktop
@@ -1,165 +1,10 @@
[Desktop Entry]
Name=Home
-Name[af]=Tuiste
-Name[ar]=المنزل
-Name[az]=Başlanğıc
-Name[be]=Хатняя тэчка
-Name[bg]=Домашна директория
-Name[bn]=ব্যক্তিগত ফোল্ডার
-Name[br]=Er-gêr
-Name[bs]=Početak
-Name[ca]=Inici
-Name[cs]=Můj adresář
-Name[csb]=Dodóm
-Name[cy]=Cartref
-Name[da]=Hjem
-Name[de]=Persönlicher Ordner
-Name[el]=Προσωπικός φάκελος
-Name[eo]=Hejmo
-Name[es]=Personal
-Name[et]=Kodu
-Name[eu]=Etxea
-Name[fa]=آغازه
-Name[fi]=Koti
-Name[fr]=Dossier personnel
-Name[fy]=Thús
-Name[ga]=Baile
-Name[gl]=Persoal
-Name[he]=בית
-Name[hi]=घर
-Name[hr]=Početak
-Name[hu]=Saját könyvtár
-Name[id]=Rumah
-Name[is]=Heimasvæðið þitt
-Name[ja]=ホーム
-Name[ka]=სახლში
-Name[kk]=Мекен
-Name[km]=ផ្ទះ
-Name[ko]=홈
-Name[lo]=ພື້ນທີ່ສ່ວນຕົວ
-Name[lt]=Pradžia
-Name[lv]=Mājas
-Name[mk]=Дома
-Name[mn]=Гэр
-Name[ms]=Laman Utama
-Name[mt]=Direttorju Personali
-Name[nb]=Hjem
-Name[nds]=Tohuus
-Name[ne]=गृह
-Name[nn]=Heim
-Name[nso]=Gae
-Name[oc]=Inici
-Name[pa]=ਘਰ
-Name[pl]=Katalog domowy
-Name[pt]=Pasta Pessoal
-Name[pt_BR]=Pasta do Usuário
-Name[ro]=Acasă
-Name[ru]=Домой
-Name[rw]=Urugo
-Name[se]=Ruoktu
-Name[sk]=Domov
-Name[sl]=Domov
-Name[sr]=Домаће
-Name[sr@Latn]=Domaće
-Name[ss]=Ekhaya
-Name[sv]=Hem
-Name[ta]=தொடக்கம்
-Name[te]=ఇల్లు
-Name[tg]=Компютери Ман
-Name[th]=พื้นที่ส่วนตัว
-Name[tr]=Başlangıç
-Name[tt]=Anabit
-Name[uk]=Домівка
-Name[uz]=Uy
-Name[uz@cyrillic]=Уй
-Name[ven]=Haya
-Name[vi]=Nhà
-Name[wa]=Måjhon
-Name[xh]=Ikhaya
-Name[zh_CN]=主文件夹
-Name[zh_TW]=家目錄
-Name[zu]=Ikhaya
+
GenericName=Personal Files
-GenericName[af]=Persoonlike Lêers
-GenericName[ar]=الملفات الشخصية
-GenericName[az]=Şəxsi Fayllar
-GenericName[be]=Персанальныя файлы
-GenericName[bg]=Лични файлове
-GenericName[bn]=ব্যক্তিগত ফাইলসমূহ
-GenericName[br]=Restroù deoc'h
-GenericName[bs]=Osobne datoteke
-GenericName[ca]=Fitxers personals
-GenericName[cs]=Osobní soubory
-GenericName[csb]=Swòje lopczi
-GenericName[cy]=Ffeiliau Personol
-GenericName[da]=Personlige filer
-GenericName[de]=Eigene Dateien
-GenericName[el]=Προσωπικά αρχεία
-GenericName[eo]=Personaj dosieroj
-GenericName[es]=Archivos personales
-GenericName[et]=Isiklikud failid
-GenericName[eu]=Fitxategi pertsonalak
-GenericName[fa]=پرونده‌های شخصی
-GenericName[fi]=Omat tiedostot
-GenericName[fr]=Fichiers personnels
-GenericName[fy]=Persoanlike map
-GenericName[ga]=Comhaid Phearsanta
-GenericName[gl]=Ficheiros Persoais
-GenericName[he]=קבצים אישיים
-GenericName[hi]=निजी फ़ाइलें
-GenericName[hr]=Osobne datoteke
-GenericName[hu]=Személyes fájlok
-GenericName[id]=File Pribadi
-GenericName[is]=Skrárnar þínar
-GenericName[it]=File personali
-GenericName[ja]=個人のファイル
-GenericName[ka]=პირადი საქაღალდეები
-GenericName[kk]=Дербес файлдар
-GenericName[km]=ឯកសារ​ផ្ទាល់​ខ្លួន
-GenericName[ko]=개인적인 파일
-GenericName[lo]=ທີ່ເກັບແຟ້ມແລະເອກະສານສວ່ນຕົວຫລືອື່ນຯ
-GenericName[lt]=Asmeninės bylos
-GenericName[lv]=Personālie Faili
-GenericName[mk]=Лични датотеки
-GenericName[mn]=Өөрийн файлууд
-GenericName[ms]=Fail Peribadi
-GenericName[mt]=Fajls Personali
-GenericName[nb]=Personlige filer
-GenericName[nds]=De egen Dateien
-GenericName[ne]=व्यक्तिगत फाइल
-GenericName[nl]=Persoonlijke map
-GenericName[nn]=Personlege filer
-GenericName[nso]=Difaele tsa Botho
-GenericName[oc]=FiquièRs personals
-GenericName[pa]=ਨਿੱਜੀ ਫਾਇਲ਼ਾਂ
-GenericName[pl]=Pliki osobiste
-GenericName[pt]=Ficheiros Pessoais
-GenericName[pt_BR]=Arquivos Pessoais
-GenericName[ro]=Fișiere personale
-GenericName[ru]=Личные файлы
-GenericName[rw]=Amadosiye Yihariye
-GenericName[se]=Iežat fiillat
-GenericName[sk]=Osobné súbory
-GenericName[sl]=Osebne datoteke
-GenericName[sr]=Лични фајлови
-GenericName[sr@Latn]=Lični fajlovi
-GenericName[sv]=Personliga filer
-GenericName[ta]=சொந்த கோப்புகள்
-GenericName[te]=వ్యక్తిగత దస్త్రాలు
-GenericName[tg]=Файлҳои шахсӣ
-GenericName[th]=แฟ้มส่วนตัว
-GenericName[tr]=Kişisel Dosyalar
-GenericName[tt]=Şäxsi Biremnär
-GenericName[uk]=Особисті файли
-GenericName[uz]=Shaxsiy fayllar
-GenericName[uz@cyrillic]=Шахсий файллар
-GenericName[ven]=Dzifaela dza vhune
-GenericName[vi]=Tập tin Cá nhân
-GenericName[wa]=Fitchîs da vosse
-GenericName[xh]=Iifayile Zobuqu
-GenericName[zh_CN]=个人文件
-GenericName[zh_TW]=個人檔案
-GenericName[zu]=Amafayela Omuntu siqu
+
+Comment=Contains personal files
+
URL=$HOME
Icon=kfm_home
Type=Link
diff --git a/kdesktop/init/My_Computer b/kdesktop/init/My_Computer
index 9249f7041..358ee4675 100644
--- a/kdesktop/init/My_Computer
+++ b/kdesktop/init/My_Computer
@@ -3,12 +3,8 @@ Encoding=UTF-8
Icon=computer
Name=My Computer
-Name[cs]=Počítač
-Name[de]=Computer
-Name[es]=Mi PC
-Name[fr]=Mon Ordinateur
-Name[it]=Computer
-Name[ru]=Мой компьютер
+
+Comment=Access to storage media
OnlyShowIn=TDE;
Type=Link
diff --git a/kdesktop/init/My_Documents b/kdesktop/init/My_Documents
index d465deb64..774bdc281 100644
--- a/kdesktop/init/My_Documents
+++ b/kdesktop/init/My_Documents
@@ -1,67 +1,14 @@
[Desktop Entry]
Encoding=UTF-8
Icon=folder_wordprocessing
+
Name=My Documents
-Name[af]=Dokument Gids
-Name[ar]=مستنداتي
-Name[be]=Тэчка для дакументаў
-Name[bg]=Директория с документи
-Name[bn]=ডকমেনট ফোলডার
-Name[br]=Renkell an teulioù
-Name[bs]=Direktorij dokumenata
-Name[ca]=Carpeta de documents
-Name[cs]=Složka s dokumenty
-Name[csb]=Katalog dokùmentów
-Name[da]=Dokumentmappe
-Name[de]=Dokumente
-Name[en_US]=My Documents
-Name[eo]=Dokumenta dosierujo
-Name[es]=Carpeta de documentos
-Name[et]=Dokumentide kataloog
-Name[eu]=Dokumentuen karpeta
-Name[fa]=پوشۀ مستندات
-Name[fi]=Asiakirjakansio
-Name[fr]=Dossier des documents
-Name[fy]=Ofkeppele kamera
-Name[ga]=Fillteán na gCáipéisí
-Name[gl]=Cartafol de Documentos
-Name[hr]=Mapa dokumenata
-Name[hu]=Dokumentumok könyvtár
-Name[is]=Skjalamappa
-Name[it]=Cartella documenti
-Name[ja]=ドキュメントフォルダ
-Name[kk]=Құжаттар қапшығы
-Name[lt]=Dokumentų aplankai
-Name[nb]=Dokumentmappe
-Name[nds]=Dokmenten-Orner
-Name[nl]=Documenten
-Name[nn]=Dokumentmappe
-Name[pa]=ਦਸਤਾਵੇਜ਼ ਫੋਲਡਰ
-Name[pl]=Katalog dokumentów
-Name[pt]=Pasta de Documentos
-Name[pt_BR]=Pasta de Documentos
-Name[ro]=Folder documente
-Name[ru]=Документы
-Name[se]=Dokumeantamáhppa
-Name[sl]=Mapa z dokumenti
-Name[sr@Latn]=Fascikla sa dokumentima
-Name[sv]=Dokumentkatalog
-Name[tg]=Ҳуҷҷатҳо
-Name[tr]=Belgeler Dizini
-Name[uk]=Тека документів
-Name[uz]=Hujjatlar jildi
-Name[uz@cyrillic]=Ҳужжатлар жилди
-Name[vi]=Thư mục T� i liệu
-Name[wa]=Ridant documints
-Name[zh_CN]=文档文件夹
-Name[zh_TW]=文件目錄
-URL=$( kxdglauncher --getpath --xdgname DOCUMENTS )
+
+Comment=Contains personal documents
+
+URL=$XDG_DOCUMENTS_DIR
Type=Link
StartupNotify=true
-MimeType=
Terminal=false
-TerminalOptions=
-X-DCOP-ServiceType=
X-TDE-SubstituteUID=false
-X-TDE-Username=
OnlyShowIn=TDE;
diff --git a/kdesktop/init/My_Network_Places b/kdesktop/init/My_Network_Places
index 647db5a85..7c12cd387 100644
--- a/kdesktop/init/My_Network_Places
+++ b/kdesktop/init/My_Network_Places
@@ -1,76 +1,11 @@
[Desktop Entry]
Encoding=UTF-8
Icon=network
+
Name=My Network Places
-Name[af]=Afgeleë Plekke
-Name[ar]=أماكن بعيدة
-Name[be]=Аддаленыя месцы
-Name[bg]=Отдалечени директории
-Name[bn]=দূরবর্তী অবস্থান
-Name[br]=Lec'hiadurioù a-bell
-Name[bs]=Udaljena mjesta
-Name[ca]=Llocs remots
-Name[cs]=Vzdálená umístění
-Name[csb]=Daleczi place
-Name[da]=Eksterne steder
-Name[de]=Netzwerk
-Name[el]=Απομακρυσμένες τοποθεσίες
-Name[en_US]=My Network Places
-Name[eo]=Foraj Lokoj
-Name[es]=Lugares remotos
-Name[et]=Võrgukohad
-Name[eu]=Urruneko lekuak
-Name[fa]=جاهای دور
-Name[fi]=Etäkohteet
-Name[fr]=Emplacements distants
-Name[fy]=Eksterne plakken
-Name[ga]=Áiteanna Cianda
-Name[gl]=Comparticións Remotas
-Name[he]=מקומות מרוחקים
-Name[hi]=रिमोट स्थान
-Name[hr]=Udaljene lokacije
-Name[hu]=Hálózati helyek
-Name[is]=Fjarlægir staðir
-Name[it]=Indirizzi remoti
-Name[ja]=リモートの場所
-Name[ka]=დაშორებული ადგილები
-Name[kk]=Қашықтағы орындар
-Name[km]=កន្លែង​ពី​ចម្ងាយ
-Name[ko]=원격 접속
-Name[lt]=Nutolusios vietos
-Name[lv]=Attālinātās vietas
-Name[mk]=Оддалечени места
-Name[ms]=Tempat Jauh
-Name[nb]=Eksterne steder
-Name[nds]=Feern Steden
-Name[ne]=टाढाको स्थान
-Name[nl]=Externe plekken
-Name[nn]=Eksterne plassar
-Name[pa]=ਰਿਮੋਟ ਥਾਂ
-Name[pl]=Zdalne miejsca
-Name[pt]=Locais Remotos
-Name[pt_BR]=Locais Remotos
-Name[ro]=Locații distante
-Name[ru]=Сетевые ресурсы
-Name[rw]=Imyanya ya Kure
-Name[se]=Gáiddus báikkit
-Name[sk]=Vzdialené miesta
-Name[sl]=Oddaljena mesta
-Name[sr]=Удаљена места
-Name[sr@Latn]=Udaljena mesta
-Name[sv]=Fjärrplatser
-Name[ta]=தொலைதூர இடங்கள்
-Name[te]=సుదూరపు ప్రదేశాలు
-Name[th]=ทางไกล
-Name[tr]=Uzak Yerler
-Name[tt]=Çittäge Urınnar
-Name[uk]=Віддалені місця
-Name[uz]=Masofadagi joylar
-Name[uz@cyrillic]=Масофадаги жойлар
-Name[vi]=Địa chỉ trên mạng
-Name[wa]=Plaeces då lon
-Name[zh_CN]=远程位置
-Name[zh_TW]=遠端空間
+
+Comment=Access to network places and remote hosts
+
OnlyShowIn=TDE;
Type=Link
URL=remote:/
diff --git a/kdesktop/init/Printers b/kdesktop/init/Printers
index 91abc3e83..ec8fff92a 100644
--- a/kdesktop/init/Printers
+++ b/kdesktop/init/Printers
@@ -1,82 +1,11 @@
[Desktop Entry]
Encoding=UTF-8
Icon=kjobviewer
+
Name=Printers
-Name[af]=Drukkers
-Name[ar]=الطابعات
-Name[be]=Друкаркі
-Name[bg]=Принтери
-Name[bn]=মুদ্রণ
-Name[br]=Moullerezioù
-Name[bs]=Štampači
-Name[ca]=Impressores
-Name[cs]=Tiskárny
-Name[csb]=Drëkerë
-Name[cy]=Argraffyddion
-Name[da]=Printere
-Name[de]=Drucker
-Name[el]=Εκτυπωτές
-Name[en_US]=Printers
-Name[eo]=Printiloj
-Name[es]=Impresoras
-Name[et]=Printerid
-Name[eu]=Inprimagailuak
-Name[fa]=چاپگرها
-Name[fi]=Tulostimet
-Name[fr]=Imprimantes
-Name[ga]=Printéirí
-Name[gl]=Impresoras
-Name[he]=מדפסות
-Name[hi]=प्रिंटर
-Name[hr]=Pisači
-Name[hu]=Nyomtató
-Name[is]=Prentarar
-Name[it]=Stampanti
-Name[ja]=プリンタ
-Name[ka]=პრინტერები
-Name[kk]=Принтерлер
-Name[km]=ម៉ាស៊ីន​បោះពុម្ព
-Name[lo]=ເຄື່ອງພິມ - K
-Name[lt]=Spausdintuvai
-Name[lv]=Printeri
-Name[mk]=Печатачи
-Name[mn]=Хэвлэгч
-Name[ms]=Pencetak
-Name[nb]=Skrivere
-Name[nds]=Druckers
-Name[ne]=मुद्रक
-Name[nn]=Skrivarar
-Name[nso]=Digatisi
-Name[pa]=ਪਰਿੰਟਰ
-Name[pl]=Drukarki
-Name[pt]=Impressoras
-Name[pt_BR]=Impressoras
-Name[ro]=Imprimante
-Name[ru]=Принтеры
-Name[rw]=Mucapyi
-Name[se]=Čálánat
-Name[sk]=Tlačiarne
-Name[sl]=Tiskalniki
-Name[sr]=Штампачи
-Name[sr@Latn]=Štampači
-Name[ss]=Tishiceleli
-Name[sv]=Skrivare
-Name[ta]=அச்சியந்திரம்
-Name[te]=ప్రింటర్లు
-Name[tg]=Чопгарҳо
-Name[th]=เครื่องพิมพ์
-Name[tr]=Yazıcılar
-Name[tt]=Basaqlar
-Name[uk]=Принтери
-Name[uz]=Printerlar
-Name[uz@cyrillic]=Принтерлар
-Name[ven]=Dziphirinthara
-Name[vi]=Máy in
-Name[wa]=Sicrireces
-Name[xh]=Abashicileli
-Name[zh_CN]=打印机
-Name[zh_TW]=印表機
-Name[zu]=Abashicileli
+
+Comment=Manage print jobs
+
Terminal=false
Type=Application
Exec=kjobviewer --all --show %i %m
diff --git a/kdesktop/init/System.desktop b/kdesktop/init/System.desktop
index 7c9f2a988..63bf7aba7 100644
--- a/kdesktop/init/System.desktop
+++ b/kdesktop/init/System.desktop
@@ -1,148 +1,10 @@
[Desktop Entry]
Name=System
-Name[af]=Stelsel
-Name[ar]=النظام
-Name[az]=Sistem
-Name[be]=Сістэма
-Name[bg]=Система
-Name[bn]=সিস্টেম
-Name[br]=Reizhiad
-Name[bs]=Sistem
-Name[ca]=Sistema
-Name[cs]=Systém
-Name[csb]=Systema
-Name[cy]=Cysawd
-Name[el]=Σύστημα
-Name[eo]=Sistemo
-Name[es]=Sistema
-Name[et]=Süsteem
-Name[eu]=Sistema
-Name[fa]=سیستم
-Name[fi]=Järjestelmä
-Name[fo]=Kervi
-Name[fr]=Système
-Name[fy]=Systeem
-Name[ga]=Córas
-Name[gl]=Sistema
-Name[he]=מערכת
-Name[hi]=तंत्र
-Name[hr]=Sustav
-Name[hu]=Rendszer
-Name[id]=Sistem
-Name[is]=Kerfi
-Name[it]=Sistema
-Name[ja]=システム
-Name[ka]=სისტემა
-Name[kk]=Жүйелік
-Name[km]=ប្រព័ន្ធ
-Name[ko]=시스템
-Name[lo]=ຈັດການລະບົບ
-Name[lt]=Sistema
-Name[lv]=Sistēma
-Name[mk]=Систем
-Name[mn]=Систем
-Name[ms]=Sistem
-Name[mt]=Sistema
-Name[nds]=Systeem
-Name[ne]=प्रणाली
-Name[nl]=Systeem
-Name[oc]=Sistemo
-Name[pa]=ਸਿਸਟਮ
-Name[pt]=Sistema
-Name[pt_BR]=Sistema
-Name[ro]=Sistem
-Name[ru]=Система
-Name[rw]=Sisitemu
-Name[se]=Vuogádat
-Name[sk]=Systém
-Name[sl]=Sistem
-Name[sr]=Систем
-Name[sr@Latn]=Sistem
-Name[ss]=Umshini
-Name[ta]=அமைப்பு
-Name[te]=వ్యవస్థ
-Name[tg]=Система
-Name[th]=ระบบ
-Name[tr]=Sistem
-Name[tt]=Sistem
-Name[uk]=Система
-Name[uz]=Tizim
-Name[uz@cyrillic]=Тизим
-Name[ven]=Maitele
-Name[vi]=Hệ thống
-Name[wa]=Sistinme
-Name[xh]=Indlela esestyenziswayo
-Name[zh_CN]=系统
-Name[zh_TW]=系統
-Name[zu]=Isistimu
+
GenericName=System Locations
-GenericName[af]=Stelsel Liggings
-GenericName[ar]=مواقع النظام
-GenericName[be]=Сістэмныя месцазнаходжанні
-GenericName[bg]=Системни файлове
-GenericName[bn]=সিস্টেম অবস্থানসমূহ
-GenericName[bs]=Sistemske lokacije
-GenericName[ca]=Localitzacions del sistema
-GenericName[cs]=Systémová umístění
-GenericName[csb]=Systemòwé lokalizacëje
-GenericName[da]=System-steder
-GenericName[de]=Systemordner
-GenericName[el]=Τοποθεσίες συστήματος
-GenericName[eo]=Sistemaj lokoj
-GenericName[es]=Ubicaciones del sistema
-GenericName[et]=Süsteemi asukohad
-GenericName[eu]=Sistemaren kokapenak
-GenericName[fa]=محلهای سیستم
-GenericName[fi]=Järjestelmän sijainti
-GenericName[fr]=Emplacements systèmes
-GenericName[fy]=Systeemlokaasjes
-GenericName[gl]=Lugares do Sistema
-GenericName[he]=מיקומי מערכת
-GenericName[hi]=तंत्र स्थान
-GenericName[hr]=Sistemske lokacije
-GenericName[hu]=Rendszerkönyvtárak
-GenericName[is]=Staðsetningar kerfis
-GenericName[it]=Indirizzi di sistema
-GenericName[ja]=システム場所
-GenericName[ka]=სისტემური მისამართები
-GenericName[kk]=Жүйенің орналасуы
-GenericName[km]=ទីតាំង​ប្រព័ន្ធ
-GenericName[ko]=시스템 알림
-GenericName[lt]=Sistemos vietos
-GenericName[lv]=Sistēmas vietas
-GenericName[mk]=Системски локации
-GenericName[ms]=Lokasi Sistem
-GenericName[mt]=System Monitor
-GenericName[nb]=Systemplassar
-GenericName[nds]=Systeemsteden
-GenericName[ne]=प्रणाली स्थान
-GenericName[nl]=Systeemlocaties
-GenericName[nn]=Systemplassar
-GenericName[pa]=ਸਿਸਟਮ ਟਿਕਾਣੇ
-GenericName[pl]=Lokalizacje systemowe
-GenericName[pt]=Locais do Sistema
-GenericName[pt_BR]=Localizações no Sistema
-GenericName[ro]=Locații de sistem
-GenericName[ru]=Системные адреса
-GenericName[rw]=Ahantu ha Sisitemu
-GenericName[se]=Vuogádatbáikkit
-GenericName[sk]=Systémové lokácie
-GenericName[sl]=Sistemske lokacije
-GenericName[sr]=Системске локације
-GenericName[sr@Latn]=Sistemske lokacije
-GenericName[sv]=Systemplatser
-GenericName[ta]=அமைப்பு இடங்கள்
-GenericName[tg]=Ҷойгиршавиҳои система
-GenericName[th]=ที่ตั้งของระบบ
-GenericName[tr]=Sistem Konumları
-GenericName[tt]=Sistem Urınlaşuları
-GenericName[uk]=Системні адреси
-GenericName[uz]=Tizimga tegishli manzillar
-GenericName[uz@cyrillic]=Тизимга тегишли манзиллар
-GenericName[vi]=Đường dẫn Hệ thống
-GenericName[wa]=Plaeces do sistinme
-GenericName[zh_CN]=系统定位
-GenericName[zh_TW]=系統位置
+
+Comment=Access to system places
+
URL=system:/
Icon=computer
Type=Link
diff --git a/kdesktop/init/Templates/CDROM-Device.desktop b/kdesktop/init/Templates/CDROM-Device.desktop
index bb1aa92dd..eb228c909 100644
--- a/kdesktop/init/Templates/CDROM-Device.desktop
+++ b/kdesktop/init/Templates/CDROM-Device.desktop
@@ -7,86 +7,7 @@ Icon=media-optical-cdrom-mounted
UnmountIcon=media-optical-cdrom-unmounted
Actions=Eject;
X-TDE-Priority=TopLevel
+
[Desktop Action Eject]
Name=Eject
-Name[af]=Uitskiet
-Name[ar]=أقذف
-Name[az]=Çıxart
-Name[be]=Вызваліць
-Name[bg]=Изваждане
-Name[bn]=ইজেক্ট
-Name[br]=Stlepel
-Name[bs]=Izbaci
-Name[ca]=Expulsa
-Name[cs]=Vysunout
-Name[csb]=Wësënie
-Name[cy]=Allfwrw
-Name[da]=Skub ud
-Name[de]=Auswerfen
-Name[el]=Εξαγωγή
-Name[eo]=Eligo
-Name[es]=Expulsar
-Name[et]=Väljastamine
-Name[eu]=Egotzi
-Name[fa]=پس زدن
-Name[fi]=Poista
-Name[fr]=Éjecter
-Name[fy]=Utsmytknop
-Name[ga]=Díchuir
-Name[gl]=Expulsar
-Name[he]=הוצא
-Name[hi]=बाहर
-Name[hr]=Izbaci
-Name[hu]=Kidobás
-Name[is]=Henda út
-Name[it]=Espelli
-Name[ja]=取り出し
-Name[ka]=CD-ს ამოღება
-Name[kk]=Алып-шығару
-Name[km]=ច្រាន​ចេញ
-Name[ko]=꺼내기
-Name[lo]=ເອົາແຜ່ນອອກ
-Name[lt]=Išmesti
-Name[lv]=Izņemt
-Name[mk]=Извади
-Name[mn]=Гаргах
-Name[ms]=Lenting
-Name[mt]=Iftaħ
-Name[nb]=Løs ut
-Name[nds]=Rutsmieten
-Name[ne]=निकाल्नुहोस्
-Name[nl]=Uitwerpen
-Name[nn]=Løys ut
-Name[nso]=Ntsha
-Name[oc]=Expulsa
-Name[pa]=ਬਾਹਰ ਕੱਢੋ
-Name[pl]=Wysuń
-Name[pt]=Ejectar
-Name[pt_BR]=Ejetar
-Name[ro]=Ejectează
-Name[ru]=Извлечь CD
-Name[rw]=Gusohora
-Name[se]=Bálkes olggos
-Name[sk]=Vysunúť
-Name[sl]=Izvrzi
-Name[sr]=Избаци
-Name[sr@Latn]=Izbaci
-Name[ss]=Khafuna
-Name[sv]=Mata ut
-Name[ta]=வெளித்தள்
-Name[te]=ఎజెక్ట్
-Name[tg]=Ихроҷ
-Name[th]=เอาแผ่นออก
-Name[tr]=Çıkart
-Name[tt]=Çığar
-Name[uk]=Виштовхнути
-Name[uz]=Chiqarish
-Name[uz@cyrillic]=Чиқариш
-Name[ven]=Bvisa
-Name[vi]=Đẩy đĩa ra
-Name[wa]=Fé rexhe
-Name[xh]=Khuphela ngaphandle
-Name[zh_CN]=弹出
-Name[zh_TW]=退出
-Name[zu]=Khipha
Exec=tdeeject %v
diff --git a/kdesktop/init/Templates/CDWRITER-Device.desktop b/kdesktop/init/Templates/CDWRITER-Device.desktop
index d802d8dec..0b2b336ca 100644
--- a/kdesktop/init/Templates/CDWRITER-Device.desktop
+++ b/kdesktop/init/Templates/CDWRITER-Device.desktop
@@ -7,86 +7,7 @@ Icon=cd-rw-mounted
UnmountIcon=cd-rw-unmounted
Actions=Eject;
X-TDE-Priority=TopLevel
+
[Desktop Action Eject]
Name=Eject
-Name[af]=Uitskiet
-Name[ar]=أقذف
-Name[az]=Çıxart
-Name[be]=Вызваліць
-Name[bg]=Изваждане
-Name[bn]=ইজেক্ট
-Name[br]=Stlepel
-Name[bs]=Izbaci
-Name[ca]=Expulsa
-Name[cs]=Vysunout
-Name[csb]=Wësënie
-Name[cy]=Allfwrw
-Name[da]=Skub ud
-Name[de]=Auswerfen
-Name[el]=Εξαγωγή
-Name[eo]=Eligo
-Name[es]=Expulsar
-Name[et]=Väljastamine
-Name[eu]=Egotzi
-Name[fa]=پس زدن
-Name[fi]=Poista
-Name[fr]=Éjecter
-Name[fy]=Utsmytknop
-Name[ga]=Díchuir
-Name[gl]=Expulsar
-Name[he]=הוצא
-Name[hi]=बाहर
-Name[hr]=Izbaci
-Name[hu]=Kidobás
-Name[is]=Henda út
-Name[it]=Espelli
-Name[ja]=取り出し
-Name[ka]=CD-ს ამოღება
-Name[kk]=Алып-шығару
-Name[km]=ច្រាន​ចេញ
-Name[ko]=꺼내기
-Name[lo]=ເອົາແຜ່ນອອກ
-Name[lt]=Išmesti
-Name[lv]=Izņemt
-Name[mk]=Извади
-Name[mn]=Гаргах
-Name[ms]=Lenting
-Name[mt]=Iftaħ
-Name[nb]=Løs ut
-Name[nds]=Rutsmieten
-Name[ne]=निकाल्नुहोस्
-Name[nl]=Uitwerpen
-Name[nn]=Løys ut
-Name[nso]=Ntsha
-Name[oc]=Expulsa
-Name[pa]=ਬਾਹਰ ਕੱਢੋ
-Name[pl]=Wysuń
-Name[pt]=Ejectar
-Name[pt_BR]=Ejetar
-Name[ro]=Ejectează
-Name[ru]=Извлечь CD
-Name[rw]=Gusohora
-Name[se]=Bálkes olggos
-Name[sk]=Vysunúť
-Name[sl]=Izvrzi
-Name[sr]=Избаци
-Name[sr@Latn]=Izbaci
-Name[ss]=Khafuna
-Name[sv]=Mata ut
-Name[ta]=வெளித்தள்
-Name[te]=ఎజెక్ట్
-Name[tg]=Ихроҷ
-Name[th]=เอาแผ่นออก
-Name[tr]=Çıkart
-Name[tt]=Çığar
-Name[uk]=Виштовхнути
-Name[uz]=Chiqarish
-Name[uz@cyrillic]=Чиқариш
-Name[ven]=Bvisa
-Name[vi]=Đẩy đĩa ra
-Name[wa]=Fé rexhe
-Name[xh]=Khuphela ngaphandle
-Name[zh_CN]=弹出
-Name[zh_TW]=退出
-Name[zu]=Khipha
Exec=tdeeject %v
diff --git a/kdesktop/init/Templates/CMakeLists.txt b/kdesktop/init/Templates/CMakeLists.txt
index 94a4ff5e0..e15dc3419 100644
--- a/kdesktop/init/Templates/CMakeLists.txt
+++ b/kdesktop/init/Templates/CMakeLists.txt
@@ -9,19 +9,29 @@
#
#################################################
-install( FILES
+tde_create_translated_desktop(
+ SOURCE
linkProgram.desktop linkURL.desktop linkFloppy.desktop
linkHD.desktop linkCDROM.desktop Directory.desktop
TextFile.desktop HTMLFile.desktop linkZIP.desktop
linkDVDROM.desktop linkCAMERA.desktop linkNFS.desktop
linkCDWRITER.desktop linkMO.desktop
- DESTINATION ${TEMPLATES_INSTALL_DIR} )
+ DESTINATION ${TEMPLATES_INSTALL_DIR}
+ PO_DIR kdesktop-icons
+)
-install( FILES
- Program.desktop URL.desktop Floppy.desktop HD.desktop
- CDROM-Device.desktop TextFile.txt HTMLFile.html
- ZIP-Device.desktop DVDROM-Device.desktop CAMERA-Device.desktop
- NFS.desktop CDWRITER-Device.desktop MO-Device.desktop
- DESTINATION ${TEMPLATES_INSTALL_DIR}/.source )
+tde_create_translated_desktop(
+ SOURCE
+ Program.desktop URL.desktop NFS.desktop Floppy.desktop HD.desktop
+ CDROM-Device.desktop CDWRITER-Device.desktop DVDROM-Device.desktop
+ ZIP-Device.desktop CAMERA-Device.desktop MO-Device.desktop
+ DESTINATION ${TEMPLATES_INSTALL_DIR}/.source
+ PO_DIR kdesktop-icons
+)
+
+install(
+ FILES TextFile.txt HTMLFile.html
+ DESTINATION ${TEMPLATES_INSTALL_DIR}/.source
+)
tde_install_empty_directory( ${TEMPLATES_INSTALL_DIR}/.source/emptydir )
diff --git a/kdesktop/init/Templates/DVDROM-Device.desktop b/kdesktop/init/Templates/DVDROM-Device.desktop
index f5e1e6d61..7ee55ac8d 100644
--- a/kdesktop/init/Templates/DVDROM-Device.desktop
+++ b/kdesktop/init/Templates/DVDROM-Device.desktop
@@ -7,86 +7,7 @@ Icon=media-optical-dvd-mounted
UnmountIcon=media-optical-dvd-unmounted
Actions=Eject;
X-TDE-Priority=TopLevel
+
[Desktop Action Eject]
Name=Eject
-Name[af]=Uitskiet
-Name[ar]=أقذف
-Name[az]=Çıxart
-Name[be]=Вызваліць
-Name[bg]=Изваждане
-Name[bn]=ইজেক্ট
-Name[br]=Stlepel
-Name[bs]=Izbaci
-Name[ca]=Expulsa
-Name[cs]=Vysunout
-Name[csb]=Wësënie
-Name[cy]=Allfwrw
-Name[da]=Skub ud
-Name[de]=Auswerfen
-Name[el]=Εξαγωγή
-Name[eo]=Eligo
-Name[es]=Expulsar
-Name[et]=Väljastamine
-Name[eu]=Egotzi
-Name[fa]=پس زدن
-Name[fi]=Poista
-Name[fr]=Éjecter
-Name[fy]=Utsmytknop
-Name[ga]=Díchuir
-Name[gl]=Expulsar
-Name[he]=הוצא
-Name[hi]=बाहर
-Name[hr]=Izbaci
-Name[hu]=Kidobás
-Name[is]=Henda út
-Name[it]=Espelli
-Name[ja]=取り出し
-Name[ka]=CD-ს ამოღება
-Name[kk]=Алып-шығару
-Name[km]=ច្រាន​ចេញ
-Name[ko]=꺼내기
-Name[lo]=ເອົາແຜ່ນອອກ
-Name[lt]=Išmesti
-Name[lv]=Izņemt
-Name[mk]=Извади
-Name[mn]=Гаргах
-Name[ms]=Lenting
-Name[mt]=Iftaħ
-Name[nb]=Løs ut
-Name[nds]=Rutsmieten
-Name[ne]=निकाल्नुहोस्
-Name[nl]=Uitwerpen
-Name[nn]=Løys ut
-Name[nso]=Ntsha
-Name[oc]=Expulsa
-Name[pa]=ਬਾਹਰ ਕੱਢੋ
-Name[pl]=Wysuń
-Name[pt]=Ejectar
-Name[pt_BR]=Ejetar
-Name[ro]=Ejectează
-Name[ru]=Извлечь CD
-Name[rw]=Gusohora
-Name[se]=Bálkes olggos
-Name[sk]=Vysunúť
-Name[sl]=Izvrzi
-Name[sr]=Избаци
-Name[sr@Latn]=Izbaci
-Name[ss]=Khafuna
-Name[sv]=Mata ut
-Name[ta]=வெளித்தள்
-Name[te]=ఎజెక్ట్
-Name[tg]=Ихроҷ
-Name[th]=เอาแผ่นออก
-Name[tr]=Çıkart
-Name[tt]=Çığar
-Name[uk]=Виштовхнути
-Name[uz]=Chiqarish
-Name[uz@cyrillic]=Чиқариш
-Name[ven]=Bvisa
-Name[vi]=Đẩy đĩa ra
-Name[wa]=Fé rexhe
-Name[xh]=Khuphela ngaphandle
-Name[zh_CN]=弹出
-Name[zh_TW]=退出
-Name[zu]=Khipha
Exec=tdeeject %v
diff --git a/kdesktop/init/Templates/Directory.desktop b/kdesktop/init/Templates/Directory.desktop
index 3ace5a6a4..567c0f32f 100644
--- a/kdesktop/init/Templates/Directory.desktop
+++ b/kdesktop/init/Templates/Directory.desktop
@@ -1,146 +1,6 @@
[Desktop Entry]
Name=Folder...
-Name[af]=Gids...
-Name[ar]=المجلد...
-Name[be]=Тэчка...
-Name[bg]=Директория...
-Name[bn]=ফোল্ডার...
-Name[br]=Renkell ...
-Name[bs]=Direktorij...
-Name[ca]=Carpeta...
-Name[cs]=Složka...
-Name[csb]=Katalog...
-Name[cy]=Plygell...
-Name[da]=Mappe...
-Name[de]=Ordner ...
-Name[el]=Φάκελος...
-Name[eo]=Dosierujo...
-Name[es]=Carpeta...
-Name[et]=Kataloog...
-Name[eu]=Karpeta...
-Name[fa]=پوشه...
-Name[fi]=Kansio...
-Name[fr]=Dossier...
-Name[fy]=Map...
-Name[ga]=Fillteán...
-Name[gl]=Cartafol...
-Name[he]=תיקייה...
-Name[hi]=फ़ोल्डर...
-Name[hr]=Mapa...
-Name[hu]=Könyvtár...
-Name[is]=Mappa...
-Name[it]=Cartella...
-Name[ja]=フォルダ...
-Name[ka]=საქაღალდე...
-Name[kk]=Қапшық...
-Name[km]=ថត...
-Name[ko]=폴더...
-Name[lt]=Aplankas...
-Name[lv]=Mape...
-Name[mk]=Папка...
-Name[mn]=Хавтас...
-Name[mt]=Direttorju...
-Name[nb]=Mappe …
-Name[nds]=Orner...
-Name[ne]=फोल्डर...
-Name[nl]=Map...
-Name[nn]=Mappe …
-Name[pa]=ਫੋਲਡਰ...
-Name[pl]=Katalog...
-Name[pt]=Pasta...
-Name[pt_BR]=Pasta...
-Name[ru]=Папку...
-Name[rw]=Ububiko...
-Name[se]=Máhppa …
-Name[sk]=Priečinok...
-Name[sl]=Mapa ...
-Name[sr]=Фасцикла...
-Name[sr@Latn]=Fascikla...
-Name[sv]=Katalog...
-Name[ta]=அடைவு...
-Name[tg]=Феҳрист...
-Name[th]=โฟลเดอร์...
-Name[tr]=Dizin...
-Name[tt]=Törgäk...
-Name[uk]=Тека...
-Name[uz]=Jild
-Name[uz@cyrillic]=Жилд
-Name[vi]=Thư mục...
-Name[wa]=Ridant...
-Name[zh_CN]=文件夹...
-Name[zh_TW]=資料夾...
Comment=Enter folder name:
-Comment[af]=Voer gidsnaam in:
-Comment[ar]=أدخل إسم المجلَد:
-Comment[be]=Вызначце назву тэчкі:
-Comment[bg]=Въведете името на директорията:
-Comment[bn]=ফোল্ডারের নাম লিখুন:
-Comment[br]=Roit un anv ar renkell :
-Comment[bs]=Unesite naziv direktorija:
-Comment[ca]=Entra el nom de la carpeta:
-Comment[cs]=Zadejte název složky:
-Comment[csb]=Wpiszë miono katalogù:
-Comment[cy]=Mewnosodwch enw'r plygell:
-Comment[da]=Indtast mappenavn:
-Comment[de]=Ordnernamen eingeben:
-Comment[el]=Δώστε το όνομα του φακέλου:
-Comment[eo]=Enigu novan dosierujonomon:
-Comment[es]=Introduzca el nombre de la carpeta:
-Comment[et]=Sisesta kataloogi nimi:
-Comment[eu]=Sartu karpetaren izena:
-Comment[fa]=نام پوشه را وارد کنید:
-Comment[fi]=Anna kansion nimi:
-Comment[fr]=Donnez le nom du dossier :
-Comment[fy]=Mapname ynfiere:
-Comment[ga]=Iontráil ainm an fhillteáin:
-Comment[gl]=Introduza o nome do cartafol:
-Comment[he]=הזן שם תיקייה:
-Comment[hi]=फ़ोल्डर नाम भरें:
-Comment[hr]=Unesite naziv mape:
-Comment[hu]=A könyvtár neve:
-Comment[is]=Sláðu inn möppunafn:
-Comment[it]=Immetti il nome della cartella:
-Comment[ja]=フォルダ名を入力してください:
-Comment[ka]=შეიყვანეთ საქაღალდის სახელი:
-Comment[kk]=Қапшықты келтіріңіз:
-Comment[km]=បញ្ចូល​ឈ្មោះ​ថត ៖
-Comment[ko]=폴더 이름을 입력하십시오:
-Comment[lt]=Įveskite aplanko vardą:
-Comment[lv]=Ievadiet mapes nosaukumu:
-Comment[mk]=Внесете го името на папката:
-Comment[mn]=Лавлахын нэрийг өг:
-Comment[ms]=Masukkan nama folder:
-Comment[mt]=Daħħal isem id-direttorju:
-Comment[nb]=Nytt mappenavn:
-Comment[nds]=Ornernaam ingeven:
-Comment[ne]=फोल्डर नाम प्रविष्ट गर्नुहोस्:
-Comment[nl]=Mapnaam invoeren:
-Comment[nn]=Nytt mappenamn:
-Comment[pa]=ਫੋਲਡਰ ਨਾਂ ਦਿਓ:
-Comment[pl]=Podaj nazwę katalogu:
-Comment[pt]=Indique o nome da pasta:
-Comment[pt_BR]=Digite o nome da pasta:
-Comment[ro]=Introduceți numele folderului:
-Comment[ru]=Введите имя папки:
-Comment[rw]=Kwinjiza izina ry'ububiko:
-Comment[se]=Bija máhppanama:
-Comment[sk]=Zadajte meno priečinku:
-Comment[sl]=Vnesite ime mape:
-Comment[sr]=Унесите име фасцикле:
-Comment[sr@Latn]=Unesite ime fascikle:
-Comment[sv]=Ange katalognamn:
-Comment[ta]=அடைவின் பெயரை உள்ளிடு:
-Comment[tg]=Номи феҳристро ворид кунед:
-Comment[th]=เติมชื่อโฟลเดอร์:
-Comment[tr]=Dizin adını girin:
-Comment[tt]=Törgäk adın kert:
-Comment[uk]=Введіть назву теки:
-Comment[uz]=Jildning nomini kiriting:
-Comment[uz@cyrillic]=Жилднинг номини киритинг:
-Comment[vi]=Điền tên thư mục:
-Comment[wa]=Dinez l' no do ridant:
-Comment[zh_CN]=输入文件夹名称:
-Comment[zh_TW]=輸入目錄名稱:
Type=Link
URL=.source/emptydir
Icon=folder
diff --git a/kdesktop/init/Templates/Floppy.desktop b/kdesktop/init/Templates/Floppy.desktop
index 727ef666b..72c48de97 100644
--- a/kdesktop/init/Templates/Floppy.desktop
+++ b/kdesktop/init/Templates/Floppy.desktop
@@ -1,71 +1,6 @@
[Desktop Action Format]
Exec=kfloppy %v
Name=Format
-Name[af]=Formaat
-Name[ar]=الهيئة
-Name[be]=Фармат
-Name[bg]=Формат
-Name[bn]=ফরম্যাট
-Name[br]=Furmadiñ
-Name[cs]=Formát
-Name[csb]=Fòrmat
-Name[cy]=Fformat
-Name[de]=Formatieren
-Name[el]=Μορφοποίηση
-Name[eo]=Formato
-Name[es]=Formato
-Name[et]=Vorming
-Name[eu]=Formatua
-Name[fa]=قالب
-Name[fi]=Formatoi
-Name[fy]=Formattearje
-Name[ga]=Formáid
-Name[gl]=Formato
-Name[he]=אתחל
-Name[hi]=फार्मेट
-Name[hr]=Oblik
-Name[hu]=Formázás
-Name[is]=Snið
-Name[it]=Formatta
-Name[ja]=フォーマット
-Name[ka]=ფორმატი
-Name[kk]=Пішін
-Name[km]=ទ្រង់ទ្រាយ
-Name[ko]=포맷
-Name[lo]=ສູດຄະນິດສານ - K
-Name[lt]=Formatas
-Name[lv]=Formatēt
-Name[mk]=Формат
-Name[mn]=Хэлбэр
-Name[nds]=Formateren
-Name[ne]=ढाँचा
-Name[nl]=Formatteren
-Name[nso]=Thlolego
-Name[pa]=ਫਾਰਮਿਟ
-Name[pt]=Formatar
-Name[pt_BR]=Formato
-Name[ru]=Формат
-Name[rw]=Imiterere
-Name[se]=Formáhtta
-Name[sk]=Formát
-Name[sl]=Oblika
-Name[sr]=Формат
-Name[ss]=Sakhiwo
-Name[ta]=வடிவம்
-Name[te]=ఫార్మెట్
-Name[tg]=Андоза
-Name[th]=รูปแบบ
-Name[tr]=Biçim
-Name[uk]=Формат
-Name[uz]=Format qilish
-Name[uz@cyrillic]=Формат қилиш
-Name[ven]=Tshivhumbeo
-Name[vi]=Định dạng
-Name[wa]=Abwesner
-Name[xh]=Ifomati
-Name[zh_CN]=格式
-Name[zh_TW]=格式化
-Name[zu]=Isakhiwo
[Desktop Entry]
Actions=Format;
diff --git a/kdesktop/init/Templates/HTMLFile.desktop b/kdesktop/init/Templates/HTMLFile.desktop
index 8aa6a6ea7..e5618bbd4 100644
--- a/kdesktop/init/Templates/HTMLFile.desktop
+++ b/kdesktop/init/Templates/HTMLFile.desktop
@@ -1,148 +1,6 @@
[Desktop Entry]
Name=HTML File...
-Name[af]=HTML Lêer...
-Name[ar]=ملف لغة علامات النصّ الفائق...
-Name[be]=Файл HTML...
-Name[bg]=HTML файл...
-Name[bn]=HTML ফাইল...
-Name[br]=Restr HTML ...
-Name[bs]=HTML datoteka...
-Name[ca]=Fitxer HTML...
-Name[cs]=HTML soubor...
-Name[csb]=Lopk HTML...
-Name[cy]=Ffeil HTML...
-Name[da]=HTML-fil...
-Name[de]=HTML-Datei ...
-Name[el]=Αρχείο HTML...
-Name[eo]=HTML-dosiero...
-Name[es]=Archivo HTML...
-Name[et]=HTML-fail...
-Name[eu]=HTML fitxategia...
-Name[fa]=پروندۀ‌ زنگام...
-Name[fi]=HTML-tiedosto...
-Name[fr]=Fichier HTML...
-Name[fy]=HTML-triem.......
-Name[ga]=Comhad HTML...
-Name[gl]=Ficheiro HTML...
-Name[he]=קובץ HTML...
-Name[hi]=एचटीएमएल फ़ाइल...
-Name[hr]=HTML datoteka...
-Name[hu]=HTML-fájl...
-Name[is]=HTML skrá...
-Name[it]=File HTML...
-Name[ja]=HTML ファイル...
-Name[ka]=HTML ფაილი...
-Name[kk]=HTML файлы...
-Name[km]=ឯកសារ HTML...
-Name[ko]=HTML 파일
-Name[lt]=HTML byla...
-Name[lv]=HTML Fails...
-Name[mk]=HTML датотека...
-Name[mn]=HTML-Файл...
-Name[ms]=Fail HTML...
-Name[mt]=Fajl HTML...
-Name[nb]=HTML-fil …
-Name[nds]=HTML-Datei...
-Name[ne]=HTML फाइल...
-Name[nl]=HTML-bestand...
-Name[nn]=HTML-fil …
-Name[pa]=HTML ਫਾਇਲ...
-Name[pl]=Plik HTML...
-Name[pt]=Ficheiro HTML...
-Name[pt_BR]=Arquivo HTML...
-Name[ro]=Fișier HTML...
-Name[ru]=Страница HTML...
-Name[rw]=Idosiye HTML...
-Name[se]=HTML-fiila …
-Name[sk]=Súbor HTML...
-Name[sl]=Datoteka HTML ...
-Name[sr]=HTML фајл...
-Name[sr@Latn]=HTML fajl...
-Name[sv]=HTML-fil...
-Name[ta]=HTML கோப்பு...
-Name[te]=హెచ్ టి ఎం ఎల్ దస్త్రం...
-Name[tg]=Файли HTML...
-Name[th]=แฟ้ม HTML...
-Name[tr]=HTML Dosyası...
-Name[tt]=HTML Birem...
-Name[uk]=Файл HTML...
-Name[uz]=HTML-fayli...
-Name[uz@cyrillic]=HTML-файли...
-Name[vi]=Tập tin HTML...
-Name[wa]=Fitchî HTML...
-Name[zh_CN]=HTML 文件...
-Name[zh_TW]=HTML 檔案...
Comment=Enter HTML filename:
-Comment[af]=Voer HTML lêernaam in:
-Comment[ar]=أدخل إسم ملف لغة علامات النصّ الفائق:
-Comment[be]=Вызначце назву файла HTML:
-Comment[bg]=Въведете името на HTML файла:
-Comment[bn]=HTML ফাইলের নাম:
-Comment[br]=Roit un anv ar restr :
-Comment[bs]=Unesite ime HTML datoteke:
-Comment[ca]=Entra el nom del fitxer HTML:
-Comment[cs]=Zadejte název HTML souboru:
-Comment[csb]=Wpiszë miono lopkù HTML:
-Comment[da]=Indtast HTML-filnavn:
-Comment[de]=Name der HTML-Datei eingeben:
-Comment[el]=Δώστε το όνομα του αρχείου HTML:
-Comment[eo]=Enigu HTML-dosiernomon:
-Comment[es]=Introduzca el nombre del archivo HTML:
-Comment[et]=Sisesta HTML-faili nimi:
-Comment[eu]=Sartu HTML fitxategiaren izena:
-Comment[fa]=نام پروندۀ زنگام را وارد کنید:
-Comment[fi]=Anna HTML-tiedostonimi:
-Comment[fr]=Donnez le nom du fichier HTML :
-Comment[fy]=Namme fan HTML-triem ynfiere:
-Comment[ga]=Iontráil ainm an chomhaid HTML:
-Comment[gl]=Introduza o nome do ficheiro HTML:
-Comment[he]=הזן שם לקובץ ה־HTML:
-Comment[hi]=एचटीएमएल फ़ाइल-नाम भरें:
-Comment[hr]=Unesite naziv HTML datoteke:
-Comment[hu]=A HTML-fájl neve:
-Comment[is]=Sláðu inn HTML skráarnafn:
-Comment[it]=Immetti nome file HTML:
-Comment[ja]=HTML ファイル名を入力:
-Comment[ka]=HTML ფაილის სახელი შეიყვანეთ:
-Comment[kk]=HTML файлын келтіріңіз:
-Comment[km]=បញ្ចូល​ឈ្មោះ​ឯកសារ HTML ៖
-Comment[ko]=HTML 파일 이름을 입력하십시오:
-Comment[lt]=Įveskite HTML bylos vardą:
-Comment[lv]=Ievadiet HTML faila nosaukumu:
-Comment[mk]=Внесете го името на HTML датотеката:
-Comment[ms]=Masukkan nama fail HTML:
-Comment[mt]=Ittajpja isem ta' fajl HTML:
-Comment[nb]=Skriv inn HTML-filnavn:
-Comment[nds]=Naam vun de HTML-Datei ingeven:
-Comment[ne]=HTML फाइलनाम प्रविष्ट गर्नुहोस्:
-Comment[nl]=Naam van HTML-bestand invoeren:
-Comment[nn]=Oppgje HTML-filnamn:
-Comment[pa]=HTML ਫਾਇਲ ਨਾਂ ਦਿਓ:
-Comment[pl]=Podaj nazwę pliku HTML:
-Comment[pt]=Indique o nome do ficheiro HTML:
-Comment[pt_BR]=Insira nome do arquivo HTML:
-Comment[ro]=Introduceți numele fișierului HTML:
-Comment[ru]=Введите имя страницы HTML:
-Comment[rw]=Kwinjiza izinadosiye HTML:
-Comment[se]=Bija HTML-fiilanama:
-Comment[sk]=Zadajte meno súboru HTML:
-Comment[sl]=Vnesite ime datoteke HTML:
-Comment[sr]=Унесите име HTML фајла:
-Comment[sr@Latn]=Unesite ime HTML fajla:
-Comment[sv]=Ange HTML-filnamn:
-Comment[ta]=HTML கோப்பு பெயரை உள்ளிடு:
-Comment[te]=హెచ్ టి ఎం ఎల్ దస్త్రం పేరును వ్రాయండి:
-Comment[tg]=Номи файли HTML-ро ворид кунед:
-Comment[th]=เติมชื่อแฟ้ม HTML:
-Comment[tr]=HTML dosyasını girin:
-Comment[tt]=HTML-birem adın kert:
-Comment[uk]=Введіть назву файла HTML:
-Comment[uz]=HTML-faylning nomini kiriting:
-Comment[uz@cyrillic]=HTML-файлнинг номини киритинг:
-Comment[vi]=Điền tên tập tin HTML:
-Comment[wa]=Dinez l' no do fitchî HTML:
-Comment[zh_CN]=输入 HTML 文件名:
-Comment[zh_TW]=輸入 HTML 檔案名稱:
Type=Link
URL=.source/HTMLFile.html
Icon=text-html
diff --git a/kdesktop/init/Templates/HTMLFile.html b/kdesktop/init/Templates/HTMLFile.html
index c217ab3fc..93f60ef75 100644
--- a/kdesktop/init/Templates/HTMLFile.html
+++ b/kdesktop/init/Templates/HTMLFile.html
@@ -5,4 +5,4 @@
<style></style>
</head>
<body></body>
-</html> \ No newline at end of file
+</html>
diff --git a/kdesktop/init/Templates/TextFile.desktop b/kdesktop/init/Templates/TextFile.desktop
index 5ca080129..edc9a40dc 100644
--- a/kdesktop/init/Templates/TextFile.desktop
+++ b/kdesktop/init/Templates/TextFile.desktop
@@ -1,148 +1,6 @@
[Desktop Entry]
Name=Text File...
-Name[af]=Teks Lêer...
-Name[ar]=ملف نصي...
-Name[be]=Тэкставы файл...
-Name[bg]=Текстов файл...
-Name[bn]=টেক্সট ফাইল...
-Name[br]=Restr skrid ...
-Name[bs]=Tekst datoteka...
-Name[ca]=Fitxer de text...
-Name[cs]=Textový soubor...
-Name[csb]=Tekstowi lopk...
-Name[cy]=Ffeil Testun...
-Name[da]=Tekstfil...
-Name[de]=Textdatei ...
-Name[el]=Αρχείο κειμένου...
-Name[eo]=Tekstdosiero...
-Name[es]=Archivo de texto...
-Name[et]=Tekstifail...
-Name[eu]=Testu fitxategia...
-Name[fa]=پروندۀ متنی...
-Name[fi]=Tekstitiedosto...
-Name[fr]=Fichier texte...
-Name[fy]=Teksttriem......
-Name[ga]=Téacschomhad...
-Name[gl]=Ficheiro de Texto...
-Name[he]=קובץ טקסט...
-Name[hi]=पाठ फ़ाइल...
-Name[hr]=Tekstualna datoteka...
-Name[hu]=Szöveges fájl...
-Name[is]=Textaskrá...
-Name[it]=File di testo...
-Name[ja]=テキストファイル...
-Name[ka]=ტექსტური ფაილი...
-Name[kk]=Мәтін файлы...
-Name[km]=ឯកសារ​អត្ថបទ...
-Name[ko]=텍스트 파일...
-Name[lt]=Teksto byla...
-Name[lv]=Teksta Fails...
-Name[mk]=Текстуална датотека...
-Name[mn]=Текст файл...
-Name[ms]=Fail Teks...
-Name[mt]=Fajl ta' test...
-Name[nb]=Tekstfil …
-Name[nds]=Textdatei...
-Name[ne]=पाठ फाइल...
-Name[nl]=Tekstbestand...
-Name[nn]=Tekstfil …
-Name[pa]=ਪਾਠ ਫਾਇਲ...
-Name[pl]=Plik tekstowy...
-Name[pt]=Ficheiro de Texto...
-Name[pt_BR]=Arquivo Texto...
-Name[ro]=Fișier text...
-Name[ru]=Текстовый файл...
-Name[rw]= Idosiye Mwandiko...
-Name[se]=Teakstafiila …
-Name[sk]=Textový súbor...
-Name[sl]=Besedilna datoteka ...
-Name[sr]=Текстуални фајл...
-Name[sr@Latn]=Tekstualni fajl...
-Name[sv]=Textfil...
-Name[ta]=உரைக் கோப்பு
-Name[te]=వచన దస్త్రం...
-Name[tg]=Файли матнӣ...
-Name[th]=แฟ้มข้อความ...
-Name[tr]=Metin Dosyası...
-Name[tt]=Mäten Bireme...
-Name[uk]=Текстовий файл...
-Name[uz]=Matn fayli...
-Name[uz@cyrillic]=Матн файли...
-Name[vi]=Tập tin Văn bản...
-Name[wa]=Fitchî tecse...
-Name[zh_CN]=文本文件...
-Name[zh_TW]=文字檔案...
Comment=Enter text filename:
-Comment[af]=Voer teks lêernaam in:
-Comment[ar]=أدخل اسم الملف النصي:
-Comment[be]=Вызначце назву тэкставага файла:
-Comment[bg]=Въведете име на текстовия файл:
-Comment[bn]=টেক্সট ফাইলের নাম:
-Comment[br]=Roit un anv ar restr skrid :
-Comment[bs]=Unesite ime tekst datoteke:
-Comment[ca]=Entra el nom del fitxer de text:
-Comment[cs]=Zadejte název textového souboru:
-Comment[csb]=Wpiszë miono tekstowégò lopkù:
-Comment[da]=Indtast tekstfilnavn:
-Comment[de]=Name der Textdatei eingeben:
-Comment[el]=Δώστε το όνομα του αρχείου κειμένου:
-Comment[eo]=Enigu la tekstodosieran nomon:
-Comment[es]=Introduzca el nombre del archivo de texto:
-Comment[et]=Sisesta tekstifaili nimi:
-Comment[eu]=Sartu testu fitxategiaren izena
-Comment[fa]=نام پروندۀ‌ متنی را وارد کنید:
-Comment[fi]=Anna tekstitiedoston nimi:
-Comment[fr]=Donnez le nom du fichier de texte :
-Comment[fy]=Namme fan teksttriem ynfiere:
-Comment[ga]=Iontráil ainm an téacschomhaid:
-Comment[gl]=Introduza o nome do ficheiro de texto:
-Comment[he]=הזן שם לקובץ הטקסט:
-Comment[hi]=पाठ फ़ाइल-नाम भरें:
-Comment[hr]=Upišite naziv tekstualne datoteke:
-Comment[hu]=A szöveges fájl neve:
-Comment[is]=Sláðu inn nafn á textaskrá:
-Comment[it]=Immetti nome file di testo:
-Comment[ja]=テキストファイル名を入力:
-Comment[ka]=შეიყვანეთ ტექსტური ფაილის სახელი:
-Comment[kk]=Мәтін файлын келтіріңіз:
-Comment[km]=បញ្ចូល​ឈ្មោះ​ឯកសារ​អត្ថបទ ៖
-Comment[ko]=텍스트 파일 이름을 입력하십시오:
-Comment[lt]=Įveskite teksto bylos vardą:
-Comment[lv]=Ievadiet teksta faila nosaukumu:
-Comment[mk]=Внесете го името на текстуалната датотека:
-Comment[ms]=Masukkan nama fail teks:
-Comment[mt]=Ittajpja isem ta' fajl b'test:
-Comment[nb]=Skriv inn navnet på tekstfila:
-Comment[nds]=Naam vun de Textdatei ingeven:
-Comment[ne]=पाठ फाइलनाम प्रविष्ट गर्नुहोस्:
-Comment[nl]=Naam van tekstbestand invoeren:
-Comment[nn]=Oppgje tekstfilnamn:
-Comment[pa]=ਪਾਠ ਫਾਇਲ ਨਾਂ ਦਿਓ:
-Comment[pl]=Podaj nazwę pliku tekstowego:
-Comment[pt]=Indique o nome do ficheiro de texto:
-Comment[pt_BR]=Insira nome do arquivo de texto:
-Comment[ro]=Introduceți numele fișierului text:
-Comment[ru]=Введите имя тестового файла:
-Comment[rw]=Kwinjiza izinadosiye mwandiko:
-Comment[se]=Bija teakstafiilanama:
-Comment[sk]=Zadajte meno textového súboru:
-Comment[sl]=Vnesite ime besedilne datoteke:
-Comment[sr]=Унесите име текстуалног фајла:
-Comment[sr@Latn]=Unesite ime tekstualnog fajla:
-Comment[sv]=Ange textfilnamn:
-Comment[ta]=உரை கோப்பு பெயரை உள்ளிடு:
-Comment[te]=వచన దస్త్రం పేరును వ్రాయండి:
-Comment[tg]=Номи файли матнро ворид кунед:
-Comment[th]=เติมชื่อแฟ้มข้อความ:
-Comment[tr]=Metin dosya adını girin:
-Comment[tt]=Mäten-birem adın kert:
-Comment[uk]=Введіть назву текстового файла:
-Comment[uz]=Matn faylining nomini kiriting:
-Comment[uz@cyrillic]=Матн файлининг номини киритинг:
-Comment[vi]=Điền tên tập tin văn bản:
-Comment[wa]=Dinez l' no do fitchî tecse:
-Comment[zh_CN]=输入文本文件名:
-Comment[zh_TW]=輸入純文字檔案名稱:
Type=Link
URL=.source/TextFile.txt
Icon=text-plain
diff --git a/kdesktop/init/Templates/ZIP-Device.desktop b/kdesktop/init/Templates/ZIP-Device.desktop
index 4ec2bbefd..4067456c6 100644
--- a/kdesktop/init/Templates/ZIP-Device.desktop
+++ b/kdesktop/init/Templates/ZIP-Device.desktop
@@ -7,86 +7,7 @@ Icon=media-floppy-zip-mounted
UnmountIcon=media-floppy-zip-unmounted
Actions=Eject;
X-TDE-Priority=TopLevel
+
[Desktop Action Eject]
Name=Eject
-Name[af]=Uitskiet
-Name[ar]=أقذف
-Name[az]=Çıxart
-Name[be]=Вызваліць
-Name[bg]=Изваждане
-Name[bn]=ইজেক্ট
-Name[br]=Stlepel
-Name[bs]=Izbaci
-Name[ca]=Expulsa
-Name[cs]=Vysunout
-Name[csb]=Wësënie
-Name[cy]=Allfwrw
-Name[da]=Skub ud
-Name[de]=Auswerfen
-Name[el]=Εξαγωγή
-Name[eo]=Eligo
-Name[es]=Expulsar
-Name[et]=Väljastamine
-Name[eu]=Egotzi
-Name[fa]=پس زدن
-Name[fi]=Poista
-Name[fr]=Éjecter
-Name[fy]=Utsmytknop
-Name[ga]=Díchuir
-Name[gl]=Expulsar
-Name[he]=הוצא
-Name[hi]=बाहर
-Name[hr]=Izbaci
-Name[hu]=Kidobás
-Name[is]=Henda út
-Name[it]=Espelli
-Name[ja]=取り出し
-Name[ka]=CD-ს ამოღება
-Name[kk]=Алып-шығару
-Name[km]=ច្រាន​ចេញ
-Name[ko]=꺼내기
-Name[lo]=ເອົາແຜ່ນອອກ
-Name[lt]=Išmesti
-Name[lv]=Izņemt
-Name[mk]=Извади
-Name[mn]=Гаргах
-Name[ms]=Lenting
-Name[mt]=Iftaħ
-Name[nb]=Løs ut
-Name[nds]=Rutsmieten
-Name[ne]=निकाल्नुहोस्
-Name[nl]=Uitwerpen
-Name[nn]=Løys ut
-Name[nso]=Ntsha
-Name[oc]=Expulsa
-Name[pa]=ਬਾਹਰ ਕੱਢੋ
-Name[pl]=Wysuń
-Name[pt]=Ejectar
-Name[pt_BR]=Ejetar
-Name[ro]=Ejectează
-Name[ru]=Извлечь CD
-Name[rw]=Gusohora
-Name[se]=Bálkes olggos
-Name[sk]=Vysunúť
-Name[sl]=Izvrzi
-Name[sr]=Избаци
-Name[sr@Latn]=Izbaci
-Name[ss]=Khafuna
-Name[sv]=Mata ut
-Name[ta]=வெளித்தள்
-Name[te]=ఎజెక్ట్
-Name[tg]=Ихроҷ
-Name[th]=เอาแผ่นออก
-Name[tr]=Çıkart
-Name[tt]=Çığar
-Name[uk]=Виштовхнути
-Name[uz]=Chiqarish
-Name[uz@cyrillic]=Чиқариш
-Name[ven]=Bvisa
-Name[vi]=Đẩy đĩa ra
-Name[wa]=Fé rexhe
-Name[xh]=Khuphela ngaphandle
-Name[zh_CN]=弹出
-Name[zh_TW]=退出
-Name[zu]=Khipha
Exec=tdeeject %v
diff --git a/kdesktop/init/Templates/linkCAMERA.desktop b/kdesktop/init/Templates/linkCAMERA.desktop
index dc0522fd7..0f0d7a9b9 100644
--- a/kdesktop/init/Templates/linkCAMERA.desktop
+++ b/kdesktop/init/Templates/linkCAMERA.desktop
@@ -1,150 +1,6 @@
[Desktop Entry]
Name=Camera Device...
-Name[af]=Kamera Toestel...
-Name[ar]=جهاز الكاميرا...
-Name[be]=Камера...
-Name[bg]=Фотоапарат...
-Name[bn]=ক্যমেরা ডিভাইস...
-Name[br]=Trobarzhell ar gamera ...
-Name[bs]=Kamera uređaj...
-Name[ca]=Dispositiu de càmera...
-Name[cs]=Kamera...
-Name[csb]=Òdjimkòwô kaméra...
-Name[cy]=Dyfais Camera...
-Name[da]=Kamera-enhed...
-Name[de]=Kamera ...
-Name[el]=Συσκευή κάμερας...
-Name[eo]=kamero-aparato...
-Name[es]=Cámara...
-Name[et]=Kaameraseade
-Name[eu]=Kamera...
-Name[fa]=دستگاه دوربین...
-Name[fi]=Kamerat...
-Name[fr]=Appareil photo
-Name[fy]=Kamera...
-Name[ga]=Gléas Ceamara...
-Name[gl]=Dispositivo de Cámara...
-Name[he]=התקן מצלמה...
-Name[hi]=कैमरा उपकरण...
-Name[hr]=Kamera...
-Name[hu]=Fényképezőgép...
-Name[is]=Myndavél...
-Name[it]=Dispositivo macchina fotografica...
-Name[ja]=カメラデバイス...
-Name[ka]=კამერის მოწყობილობა
-Name[kk]=Фотокамера құрылғысы...
-Name[km]=ឧបករណ៍​ម៉ាស៊ីន​ថត...
-Name[ko]=카메라 장치...
-Name[lt]=Kameros įrenginys...
-Name[lv]=Kameras iekārta...
-Name[mk]=Камера...
-Name[mn]=Камерын Төхөөрөмж...
-Name[ms]=Peranti Kamera...
-Name[mt]=Kamera...
-Name[nb]=Kameraenhet …
-Name[nds]=Kamera...
-Name[ne]=क्यामेरा यन्त्र...
-Name[nl]=Camera...
-Name[nn]=Kameraeining …
-Name[pa]=ਕੈਮਰਾ ਜੰਤਰ...
-Name[pl]=Aparat fotograficzny...
-Name[pt]=Máquina Fotográfica...
-Name[pt_BR]=Dispositivo de Câmera...
-Name[ro]=Dispozitiv foto...
-Name[ru]=Камера...
-Name[rw]=Apareye Kamera...
-Name[se]=Govvenapperáhttaovttadat …
-Name[sk]=Zariadenie digitálneho fotoaparátu...
-Name[sl]=Naprava kamere ...
-Name[sr]=Камера...
-Name[sr@Latn]=Kamera...
-Name[sv]=Kameraenhet...
-Name[ta]=புகைப்பட கருவி சாதனங்கள்
-Name[te]=కెమెరా పరికరం...
-Name[tg]=Дастгоҳи камера...
-Name[th]=อุปกรณ์กล้อง...
-Name[tr]=Kamera Aygıtı...
-Name[tt]=kamera Cıhazı...
-Name[uk]=Пристрій фотоапарата...
-Name[uz]=Fotoaparat uskunasi...
-Name[uz@cyrillic]=Фотоапарат ускунаси...
-Name[vi]=Máy ảnh số...
-Name[wa]=Éndjin camera...
-Name[zh_CN]=相机设备...
-Name[zh_TW]=照相機設備...
Comment=New camera
-Comment[af]=Nuwe kamera
-Comment[ar]=كاميرا جديدة
-Comment[be]=Новая камера
-Comment[bg]=Нов фотоапарат
-Comment[bn]=নতুন ক্যামেরা
-Comment[br]=Kamera nevez
-Comment[bs]=Nova kamera
-Comment[ca]=Càmera nova
-Comment[cs]=Nová kamera
-Comment[csb]=Nowô òdjimkòwô kaméra
-Comment[cy]=Camera Newydd
-Comment[da]=Nyt kamera
-Comment[de]=Neue Kamera
-Comment[el]=Νέα κάμερα
-Comment[eo]=Nova kamero
-Comment[es]=Nueva cámara
-Comment[et]=Uus kaamera
-Comment[eu]=Kamera berria
-Comment[fa]=دوربین جدید
-Comment[fi]=Uusi kamera
-Comment[fr]=Nouvel appareil photo
-Comment[fy]=Nije kamera
-Comment[ga]=Ceamara nua
-Comment[gl]=Nova cámara
-Comment[he]=מצלמה חדשה
-Comment[hi]=नया कैमरा
-Comment[hr]=Nova kamera
-Comment[hu]=Új fényképezőgép
-Comment[is]=Ný myndavél
-Comment[it]=Nuova macchina fotografica
-Comment[ja]=新しいカメラ
-Comment[ka]=ახალი კამერა
-Comment[kk]=Жаңа фотокамера
-Comment[km]=ម៉ាស៊ីន​ថត​ថ្មី
-Comment[ko]=새 카메라
-Comment[lt]=Nauja kamera
-Comment[lv]=Jauna kamera
-Comment[mk]=Нова камера
-Comment[mn]=Шинэ камер
-Comment[ms]=Kamera baru
-Comment[mt]=Kamera ġdida
-Comment[nb]=Nytt kamera
-Comment[nds]=Niege Kamera
-Comment[ne]=नयाँ क्यामेरा
-Comment[nl]=Nieuwe camera
-Comment[nn]=Nytt kamera
-Comment[pa]=ਨਵਾਂ ਕੈਮਰਾ
-Comment[pl]=Nowy aparat fotograficzny
-Comment[pt]=Nova máquina fotográfica
-Comment[pt_BR]=Nova câmera
-Comment[ro]=Aparat foto nou
-Comment[ru]=Ссылка на устройство цифровой камеры
-Comment[rw]=Kamera nshya
-Comment[se]=Ođđa govvenapperáhtta
-Comment[sk]=Nový digitálny fotoaparát
-Comment[sl]=Nov fotoaparat
-Comment[sr]=Нова камера
-Comment[sr@Latn]=Nova kamera
-Comment[sv]=Ny kamera
-Comment[ta]=புதிய புகைப்பட கருவி
-Comment[te]=కొత్త కెమెరా
-Comment[tg]=Камераи нав
-Comment[th]=เพิ่มกล้องใหม่
-Comment[tr]=Yeni kamera
-Comment[tt]=Yaña kamera
-Comment[uk]=Новий фотоапарат
-Comment[uz]=Yangi fotoaparat
-Comment[uz@cyrillic]=Янги фотоапарат
-Comment[vi]=Tạo máy ảnh số mới
-Comment[wa]=Novele camera
-Comment[zh_CN]=新建相机
-Comment[zh_TW]=新增照相機
Type=Link
URL=.source/CAMERA-Device.desktop
Icon=camera-unmounted
diff --git a/kdesktop/init/Templates/linkCDROM.desktop b/kdesktop/init/Templates/linkCDROM.desktop
index ea630d1c7..1f73d4076 100644
--- a/kdesktop/init/Templates/linkCDROM.desktop
+++ b/kdesktop/init/Templates/linkCDROM.desktop
@@ -1,150 +1,6 @@
[Desktop Entry]
Name=CD-ROM Device...
-Name[af]=CD-ROM Toestel
-Name[ar]=جهاز الأقراص المدمجة...
-Name[be]=Прылада CD-ROM...
-Name[bg]=CD-ROM...
-Name[bn]=সিডি-রম ডিভাইস...
-Name[br]=Trobarzhell CD-ROM ...
-Name[bs]=CD-ROM uređaj...
-Name[ca]=Dispositiu CD-ROM...
-Name[cs]=Jednotka CD-ROM...
-Name[csb]=Nëk CD-ROM...
-Name[cy]=Dyfais CD-ROM...
-Name[da]=Cd-rom-enhed...
-Name[de]=CD-ROM-Laufwerk ...
-Name[el]=Συσκευή CD-ROM...
-Name[eo]=Lumdiskingo...
-Name[es]=Unidad de CD-ROM...
-Name[et]=CD-ROM seade...
-Name[eu]=CD-ROM gailua...
-Name[fa]=دستگاه CD-ROM...
-Name[fi]=CD-ROM-laitteet...
-Name[fr]=Lecteur de CD-ROM...
-Name[fy]=kompaktskiifstasjon ...
-Name[ga]=Gléas CD-ROM...
-Name[gl]=Dispositivo de CD-ROM...
-Name[he]=התקן תקליטור...
-Name[hi]=सीडी-रोम उपकरण...
-Name[hr]=CD/DVD-ROM uređaj...
-Name[hu]=CD-meghajtó...
-Name[is]=Geisladrif...
-Name[it]=Dispositivo CD-ROM...
-Name[ja]=CD-ROM デバイス...
-Name[ka]=CD-ROM მოწყობილობა
-Name[kk]=CD-ROM құрылғысы...
-Name[km]=ឧបករណ៍ CD-ROM...
-Name[ko]=CD-ROM 장치...
-Name[lt]=CD-ROM įrenginys...
-Name[lv]=CD-ROM Iekārta...
-Name[mk]=CD-ROM Уред...
-Name[mn]=КД-ROM төхөөрөмж...
-Name[ms]=Peranti CD-ROM...
-Name[mt]=CDROM...
-Name[nb]=CD-ROM-enhet …
-Name[nds]=CD-ROM-Reedschap...
-Name[ne]=CD-ROM यन्त्र...
-Name[nl]=CD-romspeler...
-Name[nn]=CD-ROM-eining …
-Name[pa]=CD-ROM ਜੰਤਰ...
-Name[pl]=Urządzenie CD-ROM...
-Name[pt]=Dispositivo de CD-ROM...
-Name[pt_BR]=Dispositivo de CD-ROM...
-Name[ro]=Dispozitiv CD-ROM...
-Name[ru]=CD-ROM...
-Name[rw]=Apareye CD-ROM...
-Name[se]=CD-ROM-ovttadat …
-Name[sk]=Zariadenie CD-ROM...
-Name[sl]=Naprava CD-ROM ...
-Name[sr]=CD/DVD-ROM уређај...
-Name[sr@Latn]=CD/DVD-ROM uređaj...
-Name[sv]=Cdrom-enhet...
-Name[ta]=CD-ROM சாதனம்...
-Name[te]=సీడి-రామ్ పరికరం...
-Name[tg]=Дастгоҳи CD-ROM...
-Name[th]=อุปกรณ์ซีดีรอม
-Name[tr]=CD-ROM Aygıtı...
-Name[tt]=CD-ROM Cıhazı...
-Name[uk]=Пристрій CD-ROM...
-Name[uz]=Kompakt-disk uskunasi...
-Name[uz@cyrillic]=Компакт-диск ускунаси...
-Name[vi]=Thiết bị đọc đĩa CD-ROM...
-Name[wa]=Éndjin léjheu di plakes lazer...
-Name[zh_CN]=CD-ROM 设备...
-Name[zh_TW]=光碟機設備
Comment=New CD-ROM Device
-Comment[af]=Nuwe CD-ROM Toestel
-Comment[ar]=جهاز أقراص مدمجة جديد
-Comment[be]=Новая прылада CD-ROM
-Comment[bg]=Ново устройство CD-ROM
-Comment[bn]=নতুন সিডি-রম ডিভাইস
-Comment[br]=Trobarzhell CD-ROM Nevez
-Comment[bs]=Novi CD/DVD-ROM uređaj
-Comment[ca]=Dispositiu CD-ROM nou
-Comment[cs]=Nová jednotka CD-ROM
-Comment[csb]=Nowi nëk CD
-Comment[cy]=Dyfais CD-ROM Newydd
-Comment[da]=Ny cd-rom-enhed
-Comment[de]=Neues CD-ROM-Laufwerk
-Comment[el]=Νέα συσκευή CD-ROM
-Comment[eo]=Nova lumdiskingo...
-Comment[es]=Nueva unidad de CD-ROM
-Comment[et]=Uus CD-ROM seade
-Comment[eu]=CD-ROM gailu berria
-Comment[fa]=دستگاه CD-ROM جدید
-Comment[fi]=Uusi CD/DVD-ROM -laite
-Comment[fr]=Nouveau lecteur de CD-ROM
-Comment[fy]=Nije kompaktskiifstasjon
-Comment[ga]=Gléas nua CD-ROM
-Comment[gl]=Novo Dispositivo de CD-ROM
-Comment[he]=התקן תקליטור חדש
-Comment[hi]=नया सीडी-रोम उपकरण
-Comment[hr]=Novi CD/DVD-ROM uređaj
-Comment[hu]=Új CD-meghajtó
-Comment[is]=Nýtt geisladrif
-Comment[it]=Nuovo dispositivo CD-ROM
-Comment[ja]=新規 CD-ROM デバイス
-Comment[ka]=ახალი CD-ROM მოწყობილობა
-Comment[kk]=Жаңа CD-ROM құрылғысы
-Comment[km]=ឧបករណ៍ CD-ROM ថ្មី
-Comment[ko]=새 CD-ROM 장치
-Comment[lt]=Naujas CD-ROM įrenginys
-Comment[lv]=Jauna CD-ROM Iekārta
-Comment[mk]=Нов CD-ROM уред
-Comment[mn]=Шинэ КД-ROM төхөөрөмж
-Comment[ms]=Peranti CD-ROM Baru
-Comment[mt]=CD-ROM ġdid
-Comment[nb]=Ny CD-ROM-enhet
-Comment[nds]=Niege CD-ROM-Reedschap
-Comment[ne]=नयाँ CD-ROM यन्त्र
-Comment[nl]=Nieuwe cd-romspeler
-Comment[nn]=Ny CD-ROM-eining
-Comment[pa]=ਨਵਾਂ CD-ROM ਜੰਤਰ
-Comment[pl]=Nowe urządzenie CD-ROM
-Comment[pt]=Novo Dispositivo de CD-ROM
-Comment[pt_BR]=Novo dispositivo de CD-ROM
-Comment[ro]=Dispozitiv CD-ROM nou
-Comment[ru]=Ссылка на устройство CD-ROM
-Comment[rw]=Apareye CD-ROM Nshya
-Comment[se]=Ođđa CD-ROM-ovttadat
-Comment[sk]=Nové zariadenie CD-ROM
-Comment[sl]=Nova naprava CD-ROM
-Comment[sr]=Нови CD/DVD-ROM уређај
-Comment[sr@Latn]=Novi CD/DVD-ROM uređaj
-Comment[sv]=Ny cdrom-enhet
-Comment[ta]=புதிய CD-ROM சாதனம்
-Comment[te]=కొత్త సీడి-రామ్ పరికరం
-Comment[tg]=Дастгоҳи нави CD-ROM
-Comment[th]=กำหนดอุปกรณ์ซีดีใหม่
-Comment[tr]=Yeni CD-ROM Aygıtı
-Comment[tt]=Yaña CD-ROM Cıhazı
-Comment[uk]=Новий пристрій CD-ROM
-Comment[uz]=Yangi kompakt-disk uskunasi
-Comment[uz@cyrillic]=Янги компакт-диск ускунаси
-Comment[vi]=Tạo CD-ROM mới
-Comment[wa]=Novea éndjin léjheu di plakes lazer
-Comment[zh_CN]=新建 CD-ROM 设备
-Comment[zh_TW]=新光碟機設備
Type=Link
URL=.source/CDROM-Device.desktop
Icon=media-optical-cdrom-unmounted
diff --git a/kdesktop/init/Templates/linkCDWRITER.desktop b/kdesktop/init/Templates/linkCDWRITER.desktop
index 0f0113e40..ad2057139 100644
--- a/kdesktop/init/Templates/linkCDWRITER.desktop
+++ b/kdesktop/init/Templates/linkCDWRITER.desktop
@@ -1,150 +1,6 @@
[Desktop Entry]
Name=CDWRITER Device...
-Name[af]=CD Skrywer Toestel
-Name[ar]=جهاز تسجيل الأقراص المدمجة...
-Name[be]=Прылада CDWRITER...
-Name[bg]=CDWRITER...
-Name[bn]=সিডি-রাইটার ডিভাইস...
-Name[br]=Trobarzhell an engraver CD ...
-Name[bs]=CD pržilica...
-Name[ca]=Dispositiu CDWRITER...
-Name[cs]=Vypalovačka CD...
-Name[csb]=Wëpôlôrz CD...
-Name[cy]=Dyfais CDWRITER...
-Name[da]=Cd-skriver enhed...
-Name[de]=CD-Brenner ...
-Name[el]=Συσκευή CDWRITER...
-Name[eo]=Lumdiska skribilo...
-Name[es]=Grabadora de CD...
-Name[et]=CD-kirjutaja...
-Name[eu]=CDWRITER gailua...
-Name[fa]=دستگاه CDWRITER...
-Name[fi]=CDWRITER-laite...
-Name[fr]=Graveur de CD-ROM...
-Name[fy]=kompaktskiifstasjon...
-Name[ga]=Gléas CDWRITER...
-Name[gl]=Dispositivo CDWRITER...
-Name[he]=התקן צורב...
-Name[hi]=सीडी-राइटर उपकरण...
-Name[hr]=CD/DVD pržilica...
-Name[hu]=CD-író...
-Name[is]=Geisladiskaskrifari...
-Name[it]=Masterizzatore...
-Name[ja]=CD ライターデバイス...
-Name[ka]=CDWRITER მოწყობილობა
-Name[kk]=CDWRITER құрылғысы...
-Name[km]=ឧបករណ៍ CDWRITER...
-Name[ko]=CDWRITER 장치...
-Name[lt]=CDWRITER įrenginys...
-Name[lv]=CD rakstīšanas iekārta...
-Name[mk]=CDWRITER Уред...
-Name[mn]=КД бичигч төхөөрөмж
-Name[ms]=Peranti CDWRITER...
-Name[mt]=CDWRITER...
-Name[nb]=CD-brenner-enhet
-Name[nds]=CD-Brenner...
-Name[ne]=CDWRITER यन्त्र...
-Name[nl]=CD-writer...
-Name[nn]=CD-brennareining …
-Name[pa]=CDWRITER ਜੰਤਰ...
-Name[pl]=Nagrywarka CD...
-Name[pt]=Gravador de CDs...
-Name[pt_BR]=Dispositivo de Gravação de CD...
-Name[ro]=Dispozitiv CD-Writer...
-Name[ru]=Пишущий CD-ROM...
-Name[rw]=Apareye MWANDIKA-CD...
-Name[se]=CDWRITER-ovttadat …
-Name[sk]=Zariadenie CDWRITER...
-Name[sl]=Naprava CDWRITER ...
-Name[sr]=CD/DVD резач...
-Name[sr@Latn]=CD/DVD rezač...
-Name[sv]=Cd-brännarenhet...
-Name[ta]=CDWRITER சாதனம்
-Name[te]=సీడి వ్రైటర్ పరికరం...
-Name[tg]=Дастгоҳи CDWRITER...
-Name[th]=อุปกรณ์เขียนซีดี...
-Name[tr]=CD Yazıcı Aygıtı...
-Name[tt]=CD-Yazğıç Cıhazı...
-Name[uk]=Пристрій CDWRITER...
-Name[uz]=Kompakt-disk yozuvchi uskuna...
-Name[uz@cyrillic]=Компакт-диск ёзувчи ускуна...
-Name[vi]=Thiết bị ghi đĩa CD...
-Name[wa]=Éndjin broûleu di plakes lazer...
-Name[zh_CN]=刻录机设备...
-Name[zh_TW]=光碟燒錄機設備
Comment=New CDWRITER Device
-Comment[af]=Nuwe CD Skrywer Toestel
-Comment[ar]=جهاز تسجيل أقراص مدمجة جديد
-Comment[be]=Новая прылада CDWRITER
-Comment[bg]=Ново устройство CDWRITER
-Comment[bn]=নতুন সিডি-রাইটার ডিভাইস
-Comment[br]=Trobarzhell CDSKRIVER nevez
-Comment[bs]=Nova CD pržilica
-Comment[ca]=Dispositiu CDWRITER nou
-Comment[cs]=Nová vypalovačka CD
-Comment[csb]=Nowi wëpôlôrz CD
-Comment[cy]=Dyfais CDWRITER Newydd
-Comment[da]=Ny cd-skriver enhed
-Comment[de]=Neuer CD-Brenner
-Comment[el]=Νέα συσκευή CDWRITER
-Comment[eo]=Nova lumdisk-skribilo
-Comment[es]=Nueva grabadora de CD
-Comment[et]=Uus CD-kirjutaja
-Comment[eu]=CDWRITER gailu berria
-Comment[fa]=دستگاه CDWRITER جدید
-Comment[fi]=Uusi CDWRITER-laite
-Comment[fr]=Nouveau graveur de CD-ROM
-Comment[fy]=Nije kompaktskiifstasjon
-Comment[ga]=Gléas CDWRITER Nua
-Comment[gl]=Novo Dispositivo CDWRITER
-Comment[he]=התקן צורב חדש
-Comment[hi]=नया सीडी-राइटर उपकरण
-Comment[hr]=Nova CD/DVD pržilica
-Comment[hu]=Új CD-író
-Comment[is]=Nýr geisladiskaskrifari
-Comment[it]=Nuovo masterizzatore
-Comment[ja]=新規 CD ライターデバイス
-Comment[ka]=ახალი CDWRITER მოწყობილობა
-Comment[kk]=Жаңа CDWRITER құрылғысы
-Comment[km]=ឧបករណ៍ CDWRITER ថ្មី
-Comment[ko]=새 CDWRITER 장치
-Comment[lt]=Naujas CDWRITER įrenginys
-Comment[lv]=Jauna CD rakstīšanas iekārta
-Comment[mk]=Нов CDWRITER уред
-Comment[mn]=Шинэ КД бичигч төхөөрөмж
-Comment[ms]=Peranti CDWRITER Baru
-Comment[mt]=Apparat CDWRITER ġdid
-Comment[nb]=Ny CD-brenner-enhet
-Comment[nds]=Niegen CD-Brenner
-Comment[ne]=नयाँ CDWRITER यन्त्र
-Comment[nl]=Nieuwe CD-writer
-Comment[nn]=Ny CD-brennareining
-Comment[pa]=ਨਵਾਂ CDWRITER ਜੰਤਰ
-Comment[pl]=Nowa nagrywarka CD
-Comment[pt]=Novo Gravador de CDs
-Comment[pt_BR]=Novo dispositivo de Gravação de CD
-Comment[ro]=Dispozitiv CD-Writer nou
-Comment[ru]=Ссылка на устройство пишущего CD-ROM
-Comment[rw]=Apareye MWANDIKA-CD Nshya
-Comment[se]=Ođđa CDWRITER-ovttadat
-Comment[sk]=Nové zariadenie CDWRITER
-Comment[sl]=Nova naprava CDWRITER
-Comment[sr]=Нови CD/DVD резач
-Comment[sr@Latn]=Novi CD/DVD rezač
-Comment[sv]=Ny cd-brännarenhet
-Comment[ta]=புது CDWRITER சாதனம்
-Comment[te]=కొత్త సీడి వ్రైటర్ పరికరం
-Comment[tg]=Дастгоҳ нави CDWRITER
-Comment[th]=กำหนดอุปกรณ์เขียนซีดีใหม่
-Comment[tr]=Yeni CD Yazıcı Aygıtı
-Comment[tt]=Yaña CD-Yazğıç Cıhazı
-Comment[uk]=Новий пристрій CDWRITER
-Comment[uz]=Yangi kompakt-disk yozuvchi uskuna
-Comment[uz@cyrillic]=Янги компакт-диск ёзувчи ускуна
-Comment[vi]=Tạo thiết bị ghi CD mới
-Comment[wa]=Novea éndjin broûleu di plakes lazer
-Comment[zh_CN]=新建刻录机设备
-Comment[zh_TW]=新光碟燒錄機設備
Type=Link
URL=.source/CDWRITER-Device.desktop
-Icon=cr-rw-unmounted
+Icon=cd-rw-unmounted
diff --git a/kdesktop/init/Templates/linkDVDROM.desktop b/kdesktop/init/Templates/linkDVDROM.desktop
index f2edc7941..1e0427731 100644
--- a/kdesktop/init/Templates/linkDVDROM.desktop
+++ b/kdesktop/init/Templates/linkDVDROM.desktop
@@ -1,150 +1,6 @@
[Desktop Entry]
Name=DVD-ROM Device...
-Name[af]=DVD-ROM Toestel
-Name[ar]=جهاز قارئ أقراص رقمية مرئية...
-Name[be]=Прылада DVD-ROM...
-Name[bg]=DVD-ROM...
-Name[bn]=ডিভিডি-রম ডিভাইস...
-Name[br]=Trobarzhell DVD-ROM ...
-Name[bs]=DVD-ROM uređaj...
-Name[ca]=Dispositiu DVD-ROM...
-Name[cs]=Jednotka DVD-ROM...
-Name[csb]=Nëk DVD-ROM...
-Name[cy]=Dyfais DVD-ROM...
-Name[da]=Dvd-rom-enhed...
-Name[de]=DVD-ROM-Laufwerk ...
-Name[el]=Συσκευή DVD-ROM...
-Name[eo]=DVDdiskingo...
-Name[es]=Unidad de DVD-ROM...
-Name[et]=DVD-ROM seade...
-Name[eu]=DVD-ROM gailua...
-Name[fa]=دستگاه DVD-ROM...
-Name[fi]=DVD-ROM-laite
-Name[fr]=Lecteur de DVD-ROM...
-Name[fy]=Dûbelskiifstasjon
-Name[ga]=Gléas DVD-ROM...
-Name[gl]=Dispositivo DVD-ROM...
-Name[he]=התקן DVD...
-Name[hi]=डीवीडी-रोम उपकरण...
-Name[hr]=CD/DVD-ROM uređaj...
-Name[hu]=DVD-meghajtó...
-Name[is]=DVD-ROM-drif...
-Name[it]=Dispositivo DVD-ROM...
-Name[ja]=DVD-ROM デバイス...
-Name[ka]=DVD-ROM მოწყობილობა
-Name[kk]=DVD-ROM құрылғысы...
-Name[km]=ឧបករណ៍ DVD-ROM...
-Name[ko]=DVD-ROM 장치...
-Name[lt]=DVD-ROM įrenginys...
-Name[lv]=DVD-ROM Iekārta...
-Name[mk]=DVD-ROM Уред...
-Name[mn]=DVD-ROM төхөөрөмж...
-Name[ms]=Peranti DVD-ROM...
-Name[mt]=DVD-ROM...
-Name[nb]=DVD-ROM-enhet …
-Name[nds]=DVD-ROM-Reedschap...
-Name[ne]=DVD-ROM यन्त्र...
-Name[nl]=DVD-romspeler...
-Name[nn]=DVD-ROM-eining …
-Name[pa]=DVD-ROM ਜੰਤਰ...
-Name[pl]=Urządzenie DVD-ROM...
-Name[pt]=Leitor de DVD-ROMs...
-Name[pt_BR]=Dispositivo de DVD-ROM...
-Name[ro]=Dispozitiv DVD-ROM...
-Name[ru]=DVD-ROM...
-Name[rw]=Apareye DVD-ROM Nshya...
-Name[se]=DVD-ROM-ovttadat …
-Name[sk]=Zariadenie DVD-ROM...
-Name[sl]=Naprava DVD-ROM ...
-Name[sr]=CD/DVD-ROM уређај...
-Name[sr@Latn]=CD/DVD-ROM uređaj...
-Name[sv]=Dvdrom-enhet...
-Name[ta]=டிவிடிராம் சாதனம்
-Name[te]=డివిడి-రామ్ పరికరం...
-Name[tg]=Дастгоҳи DVD-ROM...
-Name[th]=อุปกรณ์ดีวีดีรอม...
-Name[tr]=CD/DVD-ROM Aygıtı...
-Name[tt]=DVD-ROM Cıhazı...
-Name[uk]=Пристрій DVD-ROM...
-Name[uz]=DVD-ROM uskunasi...
-Name[uz@cyrillic]=DVD-ROM ускунаси...
-Name[vi]=Thiết bị đọc đĩa DVD-ROM...
-Name[wa]=Éndjin léjheu di plakes lazer DVD...
-Name[zh_CN]=DVD-ROM 设备...
-Name[zh_TW]=DVD-ROM 設備...
Comment=New DVD-ROM Device
-Comment[af]=Nuwe DVD-ROM Toestel
-Comment[ar]=جهاز قارئ أقراص رقمية مرئية جديد
-Comment[be]=Новая прылада DVD-ROM
-Comment[bg]=Ново устройство DVD-ROM
-Comment[bn]=নতুন ডিভিডি-রম ডিভাইস
-Comment[br]=Trobarzhell DVD-ROM Nevez
-Comment[bs]=Novi DVD-ROM uređaj
-Comment[ca]=Dispositiu DVD-ROM nou
-Comment[cs]=Nová jednotka DVD-ROM
-Comment[csb]=Nowi nëk DVD-ROM
-Comment[cy]=Dyfais DVD-ROM Newydd
-Comment[da]=Ny dvd-rom enhed
-Comment[de]=Neues DVD-ROM-Laufwerk
-Comment[el]=Νέα συσκευή DVD-ROM
-Comment[eo]=Nova DVDdiskingo...
-Comment[es]=Nueva unidad de DVD-ROM
-Comment[et]=Uus DVD-ROM seade
-Comment[eu]=DVD-ROM gailu berria
-Comment[fa]=دستگاه DVD-ROM جدید
-Comment[fi]=Uusi DVD-ROM-laite
-Comment[fr]=Nouveau lecteur de DVD-ROM
-Comment[fy]=Nije dûbelskiifstasjon
-Comment[ga]=Gléas nua DVD-ROM
-Comment[gl]=Novo Dispositivo DVD-ROM
-Comment[he]=התקן DVD חדש
-Comment[hi]=नया डीवीडी-रोम उपकरण
-Comment[hr]=Novi CD/DVD-ROM uređaj
-Comment[hu]=Új DVD-meghajtó
-Comment[is]=Nýtt DVD-ROM-drif
-Comment[it]=Nuovo dispositivo DVD-ROM
-Comment[ja]=新規 DVD-ROM デバイス
-Comment[ka]=ახალი DVD-ROM მოწყობილობა
-Comment[kk]=Жаңа DVD-ROM құрылғысы
-Comment[km]=ឧបករណ៍ DVD-ROM ថ្មី
-Comment[ko]=새 DVD-ROM 장치
-Comment[lt]=Naujas DVD-ROM įrenginys
-Comment[lv]=Jauna DVD-ROM Iekārta
-Comment[mk]=Нов DVD-ROM уред
-Comment[mn]=Шинэ DVD-төхөөрөмж
-Comment[ms]=Peranti DVD-ROM Baru
-Comment[mt]=DVD-ROM ġdid
-Comment[nb]=Ny DVD-ROM-enhet
-Comment[nds]=Niege DVD-ROM-Reedschap
-Comment[ne]=नयाँ DVD-ROM यन्त्र
-Comment[nl]=Nieuwe DVD-romspeler
-Comment[nn]=Ny DVD-ROM-eining
-Comment[pa]=ਨਵਾਂ DVD-ROM ਜੰਤਰ
-Comment[pl]=Nowe urządzenie DVD-ROM...
-Comment[pt]=Novo leitor de DVD-ROMs
-Comment[pt_BR]=Novo dispositivo de DVD-ROM
-Comment[ro]=Dispozitiv DVD-ROM nou
-Comment[ru]=Ссылка на устройство DVD-ROM
-Comment[rw]=Apareye DVD-ROOM Nshya
-Comment[se]=Ođđa DVD-ROM-ovttadat
-Comment[sk]=Nové zariadenie DVD-ROM
-Comment[sl]=Nova naprava DVD-ROM
-Comment[sr]=Нови CD/DVD-ROM уређај
-Comment[sr@Latn]=Novi CD/DVD-ROM uređaj
-Comment[sv]=Ny dvdrom-enhet
-Comment[ta]=புது DVD-ROM சாதனம்
-Comment[te]=కొత్త డివిడి-రామ్ పరికరం
-Comment[tg]=Дастгоҳи нави DVD-ROM
-Comment[th]=กำหนดอุปกรณ์ซีดี/ดีวีดีรอมใหม่
-Comment[tr]=Yeni DVD-ROM Aygıtı
-Comment[tt]=Yaña DVD-ROM Cıhazı
-Comment[uk]=Новий пристрій DVD-ROM
-Comment[uz]=Yangi DVD uskunasi
-Comment[uz@cyrillic]=Янги DVD ускунаси
-Comment[vi]=Tạo DVD-ROM mới
-Comment[wa]=Novea éndjin léjheu di plakes lazer DVD
-Comment[zh_CN]=新建 DVD-ROM 设备
-Comment[zh_TW]=新 DVD-ROM 設備
Type=Link
URL=.source/DVDROM-Device.desktop
Icon=media-optical-dvd-unmounted
diff --git a/kdesktop/init/Templates/linkFloppy.desktop b/kdesktop/init/Templates/linkFloppy.desktop
index 4b7b6c367..d61466a93 100644
--- a/kdesktop/init/Templates/linkFloppy.desktop
+++ b/kdesktop/init/Templates/linkFloppy.desktop
@@ -1,158 +1,6 @@
[Desktop Entry]
Name=Floppy Device...
-Name[af]=Sagteskyf Toestel...
-Name[ar]=جهاز أقراص مرنة...
-Name[be]=Дыскета...
-Name[bg]=Флопи...
-Name[bn]=ফ্লপি ডিভাইস...
-Name[br]=Trobarzhell Pladennig ...
-Name[bs]=Disketni uređaj...
-Name[ca]=Dispositiu de disquet...
-Name[cs]=Disketová jednotka...
-Name[csb]=Nëk disczétków...
-Name[cy]=Dyfais Disg Meddal...
-Name[da]=Floppy-enhed...
-Name[de]=Diskettenlaufwerk ...
-Name[el]=Συσκευή δισκέτας...
-Name[eo]=Disketingo...
-Name[es]=Unidad de disquetes...
-Name[et]=Flopiseade...
-Name[eu]=Diskete gailua...
-Name[fa]=دستگاه فلاپی...
-Name[fi]=Levykeasema...
-Name[fr]=Lecteur de disquettes...
-Name[fy]=Slappe skiifstasjon...
-Name[ga]=Gléas Diosca Flapach...
-Name[gl]=Dispositivo de Disquete...
-Name[he]=התקן תקליטון...
-Name[hi]=फ़्लॉपी उपकरण...
-Name[hr]=Disketni uređaj...
-Name[hu]=Floppy-meghajtó...
-Name[is]=Disklingadrif...
-Name[it]=Dispositivo dischetti...
-Name[ja]=フロッピーデバイス...
-Name[ka]=დრეკადი დისკის წამყვანი
-Name[kk]=Иілгіш диск...
-Name[km]=ដ្រាយ​ថាស​ទន់...
-Name[ko]=플로피 장치...
-Name[lt]=Diskelių įrenginys...
-Name[lv]=Diskešu Iekārta...
-Name[mk]=Дискетна единица...
-Name[mn]=Уян диск...
-Name[ms]=Peranti Liut...
-Name[mt]=Floppy...
-Name[nb]=Diskettenhet …
-Name[nds]=Diskett-Reedschap...
-Name[ne]=फ्लपी यन्त्र...
-Name[nl]=Diskettestation...
-Name[nn]=Disketteining …
-Name[pa]=ਫਲਾਪੀ ਜੰਤਰ...
-Name[pl]=Stacja dyskietek...
-Name[pt]=Leitor de Disquetes...
-Name[pt_BR]=Dispositivo de disquete...
-Name[ro]=Dispozitiv Floppy...
-Name[ru]=Дисковод...
-Name[rw]=Apareye Disikete...
-Name[se]=Dibmaskearroovttadat …
-Name[sk]=Disketová mechanika...
-Name[sl]=Disketna naprava ...
-Name[sr]=Флопи уређај...
-Name[sr@Latn]=Flopi uređaj...
-Name[sv]=Diskettenhet...
-Name[ta]=நெகிழ்வட்டு சாதனம்...
-Name[te]=ఫ్లాపీ పరికరం...
-Name[tg]=Дастгоҳи Floppy...
-Name[th]=อุปกรณ์ฟลอปปี้...
-Name[tr]=Disket Aygıtı...
-Name[tt]=Floppy Cıhazı...
-Name[uk]=Пристрій гнучкого диска...
-Name[uz]=Disket uskunasi...
-Name[uz@cyrillic]=Дискет ускунаси...
-Name[vi]=Ổ mềm...
-Name[wa]=Éndjin léjheu di plaketes...
-Name[zh_CN]=软驱设备...
-Name[zh_TW]=軟碟設備...
Comment=New Floppy Device
-Comment[af]=Nuwe Sagteskyf Toestel
-Comment[ar]=جهاز أقراص مرنة جديد
-Comment[az]=Yeni Disket Avadanlığı
-Comment[be]=Новая дыскета
-Comment[bg]=Ново флопи-дисково устройство
-Comment[bn]=নতুন ফ্লপি ডিভাইস
-Comment[br]=Trobarzhell Bladennig Nevez
-Comment[bs]=Novi disketni uređaj
-Comment[ca]=Dispositiu de disquet nou
-Comment[cs]=Nová disketová jednotka
-Comment[csb]=Nowi nëk disczétków
-Comment[cy]=Dyfais Disg Meddal Newydd
-Comment[da]=Ny floppy-enhed
-Comment[de]=Neues Diskettenlaufwerk
-Comment[el]=Νέα συσκευή δισκέτας
-Comment[eo]=Nova disketa ingo
-Comment[es]=Nueva unidad de disquetes
-Comment[et]=Uus flopiseade
-Comment[eu]=Diskete gailu berria
-Comment[fa]=دستگاه فلاپی جدید
-Comment[fi]=Uusi levykeasema
-Comment[fr]=Nouveau lecteur de disquettes
-Comment[fy]=Nije slappe skiifstasjon
-Comment[ga]=Gléas nua diosca flapach
-Comment[gl]=Nova Disqueteira
-Comment[he]=התקן תקליטון חדש
-Comment[hi]=नया फ़्लॉपी उपकरण
-Comment[hr]=Novi disketni uređaj
-Comment[hu]=Új floppy-meghajtó
-Comment[id]=Divais Floppy baru
-Comment[is]=Nýtt disklingadrif
-Comment[it]=Nuovo dispositivo dischetti
-Comment[ja]=新規フロッピーディスク
-Comment[ka]=ახალი დრეკადი დისკის წამყვანი
-Comment[kk]=Жаңа иілгіш диск құрылғысы
-Comment[km]=ឧបករណ៍​ថាស​ទន់​ថ្មី
-Comment[ko]=새 플로피 장치
-Comment[lo]=ກຳນົດອັຸປະກອນຟອບປີ້ໃຫມ่
-Comment[lt]=Naujas diskelių įrenginys
-Comment[lv]=Jauna Diskešu iekārta
-Comment[mk]=Нова дискетна единица
-Comment[mn]=Шинэ уян диск хөтлөгч
-Comment[ms]=Peranti Liut Baru
-Comment[mt]=Apparat floppy ġdid
-Comment[nb]=Ny diskettenhet
-Comment[nds]=Niege Diskettreedschap
-Comment[ne]=नयाँ फ्लपी यन्त्र
-Comment[nl]=Nieuw diskettestation
-Comment[nn]=Ny disketteining
-Comment[nso]=Leano le Leswa la Floopy
-Comment[oc]=Dispositiu de disquet nou
-Comment[pa]=ਨਵਾਂ ਫਲਾਪੀ ਜੰਤਰ
-Comment[pl]=Nowa stacja dyskietek
-Comment[pt]=Novo leitor de disquetes
-Comment[pt_BR]=Novo dispositivo de disquete
-Comment[ro]=Dispozitiv Floppy nou
-Comment[ru]=Ссылка на устройство дисковода
-Comment[rw]=Apareye Disikete Nshya
-Comment[se]=Ođđa dibmaskearroovttadat
-Comment[sk]=Nová disketová mechanika
-Comment[sl]=Nova disketna naprava
-Comment[sr]=Нови флопи уређај
-Comment[sr@Latn]=Novi flopi uređaj
-Comment[sv]=Ny diskettenhet
-Comment[ta]=புது நெகிழ்வட்டு சாதனம்
-Comment[te]=కొత్త ఫ్లాపీ పరికరం
-Comment[tg]=Дастгоҳи нави Floppy
-Comment[th]=กำหนดอุปกรณ์ฟล็อปปีใหม่
-Comment[tr]=Yeni Disket Aygıtı
-Comment[tt]=Yaña Floppy Cıhazı
-Comment[uk]=Новий пристрій гнучкого диска
-Comment[uz]=Yangi disket uskunasi
-Comment[uz@cyrillic]=Янги дискет ускунаси
-Comment[ven]=Maano maswa a Floppy
-Comment[vi]=Tạo ổ mềm mới
-Comment[wa]=Novea éndjin léjheu di plaketes...
-Comment[xh]=Icebo Elitsha le Floppy
-Comment[zh_CN]=新建软驱设备
-Comment[zh_TW]=新軟碟設備
-Comment[zu]=Ithuluzi le-Floppy elisha
Type=Link
URL=.source/Floppy.desktop
Icon=media-floppy-3_5-unmounted
diff --git a/kdesktop/init/Templates/linkHD.desktop b/kdesktop/init/Templates/linkHD.desktop
index 6c58dc395..15c94ac4a 100644
--- a/kdesktop/init/Templates/linkHD.desktop
+++ b/kdesktop/init/Templates/linkHD.desktop
@@ -1,157 +1,6 @@
[Desktop Entry]
Name=Hard Disc Device...
-Name[af]=Hardeskyf Toestel...
-Name[ar]=جهاز القرص الصلب...
-Name[be]=Раздзел жорсткага дыска...
-Name[bg]=Твърд диск...
-Name[bn]=হার্ড ডিস্ক ডিভাইস...
-Name[br]=Trobarzhell Bladenn ...
-Name[bs]=Hard disk uređaj...
-Name[ca]=Dispositius de disc dur...
-Name[cs]=Pevný disk...
-Name[csb]=Cwiardi disk...
-Name[cy]=Dyfais Disg Caled...
-Name[da]=Harddisk-enhed...
-Name[de]=Festplatte ...
-Name[el]=Συσκευή σκληρού δίσκου...
-Name[eo]=Fiksdiskingo...
-Name[es]=Disco duro...
-Name[et]=Kõvaketas...
-Name[eu]=Diska gogorra...
-Name[fa]=دستگاه دیسک سخت...
-Name[fi]=Kiintolevy...
-Name[fr]=Disque dur...
-Name[fy]=Fêste skiif...
-Name[ga]=Gléas Diosca Crua...
-Name[gl]=Dispositivo de Disco Duro...
-Name[he]=התקן כונן קשיח...
-Name[hi]=हार्ड डिस्क उपकरण...
-Name[hr]=Tvrdi disk...
-Name[hu]=Merevlemez-partíció...
-Name[is]=Harður diskur...
-Name[it]=Disco rigido...
-Name[ja]=ハードディスクデバイス...
-Name[ka]=ხისტი დისკი...
-Name[kk]=Қатқыл диск...
-Name[km]=ឧបករណ៍​ថាស​រឹង...
-Name[ko]=하드 디스크 장치...
-Name[lt]=Kietojo disko įrenginys...
-Name[lv]=Cietais Disks...
-Name[mk]=Тврд диск...
-Name[mn]=Хатуу диск...
-Name[ms]=Peranti Cakera Keras...
-Name[mt]=Ħard disk...
-Name[nb]=Harddisk …
-Name[nds]=Fastplaat...
-Name[ne]=हार्डडिस्क यन्त्र...
-Name[nl]=Harde Schijf...
-Name[nn]=Harddisk …
-Name[pa]=ਹਾਰਡ-ਡਿਸਕ ਜੰਤਰ...
-Name[pl]=Twardy dysk...
-Name[pt]=Disco Rígido...
-Name[pt_BR]=Disco rígido...
-Name[ro]=Dispozitiv Hard Disc...
-Name[ru]=Жёсткий диск...
-Name[rw]=Ububiko Disiki...
-Name[se]=Garraskearru-ovttadat …
-Name[sk]=Pevný disk...
-Name[sl]=Naprava trdega diska ...
-Name[sr]=Хард диск...
-Name[sr@Latn]=Hard disk...
-Name[sv]=Hårddisk...
-Name[ta]=வட்டு
-Name[te]=హార్డ్ డిస్క్ పరికరం...
-Name[tg]=Дастгоҳи Диски Сахти...
-Name[th]=อุปกรณ์ฮาร์ดดิสก์...
-Name[tr]=Sabit Disk Aygıtı...
-Name[tt]=Eçke Disk Cıhazı...
-Name[uk]=Пристрій жорсткого диска...
-Name[uz]=Qattiq disk uskunasi...
-Name[uz@cyrillic]=Қаттиқ диск ускунаси...
-Name[vi]=Ổ cứng...
-Name[wa]=Éndjin di deure plake...
-Name[zh_CN]=硬盘设备...
-Name[zh_TW]=硬碟設備...
Comment=New Hard Disc
-Comment[af]=Nuwe Hardeskyf
-Comment[ar]=قرص صلب جديد
-Comment[az]=Yeni Sabit Disk
-Comment[be]=Новы раздзел жорсткага дыска
-Comment[bg]=Нов твърд диск
-Comment[bn]=নতুন হার্ড ডিস্ক
-Comment[br]=Trobarzhell Bladenn Nevez
-Comment[bs]=Novi hard disk
-Comment[ca]=Disc dur nou
-Comment[cs]=Nový pevný disk
-Comment[csb]=Nowi cwiardi disk
-Comment[cy]=Disg Caled Newydd
-Comment[da]=Ny harddisk
-Comment[de]=Neue Festplatte
-Comment[el]=Νέος σκληρός δίσκος
-Comment[en_GB]=New Hard Disk
-Comment[eo]=Nova fiksdisko
-Comment[es]=Nuevo disco duro
-Comment[et]=Uus kõvaketas
-Comment[eu]=Disko gogor berria
-Comment[fa]=دیسک سخت جدید
-Comment[fi]=Uusi kiintolevy
-Comment[fr]=Nouveau disque dur
-Comment[fy]=Nije Fêste skiif
-Comment[ga]=Diosca crua nua
-Comment[gl]=Novo Disco Duro
-Comment[he]=כונן קשיח חדש
-Comment[hi]=नया हार्ड डिस्क
-Comment[hr]=Novi tvrdi disk
-Comment[hu]=Új merevlemez-partíció
-Comment[is]=Nýr harður diskur
-Comment[it]=Nuovo disco rigido
-Comment[ja]=新規ハードディスク
-Comment[ka]=ახალი ხისტი დისკი
-Comment[kk]=Жаңа қатқыл дискі
-Comment[km]=ថាស​រឹង​ថ្មី
-Comment[ko]=새 하드 디스크
-Comment[lo]=ກຳນົດອຸປະກອນຮາດດີສໃຫ່ມ
-Comment[lt]=Naujas kietas diskas
-Comment[lv]=Jauns Cietais Disks
-Comment[mk]=Нов тврд диск
-Comment[mn]=Шинэ хатуу диск
-Comment[ms]=Cakera Keras Baru
-Comment[mt]=Ħard disk ġdid
-Comment[nb]=Ny harddisk
-Comment[nds]=Niege Fastplaat
-Comment[ne]=नयाँ हार्डडिस्क
-Comment[nl]=Nieuwe harde schijf
-Comment[nn]=Ny harddisk
-Comment[nso]=Hard Disc ye Ntshwa
-Comment[pa]=ਨਵੀਂ ਹਾਰਡ-ਡਿਸਕ
-Comment[pl]=Nowy twardy dysk
-Comment[pt]=Novo Disco Rígido
-Comment[pt_BR]=Novo disco rígido
-Comment[ro]=Hard Disc nou
-Comment[ru]=Ссылка на устройство жёсткого диска
-Comment[rw]=Ububiko Disiki Bushya
-Comment[se]=Ođđa garraskearru
-Comment[sk]=Nový pevný disk
-Comment[sl]=Nov trdi disk
-Comment[sr]=Нови хард диск
-Comment[sr@Latn]=Novi hard disk
-Comment[sv]=Ny hårddisk
-Comment[ta]=புது வன் தகடு
-Comment[te]=కొత్త హార్డ్ డిస్క్
-Comment[tg]=Диски Сахти нав
-Comment[th]=กำหนดอุปกรณ์ฮาร์ดดิสก์ใหม่
-Comment[tr]=Yeni Sabit Disk
-Comment[tt]=Yaña Qatı Disk
-Comment[uk]=Новий жорсткий диск
-Comment[uz]=Yangi qattiq disk uskunasi
-Comment[uz@cyrillic]=Янги қаттиқ диск ускунаси
-Comment[ven]=Disiki ntswa yo khwathaho
-Comment[vi]=Tạo ổ cứng mới
-Comment[wa]=Novea éndjin di deure plake
-Comment[xh]=Hard Disc Entsha
-Comment[zh_CN]=新建硬盘
-Comment[zh_TW]=新硬碟設備
-Comment[zu]=I-diski Elukhuni Entsha
Type=Link
URL=.source/HD.desktop
Icon=drive-harddisk-unmounted
diff --git a/kdesktop/init/Templates/linkMO.desktop b/kdesktop/init/Templates/linkMO.desktop
index 35fd2bf72..1a486e632 100644
--- a/kdesktop/init/Templates/linkMO.desktop
+++ b/kdesktop/init/Templates/linkMO.desktop
@@ -1,150 +1,6 @@
[Desktop Entry]
Name=MO Device...
-Name[af]=MO Toestel...
-Name[ar]=جهاز MO...
-Name[be]=Прылада MO...
-Name[bg]=MO...
-Name[bn]=MO ডিভাইস...
-Name[br]=Trobarzhell MO ...
-Name[bs]=MO uređaj...
-Name[ca]=Dispositiu MO...
-Name[cs]=MO zařízení...
-Name[csb]=Nëk MO...
-Name[cy]=Dyfais MO...
-Name[da]=MO-enhed...
-Name[de]=MO-Laufwerk ...
-Name[el]=Συσκευή MO...
-Name[eo]=Magnetdiskingo...
-Name[es]=Dispositivo de MO...
-Name[et]=MO seade...
-Name[eu]=MO gailua...
-Name[fa]=دستگاه MO...
-Name[fi]=MO-laite...
-Name[fr]=Périphérique MO...
-Name[fy]=Magnetyske skiif stasjon...
-Name[ga]=Gléas MO...
-Name[gl]=Dispositivo MO...
-Name[he]=התקן MO...
-Name[hi]=एमओ उपकरण...
-Name[hr]=MO uređaj...
-Name[hu]=Magnetooptikai eszköz...
-Name[is]=MO tæki...
-Name[it]=Dispositivo MO...
-Name[ja]=MO デバイス...
-Name[ka]=MO მოწყობილობა
-Name[kk]=Магнитооптик құрылғысы...
-Name[km]=ឧបករណ៍ MO...
-Name[ko]=MO 장치...
-Name[lt]=MO įrenginys...
-Name[lv]=MO Iekārta...
-Name[mk]=MO Уред...
-Name[mn]=MO Төхөөрөмж...
-Name[ms]=Peranti MO...
-Name[mt]=Apparat MO...
-Name[nb]=MO-enhet …
-Name[nds]=MO-Reedschap...
-Name[ne]=MO यन्त्र...
-Name[nl]=MO-apparaat...
-Name[nn]=MO-eining …
-Name[pa]=MO ਜੰਤਰ...
-Name[pl]=Napęd magnetooptyczny...
-Name[pt]=Dispositivo MO...
-Name[pt_BR]=Dispositivo MO...
-Name[ro]=Dispozitiv MO...
-Name[ru]=Магнитооптическое устройство...
-Name[rw]=Apareye MO...
-Name[se]=MO-ovttadat …
-Name[sk]=Disk MO...
-Name[sl]=MO naprava ...
-Name[sr]=МО уређај...
-Name[sr@Latn]=MO uređaj...
-Name[sv]=Magneto-optisk enhet...
-Name[ta]=MO சாதனம்...
-Name[te]=ఎంఓ పరికరం...
-Name[tg]=Дастгоҳи MO...
-Name[th]=อุปกรณ์ MO
-Name[tr]=MO Aygıtı...
-Name[tt]=MO Cıhazı...
-Name[uk]=Пристрій MO...
-Name[uz]=MO uskunasi
-Name[uz@cyrillic]=MO ускунаси
-Name[vi]=Thiết bị MO...
-Name[wa]=Éndjin MO...
-Name[zh_CN]=MO 设备...
-Name[zh_TW]=MO 設備...
Comment=New MO Device
-Comment[af]=Nuwe MO Toestel
-Comment[ar]=جهاز MO جديد
-Comment[be]=Новая прылада MO
-Comment[bg]=Ново устройство MO
-Comment[bn]=নতুন MO ডিভাইস
-Comment[br]=Trobarzhell MO nevez
-Comment[bs]=Novi MO uređaj
-Comment[ca]=Dispositiu MO nou
-Comment[cs]=Nová MO mechanika
-Comment[csb]=Nowi nëk MO
-Comment[cy]=Dyfais MO Newydd
-Comment[da]=Ny MO-enhed
-Comment[de]=Neues MO-Laufwerk
-Comment[el]=Νέα συσκευή MO
-Comment[eo]=Nova magnetdiskingo
-Comment[es]=Nuevo dispositivo de MO
-Comment[et]=Uus MO seade
-Comment[eu]=MO gailu berria
-Comment[fa]=دستگاه MO جدید
-Comment[fi]=Uusi MO-laite
-Comment[fr]=Nouveau périphérique MO
-Comment[fy]=Nije magnetyske skiif stasjon
-Comment[ga]=Gléas MO Nua
-Comment[gl]=Novo Dispositivo MO
-Comment[he]=התקן MO חדש
-Comment[hi]=नया एमओ उपकरण
-Comment[hr]=Novi MO uređaj
-Comment[hu]=Új magnetooptikai eszköz
-Comment[is]=Nýtt MO tæki
-Comment[it]=Nuovo dispositivo MO
-Comment[ja]=新規 MO デバイス
-Comment[ka]=ახალი MO მოწყობილობა
-Comment[kk]=Жаңа магнитооптик құрылғысы
-Comment[km]=ឧបករណ៍ MO ថ្មី
-Comment[ko]=새 MO 장치
-Comment[lt]=Naujas MO įrenginys
-Comment[lv]=Jauna MO iekārta
-Comment[mk]=Нов MO уред
-Comment[mn]=Шинэ MO төхөөрөмж
-Comment[ms]=Peranti MO Baru
-Comment[mt]=Apparat MO ġdid
-Comment[nb]=Ny MO-enhet
-Comment[nds]=Niege MO-Reedschap
-Comment[ne]=नयाँ MO यन्त्र
-Comment[nl]=Nieuw MO-aparaat
-Comment[nn]=Ny MO-eining
-Comment[pa]=ਨਵਾਂ MO ਜੰਤਰ
-Comment[pl]=Nowy napęd magnetooptyczny
-Comment[pt]=Novo Dispositivo MO
-Comment[pt_BR]=Novo dispositivo MO
-Comment[ro]=Dispozitiv MO nou
-Comment[ru]=Ссылка на магнитооптическое устройство
-Comment[rw]= Apareye MO Nshya
-Comment[se]=Ođđa MO-ovttadat
-Comment[sk]=Nové zariadenie MO
-Comment[sl]=Nova MO naprava
-Comment[sr]=Нови МО уређај
-Comment[sr@Latn]=Novi MO uređaj
-Comment[sv]=Ny magneto-optisk enhet
-Comment[ta]=புது MO சாதனம்
-Comment[te]=కొత్త ఎంఓ పరికరం
-Comment[tg]=Дастгоҳи нави MO
-Comment[th]=กำหนดอุปกรณ์ MO ใหม่
-Comment[tr]=Yeni MO Aygıtı
-Comment[tt]=Yaña MO Cıhazı
-Comment[uk]=Новий пристрій MO
-Comment[uz]=Yangi MO uskunasi
-Comment[uz@cyrillic]=Янги MO ускунаси
-Comment[vi]=Tạo MO mới
-Comment[wa]=Novea éndjin MO
-Comment[zh_CN]=新建 MO 设备
-Comment[zh_TW]=新 MO 設備
Type=Link
URL=.source/MO-Device.desktop
Icon=mo-unmounted
diff --git a/kdesktop/init/Templates/linkNFS.desktop b/kdesktop/init/Templates/linkNFS.desktop
index fee766937..bfa98b4d6 100644
--- a/kdesktop/init/Templates/linkNFS.desktop
+++ b/kdesktop/init/Templates/linkNFS.desktop
@@ -1,91 +1,6 @@
[Desktop Entry]
Name=NFS...
-Name[ar]=نظام ملفات الشبكة (NFS)...
-Name[bn]=এন-এফ-এস (NFS)...
-Name[br]=NFS ...
-Name[de]=NFS ...
-Name[hi]=एनएफ़एस...
-Name[hu]=NFS-megosztás...
-Name[nb]=NFS …
-Name[nn]=NFS …
-Name[ru]=Диск NFS...
-Name[se]=NFS …
-Name[sl]=NFS ...
-Name[te]=ఎన్ ఎఫ్ ఎస్...
-Name[th]=การเชื่อมโยง NFS...
Comment=New NFS Link
-Comment[af]=Nuwe NFS Skakel
-Comment[ar]=رابط NFS جديد
-Comment[be]=Новая спасылка на NFS
-Comment[bg]=Нова връзка NFS
-Comment[bn]=নতুন এন-এফ-এস লিঙ্ক
-Comment[br]=Liamm NFS Nevez
-Comment[bs]=Novi NFS link
-Comment[ca]=Enllaç NFS nou
-Comment[cs]=Nový NFS odkaz
-Comment[csb]=Nowi lënk do NFS
-Comment[cy]=Cyswllt NFS Newydd
-Comment[da]=Nyt NFS-link
-Comment[de]=Neue NFS-Verknüpfung
-Comment[el]=Νέος δεσμός NFS
-Comment[eo]=Nova NFS-ligo
-Comment[es]=Nuevo enlace NFS
-Comment[et]=Uus NFS viit
-Comment[eu]=NFS esteka berria
-Comment[fa]=پیوند NFS جدید
-Comment[fi]=Uusi NFS-linkki
-Comment[fr]=Nouveau lien NFS
-Comment[fy]=Nije NFS-Keppeling
-Comment[ga]=Nasc nua NFS
-Comment[gl]=Nova Ligazón NFS
-Comment[he]=קישור NFS חדש
-Comment[hi]=नया एनएफ़एस लिंक
-Comment[hr]=Nova NFS veza
-Comment[hu]=Új NFS-link
-Comment[is]=Ný NFS tenging
-Comment[it]=Nuovo collegamento NFS
-Comment[ja]=新規 NFS リンク
-Comment[ka]=ახალი NFS ბმული
-Comment[kk]=Жаңа NFS сілтемесі
-Comment[km]=តំណ NFS ថ្មី
-Comment[ko]=새 NFS 연결
-Comment[lt]=Nauja NFS nuoroda
-Comment[lv]=Jauna NFS saite
-Comment[mk]=Нова NFS врска
-Comment[mn]=Шинэ NFS холбоос
-Comment[ms]=Pautan NFS Baru
-Comment[mt]=Link ġdid għal NFS
-Comment[nb]=Ny NFS-lenke
-Comment[nds]=Niegen NFS-Link
-Comment[ne]=नयाँ NFS लिङ्क
-Comment[nl]=Nieuwe NFS-koppeling
-Comment[nn]=Ny NFS-lenkje
-Comment[pa]=ਨਵਾਂ NFS ਸੰਬੰਧ
-Comment[pl]=Nowy skrót do NFS...
-Comment[pt]=Nova ligação NFS
-Comment[pt_BR]=Novo Link NFS
-Comment[ro]=Legătură NFS nouă
-Comment[ru]=Ссылка на диск NFS
-Comment[rw]= Ihuza NFS Rishya
-Comment[se]=Ođđa NFS-liŋka
-Comment[sk]=Nový odkaz NFS
-Comment[sl]=Nova povezava NFS
-Comment[sr]=Нова NFS веза
-Comment[sr@Latn]=Nova NFS veza
-Comment[sv]=Ny NFS-länk
-Comment[ta]=புது NFS இணைப்பு
-Comment[te]=కొత్త ఎన్ ఎఫ్ ఎస్ లింక్
-Comment[tg]=NFS-и пайванди нав
-Comment[th]=สร้างการเชื่อมโยง NFS ใหม่
-Comment[tr]=Yeni NFS Bağlantısı
-Comment[tt]=NFS öçen Yaña Bäy
-Comment[uk]=Нове посилання NFS
-Comment[uz]=NFS bilan yangi bogʻ
-Comment[uz@cyrillic]=NFS билан янги боғ
-Comment[vi]=Tạo liên kết NFS mới
-Comment[wa]=Novea loyén NFS
-Comment[zh_CN]=新建 NFS 链接
-Comment[zh_TW]=新 NFS 鏈結
Type=Link
URL=.source/NFS.desktop
Icon=nfs-unmounted
diff --git a/kdesktop/init/Templates/linkProgram.desktop b/kdesktop/init/Templates/linkProgram.desktop
index 9f31f45d2..6398875d8 100644
--- a/kdesktop/init/Templates/linkProgram.desktop
+++ b/kdesktop/init/Templates/linkProgram.desktop
@@ -1,153 +1,6 @@
[Desktop Entry]
Name=Link to Application...
-Name[af]=Skakel na Program...
-Name[ar]=رابط لتطبيق...
-Name[be]=Спасылка на праграму...
-Name[bg]=Връзка към програма...
-Name[bn]=অ্যাপলিকেশন-এ লিঙ্ক...
-Name[br]=Liamm ouzh un arload ...
-Name[bs]=Veza do programa...
-Name[ca]=Enllaç a aplicació...
-Name[cs]=Odkaz na aplikaci...
-Name[csb]=Lënk do programë...
-Name[cy]=Cyswllt i Gymhwysiad...
-Name[da]=Link til program...
-Name[de]=Verknüpfung zu Programm ...
-Name[el]=Δεσμός με εφαρμογή...
-Name[eo]=Ligo al aplikaĵo...
-Name[es]=Enlace a aplicación...
-Name[et]=Viit rakendusele...
-Name[eu]=Esteka aplikazioari...
-Name[fa]=پیوند به کاربرد...
-Name[fi]=Linkki sovellukseen...
-Name[fr]=Lien vers une application...
-Name[fy]=Keppeling nei tappasing...
-Name[ga]=Nasc go Feidhmchlár...
-Name[gl]=Ligazón a unha Aplicación...
-Name[he]=קישור ליישום...
-Name[hi]=अनुप्रयोग को लिंक...
-Name[hr]=Veza s aplikacijom...
-Name[hu]=Alkalmazásra mutató link...
-Name[is]=Tengja við forrit...
-Name[it]=Collegamento ad un'applicazione...
-Name[ja]=アプリケーションへのリンク...
-Name[ka]=პროგრამის ბმული...
-Name[kk]=Қолданбаға сілтеме...
-Name[km]=តំណ​ទៅ​កម្មវិធី...
-Name[ko]=프로그램으로 향한 연결...
-Name[lt]=Programos nuoroda...
-Name[lv]=Saite uz Aplikāciju...
-Name[mk]=Врска до апликација...
-Name[mn]=Програмтай холбох...
-Name[ms]=Paut ke Aplikasi...
-Name[mt]=Link għal programm...
-Name[nb]=Lenke til program …
-Name[nds]=Link na'n Programm...
-Name[ne]=अनुप्रयोगमा लिङ्क गर्नुहोस्...
-Name[nl]=Koppeling naar toepassing...
-Name[nn]=Lenkje til program …
-Name[pa]=ਕਾਰਜ ਨਾਲ ਸੰਬੰਧ...
-Name[pl]=Skrót do programu...
-Name[pt]=Atalho para Aplicação...
-Name[pt_BR]=Link para Aplicativo...
-Name[ro]=Legătură către aplicație...
-Name[ru]=Ссылка на приложение...
-Name[rw]=Ihuza kuri Porogaramu...
-Name[se]=Liŋka prográmmii …
-Name[sk]=Odkaz na aplikáciu...
-Name[sl]=Povezava do programa ...
-Name[sr]=Веза ка програму...
-Name[sr@Latn]=Veza ka programu...
-Name[sv]=Länk till program...
-Name[ta]=விண்ணப்பத்துக்கு இணை...
-Name[tg]=Пайванд ба барномаи...
-Name[th]=เชื่อมโยงไปยังแอพพลิเคชัน...
-Name[tr]=Uygulamaya Bağlantı...
-Name[tt]=Yazılımğa Bäy...
-Name[uk]=Посилання на програму...
-Name[uz]=Dastur bilan bogʻ...
-Name[uz@cyrillic]=Дастур билан боғ...
-Name[vi]=Liên kết tới một Chương trình...
-Name[wa]=Loyén viè on programe...
-Name[zh_CN]=应用程序链接...
-Name[zh_TW]=應用程式連結...
Comment=New Link to Application
-Comment[af]=Nuwe Skakel na Aansoek
-Comment[ar]=إرتباط جديد بتطبيق
-Comment[be]=Новая спасылка на праграму
-Comment[bg]=Нова връзка към програма
-Comment[bn]=অ্যাপলিকেশন-এ নতুন লিঙ্ক
-Comment[br]=Liamm nevez ouzh un arload ...
-Comment[bs]=Nova veza do programa
-Comment[ca]=Nou enllaç a l'aplicació
-Comment[cs]=Nový odkaz na aplikaci
-Comment[csb]=Nowi lënk do programë
-Comment[cy]=Cyswllt Newydd i Gymhwysiad
-Comment[da]=Nyt link til program
-Comment[de]=Neue Verknüpfung mit Programm
-Comment[el]=Νέος δεσμός με εφαρμογή
-Comment[eo]=Nova ligo al aplikaĵo
-Comment[es]=Nuevo enlace a aplicación
-Comment[et]=Uus viit rakendusele
-Comment[eu]=Aplikazioarekiko esteka berria
-Comment[fa]=پیوند جدید به کاربرد
-Comment[fi]=Uusi linkki sovellukseen
-Comment[fr]=Nouveau lien vers une application
-Comment[fy]=Nije keppeling naar toepassing
-Comment[ga]=Nasc nua go feidhmchlár
-Comment[gl]=Nova Ligazón a unha Aplicación
-Comment[he]=קישור חדש ליישום
-Comment[hi]=अनुप्रयोग को नई लिंक
-Comment[hr]=Nova veza s aplikacijom
-Comment[hu]=Alkalmazásra mutató új link
-Comment[is]=Nýtt tengi við forrit
-Comment[it]=Nuovo collegamento ad un'applicazione
-Comment[ja]=新規アプリケーションリンク
-Comment[ka]=პროგრამის ახალი ბმული
-Comment[kk]=Қолданбаға жаңа сілтеме
-Comment[km]=តំណ​ថ្មី​ទៅ​កម្មវិធី
-Comment[ko]=프로그램으로 향한 새 연결
-Comment[lo]=ສ້າງລິ້ງໄປຍັງແອບພີເຄຊັ້ນໃຫມ່
-Comment[lt]=Nauja programos nuoroda
-Comment[lv]=Jauna Saite uz Aplikāciju
-Comment[mk]=Нова врска до апликација
-Comment[mn]=програмтай шинээр холбох
-Comment[ms]=Pautan Baru ke Aplikasi
-Comment[mt]=Link ġdid ġħal programm
-Comment[nb]=Ny lenke til program
-Comment[nds]=Niegen Link na'n Programm
-Comment[ne]=अनुप्रयोगमा नयाँ लिङ्क गर्नुहोस्
-Comment[nl]=Nieuwe koppeling naar toepassing
-Comment[nn]=Ny lenkje til program
-Comment[nso]=Kgokaganyo ye Ntshwa go Tshomiso
-Comment[pa]=ਕਾਰਜ ਨਾਲ ਨਵਾਂ ਸੰਬੰਧ
-Comment[pl]=Nowy skrót do programu
-Comment[pt]=Novo Atalho para Aplicação
-Comment[pt_BR]=Novo link para Aplicativo
-Comment[ro]=Legătură nouă către aplicație
-Comment[ru]=Новая ссылка на приложение
-Comment[rw]=Ihuza Rishya kuri Porogaramu
-Comment[se]=Ođđa liŋka prográmmii
-Comment[sk]=Nový odkaz na aplikáciu
-Comment[sl]=Nova povezava do programa
-Comment[sr]=Нова веза ка програму
-Comment[sr@Latn]=Nova veza ka programu
-Comment[sv]=Ny länk till program
-Comment[ta]=பயன்பாட்டுக்கான புதிய இணைப்பு
-Comment[tg]=Пайванди нав ба барнома
-Comment[th]=สร้างการเชื่อมโยงใหม่ไปยังแอพพลิเคชัน
-Comment[tr]=Uygulamaya Yeni Bağlantı
-Comment[tt]=Yazılım öçen Yaña Bäy
-Comment[uk]=Нове посилання на програму
-Comment[uz]=Dastur bilan yangi bogʻ
-Comment[uz@cyrillic]=Дастур билан янги боғ
-Comment[ven]=Thumanyo ntswa kha apulifikhesheni
-Comment[vi]=Tạo liên kết mới tới một chương trình
-Comment[wa]=Novea loyén viè on programe
-Comment[xh]=Ikhonkco Elitsha Lwesicelo
-Comment[zh_CN]=新建应用程序链接
-Comment[zh_TW]=新建應用程式連結
-Comment[zu]=Isixhumanisi esisha esiya kumyaleli
Icon=application-x-executable
Type=Link
URL=.source/Program.desktop
diff --git a/kdesktop/init/Templates/linkURL.desktop b/kdesktop/init/Templates/linkURL.desktop
index 1af2d73bb..70210442f 100644
--- a/kdesktop/init/Templates/linkURL.desktop
+++ b/kdesktop/init/Templates/linkURL.desktop
@@ -1,153 +1,6 @@
[Desktop Entry]
Name=Link to Location (URL)...
-Name[af]=Skakel na Ligging (URL)...
-Name[ar]=رابط لموقع...
-Name[be]=Спасылка на месцазнаходжанне (URL)...
-Name[bg]=Връзка към адрес...
-Name[bn]=ইউ-আর-এল অবস্থানে লিঙ্ক...
-Name[br]=Liamm ouzh ul lec'hiadur (URL) ...
-Name[bs]=Veza do lokacije (URL)...
-Name[ca]=Enllaç al localitzador (URL)...
-Name[cs]=Odkaz na umístění (URL)...
-Name[csb]=Lënk do adresë (URL)...
-Name[cy]=Cyswllt i Leoliad (URL)...
-Name[da]=Internetlink (URL)...
-Name[de]=Verknüpfung zu Adresse (URL) ...
-Name[el]=Δεσμός με τοποθεσία (URL)...
-Name[eo]=Ligo al situo (URL)...
-Name[es]=Enlace a dirección (URL)...
-Name[et]=Viit asukohale (URL)...
-Name[eu]=Esteka kokapenari (URL)...
-Name[fa]=پیوند به محل )نشانی وب(...
-Name[fi]=Linkki sijaintiin (URL)...
-Name[fr]=Lien vers une URL...
-Name[fy]=Keppeling nei lokaasje (URL-adres)...
-Name[ga]=Nasc le Suíomh (URL)...
-Name[gl]=Ligazón a un Sítio (URL)...
-Name[he]=קישור למיקום (URL)...
-Name[hi]=स्थान (यूआरएल) को लिंक...
-Name[hr]=Veza s lokacijom (URL)...
-Name[hu]=Internet-cím (URL)...
-Name[is]=Staðsetningartengill...
-Name[it]=Collegamento ad un indirizzo (URL)...
-Name[ja]=場所へのリンク (URL)
-Name[ka]=ადგილმდებარეობის ბმული (URL)...
-Name[kk]=URL-адреске сілтеме...
-Name[km]=តំណ​ទៅ​ទីតាំង (URL)...
-Name[ko]=위치로 향한 연결 (URL)...
-Name[lt]=Adreso nuoroda (URL)...
-Name[lv]=Saite uz Vietu (URL)...
-Name[mk]=Врска до локација (URL)...
-Name[mn]=Хаягтай (URL) холбох...
-Name[ms]=Paut ke Aplikasi (URL)...
-Name[mt]=Link għal lokazzjoni (URL)...
-Name[nb]=Lenke til nettadresse (URL) …
-Name[nds]=Link na'n Oort (URL)...
-Name[ne]=स्थानमा लिङ्क गर्नुहोस् (यूआरएल)...
-Name[nl]=Koppeling naar locatie (URL-adres)...
-Name[nn]=Lenkje til nettadresse (URL) …
-Name[pa]=ਸਥਿਤੀ (URL) ਨਾਲ ਸੰਬੰਧ...
-Name[pl]=Skrót do adresu (URL)...
-Name[pt]=Atalho para Localização (URL)...
-Name[pt_BR]=Link para Localização (URL)...
-Name[ro]=Legătură către locație (URL)...
-Name[ru]=Адрес Интернета...
-Name[rw]=Ihuza ku ndangahantu (URL)...
-Name[se]=Liŋka fierpmádatčujuhussii (URL) …
-Name[sk]=Odkaz na umiestnenie (URL)...
-Name[sl]=Povezava do lokacije (URL) ...
-Name[sr]=Веза ка локацији (URL)...
-Name[sr@Latn]=Veza ka lokaciji (URL)...
-Name[sv]=Länk till plats (URL)...
-Name[ta]=இடத்திற்கு இணை (URL)...
-Name[tg]=Пайванд ба макони (URL)...
-Name[th]=เชื่อมโยงไปยังตำแหน่ง (URL)...
-Name[tr]=Konuma (URL) Bağlantı...
-Name[tt]=Urınlaşu öçen Bäy (URL)...
-Name[uk]=Посилання до адреси (URL)...
-Name[uz]=Mavzu bilan bogʻ (URL)...
-Name[uz@cyrillic]=Мавзу билан боғ (URL)...
-Name[vi]=Liên kết tới trang mạng (URL)...
-Name[wa]=Loyén viè ene plaece (URL)...
-Name[zh_CN]=到位置(URL)的链接...
-Name[zh_TW]=到位置的連結(URL)
Comment=Enter link to location (URL):
-Comment[af]=Invoer skakel na ligging (Url):
-Comment[ar]=أدخل رابط لموقع:
-Comment[be]=Вызначце спасылку на месцазнаходжанне (URL):
-Comment[bg]=Въведете връзката към адреса:
-Comment[bn]=লিঙ্কের অবস্থান:
-Comment[br]=Roit al liamm ouzh ul lec'hiadur (URL) :
-Comment[bs]=Unesite vezu do lokacije (URL):
-Comment[ca]=Entreu un enllaç al localitzador (URL):
-Comment[cs]=Zadejte odkaz na umístění (URL):
-Comment[csb]=Nowi lënk do internetowi adresë (URL):
-Comment[cy]=Mewnosodwch cyswllt i leoliad (URL):
-Comment[da]=Indtast internetlink (URL):
-Comment[de]=Verknüpfung mit Adresse (URL) eingeben:
-Comment[el]=Δώστε δεσμό στην τοποθεσία (URL):
-Comment[eo]=Enigu ligon al situo (URL):
-Comment[es]=Introduzca el enlace a la dirección (URL):
-Comment[et]=Sisesta viit asukohale (URL):
-Comment[eu]=Sartu kokapenarekiko (URL) esteka:
-Comment[fa]=پیوند به محل )نشانی وب( را وارد کنید:
-Comment[fi]=Anna linkki sijaintiin (URL):
-Comment[fr]=Nouveau lien vers une URL :
-Comment[fy]=Keppeling nei lokaasje ynfiere (URL-adres):
-Comment[ga]=Iontráil nasc le suíomh (URL):
-Comment[gl]=Introduza a ligazón á localización (URL):
-Comment[he]=הזן את הקישור למיקום (URL):
-Comment[hi]=स्थान (यूआरएल) को लिंक भरें:
-Comment[hr]=Nova veza s lokacijom (URL)
-Comment[hu]=Adja meg az internet-címet (URL-t):
-Comment[is]=Gefðu upp slóð að staðsetningu:
-Comment[it]=Immetti collegamento all'indirizzo (URL):
-Comment[ja]=新規の場所へのリンク(URL):
-Comment[ka]=შეიყვანეთ პროგრამის ბმული ბმული (URL)
-Comment[kk]=URL-адресін келтіріңіз:
-Comment[km]=បញ្ចូល​តំណ​ទៅ​ទីតាំង (URL) ៖
-Comment[ko]=연결할 위치(URL)를 입력하십시오:
-Comment[lo]=ສ້າງລິໄປຍັງຕຳແຫນ່ງ (URL) ໃຫ່ມ
-Comment[lt]=Nauja adreso nuoroda (URL)
-Comment[lv]=Jauna Saite uz Vietu (URL):
-Comment[mk]=Внесете врска до локацијата (URL):
-Comment[mn]=Холбох хаяг (URL) өгөх:
-Comment[ms]=Masukkan pautan ke lokasi (URL):
-Comment[mt]=Link ġdid għal lokazzjoni (URL)
-Comment[nb]=Ny lenke til en nettadresse:
-Comment[nds]=Link na'n Oort (URL) ingeven:
-Comment[ne]=स्थानमा प्रविष्टि लिङ्क गर्नुहोस् (यूआरएल):
-Comment[nl]=Koppeling naar locatie invoeren (URL-adres):
-Comment[nn]=Ny lenkje til Internettadresse:
-Comment[nso]=Tsenya sekgokaganyi go tulo (URL):
-Comment[pa]=ਸਥਿਤੀ (URL) ਨਾਲ ਸੰਬੰਧ ਦਿਓ:
-Comment[pl]=Nowy skrót do adresu internetowego (URL):
-Comment[pt]=Indique o atalho para a localização (URL):
-Comment[pt_BR]=Digite o link para a localização (URL):
-Comment[ro]=Introduceți legătura către locație (URL):
-Comment[ru]=Адрес в Интернете:
-Comment[rw]=Kwinjiza ihuza ku ndangahantu (URL):
-Comment[se]=Bija liŋkka fierpmádatčujuhussii (URL):
-Comment[sk]=Zadajte odkaz na umiestnenie (URL):
-Comment[sl]=Vnesite povezavo do mesta (URL):
-Comment[sr]=Унесите везу ка локацији (URL):
-Comment[sr@Latn]=Unesite vezu ka lokaciji (URL):
-Comment[sv]=Ange länk till plats (URL):
-Comment[ta]=இடத்திற்கான இணைப்பை உள்ளிடு (URL):
-Comment[tg]=Бадарғаро ба адреси (URL) ворид кунед:
-Comment[th]=สร้างการเชื่อมโยงไปยังตำแหน่ง (URL) ใหม่
-Comment[tr]=Konuma bağlantıyı girin:
-Comment[tt]=Urınlaşu bäyen kertü (URL):
-Comment[uk]=Введіть посилання до адреси (URL):
-Comment[uz]=Mavzuga bogʻni (URL) kiriting:
-Comment[uz@cyrillic]=Мавзуга боғни (URL) киритинг:
-Comment[ven]=Dzhenisani vhukwamani kha fhethu (URL):
-Comment[vi]=Nhập liên kết tới trang mạng:
-Comment[wa]=Novea loyén viè ene plaece (URL):
-Comment[xh]=Ngenisa ikhonkco twindawo ekuyo (URL):
-Comment[zh_CN]=输入到位置(URL)的链接:
-Comment[zh_TW]=輸入到位置的連結(URL):
-Comment[zu]=Ngenisa isixhumanisi esiya endaweni (URL):
URL=.source/URL.desktop
Type=Link
Icon=www
diff --git a/kdesktop/init/Templates/linkZIP.desktop b/kdesktop/init/Templates/linkZIP.desktop
index 37f03bcd2..aaf2bc55e 100644
--- a/kdesktop/init/Templates/linkZIP.desktop
+++ b/kdesktop/init/Templates/linkZIP.desktop
@@ -1,150 +1,6 @@
[Desktop Entry]
Name=ZIP Device...
-Name[af]=ZIP Toestel...
-Name[ar]=جهاز ZIP...
-Name[be]=Прылада ZIP...
-Name[bg]=ZIP...
-Name[bn]=ZIP ডিভাইস...
-Name[br]=Trobarzhell ZIP ...
-Name[bs]=ZIP uređaj...
-Name[ca]=Dispositiu ZIP...
-Name[cs]=ZIP jednotka...
-Name[csb]=Nëk ZIP...
-Name[cy]=Dyfais ZIP...
-Name[da]=ZIP-enhed...
-Name[de]=ZIP-Laufwerk ...
-Name[el]=Συσκευή ZIP...
-Name[eo]=ZIP-ingo...
-Name[es]=Unidad ZIP...
-Name[et]=ZIP seade...
-Name[eu]=ZIP gailua...
-Name[fa]=دستگاه ZIP...
-Name[fi]=ZIP-laite...
-Name[fr]=Lecteur ZIP...
-Name[fy]=ZIP-apparaat...
-Name[ga]=Gléas Zip...
-Name[gl]=Dispositivo Zip...
-Name[he]=התקן ZIP...
-Name[hi]=जिप उपकरण...
-Name[hr]=ZIP uređaj...
-Name[hu]=ZIP-meghajtó...
-Name[is]=ZIP-drif...
-Name[it]=Dispositivo ZIP...
-Name[ja]=ZIP デバイス...
-Name[ka]=ZIP მოწყობილობა...
-Name[kk]=ZIP құрылғысы...
-Name[km]=ឧបករណ៍ ZIP...
-Name[ko]=ZIP 장치...
-Name[lt]=ZIP įrenginys...
-Name[lv]=ZIP Iekārta...
-Name[mk]=ZIP Уред...
-Name[mn]=ZIP Төхөөрөмж..
-Name[ms]=Peranti ZIP...
-Name[mt]=Apparat ZIP
-Name[nb]=ZIP-enhet …
-Name[nds]=ZIP-Reedschap...
-Name[ne]=ZIP यन्त्र...
-Name[nl]=ZIP-apparaat...
-Name[nn]=ZIP-eining …
-Name[pa]=ZIP ਜੰਤਰ...
-Name[pl]=Napęd ZIP...
-Name[pt]=Dispositivo ZIP...
-Name[pt_BR]=Dispositivo ZIP...
-Name[ro]=Dispozitiv ZIP...
-Name[ru]=ZIP...
-Name[rw]=Apareye ZIPU...
-Name[se]=ZIP-Ovttadat …
-Name[sk]=Mechanika ZIP...
-Name[sl]=Naprava ZIP ...
-Name[sr]=ZIP Уређај...
-Name[sr@Latn]=ZIP Uređaj...
-Name[sv]=Zip-enhet...
-Name[ta]=ZIP சாதனங்கள்
-Name[te]=జిప్ పరికరం...
-Name[tg]=Дастгоҳи ZIP...
-Name[th]=อุปกรณ์ ZIP...
-Name[tr]=ZIP Aygıtı...
-Name[tt]=ZIP Cıhazı...
-Name[uk]=Пристрій ZIP...
-Name[uz]=ZIP uskunasi...
-Name[uz@cyrillic]=ZIP ускунаси...
-Name[vi]=Ổ ZIP...
-Name[wa]=Éndjin léjheu di plaketes ZIP...
-Name[zh_CN]=ZIP 设备...
-Name[zh_TW]=ZIP 設備...
Comment=New ZIP Device
-Comment[af]=Nuwe ZIP Toestel...
-Comment[ar]=جهاز ZIP جديد
-Comment[be]=Новая прылада ZIP
-Comment[bg]=Ново устройство ZIP
-Comment[bn]=নতুন ZIP ডিভাইস
-Comment[br]=Trobarzhell ZIP Nevez
-Comment[bs]=Novi ZIP uređaj
-Comment[ca]=Dispositiu ZIP nou
-Comment[cs]=Nová ZIP jednotka
-Comment[csb]=Nowi nëk ZIP
-Comment[cy]=Dyfais ZIP Newydd
-Comment[da]=Ny ZIP-enhed
-Comment[de]=Neues ZIP-Laufwerk
-Comment[el]=Νέα συσκευή ZIP
-Comment[eo]=Nova ZIP-ingo
-Comment[es]=Nueva unidad ZIP
-Comment[et]=Uus ZIP seade
-Comment[eu]=ZIP gailu berria
-Comment[fa]=دستگاه ZIP جدید
-Comment[fi]=Uusi ZIP-laite
-Comment[fr]=Nouveau lecteur ZIP
-Comment[fy]=Nije ZIP-apparaat
-Comment[ga]=Gléas Nua Zip
-Comment[gl]=Novo Dispositivo Zip
-Comment[he]=התקן ZIP חדש
-Comment[hi]=नया जिप उपकरण
-Comment[hr]=Novi ZIP uređaj
-Comment[hu]=Új ZIP-lemezes meghajtó
-Comment[is]=Nýtt ZIP-drif
-Comment[it]=Nuovo dispositivo ZIP
-Comment[ja]=新規 ZIP デバイス
-Comment[ka]=ახალი ZIP მოწყობილობა
-Comment[kk]=Жаңа ZIP құрылғысы
-Comment[km]=ឧបករណ៍ ZIP ថ្មី
-Comment[ko]=새 ZIP 장치
-Comment[lt]=Naujas ZIP įrenginys
-Comment[lv]=Jauna ZIP iekārta
-Comment[mk]=Нов ZIP уред
-Comment[mn]=Шинэ ZIP Төхөөрөмж..
-Comment[ms]=Peranti ZIP Baru
-Comment[mt]=Apparat ZIP ġdid
-Comment[nb]=Ny ZIP-enhet
-Comment[nds]=Niege ZIP-Reedschap
-Comment[ne]=नयाँ ZIP यन्त्र
-Comment[nl]=Nieuw ZIP-apparaat
-Comment[nn]=Ny ZIP-eining
-Comment[pa]=ਨਵਾਂ ZIP ਜੰਤਰ
-Comment[pl]=Nowy napęd ZIP
-Comment[pt]=Novo Dispositivo ZIP
-Comment[pt_BR]=Novo Dispositivo ZIP
-Comment[ro]=Dispozitiv ZIP nou
-Comment[ru]=Ссылка на устройство ZIP
-Comment[rw]=Apareye ZIP Nshya
-Comment[se]=Ođđa ZIP-ovttadat …
-Comment[sk]=Nové zariadenie ZIP
-Comment[sl]=Nova naprava ZIP
-Comment[sr]=Нови ZIP уређај
-Comment[sr@Latn]=Novi ZIP uređaj
-Comment[sv]=Ny Zip-enhet
-Comment[ta]=புதிய ZIP சாதனம்
-Comment[te]=కొత్త జిప్ పరికరం
-Comment[tg]=Дастгоҳи нави ZIP
-Comment[th]=กำหนดอุปกรณ์ ZIP ตัวใหม่
-Comment[tr]=Yeni ZIP Aygıtı
-Comment[tt]=Yaña ZIP Cıhazı
-Comment[uk]=Новий пристрій ZIP
-Comment[uz]=Yangi ZIP uskunasi
-Comment[uz@cyrillic]=Янги ZIP ускунаси
-Comment[vi]=Tạo ổ ZIP mới
-Comment[wa]=Novea éndjin léjheu di plaketes ZIP
-Comment[zh_CN]=新建 ZIP 设备
-Comment[zh_TW]=新 ZIP 設備
Type=Link
URL=.source/ZIP-Device.desktop
Icon=media-floppy-zip-unmounted
diff --git a/kdesktop/init/Trash b/kdesktop/init/Trash
index 064d0ab28..6bdc8cb28 100644
--- a/kdesktop/init/Trash
+++ b/kdesktop/init/Trash
@@ -4,85 +4,9 @@ URL=trash:/
Encoding=UTF-8
Icon=trashcan_full
EmptyIcon=trashcan_empty
+
Name=Trash
-Name[af]=Gemors
-Name[ar]=سلة النفايات
-Name[az]=Zibil
-Name[be]=Сметніца
-Name[bg]=Кошче
-Name[bn]=আবর্জনা
-Name[br]=Pod-lastez
-Name[bs]=Smeće
-Name[ca]=Paperera
-Name[cs]=Koš
-Name[csb]=Kòsz
-Name[cy]=Sbwriel
-Name[da]=Affald
-Name[de]=Mülleimer
-Name[el]=Κάδος απορριμμάτων
-Name[en_GB]=Wastebin
-Name[en_US]=Trash
-Name[eo]=Rubujo
-Name[es]=Papelera
-Name[et]=Prügikast
-Name[eu]=Zaborra
-Name[fa]=زباله
-Name[fi]=Roskakori
-Name[fr]=Corbeille
-Name[fy]=Jiskefet
-Name[ga]=Bruscar
-Name[gl]=Lixo
-Name[he]=אשפה
-Name[hi]=रद्दी
-Name[hr]=Otpad
-Name[hsb]=Papjernik
-Name[hu]=Szemétkosár
-Name[is]=Rusl
-Name[it]=Cestino
-Name[ja]=ごみ箱
-Name[ka]=ურნა
-Name[kk]=Өшірілгендер
-Name[km]=ធុងសំរាម
-Name[lo]=ຖັງຂີ້ເຫຍື່ອ
-Name[lt]=Šiukšliadėžė
-Name[lv]=Miskaste
-Name[mk]=Корпа
-Name[mn]=Хогийн сав
-Name[ms]=Sampah
-Name[mt]=Skart
-Name[nb]=Papirkurv
-Name[nds]=Affalltünn
-Name[ne]=रद्दीटोकरी
-Name[nl]=Prullenbak
-Name[nn]=Papirkorg
-Name[nso]=Seswaraditlakala
-Name[pa]=ਰੱਦੀ
-Name[pl]=Kosz
-Name[pt]=Lixo
-Name[pt_BR]=Lixo
-Name[ro]=Gunoi
-Name[ru]=Корзина
-Name[se]=Ruskalihtti
-Name[sk]=Kôš
-Name[sl]=Smeti
-Name[sr]=Смеће
-Name[sr@Latn]=Smeće
-Name[sv]=Skräp
-Name[ta]=குப்பை
-Name[te]=చెత్త బుట్ట
-Name[tg]=Ахлотдон
-Name[th]=ถังขยะ
-Name[tr]=Çöp
-Name[tt]=Çüplek
-Name[uk]=Смітник
-Name[uz]=Chiqindilar qutisi
-Name[uz@cyrillic]=Чиқиндилар қутиси
-Name[ven]=Tshikha
-Name[vi]=Thùng rác
-Name[wa]=Batch
-Name[xh]=Inkukumo
-Name[zh_CN]=回收站
-Name[zh_TW]=資源回收桶
-Name[zu]=Izibi
-Comment=Contains removed files
-X-Trinity-BuiltIn=true \ No newline at end of file
+
+Comment=Contains removed files
+
+X-Trinity-BuiltIn=true
diff --git a/kdesktop/init/Web_Browser b/kdesktop/init/Web_Browser
index 9a13b38c0..0b0b47def 100644
--- a/kdesktop/init/Web_Browser
+++ b/kdesktop/init/Web_Browser
@@ -1,40 +1,17 @@
[Desktop Entry]
-Comment=Browse the World Wide Web
-Comment[en_US]=Browse the World Wide Web
Exec=kfmclient openBrowser %u
-GenericName=Web Browser
-GenericName[en_US]=Web Browser
Icon=konqueror
MimeType=application/vnd.mozilla.xul+xml;application/xhtml+xml;application/xml;image/gif;image/jpeg;image/png;text/html;text/xml
+
Name=Web Browser
-Name[ca]=Navegador web
-Name[cs]=Webový prohlížeč
-Name[de]=Web-Browser
-Name[en_US]=Web Browser
-Name[es]=Navegador web
-Name[fa]=مرورگر اینترنتی
-Name[fi]=-selain
-Name[fr]=Navigateur Web
-Name[hu]=webböngésző
-Name[it]=Browser Web
-Name[ja]=ウェブ・ブラウザ
-Name[ko]=웹 브라우저
-Name[nb]=Nettleser
-Name[nl]=webbrowser
-Name[nn]=Nettlesar
-Name[no]=Nettleser
-Name[pl]=Przeglądarka WWW
-Name[pt]=Navegador Web
-Name[pt_BR]=Navegador Web
-Name[sk]=Internetový prehliadač
-Name[sv]=Webbläsaren
-Path=
+
+GenericName=Web Browser
+
+Comment=Browse the World Wide Web
+
StartupNotify=true
Terminal=false
-TerminalOptions=
Type=Application
-X-DCOP-ServiceType=
X-TDE-SubstituteUID=false
-X-TDE-Username=
X-Trinity-BuiltIn=true
OnlyShowIn=TDE;
diff --git a/kdesktop/init/directory.autostart b/kdesktop/init/directory.autostart
index d63845aed..be595f359 100644
--- a/kdesktop/init/directory.autostart
+++ b/kdesktop/init/directory.autostart
@@ -1,68 +1,3 @@
[Desktop Entry]
Type=Directory
Name=Autostart
-Name[af]=Outomatiese begin
-Name[ar]=بدء تشغيل تلقائي
-Name[az]=Öz-Özünə Başlama
-Name[be]=Аўтазапуск
-Name[bg]=Автоматично стартиране
-Name[bn]=অটো-স্টার্ট
-Name[br]=Emloc'h
-Name[ca]=Autoengega
-Name[csb]=Aùtosztart
-Name[cy]=Hunan-gychwyn
-Name[el]=Αυτόματη Έναρξη
-Name[eo]=Aŭtolanĉo
-Name[es]=Inicio automático
-Name[eu]=Autoabiatu
-Name[fa]=خودآغاز
-Name[fi]=Käynnistä
-Name[fr]=Démarrage automatique
-Name[fy]=Automatysk Begjinne
-Name[ga]=Tús uathoibríoch
-Name[gl]=Autoinício
-Name[he]=הפעלה אוטומטית
-Name[hi]=स्वतःप्रारंभ
-Name[hr]=Automatsko pokretanje
-Name[hu]=Automatikus indítás
-Name[is]=Sjálfræsing
-Name[it]=Avvio automatico
-Name[ja]=自動起動
-Name[ka]=ავტოგაშვება
-Name[kk]=Автобастау
-Name[km]=ចាប់ផ្ដើម​ស្វ័យប្រវត្តិ
-Name[lo]=ເລິ່ມອັດໂນມັດ
-Name[lt]=Autostartas
-Name[lv]=Autostarts
-Name[mk]=Автостарт
-Name[mn]=Автомат эхлэгч
-Name[ms]=Automula
-Name[mt]=Awto-bidu
-Name[ne]=स्वत: सुरु
-Name[nso]=Thomo yago Itirisa
-Name[pa]=ਸਵੈ-ਚਾਲਤ
-Name[pt]=Arranque
-Name[pt_BR]=Inicialização Automática
-Name[ru]=Автозапуск
-Name[se]=Autoálggaheapmi
-Name[sk]=Autoštart
-Name[sl]=Samodejni zagon
-Name[sr]=Аутоматско покретање
-Name[sr@Latn]=Automatsko pokretanje
-Name[ta]=தானாகதுவக்கு
-Name[te]=స్వయంచాలన
-Name[tg]=Сар кунии автоматикӣ
-Name[th]=เริ่มอัตโนมัติ
-Name[tr]=Otomatik Başlat
-Name[tt]=Üze Cibäreläse
-Name[uk]=Автостарт
-Name[uz]=Avto-boshlash
-Name[uz@cyrillic]=Авто-бошлаш
-Name[ven]=Thoma
-Name[vi]=Tự khởi động
-Name[wa]=Enonde tot seu
-Name[xh]=Isiqalo esizenzekelayo
-Name[zh_CN]=自动启动
-Name[zh_TW]=自動啟動
-Name[zu]=Ukuqala ngokuzenzekela
-
diff --git a/kdesktop/init/directory.desktop b/kdesktop/init/directory.desktop
index 2269e69dd..53574d2da 100644
--- a/kdesktop/init/directory.desktop
+++ b/kdesktop/init/directory.desktop
@@ -3,79 +3,3 @@ Type=Directory
BgImage=
Icon=desktop
Name=Desktop
-Name[af]=Werkskerm
-Name[ar]=سطح المكتب
-Name[az]=Masa Üstü
-Name[be]=Працоўны стол
-Name[bg]=Работен плот
-Name[bn]=ডেস্কটপ
-Name[br]=Gorretaol
-Name[bs]=Radna površina
-Name[ca]=Escriptori
-Name[cs]=Pracovní plocha
-Name[csb]=Pùlt
-Name[cy]=Penbwrdd
-Name[de]=Arbeitsfläche
-Name[el]=Επιφάνεια εργασίας
-Name[eo]=Tabulo
-Name[es]=Escritorio
-Name[et]=Töölaud
-Name[eu]=Mahaigaina
-Name[fa]=رومیزی
-Name[fi]=Työpöytä
-Name[fo]=Skriviborð
-Name[fr]=Bureau
-Name[fy]=Buroblêd
-Name[ga]=Deasc
-Name[gl]=Escritorio
-Name[he]=שולחן עבודה
-Name[hi]=डेस्कटॉप
-Name[hr]=Radna površina
-Name[hsb]=Dźěłowy powjerch
-Name[hu]=Munkaasztal
-Name[is]=Skjáborð
-Name[ja]=デスクトップ
-Name[ka]=სამუშაო დაფა
-Name[kk]=Жұмыс үстелі
-Name[km]=ផ្ទៃតុ
-Name[ko]=데스크톱
-Name[lo]=ພື້ນທີ່ເຮັດວງກ
-Name[lt]=Darbastalis
-Name[lv]=Darbvirsma
-Name[mk]=Работна површина
-Name[mn]=Ажлын тавцан
-Name[ms]=Ruang Kerja
-Name[nb]=Skrivebord
-Name[nds]=Schriefdisch
-Name[ne]=डेस्कटप
-Name[nl]=Bureaublad
-Name[nn]=Skrivebord
-Name[oc]=BurèU
-Name[pa]=ਵੇਹੜਾ
-Name[pl]=Pulpit
-Name[pt]=Ambiente de Trabalho
-Name[pt_BR]=Área de Trabalho
-Name[ru]=Рабочий стол
-Name[rw]=Ibiro
-Name[se]=Čállinbeavdi
-Name[sk]=Plocha
-Name[sl]=Namizje
-Name[sr]=Радна површина
-Name[sr@Latn]=Radna površina
-Name[ss]=Desktop
-Name[sv]=Skrivbord
-Name[ta]=மேல்மேசை
-Name[te]=రంగస్ఠలం
-Name[tg]=Мизи корӣ
-Name[th]=พื้นที่ทำงาน
-Name[tr]=Masaüstü
-Name[tt]=Östäl
-Name[uk]=Стільниця
-Name[uz]=Ish stoli
-Name[uz@cyrillic]=Иш столи
-Name[ven]=Desikithopo
-Name[vi]=Màn hình nền
-Name[wa]=Sicribanne
-Name[zh_CN]=桌面
-Name[zh_TW]=桌面
-
diff --git a/kdesktop/init/directory.templates b/kdesktop/init/directory.templates
index d77fa5cb6..8cfeee2e3 100644
--- a/kdesktop/init/directory.templates
+++ b/kdesktop/init/directory.templates
@@ -1,78 +1,3 @@
[Desktop Entry]
Type=Directory
Name=Templates
-Name[af]=Voorbeelde
-Name[ar]=القوالب
-Name[az]=Nümunələr
-Name[be]=Шаблоны
-Name[bg]=Шаблони
-Name[bn]=টেমপ্লেট
-Name[br]=Patromoù
-Name[bs]=Šabloni
-Name[ca]=Plantilles
-Name[cs]=Šablony
-Name[csb]=Mùstrë
-Name[cy]=Patrymluniau
-Name[da]=Skabeloner
-Name[de]=Vorlagen
-Name[el]=Πρότυπα
-Name[eo]=Ŝablonoj
-Name[es]=Plantillas
-Name[et]=Mallid
-Name[eu]=Txantiloiak
-Name[fa]=الگوها
-Name[fi]=Pohjat
-Name[fr]=Modèles
-Name[fy]=Sjabloanen
-Name[ga]=Teimpléid
-Name[gl]=Modelos
-Name[he]=תבניות
-Name[hi]=टैम्प्लेट्स
-Name[hr]=Predlošci
-Name[hu]=Sablonok
-Name[is]=Snið
-Name[it]=Modelli
-Name[ja]=テンプレート
-Name[ka]=ნიმუშები
-Name[kk]=Үлгілер
-Name[km]=ពុម្ព
-Name[lo]=ຕົ້ນແບບ
-Name[lt]=Šablonai
-Name[lv]=Šabloni
-Name[mk]=Шаблони
-Name[mn]=Шаблом
-Name[ms]=Templat
-Name[mt]=Mudelli
-Name[nb]=Maler
-Name[nds]=Vörlagen
-Name[ne]=टेम्प्लेट
-Name[nl]=Sjablonen
-Name[nn]=Malar
-Name[nso]=Dipapiso
-Name[pa]=ਨਮੂਨਾ
-Name[pl]=Wzorce
-Name[pt]=Modelos
-Name[pt_BR]=Modelos
-Name[ro]=Modele
-Name[ru]=Шаблоны
-Name[se]=Mállet
-Name[sk]=Šablóny
-Name[sl]=Predloge
-Name[sr]=Шаблони
-Name[sr@Latn]=Šabloni
-Name[sv]=Mallar
-Name[ta]=வார்ப்புருக்கள்
-Name[te]=టెంప్లెటులు
-Name[tg]=Намунаҳо
-Name[th]=ต้นแบบ
-Name[tr]=Şablonlar
-Name[tt]=Ürçetmä
-Name[uk]=Шаблони
-Name[uz]=Namunalar
-Name[uz@cyrillic]=Намуналар
-Name[vi]=Tiêu bản
-Name[wa]=Modeles
-Name[zh_CN]=模板
-Name[zh_TW]=範本
-Name[zu]=Ama-Templates
-
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.desktop.cmake b/kdesktop/kdesktop.desktop.cmake
index 03d65ced5..2d91c337b 100644
--- a/kdesktop/kdesktop.desktop.cmake
+++ b/kdesktop/kdesktop.desktop.cmake
@@ -1,85 +1,10 @@
[Desktop Entry]
Exec=@TDE_BIN_DIR@/kdesktop
X-DCOP-ServiceType=wait
-Name=TDE Desktop
-Name[af]=TDE Werkskerm
-Name[ar]=سطح المكتب TDE
-Name[az]=TDE Masa üstü
-Name[be]=Працоўны стол TDE
-Name[bn]=কে.ডি.ই. ডেস্কটপ
-Name[br]=Burev TDE
-Name[bs]=TDE radna površina
-Name[ca]=Escriptori TDE
-Name[cs]=Pracovní plocha TDE
-Name[csb]=Pùlt TDE
-Name[cy]=Penbwrdd TDE
-Name[da]=TDE-desktop
-Name[de]=TDE-Arbeitsfläche
-Name[el]=Επιφάνεια εργασίας του TDE
-Name[eo]=TDE Labortablo
-Name[es]=Escritorio de TDE
-Name[et]=TDE töölaud
-Name[eu]=TDE mahaigaina
-Name[fa]=رومیزی TDE
-Name[fi]=TDE-työpöytä
-Name[fr]=Bureau de TDE
-Name[fy]=TDE Buroblêd
-Name[ga]=Deasc TDE
-Name[gl]=Escritório de TDE
-Name[he]=שולחן העבודה של TDE
-Name[hi]=केडीई डेस्कटॉप
-Name[hr]=TDE radna površina
-Name[hu]=Munkaasztal
-Name[id]=Desktop TDE
-Name[is]=TDE skjáborð
-Name[it]=Desktop TDE
-Name[ja]=TDE デスクトップ
-Name[ka]=TDE სამუშაო დაფა
-Name[kk]=TDE үстелі
-Name[km]=ផ្ទៃតុ TDE
-Name[ko]=데스크톱
-Name[lo]=ພື້ນທີ່ທຳງານ TDE
-Name[lt]=TDE Darbastalis
-Name[lv]=TDE Darbvirsma
-Name[mk]=TDE Десктоп
-Name[mn]=TДЭ-Ажлын тавцан
-Name[ms]=Desktop TDE
-Name[mt]=Desktop TDE
-Name[nb]=TDE Skrivebord
-Name[nds]=TDE-Schriefdisch
-Name[ne]=TDE डेस्कटप
-Name[nl]=TDE Bureaublad
-Name[nn]=TDE-skrivebord
-Name[nso]=Desktop ya TDE
-Name[pa]=TDE ਵੇਹੜਾ
-Name[pl]=Pulpit TDE
-Name[pt]=Ecrã do TDE
-Name[pt_BR]=Área de Trabalho TDE
-Name[ro]=Ecran TDE
-Name[ru]=Рабочий стол TDE
-Name[rw]=TDE Ibiro
-Name[se]=TDE-čallinbeavdi
-Name[sk]=Pracovná plocha
-Name[sl]=Namizje TDE
-Name[sr]=TDE радна површина
-Name[sr@Latn]=TDE radna površina
-Name[sv]=TDE-skrivbord
-Name[ta]=TDE மேல்மேசை
-Name[te]=కెడిఈ రంగస్థలం
-Name[tg]=Мизи Кории TDE
-Name[th]=พื้นที่ทำงาน TDE
-Name[tr]=TDE Masaüstü
-Name[tt]=TDE Östäl
-Name[uk]=Стільниця TDE
-Name[uz]=TDE ish stoli
-Name[uz@cyrillic]=TDE иш столи
-Name[ven]=Desikithopo ya TDE
-Name[vi]=Môi trường TDE
-Name[wa]=Sicribanne TDE
-Name[zh_CN]=TDE 桌面
-Name[zh_TW]=TDE 桌面
-Name[zu]=I-Desktop ye-TDE
+X-TDE-autostart-after=mediamanager
Type=Service
X-TDE-StartupNotify=false
OnlyShowIn=TDE;
X-TDE-autostart-phase=0
+
+Name=TDE Desktop
diff --git a/kdesktop/kdesktop.kcfg b/kdesktop/kdesktop.kcfg
index 8086ad8fd..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,11 +64,16 @@
<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">
+ <default>konsole</default>
+ <label>Terminal application</label>
+ <whatsthis>Defines which terminal application is used.</whatsthis>
+ </entry>
</group>
<group name="Mouse Buttons">
<entry key="WheelSwitchesWorkspace" type="Bool">
@@ -80,14 +85,9 @@
<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="TerminalApplication" type="Path">
- <default>konsole</default>
- <label>Terminal application</label>
- <whatsthis>Defines which terminal application is used.</whatsthis>
- </entry>
<entry key="Left" type="String">
<default></default>
<label>Left Mouse Button Action</label>
@@ -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 298d3e489..3bc655803 100644
--- a/kdesktop/kdesktopSetAsBackground.desktop
+++ b/kdesktop/kdesktopSetAsBackground.desktop
@@ -1,210 +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
-X-TDE-Submenu[af]=Stel as agtergrond
-X-TDE-Submenu[be]=Зрабіць фонавым малюнкам
-X-TDE-Submenu[bg]=Установяване като фон
-X-TDE-Submenu[bn]=পশ্চাদ্‌পট হিসাবে বেছে নাও
-X-TDE-Submenu[bs]=Postavi kao pozadinu
-X-TDE-Submenu[ca]=Estableix com a fons
-X-TDE-Submenu[cs]=Nastavit jako pozadí
-X-TDE-Submenu[csb]=Ùstôwi jakno spòdlé
-X-TDE-Submenu[da]=Sæt som baggrund
-X-TDE-Submenu[de]=Als Hintergrund setzen
-X-TDE-Submenu[el]=Ορισμός ως ταπετσαρία
-X-TDE-Submenu[eo]=Agordu kiel fono
-X-TDE-Submenu[es]=Establecer como fondo
-X-TDE-Submenu[et]=Sea taustapildiks
-X-TDE-Submenu[eu]=Ezarri atzeko plano gisa
-X-TDE-Submenu[fa]=تنظیم به عنوان زمینه
-X-TDE-Submenu[fi]=Aseta taustakuvaksi
-X-TDE-Submenu[fr]=Définir comme arrière-plan
-X-TDE-Submenu[fy]=As eftergrûn brûke
-X-TDE-Submenu[gl]=Pór como Fondo de Escritório
-X-TDE-Submenu[he]=קבע כרקע
-X-TDE-Submenu[hr]=Postavi kao pozadinu
-X-TDE-Submenu[hu]=Beállítás háttérképnek
-X-TDE-Submenu[is]=Setja sem bakgrunn
-X-TDE-Submenu[it]=Imposta come sfondo
-X-TDE-Submenu[ja]=背景としてセット
-X-TDE-Submenu[kk]=Ая ретінде орнату
-X-TDE-Submenu[km]=កំណត់​ជា​ផ្ទៃខាងក្រោយ
-X-TDE-Submenu[lt]=Nustatyti fonu
-X-TDE-Submenu[mk]=Постави како подлога
-X-TDE-Submenu[nb]=Sett som bakgrunn
-X-TDE-Submenu[nds]=As Achtergrund fastleggen
-X-TDE-Submenu[ne]=पृष्ठभूमिको रुपमा सेट गर्छ
-X-TDE-Submenu[nl]=Als achtergrond gebruiken
-X-TDE-Submenu[nn]=Bruk som bakgrunn
-X-TDE-Submenu[pa]=ਪਿੱਠਭੂਮੀ ਬਣਾਓ
-X-TDE-Submenu[pl]=Ustaw jako tło
-X-TDE-Submenu[pt]=Colocar como Fundo
-X-TDE-Submenu[pt_BR]=Configurar como Plano de fundo
-X-TDE-Submenu[ro]=Setează ca fundal
-X-TDE-Submenu[ru]=Сделать фоновым рисунком
-X-TDE-Submenu[se]=Geavat duogášgovvan
-X-TDE-Submenu[sk]=Nastaviť ako pozadie
-X-TDE-Submenu[sl]=Nastavi kot ozadje
-X-TDE-Submenu[sr]=Постави као позадину
-X-TDE-Submenu[sr@Latn]=Postavi kao pozadinu
-X-TDE-Submenu[sv]=Använd som bakgrund
-X-TDE-Submenu[th]=ตั้งให้เป็นพื้นหลัง
-X-TDE-Submenu[tr]=Masaüstü Arkaplanı Yap
-X-TDE-Submenu[uk]=Встановити як тло
-X-TDE-Submenu[uz]=Ish stoliga qoʻyish
-X-TDE-Submenu[uz@cyrillic]=Иш столига қўйиш
-X-TDE-Submenu[vi]=Đặt làm Hình nền
-X-TDE-Submenu[wa]=Mete come fond d' waitroûle
-X-TDE-Submenu[zh_CN]=设为背景
-X-TDE-Submenu[zh_TW]=設為背景
-[Desktop Action setAsBackground]
+[Desktop Action centeredAsBackground]
Name=Centered
-Name[af]=Gesentreer
-Name[ar]=مركز
-Name[be]=Пасярэдзіне
-Name[bg]=Центрирано
-Name[bn]=মাঝামাঝি
-Name[br]=Kreizennet
-Name[bs]=Centrirano
-Name[ca]=Centrat
-Name[cs]=Na střed
-Name[csb]=Na westrzódkù
-Name[cy]=Canoledig
-Name[da]=Centreret
-Name[de]=Zentriert
-Name[el]=Κεντράρισμα
-Name[en_GB]=Centred
-Name[eo]=Meza
-Name[es]=Centrado
-Name[et]=Tsentreeritud
-Name[eu]=Erdiratua
-Name[fa]=مرکزی
-Name[fi]=Keskitetty
-Name[fr]=Centré
-Name[fy]=sintraal setten
-Name[ga]=Láraithe
-Name[gl]=Centrado
-Name[he]=ממורכז
-Name[hi]=बीचों-बीच
-Name[hr]=Sredinom
-Name[hu]=Középre igazítva
-Name[is]=Miðjað
-Name[it]=Centrato
-Name[ja]=中央
-Name[ka]=ცენტრზე
-Name[kk]=Ортаға
-Name[km]=កណ្ដាល
-Name[lt]=Centruota
-Name[lv]=Centrēts
-Name[mk]=Центриран
-Name[ms]=Tengah
-Name[mt]=Iċċentrat
-Name[nb]=Sentrert
-Name[nds]=In de Merrn
-Name[ne]=केन्द्रित
-Name[nl]=Gecentreerd
-Name[nn]=Sentrert
-Name[pa]=ਕੇਂਦਰੀ
-Name[pl]=Wyśrodkowane
-Name[pt]=Centrado
-Name[pt_BR]=Centralizado
-Name[ro]=Centrat
-Name[ru]=По центру
-Name[rw]=Biri hagati
-Name[se]=Guovdut
-Name[sk]=V strede
-Name[sl]=Usrediščeno
-Name[sr]=Центрирано
-Name[sr@Latn]=Centrirano
-Name[sv]=Centrerad
-Name[ta]=மைய
-Name[te]=మద్యన
-Name[tg]=Марказӣ
-Name[th]=จัดกลาง
-Name[tr]=Uzat
-Name[tt]=Üzäkläşep
-Name[uk]=По центру
-Name[uz]=Markazda
-Name[uz@cyrillic]=Марказда
-Name[vi]=Giữa
-Name[wa]=Å mitan
-Name[zh_CN]=居中
-Name[zh_TW]=置中
Icon=background
-Exec=dcop kdesktop KBackgroundIface setWallpaper %u 6
+Exec=dcop kdesktop KBackgroundIface setWallpaper %u 1
-[Desktop Action tileAsBackground]
+[Desktop Action tiledAsBackground]
Name=Tiled
-Name[af]=Geteël
-Name[ar]=مبلّط
-Name[be]=Расцягнутае
-Name[bg]=Каскадно
-Name[bn]=টাইল করা
-Name[br]=Teolet
-Name[bs]=Popločano
-Name[ca]=Repetit
-Name[cs]=Dlaždice
-Name[csb]=Kachelkòwóné
-Name[cy]=Teiledig
-Name[da]=Fliselagt
-Name[de]=Gekachelt
-Name[el]=Σε παράθεση
-Name[eo]=kahela
-Name[es]=Mosaico
-Name[et]=Paanidena
-Name[eu]=Mosaikoa
-Name[fa]=کاشی‌شده
-Name[fi]=Vierekkäin
-Name[fr]=Mosaïque
-Name[fy]=Tegele
-Name[ga]=Tilithe
-Name[gl]=Mosaico
-Name[he]=פרוש
-Name[hi]=चटाई-दार
-Name[hr]=Popločeno
-Name[hu]=Mozaikszerűen
-Name[is]=Flísað
-Name[it]=Ripetuto
-Name[ja]=タイル状
-Name[ka]=მოზაიკა
-Name[kk]=Қатарлап
-Name[km]=ក្បឿង
-Name[lt]=Iškloti
-Name[mk]=Поплочен
-Name[ms]=Berjubin
-Name[mt]=Madum
-Name[nb]=Flislagt
-Name[nds]=Kachelt
-Name[ne]=टायल गरिएको
-Name[nl]=Tegels
-Name[nn]=Jamsides
-Name[pa]=ਤਣਿਆ
-Name[pl]=Kafelkowane
-Name[pt]=Mosaico
-Name[pt_BR]=Ladrilhado
-Name[ro]=Mozaic
-Name[ru]=Черепицей
-Name[rw]=Byudukaro
-Name[se]=Bálddalaga
-Name[sk]=Dlaždice
-Name[sl]=Razdeljeno
-Name[sr]=Поређано
-Name[sr@Latn]=Poređano
-Name[sv]=Sida vid sida
-Name[ta]=பிண்ணனி
-Name[te]=పలకలుగా
-Name[tg]=Тахтасангӣ
-Name[th]=ปูทั้งหน้าจอ
-Name[tr]=Sırala
-Name[tt]=Bülengän
-Name[uk]=Плиткою
-Name[uz]=Kafel
-Name[uz@cyrillic]=Кафель
-Name[vi]=Xếp ngói
-Name[wa]=A schaeyes
-Name[zh_CN]=平铺
-Name[zh_TW]=拼貼
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 d5b7ebbb1..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;
}
@@ -851,7 +898,7 @@ bool KDIconView::deleteGlobalDesktopFiles()
// Ignore these special files
// Name URL Type OnlyShowIn
- // My Documents kxdglauncher --xdgname DOCUMENTS Application TDE;
+ // My Documents XDG_DOCUMENTS_DIR Application TDE;
// My Computer media:/ Link TDE;
// My Network Places remote:/ Link TDE;
// Printers [exec] kjobviewer --all --show %i %m Application TDE;
@@ -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 &currentI
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 &currentI
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 c14d1326c..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() {
@@ -763,8 +775,8 @@ void KRootWm::slotOpenTerminal()
TDEConfigGroupSaver gs(TDEGlobal::config(), "General");
TQString terminal = TDEGlobal::config()->readPathEntry("TerminalApplication", "konsole");
- *p << terminal << "--workdir=" + TDEGlobalSettings::desktopPath() + "/";
-
+ *p << terminal;
+ p->setWorkingDirectory(TDEGlobalSettings::desktopPath());
p->start(TDEProcess::DontCare);
delete p;
@@ -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/CMakeLists.txt b/kdesktop/kwebdesktop/CMakeLists.txt
index 741b8df34..34b84dc11 100644
--- a/kdesktop/kwebdesktop/CMakeLists.txt
+++ b/kdesktop/kwebdesktop/CMakeLists.txt
@@ -23,7 +23,11 @@ link_directories(
##### other data ################################
-install( FILES kwebdesktop.desktop DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs )
+tde_create_translated_desktop(
+ SOURCE kwebdesktop.desktop
+ DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs
+ PO_DIR kdesktop-desktops
+)
install( FILES kwebdesktop.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
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.desktop b/kdesktop/kwebdesktop/kwebdesktop.desktop
index a60c009d0..b7d271879 100644
--- a/kdesktop/kwebdesktop/kwebdesktop.desktop
+++ b/kdesktop/kwebdesktop/kwebdesktop.desktop
@@ -1,79 +1,5 @@
[TDE Desktop Program]
Comment=TDE Web Desktop
-Comment[af]=TDE Web Werkskerm
-Comment[ar]=سطح المكتب TDE للشبكة
-Comment[az]=TDE Veb Masa üstü
-Comment[be]=Працоўны стол Web
-Comment[bn]=কে.ডি.ই. ওয়েব ডেস্কটপ
-Comment[br]=Burev gwiad TDE
-Comment[bs]=TDE Web radna površina
-Comment[ca]=Escriptori Web TDE
-Comment[cs]=Aktivní plocha TDE
-Comment[csb]=Pùlt w sztélu sécë WWW
-Comment[cy]=Penbwrdd Gwe TDE
-Comment[da]=TDE-net-desktop
-Comment[de]=TDE-Web-Arbeitsfläche
-Comment[el]=Επιφάνεια εργασίας Ιστού του TDE
-Comment[eo]=TDEa TTT-tabulo
-Comment[es]=Escritorio Web para TDE
-Comment[et]=TDE veebitöölaud
-Comment[eu]=TDE web mahaigaina
-Comment[fa]=رومیزی وب TDE
-Comment[fi]=TDE:n web-työpöytä
-Comment[fr]=Bureau web de TDE
-Comment[fy]=TDE Web Buroblêd
-Comment[gl]=Escritório Web de TDE
-Comment[he]=שולחן העבודה האינטרנטי של TDE
-Comment[hi]=केडीई वेब डेस्कटॉप
-Comment[hr]=TDE web radna površina
-Comment[hu]=TDE internetes munkaasztal
-Comment[id]=Desktop Web TDE
-Comment[is]=TDE vefskjáborð
-Comment[it]=Desktop Web di TDE
-Comment[ja]=TDE ウェブデスクトップ
-Comment[ka]=TDE ვებ სამუშაო დაფა
-Comment[km]=ផ្ទៃតុ​បណ្ដាញ TDE
-Comment[lo]=ພື້ນທີ່ທຳງານບົນເວ໊ບ TDE
-Comment[lt]=TDE žiniatinklio darbastalis
-Comment[lv]=TDE Web Darbvirsma
-Comment[mk]=TDE веб-површина
-Comment[mn]=КДЭ-Вэб-Ажлын тавцан
-Comment[ms]=Desktop Web TDE
-Comment[mt]=Desktop Web TDE
-Comment[nb]=TDE nettskrivebord
-Comment[nds]=TDE-Nettschriefdisch
-Comment[ne]=TDE वेब डेस्कटप
-Comment[nl]=TDE Web Bureaublad
-Comment[nn]=TDE Vevskrivebord
-Comment[nso]=Desktop ya Web ya TDE
-Comment[oc]=BurèU Web TDE
-Comment[pa]=TDE ਵੈੱਬ ਵੇਹੜਾ
-Comment[pl]=Pulpit w stylu sieci WWW
-Comment[pt]=Ecrã Web do TDE
-Comment[pt_BR]=Área de Trabalho Web do TDE
-Comment[ro]=Ecran web pentru TDE
-Comment[rw]=TDE Ibiro Rubugamakuru
-Comment[se]=TDE Web-čállinbeavdi
-Comment[sk]=TDE Web pracovná plocha
-Comment[sl]=Spletno namizje TDE
-Comment[sr]=TDE веб радна површина
-Comment[sr@Latn]=TDE veb radna površina
-Comment[sv]=TDE-webbskrivbord
-Comment[ta]=TDE வலை மேல்மேசை
-Comment[te]=కెడిఈ వెబ్ రంగస్థలం
-Comment[tg]=Мизи кории TDE Вэб
-Comment[th]=พื้นที่ทำงาน TDE แบบเว็บ
-Comment[tr]=TDE Web Masaüstü
-Comment[tt]=TDE Web Östäl
-Comment[uk]=Стільниця "а ля Web" для TDE
-Comment[uz]=TDE veb-ish stoli
-Comment[uz@cyrillic]=TDE веб-иш столи
-Comment[ven]=Webe ya desikithopo ya TDE
-Comment[vi]=màn hình nền kiểu trang mạng của TDE
-Comment[wa]=Sicribanne waibe TDE
-Comment[zh_CN]=TDE Web 桌面
-Comment[zh_TW]=TDE 網頁桌面
-Comment[zu]=I-Desktop ye-Web ye-TDE
Executable=kwebdesktop
Command=kwebdesktop %x %y %f http://www.kde.org/
PreviewCommand=kwebdesktop %x %y %f http://www.kde.org/
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/kxdglauncher.cpp b/kdesktop/kxdglauncher.cpp
deleted file mode 100644
index 9d689d95f..000000000
--- a/kdesktop/kxdglauncher.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/* This file is part of the KDE project
- Copyright (C) 2010 Timothy Pearson <kb9vqf@pearsoncomputing.net>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <tqfile.h>
-#include <tqdir.h>
-#include <tqtimer.h>
-#include <tqstring.h>
-#include <tqtextcodec.h>
-
-#include <krun.h>
-#include <tdefile.h>
-#include <tdelocale.h>
-#include <tdeapplication.h>
-#include <tdecmdlineargs.h>
-#include <tdeglobalsettings.h>
-#include <kinputdialog.h>
-#include <tdemessagebox.h>
-#include <tdeconfig.h>
-#include <kurlrequester.h>
-#include <kurlrequesterdlg.h>
-
-#include <stdlib.h>
-
-#include "kxdglauncher.h"
-
-// helper function for reading xdg user dirs: it is required for obvious reasons
-void readXdgUserDirs(TQString *desktop, TQString *documents)
-{
- TQFile f( TQDir::homeDirPath() + "/.config/user-dirs.dirs" );
-
- if (!f.open(IO_ReadOnly))
- return;
-
- // set the codec for the current locale
- TQTextStream s(&f);
- s.setCodec( TQTextCodec::codecForLocale() );
-
- TQString line = s.readLine();
- while (!line.isNull())
- {
- if (line.startsWith("XDG_DESKTOP_DIR=")) {
- *desktop = TQString(line.remove("XDG_DESKTOP_DIR=").remove("\"")).replace("$HOME", TQDir::homeDirPath());
- }
- else if (line.startsWith("XDG_DOCUMENTS_DIR=")) {
- *documents = TQString(line.remove("XDG_DOCUMENTS_DIR=").remove("\"")).replace("$HOME", TQDir::homeDirPath());
- }
-
- line = s.readLine();
- }
-}
-
-TQString getDocumentPath()
-{
- TQString s_desktopPath;
- TQString s_documentPath;
-
- readXdgUserDirs(&s_desktopPath, &s_documentPath);
-
- if (s_documentPath.isEmpty() == true) {
-#ifdef Q_WS_WIN
- s_documentPath = getWin32ShellFoldersPath("Personal");
-#else
- s_documentPath = TQDir::homeDirPath() + "/Documents/";
-#endif
- }
- s_documentPath = TQDir::cleanDirPath( s_documentPath );
- if ( !s_documentPath.endsWith("/"))
- s_documentPath.append('/');
-
- return s_documentPath;
-}
-
-static TDECmdLineOptions options[] =
-{
- { "xdgname <argument>", I18N_NOOP("XDG variable name to open"), 0 },
- { "getpath", I18N_NOOP("Do not launch Konqueror; instead print path to directory if it exists)"), 0 },
- TDECmdLineLastOption
-};
-
-int main( int argc, char **argv)
-{
- TDECmdLineArgs::init( argc, argv, "kxdglauncher", I18N_NOOP("TDE XDG File Browser Launcher and Prompter"), I18N_NOOP("Prompts if directory does not exist, otherwise launches"), "1.0" );
- TDECmdLineArgs::addCmdLineOptions( options );
- TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
-
- TDEApplication app;
- app.disableSessionManagement();
-
- if (args->isSet( "xdgname" ) == true) {
- TQString desiredFolder = args->getOption("xdgname");
- if (desiredFolder == "DOCUMENTS") {
- TQDir myqdir;
- if (myqdir.exists(getDocumentPath(), TRUE) == true) {
- if (args->isSet( "getpath" ) == true) {
- printf("%s\n", (const char *)getDocumentPath().local8Bit());
- return 0;
- }
- else {
- KRun * run = new KRun( KURL(getDocumentPath()), 0, false, false );
- TQObject::connect( run, TQT_SIGNAL( finished() ), &app, TQT_SLOT( quit() ));
- TQObject::connect( run, TQT_SIGNAL( error() ), &app, TQT_SLOT( quit() ));
- app.exec();
- return 0;
- }
- }
- else {
- KURLRequesterDlg newDirectoryRequester(getDocumentPath(), i18n("Please confirm your Documents directory location<br>Upon confimation a new directory will be created"), 0, NULL, true);
- newDirectoryRequester.setCaption(i18n("Create Documents directory"));
- newDirectoryRequester.urlRequester()->setMode(KFile::Directory);
- if (newDirectoryRequester.exec() != TQDialog::Accepted) {
- return 1;
- }
- else {
- TQString newDirectory = newDirectoryRequester.urlRequester()->url();
- if (newDirectory == TQString::null) {
- return 1;
- }
- else {
- if (newDirectory.length() < 4096) {
- bool directoryOk = false;
- if (myqdir.exists(newDirectory, TRUE) == false) {
- if (myqdir.mkdir(newDirectory, TRUE) == true) {
- directoryOk = TRUE;
- }
- }
- else {
- directoryOk = TRUE;
- }
- if (directoryOk == true) {
- TQString xdgModifiedDirectory = newDirectory;
- xdgModifiedDirectory = xdgModifiedDirectory.replace(TQDir::homeDirPath(), "$HOME");
- while (xdgModifiedDirectory.endsWith("/")) {
- xdgModifiedDirectory.truncate(xdgModifiedDirectory.length()-1);
- }
- TDEConfig config(TQDir::homeDirPath() + "/.config/user-dirs.dirs", false, false);
- config.writeEntry("XDG_DOCUMENTS_DIR", TQString("\"") + xdgModifiedDirectory + TQString("\""), true);
- config.sync();
- if (args->isSet( "getpath" ) == true) {
- printf("%s\n", (const char *)getDocumentPath().local8Bit());
- return 0;
- }
- else {
- KRun * run = new KRun( getDocumentPath(), 0, false, false );
- TQObject::connect( run, TQT_SIGNAL( finished() ), &app, TQT_SLOT( quit() ));
- TQObject::connect( run, TQT_SIGNAL( error() ), &app, TQT_SLOT( quit() ));
- app.exec();
- }
- return 0;
- }
- else {
- KMessageBox::error(0, i18n("Unable to create directory ") + TQString("\"") + newDirectory + TQString("\"\n") + i18n("Please check folder permissions and try again"), i18n("Unable to create directory"));
- return 1;
- }
- }
- else {
- KMessageBox::error(0, i18n("Unable to create the directory ") + newDirectory + TQString("\n") + i18n("Directory path cannot be longer than 4096 characters"), i18n("Unable to create directory"));
- return 1;
- }
- }
- }
- }
- }
- else {
- printf("[kxdglauncher] XDG variable not recognized\n");
- return 1;
- }
- }
- else {
- printf("[kxdglauncher] Please specify the desired XDG variable name with --xdgname\n");
- return 1;
- }
-}
diff --git a/kdesktop/kxdglauncher.h b/kdesktop/kxdglauncher.h
deleted file mode 100644
index 8f487e88e..000000000
--- a/kdesktop/kxdglauncher.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/* This file is part of the KDE project
- Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#ifndef _MAIN_H
-#define _MAIN_H
-
-#include <tdeapplication.h>
-
-#endif
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 114ce7ef0..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()");
}
}
@@ -338,7 +335,13 @@ int main( int argc, char **argv )
int len;
char procpath[PATH_MAX];
char fullpath[PATH_MAX];
+#if defined(__dilos__)
+ snprintf(procpath, sizeof(procpath), "/proc/%d/path/a.out", pid);
+#elif defined(__FreeBSD__) || defined (__DragonFly__)
+ snprintf(procpath, sizeof(procpath), "/compat/linux/proc/%d/exe", pid);
+#else /* Linux way as default */
snprintf(procpath, sizeof(procpath), "/proc/%d/exe", pid);
+#endif
len = readlink( procpath, fullpath, sizeof(fullpath) );
if (len >= 0) {
fullpath[len] = 0;
@@ -368,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);
@@ -390,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;
@@ -404,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;
@@ -431,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...
@@ -448,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);
@@ -488,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();
@@ -542,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 4b8d390b3..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();
@@ -385,10 +385,10 @@ void Minicli::keyPressEvent( TQKeyEvent* e )
TQDialog::keyPressEvent( e );
}
-TQString Minicli::terminalCommand (const TQString& cmd, const TQString& args)
+TQString Minicli::terminalCommand(const TQString& cmd, const TQString& args)
{
TQString terminal = KDesktopSettings::terminalApplication().stripWhiteSpace();
- if (terminal.endsWith("konsole"))
+ if (terminal.startsWith("konsole"))
terminal += " --noclose";
if( args.isEmpty() )
@@ -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/patterns/CMakeLists.txt b/kdesktop/patterns/CMakeLists.txt
index a6bfa053b..bf0475400 100644
--- a/kdesktop/patterns/CMakeLists.txt
+++ b/kdesktop/patterns/CMakeLists.txt
@@ -3,15 +3,29 @@
# (C) 2010-2011 Serghei Amelian
# serghei (DOT) amelian (AT) gmail.com
#
+# (C) 2020 Slávek Banko
+# slavek.banko (AT) axis.cz
+#
# Improvements and feedback are welcome
#
# This file is released under GPL >= 2
#
#################################################
-install( FILES
- night-rock.desktop night-rock.jpg stonewall2.png
- stonewall2.desktop fish.desktop fish.png flowers.desktop
- flowers.png pavement.desktop pavement.png rattan.desktop
- rattan.png triangles.desktop triangles.png
- DESTINATION ${DATA_INSTALL_DIR}/kdesktop/patterns )
+file( GLOB _patterns RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.png *.jpg )
+list( SORT _patterns )
+
+foreach( _pattern IN LISTS _patterns )
+ get_filename_component( _pattern_name ${_pattern} NAME_WE )
+ if( EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${_pattern_name}.desktop )
+ install(
+ FILES ${_pattern}
+ DESTINATION ${DATA_INSTALL_DIR}/kdesktop/patterns
+ )
+ tde_create_translated_desktop(
+ SOURCE ${_pattern_name}.desktop
+ DESTINATION ${DATA_INSTALL_DIR}/kdesktop/patterns
+ PO_DIR kdesktop-desktops
+ )
+ endif()
+endforeach()
diff --git a/kdesktop/patterns/fish.desktop b/kdesktop/patterns/fish.desktop
index 7644bb0c8..f2e47ccb2 100644
--- a/kdesktop/patterns/fish.desktop
+++ b/kdesktop/patterns/fish.desktop
@@ -1,74 +1,3 @@
[KDE Desktop Pattern]
Comment=Fish Net
-Comment[af]=Visnet
-Comment[az]=Balıq Şəbəkəsi
-Comment[be]=Сетка Fish
-Comment[bn]=মাছ ধরার জাল
-Comment[br]=Roued pesk
-Comment[ca]=Xarxa de pesca
-Comment[cs]=Rybářská síť
-Comment[csb]=Rëbackô séc
-Comment[cy]=Rhwyd Pysgod
-Comment[da]=Fiskenet
-Comment[de]=Fischnetz
-Comment[el]=Δίχτυ ψαρέματος
-Comment[eo]=Fiŝreto
-Comment[es]=Red de pesca
-Comment[et]=Kalavõrk
-Comment[eu]=Arrainetarako sarea
-Comment[fa]=تور ماهی
-Comment[fi]=Kalaverkko
-Comment[fr]=Filet
-Comment[fy]=Fisknet
-Comment[gl]=Rede de Pesca
-Comment[he]=רשת דייגים
-Comment[hi]=मछली जाली
-Comment[hr]=Ribarska mreža
-Comment[hu]=Halászháló
-Comment[is]=Net
-Comment[it]=Rete da pesca
-Comment[ja]=漁網
-Comment[ka]=მეთევზის ბადე
-Comment[kk]=Балықшы ауы
-Comment[km]=សំណាញ់
-Comment[lo]=ປາ
-Comment[lt]=Žuvų tinklas
-Comment[lv]=Zivju Tīkls
-Comment[mk]=Рибарска мрежа
-Comment[mn]=Загас сүлжээ
-Comment[ms]=Jala Ikan
-Comment[mt]=Xibka
-Comment[nb]=Fiskegarn
-Comment[nds]=Fischernett
-Comment[ne]=फिस नेट
-Comment[nl]=Visnet
-Comment[nn]=Fiskegarn
-Comment[nso]=Sefo ya Dihlapi
-Comment[oc]=resèu de pesca
-Comment[pa]=ਮੱਛੀ ਨੈੱਟ
-Comment[pl]=Sieć rybacka
-Comment[pt]=Rede de Pesca
-Comment[ro]=Plasă de pescuit
-Comment[ru]=Рыбацкая сеть
-Comment[se]=Sáibma
-Comment[sk]=Ryby a sieť
-Comment[sl]=Ribiška mreža
-Comment[sr]=Рибарска мрежа
-Comment[sr@Latn]=Ribarska mreža
-Comment[sv]=Fisknät
-Comment[ta]=மீன் வலை
-Comment[te]=చేపల వల
-Comment[tg]=Таври моҳигирӣ
-Comment[th]=แห
-Comment[tr]=Balık Ağı
-Comment[tt]=Balıqçı Yätmäse
-Comment[uk]=Тенета
-Comment[uz]=Toʻr
-Comment[uz@cyrillic]=Тўр
-Comment[ven]=Mulavhu wa khovhe
-Comment[vi]=Lưới đánh cá
-Comment[wa]=Filet d' pexhe
-Comment[zh_CN]=渔网
-Comment[zh_TW]=漁網
-Comment[zu]=I-nethi yofishi
File=fish.png
diff --git a/kdesktop/patterns/flowers.desktop b/kdesktop/patterns/flowers.desktop
index 7e57db75c..c01f075bc 100644
--- a/kdesktop/patterns/flowers.desktop
+++ b/kdesktop/patterns/flowers.desktop
@@ -1,79 +1,3 @@
[KDE Desktop Pattern]
Comment=Flowers
-Comment[af]=Blomme
-Comment[az]=Çiçəklər
-Comment[be]=Кветкі
-Comment[bn]=ফুল
-Comment[br]=Bleunioù
-Comment[ca]=Flors
-Comment[cs]=Květiny
-Comment[csb]=Kwiôtczi
-Comment[cy]=Blodau
-Comment[da]=Blomster
-Comment[de]=Blumen
-Comment[el]=Λουλούδια
-Comment[eo]=Floroj
-Comment[es]=Flores
-Comment[et]=Lilled
-Comment[eu]=Loreak
-Comment[fa]=گلها
-Comment[fi]=Kukat
-Comment[fr]=Fleurs
-Comment[fy]=Blommen
-Comment[ga]=Bláthanna
-Comment[gl]=Flores
-Comment[he]=פרחים
-Comment[hi]=पुष्प
-Comment[hr]=Cvijeće
-Comment[hu]=Virágok
-Comment[id]=Bunga
-Comment[is]=Blóm
-Comment[it]=Fiori
-Comment[ja]=花
-Comment[ka]=ყვავილები
-Comment[kk]=Гүлдер
-Comment[km]=ផ្កា
-Comment[lo]=ດອກໄມ້
-Comment[lt]=Gėlės
-Comment[lv]=Puķes
-Comment[mk]=Цвеќиња
-Comment[mn]=Цэцэг
-Comment[ms]=Bunga
-Comment[mt]=Fjuri
-Comment[nb]=Blomster
-Comment[nds]=Blomen
-Comment[ne]=फूल
-Comment[nl]=Bloemen
-Comment[nn]=Blomar
-Comment[nso]=Mapolomo
-Comment[oc]=Flors
-Comment[pa]=ਫੁੱਲ
-Comment[pl]=Kwiaty
-Comment[pt]=Flores
-Comment[pt_BR]=Flores
-Comment[ro]=Flori
-Comment[ru]=Цветы
-Comment[rw]=Indabo
-Comment[se]=Lieđit
-Comment[sk]=Kvety
-Comment[sl]=Rože
-Comment[sr]=Цвеће
-Comment[sr@Latn]=Cveće
-Comment[sv]=Blommor
-Comment[ta]=பூக்கள்
-Comment[te]=పువ్వులు
-Comment[tg]=Гулҳо
-Comment[th]=ดอกไม้
-Comment[tr]=Çiçekler
-Comment[tt]=Çäçäklär
-Comment[uk]=Квіти
-Comment[uz]=Gullar
-Comment[uz@cyrillic]=Гуллар
-Comment[ven]=Maluvha
-Comment[vi]=Bông hoa
-Comment[wa]=Fleurs
-Comment[xh]=Iintyatyambo
-Comment[zh_CN]=花
-Comment[zh_TW]=花朵
-Comment[zu]=Izimbali
File=flowers.png
diff --git a/kdesktop/patterns/night-rock.desktop b/kdesktop/patterns/night-rock.desktop
index 4a324e47a..65aef98ab 100644
--- a/kdesktop/patterns/night-rock.desktop
+++ b/kdesktop/patterns/night-rock.desktop
@@ -1,75 +1,3 @@
[KDE Desktop Pattern]
Comment=Night Rock by Tigert
-Comment[af]=Nag Klip deur Tigert
-Comment[ar]=Night Rock من Tigert
-Comment[az]=Tigert'dan Gecə Qayası
-Comment[be]=Начная Гара ад Tigert
-Comment[bn]=Tigert-এর নাইট রক
-Comment[br]=Karreg da noz gant Tigert
-Comment[bs]=Night Rock - Tigert
-Comment[ca]=Rock nocturn per Tigert
-Comment[cs]=Night Rock vytvořil Tigert
-Comment[csb]=Nocny Rock (ùs. Tigert)
-Comment[cy]=Carreg Nos gan Tigert
-Comment[da]=Night Rock af Tigert
-Comment[de]=Night Rock
-Comment[el]=Night Rock από τον Tigert
-Comment[eo]=Nokta roko
-Comment[es]=Roca de noche de Tigert
-Comment[et]=Night Rock (Tigert)
-Comment[eu]=Gaueko Haitza, Tigert-ek egina
-Comment[fa]=Night Rock توسط تیگرت
-Comment[fi]=Night Rock, tehnyt Tigert
-Comment[fr]=Night Rock par Tigert
-Comment[fy]=Rots by Nacht, door Tigert
-Comment[gl]=Night Rock por Tigert
-Comment[he]=סלעים
-Comment[hi]=टिगर्ट द्वारा नाइट रॉक
-Comment[hr]=Night Rock (izr. Tigert)
-Comment[hu]=Tigert éjjeli sziklája
-Comment[id]=Batu Malam oleh Tigert
-Comment[is]=Night Rock eftir Tigert
-Comment[it]=Rock notturno (di Tigert)
-Comment[ja]=Tigert による Night Rock
-Comment[ka]=კლდე ღამით (Tigert)
-Comment[kk]=Түнгі жартас (Tigert)
-Comment[km]=សិលា​រាត្រី ដោយ Tigert
-Comment[lo]=ຄຳ່ມັນຯ ໂດຍ Tigert
-Comment[lv]=Nakts Roks no Tigerta
-Comment[mk]=Ноќен рок од Tigert
-Comment[mn]=Шөнийн рок
-Comment[ms]=Batuan Malan oleh Tigert
-Comment[mt]=Night Rock minn Tigert
-Comment[nb]=Nattrock av Tigert
-Comment[nds]=Night Rock vun Tigert
-Comment[ne]=टिग्रेटद्वारा रातीको रक
-Comment[nl]=Rots bij Nacht, door Tigert
-Comment[nn]=Nattrock av Tigert
-Comment[nso]=Leswika la Bosego ka Tigert
-Comment[oc]=Rock nocturn per Tigert
-Comment[pa]=ਰਾਤ ਪਹਾੜੀ ਟੀਰਿਰਟ
-Comment[pl]=Nocny Rock (wyk. Tigert)
-Comment[pt]=Night Rock de Tigert
-Comment[pt_BR]=Night Rock por Tigert
-Comment[ro]=Piatră întunecată de Tigert
-Comment[ru]=Ночная скала (Tigert)
-Comment[rw]=Night Rock na Tigert
-Comment[se]=Tigert:a idjarocka
-Comment[sk]=Nočný kameň od Tigerta
-Comment[sl]=Nočni rock Tigerta
-Comment[sv]=Nattsten av Tigert
-Comment[ta]=டைக்ரட்இன் நைட்ராக்
-Comment[tg]=Сахраҳои дар шаб аз Tigert
-Comment[th]=ค่ำคืนมัน ๆ โดย Tigert
-Comment[tr]=Tigert'dan Gece Kayası
-Comment[tt]=Tönge Taw (Tigert tarafınnan)
-Comment[uk]=Нічний політ Тайгерта
-Comment[uz]=Oqshom qoyasi (Tigert tomonidan)
-Comment[uz@cyrillic]=Оқшом қояси (Тигерт томонидан)
-Comment[ven]=Vhusiku ha Rock nga Tigert
-Comment[vi]=Rock Buổi đêm bởi Tigert
-Comment[wa]=Rotche di nute pa Tigert
-Comment[zh_CN]=Tigert 的夜色中的岩石
-Comment[zh_TW]=午夜搖滾 (Tigert 繪製)
-Comment[zu]=Night Rock ngu-Tigert
File=night-rock.jpg
diff --git a/kdesktop/patterns/pavement.desktop b/kdesktop/patterns/pavement.desktop
index 3ecabd35d..a261cff11 100644
--- a/kdesktop/patterns/pavement.desktop
+++ b/kdesktop/patterns/pavement.desktop
@@ -1,75 +1,3 @@
[KDE Desktop Pattern]
Comment=Pavement
-Comment[af]=Sypaadjie
-Comment[az]=Səki
-Comment[be]=Брушчатка
-Comment[bn]=ফুটপাথ
-Comment[br]=Pavezadur
-Comment[ca]=Paviment
-Comment[cs]=Dlažba
-Comment[csb]=Trotuar
-Comment[cy]=Palmant
-Comment[da]=Brolægning
-Comment[de]=Gehsteig
-Comment[el]=Πεζοδρόμιο
-Comment[eo]=Pavimo
-Comment[es]=Pavimento
-Comment[eu]=Zorua
-Comment[fa]=سنگ‌فرش
-Comment[fi]=Katukivetys
-Comment[fr]=Pavés
-Comment[fy]=Estrikken
-Comment[ga]=Pábháil
-Comment[gl]=Pavemento
-Comment[he]=ריצוף
-Comment[hi]=फर्श
-Comment[hr]=Pločnik
-Comment[hu]=Járda
-Comment[is]=Gangstétt
-Comment[it]=Marciapiede
-Comment[ja]=歩道
-Comment[ka]=ქვაფენილი
-Comment[kk]=Тас алаң
-Comment[km]=កម្រាល​ថ្ម
-Comment[lo]=ທາງເດີນ
-Comment[lt]=Grindinys
-Comment[lv]=Ielas segums
-Comment[mk]=Калдрма
-Comment[mn]=Явган зам
-Comment[ms]=Turapan
-Comment[mt]=Bankina
-Comment[nb]=Brolegning
-Comment[nds]=Börgerstieg
-Comment[ne]=शीलास्तर
-Comment[nl]=Plavuizen
-Comment[oc]=Paviment
-Comment[pa]=ਪਾਵੀਮੈਂਟ
-Comment[pl]=Chodnik
-Comment[pt]=Chão
-Comment[pt_BR]=Pavimento
-Comment[ro]=Pavaj
-Comment[ru]=Мостовая
-Comment[rw]=Umuteguro
-Comment[se]=Ravdaváccahat
-Comment[sk]=Chodník
-Comment[sl]=Pločnik
-Comment[sr]=Плочник
-Comment[sr@Latn]=Pločnik
-Comment[sv]=Trottoar
-Comment[ta]=நடைபாதை
-Comment[te]=తలవరుస
-Comment[tg]=Пиёдарав
-Comment[th]=ทางเท้า
-Comment[tr]=Kaldırım
-Comment[tt]=Uram
-Comment[uk]=Дорога
-Comment[uz]=Yoʻlak
-Comment[uz@cyrillic]=Йўлак
-Comment[ven]=Ludila
-Comment[vi]=Lát gạch hoa
-Comment[wa]=Trotwer
-Comment[xh]=Umgangatho osecaleni kwendlela
-Comment[zh_CN]=人行道
-Comment[zh_TW]=人行道
-Comment[zu]=Unqenqema eceleni komgwaqo
File=pavement.png
diff --git a/kdesktop/patterns/rattan.desktop b/kdesktop/patterns/rattan.desktop
index 73c133c08..88a2e87d9 100644
--- a/kdesktop/patterns/rattan.desktop
+++ b/kdesktop/patterns/rattan.desktop
@@ -1,40 +1,3 @@
[KDE Desktop Pattern]
Comment=Rattan
-Comment[bn]=রাটান
-Comment[br]=Lien skosat
-Comment[cs]=Rákos
-Comment[eo]=Plektaĵo
-Comment[es]=Rota (planta)
-Comment[fa]=چوب‌دستی
-Comment[fi]=Rottinki
-Comment[fr]=Rotin
-Comment[fy]=Rotan
-Comment[ga]=Ratán
-Comment[he]=דקלים
-Comment[hi]=बेंत
-Comment[hu]=Nádfonat
-Comment[id]=Rotan
-Comment[ja]=籐 (とう)
-Comment[ka]=რატანი
-Comment[km]=ផ្ដៅ
-Comment[lo]=ຫວາຍ
-Comment[lv]=Rotangpalma
-Comment[mk]=Трска
-Comment[ms]=Rotan
-Comment[ne]=रेटन
-Comment[nl]=Rotan
-Comment[pa]=ਰਾਟਾਨ
-Comment[pt]=Rota
-Comment[ro]=Sac de iută
-Comment[rw]=Umukindo
-Comment[sk]=Trsť
-Comment[sv]=Rotting
-Comment[ta]=ரட்டன்
-Comment[te]=రట్టాన్
-Comment[th]=หวาย
-Comment[uz]=Palma
-Comment[uz@cyrillic]=Пальма
-Comment[vi]=Cây song mây
-Comment[zh_CN]=藤条
-Comment[zh_TW]=藤條
File=rattan.png
diff --git a/kdesktop/patterns/stonewall2.desktop b/kdesktop/patterns/stonewall2.desktop
index c9c49dde9..55256c289 100644
--- a/kdesktop/patterns/stonewall2.desktop
+++ b/kdesktop/patterns/stonewall2.desktop
@@ -1,76 +1,3 @@
[KDE Desktop Pattern]
Comment=Stonewall 2 by Tigert
-Comment[af]=Klipmuur 2 deur Tigert
-Comment[ar]=Stonewall 2 من Tigert
-Comment[az]=Tigert'dan Daş Divar 2
-Comment[be]=Каменная сцяна 2 ад Tigert
-Comment[bn]=Tigert-এর স্টোনওয়াল ২
-Comment[br]=Moger mein 2 gant Tigert
-Comment[ca]=Mur de pedra 2 per Tigert
-Comment[cs]=Stonewall 2 vytvořil Tigert
-Comment[csb]=Kamny mùr 2 (ùs. Tigert)
-Comment[cy]=Stonewall 2 gan Tigert
-Comment[da]=Stenmur 2 af Tigert
-Comment[de]=Stonewall 2
-Comment[el]=Stonewall 2 από τον Tigert
-Comment[eo]=Ŝtonmuro 2
-Comment[es]=Pared de piedra 2 de Tigert
-Comment[et]=Stonewall 2 (Tigert)
-Comment[eu]=Stonewall 2, Tigertek egina
-Comment[fa]=Stonewall ۲ توسط تیگرت
-Comment[fi]=Kiviseinä 2, tehnyt Tigert
-Comment[fr]=Stonewall 2 par Tigert
-Comment[fy]=Stienen muorre 2, troch Tigert
-Comment[gl]=Stonewall 2 por Tigert
-Comment[he]=חומת אבנים
-Comment[hi]=टिगर्ट द्वारा स्टोनवाल 2
-Comment[hr]=Stonewall 2 (izr. Tigert)
-Comment[hu]=Tigert 2. kőfala
-Comment[id]=Tembok batu 2 oleh Tigert
-Comment[is]=Steinveggur 2 eftir Tigert
-Comment[it]=Mattoni 2 (di Tigert)
-Comment[ja]=Tigert による Stonewall
-Comment[ka]=ქვის კედელი 2 (Tigert)
-Comment[kk]=Тас дуал 2 (Tigert)
-Comment[km]=ជញ្ជាំង​ថ្ម ២ ដោយ Tigert
-Comment[lo]=ກຳແພງຫີນ 2 ໂດຍ Tigert
-Comment[lt]=Tigert'o akmens siena 2
-Comment[lv]=Akmens siena 2 no Tigerta
-Comment[mk]=Камен ѕид 2 од Tigert
-Comment[mn]=Чулуун хана 2
-Comment[ms]=Tembok Batu 2 oleh Tigert
-Comment[mt]=Stonewall 2 minn Tigert
-Comment[nb]=Steinvegg 2 av Tigert
-Comment[nds]=Stonewall 2 vun Tigert
-Comment[ne]=टिग्रेटद्वारा स्टोनवाल २
-Comment[nl]=Stenen muur 2, door Tigert
-Comment[nn]=Steinvegg 2 av Tigert
-Comment[nso]=Stonewall 2 ka Tigert
-Comment[oc]=Mur de peira 2 per Tigert
-Comment[pa]=ਪੱਥਰੀ ਕੰਧ ਟੀਗਿਰਟ
-Comment[pl]=Kamienny mur 2 (wyk. Tigert)
-Comment[pt]=Stonewall 2 de Tigert
-Comment[pt_BR]=Stonewall 2 por Tigert
-Comment[ro]=Zid de piatră 2 de Tigert
-Comment[ru]=Каменная стена 2 (Tigert)
-Comment[rw]=Stonewall 2 na Tigert
-Comment[se]=Tigert:a geađgeseaidni 2
-Comment[sk]=Stonewall 2 od Tigerta
-Comment[sl]=Stonewall 2, Tigert
-Comment[sv]=Stenmur 2 av Tigert
-Comment[ta]=டைக்ரெட்டின் ஸ்டோன்வால் 2
-Comment[tg]=Девори сангии 2 аз Tigert
-Comment[th]=กำแพงหิน 2 โดย Tigert
-Comment[tr]=Tigert'dan Taşduvar 2
-Comment[tt]=Taşdíwar 2 (Tigert tarafınnan)
-Comment[uk]=Кам'яна стіна Тайгерта 2
-Comment[uz]=Tosh devol 2 (Tigert tomonidan)
-Comment[uz@cyrillic]=Тош девол 2 (Тигерт томонидан)
-Comment[ven]=Luvhondo lwa tombo lwa vhuvhili nga Tigert
-Comment[vi]=Tường đá 2 bởi Tigert
-Comment[wa]=Meur di pires 2 pa Tigert
-Comment[xh]=Stonewall 2 ngu Tigert
-Comment[zh_CN]=Tigert 的石墙 2
-Comment[zh_TW]=石牆 2 (Tigert 繪製)
-Comment[zu]=Stonewall 2 ngu-Tigert
File=stonewall2.png
diff --git a/kdesktop/patterns/triangles.desktop b/kdesktop/patterns/triangles.desktop
index 846e698ce..be355b468 100644
--- a/kdesktop/patterns/triangles.desktop
+++ b/kdesktop/patterns/triangles.desktop
@@ -1,76 +1,3 @@
[KDE Desktop Pattern]
Comment=Triangles
-Comment[af]=Driehoeke
-Comment[ar]=مثلثات
-Comment[az]=Üç Bucaqlar
-Comment[be]=Трохкутнікі
-Comment[bn]=ত্রিভুজ
-Comment[br]=Tric'hornioù
-Comment[cs]=Trojúhelníky
-Comment[csb]=Trzënórtë
-Comment[cy]=Trionglau
-Comment[da]=Trekanter
-Comment[de]=Dreiecke
-Comment[el]=Τρίγωνα
-Comment[eo]=Trianguloj
-Comment[es]=Triángulos
-Comment[eu]=Triangeluak
-Comment[fa]=مثلثها
-Comment[fi]=Kolmiot
-Comment[fy]=Trijehoeken
-Comment[ga]=Triantáin
-Comment[gl]=Triángulos
-Comment[he]=משולשים
-Comment[hi]=त्रिभुज
-Comment[hr]=Trokuti
-Comment[hu]=Háromszögek
-Comment[id]=Segi Tiga
-Comment[is]=Þríhyrningar
-Comment[it]=Triangoli
-Comment[ja]=三角
-Comment[ka]=სამკუთხედები
-Comment[kk]=Үшбұрыштар
-Comment[km]=ត្រីកោណ
-Comment[lo]=ສາມລ່ງມ
-Comment[lt]=Trikampiai
-Comment[lv]=Trīsstūri
-Comment[mk]=Триаголници
-Comment[mn]=Гурвалжин
-Comment[ms]=Segi Tiga
-Comment[mt]=Triangoli
-Comment[nb]=Trekanter
-Comment[nds]=Dre'ecks
-Comment[ne]=त्रिभुज
-Comment[nl]=Driehoeken
-Comment[nn]=Trekantar
-Comment[nso]=Dikhutlotharo
-Comment[pa]=ਤਿਕੋਣਾਂ
-Comment[pl]=Trójkąty
-Comment[pt]=Triângulos
-Comment[pt_BR]=Triângulos
-Comment[ro]=Triunghiuri
-Comment[ru]=Треугольники
-Comment[rw]=Mpandeshatu
-Comment[se]=Golmmehat
-Comment[sk]=Trojuholníky
-Comment[sl]=Trikotniki
-Comment[sr]=Троуглови
-Comment[sr@Latn]=Trouglovi
-Comment[sv]=Trianglar
-Comment[ta]=முக்கோணங்கள்
-Comment[te]=త్రికొణాలు
-Comment[tg]=Секунҷаҳо
-Comment[th]=สามเหลี่ยม
-Comment[tr]=Üçgenler
-Comment[tt]=Öçpoçmaq
-Comment[uk]=Трикутники
-Comment[uz]=Uchburchaklar
-Comment[uz@cyrillic]=Учбурчаклар
-Comment[ven]=Thiriengele
-Comment[vi]=Tam giác
-Comment[wa]=Triyangues
-Comment[xh]=Oonxantathu
-Comment[zh_CN]=三角形
-Comment[zh_TW]=三角形
-Comment[zu]=Onxantathu
File=triangles.png
diff --git a/kdesktop/pics/ksslogo.png b/kdesktop/pics/ksslogo.png
index 466215dee..db984eedf 100644..100755
--- a/kdesktop/pics/ksslogo.png
+++ b/kdesktop/pics/ksslogo.png
Binary files differ
diff --git a/kdesktop/pics/splash.png b/kdesktop/pics/splash.png
index 1d5738697..52d76596f 100644..100755
--- a/kdesktop/pics/splash.png
+++ b/kdesktop/pics/splash.png
Binary files differ
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/programs/CMakeLists.txt b/kdesktop/programs/CMakeLists.txt
index e89527a1e..4a8572f81 100644
--- a/kdesktop/programs/CMakeLists.txt
+++ b/kdesktop/programs/CMakeLists.txt
@@ -9,6 +9,9 @@
#
#################################################
-install( FILES
+tde_create_translated_desktop(
+ SOURCE
xearth.desktop xglobe.desktop xplanet.desktop
- DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs )
+ DESTINATION ${DATA_INSTALL_DIR}/kdesktop/programs
+ PO_DIR kdesktop-desktops
+)
diff --git a/kdesktop/programs/xearth.desktop b/kdesktop/programs/xearth.desktop
index 36af7e78b..1fd7f376f 100644
--- a/kdesktop/programs/xearth.desktop
+++ b/kdesktop/programs/xearth.desktop
@@ -1,80 +1,5 @@
[TDE Desktop Program]
Comment=XEarth by Kirk Johnson
-Comment[af]=XEarth deur Kirk Johnson
-Comment[ar]=XEarth من تأليف Kirk Johnson
-Comment[az]=Kirk Johnson'dan XEarth
-Comment[be]=Зямля (Kirk Johnson)
-Comment[bn]=কার্ক জনসন-এর এক্স-আর্থ
-Comment[br]=XEarth gant Kirk Johnson
-Comment[ca]=XEarth per Kirk Johnson
-Comment[cs]=XEarth vytvořil Kirk Johnson
-Comment[csb]=XEarth (ùs. Kirk Johnson)
-Comment[cy]=XEarth gan Kirk Johnson
-Comment[da]=XEarth af Kirk Johnson
-Comment[de]=XEarth
-Comment[el]=XEarth από τον Kirk Johnson
-Comment[eo]=XTero
-Comment[es]=XEarth de Kirk Johnson
-Comment[et]=XEarth (Kirk Johnson)
-Comment[eu]=XEarth, Kirk Johnsonek egina
-Comment[fa]=XEarth توسط کیرک جانسون
-Comment[fi]=XEarth, tehnyt Kirk Johnson
-Comment[fr]=XEarth par Kirk Johnson
-Comment[fy]=XEarth, troch Kirk Johnson
-Comment[ga]=XEarth le Kirk Johnson
-Comment[gl]=XEarth por Kirk Johnson
-Comment[he]=XEarth מאת Kirk Johnson
-Comment[hi]=किर्क जॉनसन द्वारा एक्स-अर्थ
-Comment[hr]=XEarth (izr. Kirka Johnsona)
-Comment[hu]=Kirk Johnson földgömbje
-Comment[id]=XEarth oleh Kirk Johnson
-Comment[is]=XJörð eftir Kirk Johnson
-Comment[it]=XEarth (di Kirk Johnson)
-Comment[ja]=Kirk Johnson による XEarth
-Comment[ka]=Xდედამიწა (Kirk Johnson)
-Comment[kk]=XEarth (Kirk Johnson)
-Comment[km]=XEarth ដោយ Kirk Johnson
-Comment[lo]=ເເຜນທີ່ໂລກ ໂດຍ Kirk Johnson
-Comment[lt]=Kirk Johnson'o XEarth
-Comment[lv]=XEarth no Kirk Johnson
-Comment[mk]=X-Земја од Kirk Johnson
-Comment[mn]=XEarth
-Comment[ms]=XEarth oleh Kirk Johnson
-Comment[mt]=XEarth minn Kirk Johnson
-Comment[nb]=XEarth av Kirk Johnson
-Comment[nds]=XEarth vun Kirk Johnson
-Comment[ne]=किर्क जोहान्सनद्वारा X अर्थ
-Comment[nl]=XEarth, door Kirk Johnson
-Comment[nn]=XEarth av Kirk Johnson
-Comment[nso]=XLefase ka Kirk Johnson
-Comment[oc]=XEarth per Kirk Johnson
-Comment[pa]=ਕਿਰਕ ਜਾਨਸਨ ਵਲੋਂ XEarth
-Comment[pl]=XEarth autorstwa Kirka Johnsona
-Comment[pt]=XEarth de Kirk Johnson
-Comment[pt_BR]=XEarth por Kirk Johnson
-Comment[ro]=XEarth de Kirk Johnson
-Comment[ru]=XEarth (Kirk Johnson)
-Comment[rw]=XEarth na Kirk Johnson
-Comment[se]=Kirk Johnson:a XEarth
-Comment[sk]=XEarth od Kirka Johnsona
-Comment[sl]=XEarth avtorja Kirka Johnsona
-Comment[ss]=XEarth ngu Kirk Johnson
-Comment[sv]=Xearth av Kirk Johnson
-Comment[ta]=கிர்க் ஜான்சனின் Xஎர்த்
-Comment[tg]=XEarth аз Kirk Johnson
-Comment[th]=แผนที่โลก โดยเคิร์ก จอห์นสัน
-Comment[tr]=Kirk Johnson'dan XEarth
-Comment[tt]=XEarth, Kirk Johnson tarafınnan
-Comment[uk]=XEarth Кірка Джонсона
-Comment[uz]=XEarth (Kirik Jonson tomonidan)
-Comment[uz@cyrillic]=XEarth (Кирик Жонсон томонидан)
-Comment[ven]=Shango la X nga Kirk Johnson
-Comment[vi]=Trái Đất X bởi Kirk Johnson
-Comment[wa]=XDaegn pa Kirk Johnson
-Comment[xh]=XEarth ngu Kirk Johnson
-Comment[zh_CN]=Kirk Johnson 的 XEarth
-Comment[zh_TW]=XEarth (Kirk Johnson 繪製)
-Comment[zu]=XEarth ngu-Kirk Johnson
Executable=xearth
Command=xearth -size %x,%y -ppm > %f
PreviewCommand=xearth -size %x,%y -nomarkers -ppm > %f
diff --git a/kdesktop/programs/xglobe.desktop b/kdesktop/programs/xglobe.desktop
index 01b8244be..379980837 100644
--- a/kdesktop/programs/xglobe.desktop
+++ b/kdesktop/programs/xglobe.desktop
@@ -1,80 +1,5 @@
[TDE Desktop Program]
Comment=XGlobe by Thorsten Scheuermann
-Comment[af]=XGlobe deur Thorsten Scheuermann
-Comment[ar]=XGlobe من تأليف Thorsten Scheuermann
-Comment[az]=Thorsten Scheuermann'dan XGlobe
-Comment[be]=Глобус (Thorsten Scheuermann)
-Comment[bn]=থর্সটেন শিউয়ারমান-এর এক্স-গ্লোব
-Comment[br]=XGlobe gant Thorsten Scheuermann
-Comment[ca]=XGlobe per en Thorsten Scheuermann
-Comment[cs]=XGlobe vytvořil Thorsten Scheuermann
-Comment[csb]=XGlobe (ùs. Thorsten Scheuermann)
-Comment[cy]=XGlobe gan Thorsten Scheuermann
-Comment[da]=XGlobe af Thorsten Scheuermann
-Comment[de]=XGlobe
-Comment[el]=XGlobe από τον Thorsten Scheuermann
-Comment[eo]=XGlobo
-Comment[es]=XGlobe por Thorsten Scheuermann
-Comment[et]=XGlobe (Thorsten Scheuermann)
-Comment[eu]=XGlobe, Thorsten Scheuermannek egina
-Comment[fa]=XGlobe توسط تورستن شرمن
-Comment[fi]=XGlobe, tehnyt Thorsten Scheuermann
-Comment[fr]=XGlobe par Thorsten Scheuermann
-Comment[fy]=XGlobe, troch Thorsten Scheuermann
-Comment[ga]=XGlobe le Thorsten Scheuermann
-Comment[gl]=XGlobe por Thorsten Scheuermann
-Comment[he]=XGlobe מאת Thorsten Scheuermann
-Comment[hi]=थार्स्टन शर्मन द्वारा एक्स-ग्लोब
-Comment[hr]=XGlobe (izr. Thorsten Scheuermann)
-Comment[hu]=Thorsten Scheuermann földgömbje
-Comment[id]=XGlobe oleh Thorsten Scheuermann
-Comment[is]=XHnöttur eftir Thorsten Scheuermann
-Comment[it]=XGlobe (di Thorsten Scheuermann)
-Comment[ja]=Thorsten Scheuermann による XGlobe
-Comment[ka]=Xგლობუსი (Thorsten Scheuermann)
-Comment[kk]=XGlobe (Thorsten Scheuermann)
-Comment[km]=XGlobe ដោយ Thorsten Scheuermann
-Comment[lo]=ລູກໂລກ ໂດຍ Thorsten Scheuermann
-Comment[lt]=Thorsten Scheuermann'o XGlobe
-Comment[lv]=XGlobe no Thorsten Scheuermann
-Comment[mk]=X-Глобус од Thorsten Scheuermann
-Comment[mn]=XGlobe
-Comment[ms]=XGlobe oleh Thorsten Scheuermann
-Comment[mt]=XGlobe minn Thorsten Scheuermann
-Comment[nb]=XGlobe av Thorsten Scheuermann
-Comment[nds]=XGlobe vun Thorsten Scheuermann
-Comment[ne]=थर्स्टर सेचरम्यानद्वारा X ग्लोब
-Comment[nl]=XGlobe, door Thorsten Scheuermann
-Comment[nn]=XGlobe av Thorsten Scheuermann
-Comment[nso]=XGlobe ka Thorsten Scheuermann
-Comment[oc]=XGlobe per Thorsten Scheuermann
-Comment[pa]=ਥੋਰਸਟੀਨ ਸਚੀਉਰਮਨ ਵਲੋਂ XGlobe
-Comment[pl]=XGlobe autorstwa Thorstena Scheuermanna
-Comment[pt]=XGlobe de Thorsten Scheuermann
-Comment[pt_BR]=XGlobe por Thorsten Scheuermann
-Comment[ro]=XGlobe de Thorsten Scheuermann
-Comment[ru]=XGlobe (Thorsten Scheuermann)
-Comment[rw]=XGlobe na Thorsten Scheuermann
-Comment[se]=Thorsten Scheuermann:a XGlobe
-Comment[sk]=XGlobe od Thorstena Scheuermanna
-Comment[sl]=XGlobe avtorja Thorstena Scheuermanna
-Comment[ss]=XGlobe ngu Thorsten Scheuermann
-Comment[sv]=Xglobe av Thorsten Scheuermann
-Comment[ta]=த்ராஸ்டன் ஸ்யூர்மானின் எக்ஸ் க்ளோப்
-Comment[tg]=XGlobe аз Thorsten Scheuermann
-Comment[th]=ลูกโลก โดย Thorsten Scheuermann
-Comment[tr]=Thorsten Scheuermann'dan XGlobe
-Comment[tt]=XGlobe, Thorsten Scheuermann tarafınnan
-Comment[uk]=XGlobe Торстена Шоєрмана
-Comment[uz]=XGlobe (Torsten Shoyerman tomonidan)
-Comment[uz@cyrillic]=XGlobe (Торстен Шойерман томонидан)
-Comment[ven]=Lifhasi la X nga Thorsten Scheuermann
-Comment[vi]=Qủa cầu X bởi Thorsten Scheuermann
-Comment[wa]=XGlobe pa Thorsten Scheuermann
-Comment[xh]=XGlobe ngu Thorsten Scheuermann
-Comment[zh_CN]=Thorsten Scheuermann 的 XGlobe
-Comment[zh_TW]=XGlobe (Thorsten Scheuermann 繪製)
-Comment[zu]=XGlobe ngu-Thorsten Scheuermann
Executable=xglobe
Command=xglobe -dump -once -size %x,%y -nomarkers && mv xglobe-dump.bmp %f
PreviewCommand=xglobe -nomarkers -nolabel -dump -once -size %x,%y && mv xglobe-dump.bmp %f
diff --git a/kdesktop/programs/xplanet.desktop b/kdesktop/programs/xplanet.desktop
index 8ee5b0980..e5485ceb3 100644
--- a/kdesktop/programs/xplanet.desktop
+++ b/kdesktop/programs/xplanet.desktop
@@ -1,80 +1,6 @@
[TDE Desktop Program]
-Command=xplanet --geometry %xx%y --num_times 1 --output %f.jpg && mv %f.jpg %f
Comment=XPlanet by Hari Nair
-Comment[af]=XPlaneet deur Hari Nair
-Comment[ar]=XPlanet من تليف Hari Nair
-Comment[az]=Hari Nair'dan XPlanet
-Comment[be]=Планета (Hari Nair)
-Comment[bn]=হরি নায়ার-এর এক্স-প্ল্যানেট
-Comment[br]=XPlanet gant Hari Nair
-Comment[ca]=XPlanet per en Hari Nair
-Comment[cs]=XPlanet od Hariho Naira
-Comment[csb]=XPlanet (ùs.Hari Neir)
-Comment[cy]=XPlanet gan Hari Nair
-Comment[da]=XPlanet af Hari Nair
-Comment[de]=XPlanet
-Comment[el]=XPlanet του Hari Nair
-Comment[eo]=XPlanedo de Hari Nair
-Comment[es]=XPlanet de Hari Nair
-Comment[et]=XPlanet (Hari Nair)
-Comment[eu]=XPlanet Hari Nair-ek egina
-Comment[fa]=XPlanet توسط هاری نیر
-Comment[fi]=XPlanet, tehnyt Hari Nair
-Comment[fr]=XPlanet par Hari Nair
-Comment[fy]=XPlanet, troch Hari Nair
-Comment[ga]=XPlanet le Hari Nair
-Comment[gl]=XPlanet por Hari Nair
-Comment[he]=XPlanet מאת הארי נייר
-Comment[hi]=हरी नायर द्वारा एक्स-प्लेनेट
-Comment[hr]=XPlanet (izr. Hari Nair)
-Comment[hu]=Hari Nair XPlanetje
-Comment[id]=,XPlanet by Hari Nair
-Comment[is]=XPlánetur eftir Hari Nair
-Comment[it]=XPlanet (di Hari Nair)
-Comment[ja]=Hari Nair による XPlanet
-Comment[ka]=Xპლანეტა (Hari Nair)
-Comment[kk]=XPlanet (Hari Nair)
-Comment[km]=XPlanet ដោយ Hari Nair
-Comment[lo]=ອາວະກາດ ໂດຍ Hari Nair
-Comment[lt]=Hari Nair'o XPlanet
-Comment[lv]=XPlanet no Hari Nair
-Comment[mk]=XПланета од Hari Nair
-Comment[mn]=XPlanet
-Comment[ms]=XPlanet oleh Hari Nair
-Comment[mt]=XPlanet minn Hari Nair
-Comment[nb]=XPlanet av Hari Nair
-Comment[nds]=XPlanet vun Hari Nair
-Comment[ne]=हरि नैरद्वारा X प्लानेट
-Comment[nl]=XPlanet, door Hari Nair
-Comment[nn]=XPlanet av Hari Nair
-Comment[nso]=XPlanet ka Hari Nair
-Comment[pa]=ਹੇਰੀ ਨਾਇਰ ਵਲੋਂ XPlanet
-Comment[pl]=XPlanet autorstwa Hari Neir
-Comment[pt]=XPlanet de Hari Nair
-Comment[pt_BR]=XPlanet por Hari Nair
-Comment[ro]=XPlanet de Hari Nair
-Comment[ru]=XPlanet (Hari Nair)
-Comment[rw]=XPlanet na Hari Nair
-Comment[se]=Hari Naira XPlanet
-Comment[sk]=XPlanet od Hari Nair
-Comment[sl]=XPlanet Harija Naira
-Comment[ss]=XPlanet ngu Hari Nair
-Comment[sv]=Xplanet av Hari Nair
-Comment[ta]=ஹரி நாயரின் Xப்ளானட்
-Comment[tg]=XPlanet аз Hari Nair
-Comment[th]=ดาวเคราะห์ โดย Hari Nair
-Comment[tr]=Hari Nair'dan XPlanet
-Comment[tt]=XPlanet, Hari Nair tarafınnan
-Comment[uk]=XPlanet від Hari Nair
-Comment[uz]=XPlanet (Xari Neyr tomonidan)
-Comment[uz@cyrillic]=XPlanet (Хари Нейр томонидан)
-Comment[ven]=Pulanete ya X nga Hari Nair
-Comment[vi]=Hành tinh X bởi Hari Nair
-Comment[wa]=XPlanete pa Hari Nair
-Comment[xh]=XPlanet ngu Hari Nair
-Comment[zh_CN]=Hari Nair 的 XPlanet
-Comment[zh_TW]=XPlanet (Hari Nair 繪製)
-Comment[zu]=XPlanet ngu-Hari Nair
Executable=xplanet
+Command=xplanet --geometry %xx%y --num_times 1 --output %f.jpg && mv %f.jpg %f
PreviewCommand=xplanet --geometry %xx%y --num_times 1 --output %f.jpg && mv %f.jpg %f
Refresh=10
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();