summaryrefslogtreecommitdiffstats
path: root/kcontrol/kded
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/kded')
-rw-r--r--kcontrol/kded/CMakeLists.txt33
-rw-r--r--kcontrol/kded/Makefile.am15
-rw-r--r--kcontrol/kded/kcmkded.cpp363
-rw-r--r--kcontrol/kded/kcmkded.desktop234
-rw-r--r--kcontrol/kded/kcmkded.h78
5 files changed, 723 insertions, 0 deletions
diff --git a/kcontrol/kded/CMakeLists.txt b/kcontrol/kded/CMakeLists.txt
new file mode 100644
index 000000000..c974d7ca0
--- /dev/null
+++ b/kcontrol/kded/CMakeLists.txt
@@ -0,0 +1,33 @@
+#################################################
+#
+# (C) 2010-2011 Serghei Amelian
+# serghei (DOT) amelian (AT) gmail.com
+#
+# Improvements and feedback are welcome
+#
+# This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+ ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES kcmkded.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
+
+
+##### kcm_kded (module) #########################
+
+tde_add_kpart( kcm_kded AUTOMOC
+ SOURCES kcmkded.cpp
+ LINK tdeio-shared
+ DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/kcontrol/kded/Makefile.am b/kcontrol/kded/Makefile.am
new file mode 100644
index 000000000..e631b7271
--- /dev/null
+++ b/kcontrol/kded/Makefile.am
@@ -0,0 +1,15 @@
+kde_module_LTLIBRARIES = kcm_kded.la
+
+kcm_kded_la_SOURCES = kcmkded.cpp
+
+kcm_kded_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
+kcm_kded_la_LIBADD = $(LIB_TDEIO)
+
+AM_CPPFLAGS= $(all_includes)
+
+METASOURCES = AUTO
+
+messages: rc.cpp
+ $(XGETTEXT) *.cpp -o $(podir)/kcmkded.pot
+
+xdg_apps_DATA = kcmkded.desktop
diff --git a/kcontrol/kded/kcmkded.cpp b/kcontrol/kded/kcmkded.cpp
new file mode 100644
index 000000000..f6fcd2e5a
--- /dev/null
+++ b/kcontrol/kded/kcmkded.cpp
@@ -0,0 +1,363 @@
+/* This file is part of the KDE project
+ Copyright (C) 2002 Daniel Molkentin <[email protected]>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include <tqheader.h>
+#include <tqlayout.h>
+#include <tqpushbutton.h>
+#include <tqtimer.h>
+#include <tqvgroupbox.h>
+#include <tqwhatsthis.h>
+
+#include <dcopclient.h>
+#include <dcopref.h>
+
+#include <tdeaboutdata.h>
+#include <tdeapplication.h>
+#include <kbuttonbox.h>
+#include <kdebug.h>
+#include <kdesktopfile.h>
+#include <kdialog.h>
+#include <kgenericfactory.h>
+#include <tdelistview.h>
+#include <tdemessagebox.h>
+#include <kservice.h>
+#include <kstandarddirs.h>
+
+#include "kcmkded.h"
+#include "kcmkded.moc"
+
+typedef KGenericFactory<KDEDConfig, TQWidget> KDEDFactory;
+K_EXPORT_COMPONENT_FACTORY( kcm_kded, KDEDFactory( "kcmkded" ) )
+
+
+KDEDConfig::KDEDConfig(TQWidget* parent, const char* name, const TQStringList &) :
+ TDECModule( KDEDFactory::instance(), parent, name )
+{
+ TDEAboutData *about =
+ new TDEAboutData( I18N_NOOP( "kcmkded" ), I18N_NOOP( "TDE Service Manager" ),
+ 0, 0, TDEAboutData::License_GPL,
+ I18N_NOOP( "(c) 2002 Daniel Molkentin" ) );
+ about->addAuthor("Daniel Molkentin",0,"[email protected]");
+ setAboutData( about );
+
+ setQuickHelp( i18n("<h1>Service Manager</h1><p>This module allows you to have an overview of all plugins "
+ "running as TDE Services. Generally, there are two types of service:</p>"
+ "<ul><li>Services invoked at startup</li><li>Services called on demand</li></ul>"
+ "<p>The latter are only listed for convenience. The startup services can be started and stopped. "
+ "In Administrator mode, you can also define whether services should be loaded at startup.</p>"
+ "<p><b> Use this with care: some services are vital for TDE; do not deactivate services if you"
+ " do not know what you are doing.</b></p>"));
+
+ RUNNING = i18n("Running")+" ";
+ NOT_RUNNING = i18n("Not running")+" ";
+
+ TQVBoxLayout *lay = new TQVBoxLayout( this, 0, KDialog::spacingHint() );
+
+ TQGroupBox *gb = new TQVGroupBox(i18n("Load-on-Demand Services"), this );
+ TQWhatsThis::add(gb, i18n("This is a list of available TDE services which will "
+ "be started on demand. They are only listed for convenience, as you "
+ "cannot manipulate these services."));
+ lay->addWidget( gb );
+
+ _lvLoD = new TDEListView( gb );
+ _lvLoD->addColumn(i18n("Service"));
+ _lvLoD->addColumn(i18n("Description"));
+ _lvLoD->addColumn(i18n("Status"));
+ _lvLoD->setAllColumnsShowFocus(true);
+ _lvLoD->header()->setStretchEnabled(true, 1);
+
+ gb = new TQVGroupBox(i18n("Startup Services"), this );
+ TQWhatsThis::add(gb, i18n("This shows all TDE services that can be loaded "
+ "on TDE startup. Checked services will be invoked on next startup. "
+ "Be careful with deactivation of unknown services."));
+ lay->addWidget( gb );
+
+ _lvStartup = new TDEListView( gb );
+ _lvStartup->addColumn(i18n("Use"));
+ _lvStartup->addColumn(i18n("Service"));
+ _lvStartup->addColumn(i18n("Description"));
+ _lvStartup->addColumn(i18n("Status"));
+ _lvStartup->setAllColumnsShowFocus(true);
+ _lvStartup->header()->setStretchEnabled(true, 2);
+
+ KButtonBox *buttonBox = new KButtonBox( gb, Qt::Horizontal);
+ _pbStart = buttonBox->addButton( i18n("Start"));
+ _pbStop = buttonBox->addButton( i18n("Stop"));
+
+ _pbStart->setEnabled( false );
+ _pbStop->setEnabled( false );
+
+ connect(_pbStart, TQT_SIGNAL(clicked()), TQT_SLOT(slotStartService()));
+ connect(_pbStop, TQT_SIGNAL(clicked()), TQT_SLOT(slotStopService()));
+ connect(_lvStartup, TQT_SIGNAL(selectionChanged(TQListViewItem*)), TQT_SLOT(slotEvalItem(TQListViewItem*)) );
+
+ load();
+}
+
+void setModuleGroup(TDEConfig *config, const TQString &filename)
+{
+ TQString module = filename;
+ int i = module.findRev('/');
+ if (i != -1)
+ module = module.mid(i+1);
+ i = module.findRev('.');
+ if (i != -1)
+ module = module.left(i);
+
+ config->setGroup(TQString("Module-%1").arg(module));
+}
+
+bool KDEDConfig::autoloadEnabled(TDEConfig *config, const TQString &filename)
+{
+ setModuleGroup(config, filename);
+ return config->readBoolEntry("autoload", true);
+}
+
+void KDEDConfig::setAutoloadEnabled(TDEConfig *config, const TQString &filename, bool b)
+{
+ setModuleGroup(config, filename);
+ return config->writeEntry("autoload", b);
+}
+
+void KDEDConfig::load() {
+ load ( false );
+}
+
+
+void KDEDConfig::load( bool useDefaults ) {
+ TDEConfig kdedrc("kdedrc", true, false);
+ kdedrc.setReadDefaults( useDefaults );
+
+ _lvStartup->clear();
+ _lvLoD->clear();
+
+ TQStringList files;
+ TDEGlobal::dirs()->findAllResources( "services",
+ TQString::fromLatin1( "kded/*.desktop" ),
+ true, true, files );
+
+ TQListViewItem* item = 0L;
+ CheckListItem* clitem;
+ for ( TQStringList::ConstIterator it = files.begin(); it != files.end(); ++it ) {
+
+ if ( KDesktopFile::isDesktopFile( *it ) ) {
+ KDesktopFile file( *it, true, "services" );
+
+ if ( file.readBoolEntry("X-TDE-Kded-autoload") ) {
+ clitem = new CheckListItem(_lvStartup, TQString::null);
+ connect(clitem, TQT_SIGNAL(changed(TQCheckListItem*)), TQT_SLOT(slotItemChecked(TQCheckListItem*)));
+ clitem->setOn(autoloadEnabled(&kdedrc, *it));
+ item = clitem;
+ item->setText(1, file.readName());
+ item->setText(2, file.readComment());
+ item->setText(3, NOT_RUNNING);
+ item->setText(4, file.readEntry("X-TDE-Library"));
+ }
+ else if ( file.readBoolEntry("X-TDE-Kded-load-on-demand") ) {
+ item = new TQListViewItem(_lvLoD, file.readName());
+ item->setText(1, file.readComment());
+ item->setText(2, NOT_RUNNING);
+ item->setText(4, file.readEntry("X-TDE-Library"));
+ }
+ }
+ }
+
+ getServiceStatus();
+ emit changed( useDefaults );
+}
+
+void KDEDConfig::save() {
+ TQCheckListItem* item = 0L;
+
+ TQStringList files;
+ TDEGlobal::dirs()->findAllResources( "services",
+ TQString::fromLatin1( "kded/*.desktop" ),
+ true, true, files );
+
+ TDEConfig kdedrc("kdedrc", false, false);
+
+ for ( TQStringList::ConstIterator it = files.begin(); it != files.end(); ++it ) {
+
+ if ( KDesktopFile::isDesktopFile( *it ) ) {
+
+ TDEConfig file( *it, false, false, "services" );
+ file.setGroup("Desktop Entry");
+
+ if (file.readBoolEntry("X-TDE-Kded-autoload")){
+
+ item = static_cast<TQCheckListItem *>(_lvStartup->findItem(file.readEntry("X-TDE-Library"),4));
+ if (item) {
+ // we found a match, now compare and see what changed
+ setAutoloadEnabled(&kdedrc, *it, item->isOn());
+ }
+ }
+ }
+ }
+ kdedrc.sync();
+
+ DCOPRef( "kded", "kded" ).call( "reconfigure" );
+ TQTimer::singleShot(0, this, TQT_SLOT(slotServiceRunningToggled()));
+}
+
+
+void KDEDConfig::defaults()
+{
+ load( true );
+}
+
+
+void KDEDConfig::getServiceStatus()
+{
+ QCStringList modules;
+ TQCString replyType;
+ TQByteArray replyData;
+
+
+ if (!kapp->dcopClient()->call( "kded", "kded", "loadedModules()", TQByteArray(),
+ replyType, replyData ) ) {
+
+ _lvLoD->setEnabled( false );
+ _lvStartup->setEnabled( false );
+ KMessageBox::error(this, i18n("Unable to contact KDED."));
+ return;
+ }
+ else {
+
+ if ( replyType == "QCStringList" ) {
+ TQDataStream reply(replyData, IO_ReadOnly);
+ reply >> modules;
+ }
+ }
+
+ for( TQListViewItemIterator it( _lvLoD); it.current() != 0; ++it )
+ it.current()->setText(2, NOT_RUNNING);
+ for( TQListViewItemIterator it( _lvStartup); it.current() != 0; ++it )
+ it.current()->setText(3, NOT_RUNNING);
+ for ( QCStringList::Iterator it = modules.begin(); it != modules.end(); ++it )
+ {
+ TQListViewItem *item = _lvLoD->findItem(*it, 4);
+ if ( item )
+ {
+ item->setText(2, RUNNING);
+ }
+
+ item = _lvStartup->findItem(*it, 4);
+ if ( item )
+ {
+ item->setText(3, RUNNING);
+ }
+ }
+}
+
+void KDEDConfig::slotReload()
+{
+ TQString current = _lvStartup->currentItem()->text(4);
+ load();
+ TQListViewItem *item = _lvStartup->findItem(current, 4);
+ if (item)
+ _lvStartup->setCurrentItem(item);
+}
+
+void KDEDConfig::slotEvalItem(TQListViewItem * item)
+{
+ if (!item)
+ return;
+
+ if ( item->text(3) == RUNNING ) {
+ _pbStart->setEnabled( false );
+ _pbStop->setEnabled( true );
+ }
+ else if ( item->text(3) == NOT_RUNNING ) {
+ _pbStart->setEnabled( true );
+ _pbStop->setEnabled( false );
+ }
+ else // Error handling, better do nothing
+ {
+ _pbStart->setEnabled( false );
+ _pbStop->setEnabled( false );
+ }
+
+ getServiceStatus();
+}
+
+void KDEDConfig::slotServiceRunningToggled()
+{
+ getServiceStatus();
+ slotEvalItem(_lvStartup->currentItem());
+}
+
+void KDEDConfig::slotStartService()
+{
+ TQCString service = _lvStartup->currentItem()->text(4).latin1();
+
+ TQByteArray data, replyData;
+ TQCString replyType;
+ TQDataStream arg( data, IO_WriteOnly );
+ arg << service;
+ if (kapp->dcopClient()->call( "kded", "kded", "loadModule(TQCString)", data, replyType, replyData ) ) {
+ TQDataStream reply(replyData, IO_ReadOnly);
+ if ( replyType == "bool" )
+ {
+ bool result;
+ reply >> result;
+ if ( result )
+ slotServiceRunningToggled();
+ else
+ KMessageBox::error(this, i18n("Unable to start service."));
+ } else {
+ kdDebug() << "loadModule() on kded returned an unexpected type of reply: " << replyType << endl;
+ }
+ }
+ else {
+ KMessageBox::error(this, i18n("Unable to contact KDED."));
+ }
+}
+
+void KDEDConfig::slotStopService()
+{
+ TQCString service = _lvStartup->currentItem()->text(4).latin1();
+ kdDebug() << "Stopping: " << service << endl;
+ TQByteArray data;
+ TQDataStream arg( data, IO_WriteOnly );
+
+ arg << service;
+ if (kapp->dcopClient()->send( "kded", "kded", "unloadModule(TQCString)", data ) ) {
+ slotServiceRunningToggled();
+ }
+ else {
+ KMessageBox::error(this, i18n("Unable to stop service."));
+ }
+
+}
+
+void KDEDConfig::slotItemChecked(TQCheckListItem*)
+{
+ emit changed(true);
+}
+
+CheckListItem::CheckListItem(TQListView *parent, const TQString &text)
+ : TQObject(parent),
+ TQCheckListItem(parent, text, CheckBox)
+{ }
+
+void CheckListItem::stateChange(bool on)
+{
+ TQCheckListItem::stateChange(on);
+ emit changed(this);
+}
diff --git a/kcontrol/kded/kcmkded.desktop b/kcontrol/kded/kcmkded.desktop
new file mode 100644
index 000000000..2837188be
--- /dev/null
+++ b/kcontrol/kded/kcmkded.desktop
@@ -0,0 +1,234 @@
+[Desktop Entry]
+Exec=tdecmshell kcmkded
+Icon=services
+Type=Application
+X-DocPath=kcontrol/kcmkded/index.html
+X-TDE-Library=kded
+X-TDE-Factoryname=kded
+X-TDE-ParentApp=kcontrol
+Categories=Qt;TDE;X-TDE-settings-components;
+
+Name=Service Manager
+Name[af]=Diens Bestuurder
+Name[ar]=مدبر الخدمات
+Name[az]=Xidmət İdarəçisi
+Name[be]=Кіраўнік сервісаў
+Name[bg]=Системни услуги
+Name[bn]=সার্ভিস ম্যানেজার
+Name[br]=Merour ar servijoù
+Name[bs]=Upravljač servisa
+Name[ca]=Gestor del servei
+Name[cs]=Správce služeb
+Name[csb]=Menedżer ùsłëżnotów
+Name[cy]=Rheolydd Gwasanaethau
+Name[da]=Service-håndtering
+Name[de]=Diensteverwaltung
+Name[el]=Διαχειριστής υπηρεσιών
+Name[eo]=Servo-Administrilo
+Name[es]=Gestor de servicios
+Name[et]=Teenuste haldur
+Name[eu]=Zerbitzu kudeatzailea
+Name[fa]=مدیر خدمت
+Name[fi]=Palvelunhallinta
+Name[fr]=Gestionnaire de services
+Name[fy]=TDE-systeemtsjinsten
+Name[ga]=Bainisteoir Seirbhíse
+Name[gl]=Xestor de Servizos
+Name[he]=מנהל השירותים
+Name[hi]=सेवा प्रबंधक
+Name[hr]=Upravljanje uslugama
+Name[hu]=Szolgáltatások
+Name[is]=Þjónustustjóri
+Name[it]=Gestione servizi
+Name[ja]=サービスマネージャ
+Name[ka]=სერვის მენეჯერი
+Name[kk]=Қызметтерді басқару
+Name[km]=កម្មវិធី​គ្រប់គ្រង​សេវា
+Name[ko]=서비스 관리자
+Name[lo]=ຕົວຈັດການ Dhcp
+Name[lt]=Tarnybų tvarkyklė
+Name[lv]=Servisu Menedžeris
+Name[mk]=Менаџер на сервиси
+Name[mn]=Үйлчилгээ удирдагч
+Name[ms]=Pengurus Servis
+Name[mt]=Manager tas-servizzi
+Name[nb]=Tjenestebehandler
+Name[nds]=Deenstpleger
+Name[ne]=सेवा प्रबन्धक
+Name[nl]=TDE-systeemdiensten
+Name[nn]=Tenestehandsamar
+Name[nso]=Molaodi wa Tirelo
+Name[pa]=ਸੇਵਾਵਾਂ ਮੈਨੇਜਰ
+Name[pl]=Menedżer usług
+Name[pt]=Gestor de Serviços
+Name[pt_BR]=Gerenciador de Serviços
+Name[ro]=Managerul de servicii
+Name[ru]=Управление службами
+Name[rw]=MugengaSerivise
+Name[se]=Bálvalusgieđahalli
+Name[sk]=Správca služieb
+Name[sl]=Upravitelj storitev
+Name[sr]=Менаџер сервиса
+Name[sr@Latn]=Menadžer servisa
+Name[sv]=Tjänsthanterare
+Name[ta]=சேவை மேலாளர்
+Name[tg]=Мудири хидмат
+Name[th]=ตัวจัดการรบริการ
+Name[tr]=Servis Yöneticisi
+Name[tt]=Xezmät İdäräçe
+Name[uk]=Менеджер служб
+Name[uz]=Xizmat boshqaruvchisi
+Name[uz@cyrillic]=Хизмат бошқарувчиси
+Name[ven]=Mulanguli wa tshumelo
+Name[vi]=Trình quản lý Dịch vụ
+Name[wa]=Manaedjeu di siervices
+Name[xh]=Umphathi Wenkonzo
+Name[zh_CN]=服务管理器
+Name[zh_TW]=服務管理程式
+Name[zu]=Imenenja Yomsebenzi
+Comment=System Services Configuration
+Comment[af]=Stelsel Dienste Opstelling
+Comment[ar]=تهيئة خدمات النظام
+Comment[az]=Sistem Xidmətləri Qurğuları
+Comment[be]=Настаўленні сістэмных сервісаў
+Comment[bg]=Настройване на системните услуги
+Comment[bn]=সিস্টেম সার্ভিস কনফিগারেশন
+Comment[br]=Kefluniadur servijerien ar reiziad
+Comment[bs]=Postavke sistemskih servisa
+Comment[ca]=Configura els serveis del sistema
+Comment[cs]=Nastavení systémových služeb
+Comment[csb]=Kònfigùracëjô systemòwëch ùsłëżnotów
+Comment[cy]=Ffurfweddu Gwasanaethau Cysawd
+Comment[da]=Opsætning af systemtjenester
+Comment[de]=Einrichtung von Systemdiensten
+Comment[el]=Ρύθμιση των υπηρεσιών συστήματος
+Comment[eo]=Agordo de la sistemservoj
+Comment[es]=Configuración de los servicios del sistema
+Comment[et]=Süsteemsete teenuste seadistamine
+Comment[eu]=Sistemaren zerbitzuen konfigurazioa
+Comment[fa]=پیکربندی خدمات سیستم
+Comment[fi]=Järjestelmän palveluiden asetus
+Comment[fr]=Configuration des services du système
+Comment[fy]=TDE-systeemtsjinsten ynstelle
+Comment[ga]=Cumraíocht seirbhísí an chórais
+Comment[gl]=Configuración dos Servizos do Sistema
+Comment[he]=שינוי הגדרות שירותי המערכת
+Comment[hi]=तंत्र सेवा कॉन्फ़िगरेशन
+Comment[hr]=Konfiguracija usluga sustava
+Comment[hu]=A rendszerszolgáltatások beállításai
+Comment[is]=Stillingar kerfisþjónusta
+Comment[it]=Configurazione dei servizi di sistema
+Comment[ja]=システムサービスの設定
+Comment[ka]=სისტემური სერვისების კონფიგურაცია
+Comment[kk]=Жүйелік қызметтерді баптау
+Comment[km]=ការ​កំណត់​រចនាសម្ព័ន្ធ​សេវា​ប្រព័ន្ធ
+Comment[ko]=TDE 서비스 설정
+Comment[lo]=ປັບແຕ່ງອອດລະບົບ
+Comment[lt]=Sistemos tarnybų konfigūravimas
+Comment[lv]=Sistēmas Servisu Konfigurācija
+Comment[mk]=Конфигурација на системските сервиси
+Comment[mn]=Системийн үйлчилгээний тохируулга
+Comment[ms]=Konfigurasi Servis Sistem
+Comment[mt]=Konfigurazzjoni tas-servizzi tas-sistema
+Comment[nb]=Systemtjenesteinnstillinger
+Comment[nds]=Systeemdeensten instellen
+Comment[ne]=प्रणाली सेवा कन्फिगरेसन
+Comment[nl]=TDE-systeemdiensten instellen
+Comment[nn]=Oppsett av systemtenester
+Comment[nso]=Peakanyo ya Ditirelo tsa System
+Comment[pa]=ਸਿਸਟਮ ਸੇਵਾਵਾਂ ਸੰਰਚਨਾ
+Comment[pl]=Konfiguracja usług systemowych
+Comment[pt]=Configuração dos Serviços do Sistema
+Comment[pt_BR]=Configuração de Serviços do Sistema
+Comment[ro]=Configurează serviciile de sistem
+Comment[ru]=Настройка системных служб
+Comment[rw]=Iboneza rya Serivise Sisitemu
+Comment[se]=Vuogádatbálvalusaid heiveheapmi
+Comment[sk]=Nastavenie systémových služieb
+Comment[sl]=Nastavitve sistemskih storitev
+Comment[sr]=Подешавање системских сервиса
+Comment[sr@Latn]=Podešavanje sistemskih servisa
+Comment[sv]=Anpassa systemets tjänster
+Comment[ta]=சாதன சேவை அமைப்பு
+Comment[tg]=Танзими хидматҳои система
+Comment[th]=ปรับแต่งบริการของระบบ
+Comment[tr]=Sistem Servisleri Yapılandırması
+Comment[tt]=Sistem Xezmätlären Caylawçı
+Comment[uk]=Конфігурація служб систем
+Comment[uz]=Tizimning xizmatlarini moslash
+Comment[uz@cyrillic]=Тизимнинг хизматларини мослаш
+Comment[ven]=Bzudzanyo ya tshumelo ya sisitemu
+Comment[vi]=Cấu hình Dịch vụ Hệ thống
+Comment[wa]=Apontiaedje des siervices do sistinme
+Comment[xh]=Uqwalaselo Lweenkonzo Zendlela zokuseneza
+Comment[zh_CN]=系统服务配置
+Comment[zh_TW]=系統服務組態
+Comment[zu]=Inhlanganisela Yemisebenzi Yesistimu
+Keywords=KDED;Daemon;Services;
+Keywords[ar]=KDED;Daemon;Services;مراقب;خدمات;
+Keywords[az]=KDED;Demon;Xidmətlər;
+Keywords[be]=Дэман;Сервісы;KDED;Daemon;Services;
+Keywords[bg]=услуга; обслужване; сървър; демон; KDED; Daemon; Services;
+Keywords[br]=KDED;Diaoul;Servijoù;
+Keywords[ca]=KDED;Dimoni;Serveis;
+Keywords[cs]=KDED;démon;služby;
+Keywords[csb]=KDED;demóna;ùsłëżnotë;
+Keywords[cy]=KDED;Daemon;Gwasanaethau;
+Keywords[da]=KDED;Dæmon;Tjenester;
+Keywords[de]=KDED;Dämon;Dienst;Daemon;Services;Dienste;
+Keywords[el]=KDED;Δαίμονας;Υπηρεσίες;
+Keywords[eo]=KDED;demono;servoj;
+Keywords[es]=KDED;Demonio;servicios;
+Keywords[et]=KDED;deemon;teenused;
+Keywords[eu]=KDED;Daemon-a;Zerbitzuak;
+Keywords[fa]=KDED،شبح، خدمات;
+Keywords[fi]=KDED;Palvelin;Palvelut;
+Keywords[fr]=KDED;Daemon;Démon;Services;
+Keywords[fy]=KDED;Daemon;services;tsjinsten;systeemtsjinsten;systeem;
+Keywords[ga]=KDED;Deamhan;Seirbhísí;
+Keywords[gl]=KDED;Demo;Servizos;
+Keywords[he]=KDED;תהליך רקע;שירותים;Daemon;Services;
+Keywords[hi]=केडीईडी;डेमन;सेवाएँ;
+Keywords[hr]=KDED;Daemon;Services;Demon;Usluge;
+Keywords[hu]=KDED;démon;szolgáltatás;
+Keywords[is]=KDED;þjónn;Þjónustur;púki;þræll;
+Keywords[it]=KDED;demone;servizi;
+Keywords[ja]=KDED;デーモン;サービス;
+Keywords[km]=KDED;Daemon;សេវា;
+Keywords[lt]=KDED;Daemon;Services; demonas;tarnybos;
+Keywords[lv]=KDED;Dēmoni;Servisi;
+Keywords[mn]=КДЭХ;Хэвтүүл;Services;Үйлчилгээ;
+Keywords[ms]=KDED;Daemon;Servis;
+Keywords[mt]=KDED;Daemon;Services;servizzi;
+Keywords[nb]=KDED;nisse;tjenester;daemon;
+Keywords[nds]=KDED;Daemon;Services;Dämoon;Deenst;Deensten;
+Keywords[ne]=KDED; डेइमन; सेवा;
+Keywords[nl]=KDED;Daemon;services;diensten;systeemdiensten;systeem;
+Keywords[nn]=KDED;daemon;nisse;tenester;
+Keywords[nso]=KDED;Daemon;Ditirelo;
+Keywords[pa]=KDED;Daemon;Services;ਸੇਵਾਵਾਂ;
+Keywords[pl]=KDED;demon;usługi;
+Keywords[pt]=KDED;Servidor;Serviços;
+Keywords[pt_BR]=KDED;Servidor;Serviços;
+Keywords[ro]=KDED;demon;servicii;
+Keywords[ru]=KDED;Daemon;Services;службы;служба;
+Keywords[rw]=KDED; Dayimoni;Serivise;
+Keywords[se]=KDED;daemon;bálvalusat;
+Keywords[sk]=KDED;Daemon;služby;
+Keywords[sl]=KDED;demon;storitve;
+Keywords[sr]=KDED; Демон; Сервиси;
+Keywords[sr@Latn]=KDED; Demon; Servisi;
+Keywords[sv]=KDED;Demon;Tjänster;
+Keywords[ta]=KDED;டேமான்;சேவைகள்;
+Keywords[th]=KDED;เดมอน;บริการ;
+Keywords[tr]=KDED;program;servisler;
+Keywords[uk]=KDED;демон;служби;
+Keywords[uz]=KDED;xizmat;xizmatlar;
+Keywords[uz@cyrillic]=KDED;хизмат;хизматлар;
+Keywords[ven]=KDED;Daemon;Dzitshumelo;
+Keywords[vi]=KDED;Trình nền;Dịch vụ;
+Keywords[wa]=KDED;Daemon;Services;demon;siervices;
+Keywords[xh]=KDED;Daemon;Iinkonzo;
+Keywords[zh_CN]=KDED;Daemon;Services;守护程序;服务;
+Keywords[zh_TW]=KDED;Daemon;Services;伺服程式;服務;
+Keywords[zu]=KDED;Daemon;Imisebenzi;
diff --git a/kcontrol/kded/kcmkded.h b/kcontrol/kded/kcmkded.h
new file mode 100644
index 000000000..6dff072ea
--- /dev/null
+++ b/kcontrol/kded/kcmkded.h
@@ -0,0 +1,78 @@
+/* This file is part of the KDE project
+ Copyright (C) 2002 Daniel Molkentin <[email protected]>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program 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
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+ */
+#ifndef KCMKDED_H
+#define KCMKDED_H
+
+#include <tqlistview.h>
+
+#include <tdecmodule.h>
+
+class TDEListView;
+
+class TQStringList;
+class TQPushButton;
+
+class KDEDConfig : public TDECModule
+{
+Q_OBJECT
+public:
+ KDEDConfig(TQWidget* parent, const char* name= 0L, const TQStringList& foo = TQStringList());
+ ~KDEDConfig() {};
+
+ void load();
+ void load( bool useDefaults );
+ void save();
+ void defaults();
+
+protected slots:
+ void slotReload();
+ void slotStartService();
+ void slotStopService();
+ void slotServiceRunningToggled();
+ void slotEvalItem(TQListViewItem *item);
+ void slotItemChecked(TQCheckListItem *item);
+ void getServiceStatus();
+
+ bool autoloadEnabled(TDEConfig *config, const TQString &filename);
+ void setAutoloadEnabled(TDEConfig *config, const TQString &filename, bool b);
+
+private:
+ TDEListView *_lvLoD;
+ TDEListView *_lvStartup;
+ TQPushButton *_pbStart;
+ TQPushButton *_pbStop;
+
+ TQString RUNNING;
+ TQString NOT_RUNNING;
+};
+
+class CheckListItem : public TQObject, public TQCheckListItem
+{
+ Q_OBJECT
+public:
+ CheckListItem(TQListView* parent, const TQString &text);
+ ~CheckListItem() { }
+signals:
+ void changed(TQCheckListItem*);
+protected:
+ virtual void stateChange(bool);
+};
+
+#endif // KCMKDED_H
+