diff options
Diffstat (limited to 'kcontrol')
320 files changed, 1955 insertions, 108 deletions
diff --git a/kcontrol/background/pics/monitor.png b/kcontrol/background/pics/monitor.png Binary files differindex ecd86b9e4..6ef8f32b9 100644 --- a/kcontrol/background/pics/monitor.png +++ b/kcontrol/background/pics/monitor.png diff --git a/kcontrol/crypto/CMakeLists.txt b/kcontrol/crypto/CMakeLists.txt index 414e6d605..9a7f9161d 100644 --- a/kcontrol/crypto/CMakeLists.txt +++ b/kcontrol/crypto/CMakeLists.txt @@ -16,7 +16,15 @@ option( WITH_SSL "Enable support for SSL" ON ) if( WITH_SSL ) pkg_search_module( SSL openssl ) if( NOT SSL_FOUND ) - tde_message_fatal( "SSL support are requested, but openssl is not found on your system" ) + check_include_file( openssl/ssl.h HAVE_OPENSSL_H ) + check_library_exists( ssl SSL_library_init "" HAVE_LIBSSL ) + check_library_exists( crypto EVP_EncryptInit_ex "" HAVE_LIBCRYPTO ) + if( HAVE_OPENSSL_H AND HAVE_LIBSSL AND HAVE_LIBCRYPTO ) + set( SSL_FOUND 1 CACHE INTERNAL "" FORCE ) + endif( HAVE_OPENSSL_H AND HAVE_LIBSSL AND HAVE_LIBCRYPTO ) + endif( NOT SSL_FOUND ) + if( NOT SSL_FOUND ) + tde_message_fatal( "SSL support is requested, but openssl not found on your system" ) endif( NOT SSL_FOUND ) set( HAVE_SSL 1 CACHE INTERNAL "" FORCE ) endif( WITH_SSL ) @@ -44,6 +52,6 @@ install( FILES crypto.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) tde_add_kpart( kcm_crypto AUTOMOC SOURCES crypto.cpp certexport.cpp kdatetimedlg.cpp - LINK tdeio-shared ${SSL_LIBRARIES} + LINK tdeio-shared DESTINATION ${PLUGIN_INSTALL_DIR} ) diff --git a/kcontrol/crypto/crypto.cpp b/kcontrol/crypto/crypto.cpp index 329c04a31..55536b21e 100644 --- a/kcontrol/crypto/crypto.cpp +++ b/kcontrol/crypto/crypto.cpp @@ -878,13 +878,17 @@ void KCryptoConfig::load( bool useDefaults ) config->setGroup("SSLv2"); mUseSSLv2->setChecked(config->readBoolEntry("Enabled", true)); -#ifdef OPENSSL_NO_SSL2 +#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(OPENSSL_NO_SSL2) mUseSSLv2->setChecked(false); mUseSSLv2->setEnabled(false); #endif config->setGroup("SSLv3"); mUseSSLv3->setChecked(config->readBoolEntry("Enabled", true)); +#if defined(OPENSSL_NO_SSL3) + mUseSSLv3->setChecked(false); + mUseSSLv3->setEnabled(false); +#endif config->setGroup("Warnings"); mWarnOnEnter->setChecked(config->readBoolEntry("OnEnter", false)); @@ -933,12 +937,16 @@ void KCryptoConfig::load( bool useDefaults ) item = static_cast<CipherItem *>(item->nextSibling()); } -#ifdef OPENSSL_NO_SSL2 +#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(OPENSSL_NO_SSL2) SSLv2Box->setEnabled( false ); #else SSLv2Box->setEnabled( mUseSSLv2->isChecked() ); #endif +#if defined(OPENSSL_NO_SSL3) + SSLv3Box->setEnabled( false ); +#else SSLv3Box->setEnabled( mUseSSLv3->isChecked() ); +#endif TQStringList groups = policies->groupList(); @@ -1038,7 +1046,8 @@ void KCryptoConfig::load( bool useDefaults ) void KCryptoConfig::save() { #ifdef HAVE_SSL - if (!mUseSSLv2->isChecked() && + if (!mUseTLS->isChecked() && + !mUseSSLv2->isChecked() && !mUseSSLv3->isChecked()) KMessageBox::information(this, i18n("If you do not select at least one" " SSL algorithm, either SSL will not" @@ -1050,14 +1059,18 @@ void KCryptoConfig::save() config->writeEntry("Enabled", mUseTLS->isChecked()); config->setGroup("SSLv2"); -#ifdef OPENSSL_NO_SSL2 +#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(OPENSSL_NO_SSL2) config->writeEntry("Enabled", false); #else config->writeEntry("Enabled", mUseSSLv2->isChecked()); #endif config->setGroup("SSLv3"); +#if defined(OPENSSL_NO_SSL3) + config->writeEntry("Enabled", false); +#else config->writeEntry("Enabled", mUseSSLv3->isChecked()); +#endif config->setGroup("Warnings"); config->writeEntry("OnEnter", mWarnOnEnter->isChecked()); @@ -1293,12 +1306,16 @@ void KCryptoConfig::cwCompatible() { } mUseTLS->setChecked(true); -#ifdef OPENSSL_NO_SSL2 +#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(OPENSSL_NO_SSL2) mUseSSLv2->setChecked(false); #else mUseSSLv2->setChecked(true); #endif +#if defined(OPENSSL_NO_SSL3) + mUseSSLv3->setChecked(false); +#else mUseSSLv3->setChecked(true); +#endif configChanged(); #endif } @@ -1354,12 +1371,16 @@ void KCryptoConfig::cwAll() { } mUseTLS->setChecked(true); -#ifdef OPENSSL_NO_SSL2 +#if OPENSSL_VERSION_NUMBER >= 0x10100000L || defined(OPENSSL_NO_SSL2) mUseSSLv2->setChecked(false); #else mUseSSLv2->setChecked(true); #endif +#if defined(OPENSSL_NO_SSL3) + mUseSSLv3->setChecked(false); +#else mUseSSLv3->setChecked(true); +#endif configChanged(); #endif } @@ -1875,9 +1896,6 @@ void KCryptoConfig::slotCAImport() { return; #ifdef HAVE_SSL -#define sk_free KOSSL::self()->sk_free -#define sk_num KOSSL::self()->sk_num -#define sk_value KOSSL::self()->sk_value // First try to load using the OpenSSL method X509_STORE *certStore = KOSSL::self()->X509_STORE_new(); @@ -1887,13 +1905,14 @@ void KCryptoConfig::slotCAImport() { KOSSL::self()->X509_LOOKUP_load_file(certLookup, certFile.local8Bit(), X509_FILETYPE_PEM)) { - for (int i = 0; i < sk_X509_OBJECT_num(certStore->objs); i++) { - X509_OBJECT* x5o = sk_X509_OBJECT_value(certStore->objs, i); + STACK_OF(X509_OBJECT) *certStore_objs = KOSSL::self()->X509_STORE_get0_objects(certStore); + for (int i = 0; i < KOSSL::self()->OPENSSL_sk_num(certStore_objs); i++) { + X509_OBJECT* x5o = reinterpret_cast<X509_OBJECT*>(KOSSL::self()->OPENSSL_sk_value(certStore_objs, i)); if (!x5o) continue; - if (x5o->type != X509_LU_X509) continue; + if (KOSSL::self()->X509_OBJECT_get_type(x5o) != X509_LU_X509) continue; - X509 *x5 = x5o->data.x509; + X509 *x5 = KOSSL::self()->X509_OBJECT_get0_X509(x5o); if (!x5) continue; // Easier to use in this form @@ -1957,7 +1976,7 @@ void KCryptoConfig::slotCAImport() { qf.open(IO_ReadOnly); qf.readLine(certtext, qf.size()); - if (certStore) { KOSSL::self()->X509_STORE_free(certStore); + if (certStore) { KOSSL::self()->OPENSSL_sk_free(certStore); certStore = NULL; } if (certtext.contains("-----BEGIN CERTIFICATE-----")) { @@ -2029,12 +2048,9 @@ void KCryptoConfig::slotCAImport() { } - if (certStore) KOSSL::self()->X509_STORE_free(certStore); + if (certStore) KOSSL::self()->OPENSSL_sk_free(certStore); configChanged(); -#undef sk_free -#undef sk_num -#undef sk_value #endif offerImportToKMail( certFile ); @@ -2356,81 +2372,76 @@ void KCryptoConfig::slotGeneratePersonal() { #ifdef HAVE_SSL -#if OPENSSL_VERSION_NUMBER >= 0x10000000L -#define SSL_CONST const -#else -#define SSL_CONST -#endif - // This gets all the available ciphers from OpenSSL bool KCryptoConfig::loadCiphers() { -unsigned int i; +unsigned int i, cnt; SSL_CTX *ctx; SSL *ssl; -SSL_CONST SSL_METHOD *meth; +SSL_METHOD *meth; +STACK_OF(SSL_CIPHER)* sk; SSLv2Box->clear(); SSLv3Box->clear(); + CipherItem *item; -#ifndef OPENSSL_NO_SSL2 - meth = SSLv2_client_method(); - SSLeay_add_ssl_algorithms(); - ctx = SSL_CTX_new(meth); +#if OPENSSL_VERSION_NUMBER < 0x10100000L && !defined(OPENSSL_NO_SSL2) + meth = KOSSL::self()->SSLv2_client_method(); + ctx = KOSSL::self()->SSL_CTX_new(meth); if (ctx == NULL) return false; - ssl = SSL_new(ctx); + ssl = KOSSL::self()->SSL_new(ctx); if (!ssl) return false; + sk = KOSSL::self()->SSL_get_ciphers(ssl); + cnt = KOSSL::self()->OPENSSL_sk_num(sk); - CipherItem *item; - for (i=0; ; i++) { + for (i = 0; i < cnt; i++) { int j, k; - SSL_CONST SSL_CIPHER *sc; - sc = (meth->get_cipher)(i); + SSL_CIPHER *sc = reinterpret_cast<SSL_CIPHER*>(KOSSL::self()->OPENSSL_sk_value(sk, i)); if (!sc) break; // Leak of sc*? - TQString scn(sc->name); + TQString scn(KOSSL::self()->SSL_CIPHER_get_name(sc)); if (scn.contains("ADH-") || scn.contains("NULL-") || scn.contains("DES-CBC3-SHA") || scn.contains("FZA-")) { continue; } - k = SSL_CIPHER_get_bits(sc, &j); + k = KOSSL::self()->SSL_CIPHER_get_bits(sc, &j); - item = new CipherItem( SSLv2Box, sc->name, k, j, this ); + item = new CipherItem( SSLv2Box, scn, k, j, this ); } - if (ctx) SSL_CTX_free(ctx); - if (ssl) SSL_free(ssl); -#else - CipherItem *item; + if (ctx) KOSSL::self()->SSL_CTX_free(ctx); + if (ssl) KOSSL::self()->SSL_free(ssl); #endif +# ifndef OPENSSL_NO_SSL3_METHOD // We repeat for SSLv3 - meth = SSLv3_client_method(); - SSLeay_add_ssl_algorithms(); - ctx = SSL_CTX_new(meth); + meth = KOSSL::self()->SSLv3_client_method(); + ctx = KOSSL::self()->SSL_CTX_new(meth); if (ctx == NULL) return false; - ssl = SSL_new(ctx); + ssl = KOSSL::self()->SSL_new(ctx); if (!ssl) return false; + sk = KOSSL::self()->SSL_get_ciphers(ssl); + cnt = KOSSL::self()->OPENSSL_sk_num(sk); - for (i=0; ; i++) { + for (i = 0; i < cnt; i++) { int j, k; - SSL_CONST SSL_CIPHER *sc; - sc = (meth->get_cipher)(i); + SSL_CIPHER *sc = reinterpret_cast<SSL_CIPHER*>(KOSSL::self()->OPENSSL_sk_value(sk, i)); if (!sc) break; // Leak of sc*? - TQString scn(sc->name); + TQString scn(KOSSL::self()->SSL_CIPHER_get_name(sc)); if (scn.contains("ADH-") || scn.contains("NULL-") || scn.contains("DES-CBC3-SHA") || scn.contains("FZA-")) { continue; } - k = SSL_CIPHER_get_bits(sc, &j); + k = KOSSL::self()->SSL_CIPHER_get_bits(sc, &j); - item = new CipherItem( SSLv3Box, sc->name, k, j, this ); + item = new CipherItem( SSLv3Box, scn, k, j, this ); } - if (ctx) SSL_CTX_free(ctx); - if (ssl) SSL_free(ssl); + if (ctx) KOSSL::self()->SSL_CTX_free(ctx); + if (ssl) KOSSL::self()->SSL_free(ssl); +#endif return true; } diff --git a/kcontrol/displayconfig/displayconfig.h b/kcontrol/displayconfig/displayconfig.h index dce061003..78b033f14 100644 --- a/kcontrol/displayconfig/displayconfig.h +++ b/kcontrol/displayconfig/displayconfig.h @@ -34,13 +34,14 @@ #include <dcopobject.h> -#include <libtderandr/libtderandr.h> #ifdef __TDE_HAVE_TDEHWLIB #include <tdehardwaredevices.h> #else #define TDEGenericDevice void #endif +#include <libtderandr/libtderandr.h> + #include "monitorworkspace.h" #include "displayconfigbase.h" diff --git a/kcontrol/displayconfig/pics/gamma1.4.png b/kcontrol/displayconfig/pics/gamma1.4.png Binary files differindex f193a4c09..510aeb282 100644 --- a/kcontrol/displayconfig/pics/gamma1.4.png +++ b/kcontrol/displayconfig/pics/gamma1.4.png diff --git a/kcontrol/displayconfig/pics/gamma1.6.png b/kcontrol/displayconfig/pics/gamma1.6.png Binary files differindex 0110dad26..fefb9ac35 100644 --- a/kcontrol/displayconfig/pics/gamma1.6.png +++ b/kcontrol/displayconfig/pics/gamma1.6.png diff --git a/kcontrol/displayconfig/pics/gamma1.8.png b/kcontrol/displayconfig/pics/gamma1.8.png Binary files differindex 71fc121aa..9195c4cbc 100644 --- a/kcontrol/displayconfig/pics/gamma1.8.png +++ b/kcontrol/displayconfig/pics/gamma1.8.png diff --git a/kcontrol/displayconfig/pics/gamma2.0.png b/kcontrol/displayconfig/pics/gamma2.0.png Binary files differindex 6a3f72a8f..7d8fa28db 100644 --- a/kcontrol/displayconfig/pics/gamma2.0.png +++ b/kcontrol/displayconfig/pics/gamma2.0.png diff --git a/kcontrol/displayconfig/pics/gamma2.2.png b/kcontrol/displayconfig/pics/gamma2.2.png Binary files differindex 573a57e70..053704d4f 100644 --- a/kcontrol/displayconfig/pics/gamma2.2.png +++ b/kcontrol/displayconfig/pics/gamma2.2.png diff --git a/kcontrol/displayconfig/pics/gamma2.4.png b/kcontrol/displayconfig/pics/gamma2.4.png Binary files differindex 88bc32395..dc1f8010a 100644 --- a/kcontrol/displayconfig/pics/gamma2.4.png +++ b/kcontrol/displayconfig/pics/gamma2.4.png diff --git a/kcontrol/energy/pics/energybig.png b/kcontrol/energy/pics/energybig.png Binary files differindex 1a79fe748..0bf01274d 100644 --- a/kcontrol/energy/pics/energybig.png +++ b/kcontrol/energy/pics/energybig.png diff --git a/kcontrol/energy/pics/lo-energy.png b/kcontrol/energy/pics/lo-energy.png Binary files differindex 9706644b1..850b4ab00 100644 --- a/kcontrol/energy/pics/lo-energy.png +++ b/kcontrol/energy/pics/lo-energy.png diff --git a/kcontrol/hwmanager/CMakeLists.txt b/kcontrol/hwmanager/CMakeLists.txt index 584eba7bc..dfe327740 100644 --- a/kcontrol/hwmanager/CMakeLists.txt +++ b/kcontrol/hwmanager/CMakeLists.txt @@ -1,6 +1,6 @@ ################################################# # -# (C) 2012 Timothy Pearson +# (C) 2012 - 2015 Timothy Pearson # kb9vqf (AT) pearsoncomputing.net # # Improvements and feedback are welcome @@ -25,6 +25,12 @@ link_directories( ##### other data ################################ install( FILES hwmanager.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) +install( FILES hwdevicetray.desktop + DESTINATION ${XDG_APPS_INSTALL_DIR} + RENAME tdehwdevicetray.desktop ) +install( FILES hwdevicetray-autostart.desktop + DESTINATION ${AUTOSTART_INSTALL_DIR} + RENAME tdehwdevicetray-autostart.desktop ) ##### kcm_iccconfig (module) #################### @@ -33,7 +39,18 @@ set_source_files_properties( hwmanager.cpp PROPERTIES COMPILE_FLAGS -DKDE_CONFDI tde_add_kpart( kcm_hwmanager AUTOMOC SOURCES - hwmanager.cpp deviceiconview.cpp devicepropsdlg.cpp devicepropsdlgbase.ui hwmanagerbase.ui hwmanager.skel + hwmanager.cpp deviceiconview.cpp devicepropsdlg.cpp devicepropsdlgbase.ui hwmanagerbase.ui + cryptpassworddlg.cpp cryptpassworddlgbase.ui hwmanager.skel LINK tdeio-shared DESTINATION ${PLUGIN_INSTALL_DIR} ) + +##### tdehwdevicetray (executable) ############## + +tde_add_executable( tdehwdevicetray AUTOMOC + SOURCES + hwdevicetray_main.cpp hwdevicetray.cpp hwdevicetray_app.cpp + hwdevicetray_configdialog.cpp + LINK tdeio-shared tdeutils-shared tdeui-shared + DESTINATION ${BIN_INSTALL_DIR} +)
\ No newline at end of file diff --git a/kcontrol/hwmanager/cryptpassworddlg.cpp b/kcontrol/hwmanager/cryptpassworddlg.cpp new file mode 100644 index 000000000..1d66d89c1 --- /dev/null +++ b/kcontrol/hwmanager/cryptpassworddlg.cpp @@ -0,0 +1,140 @@ +/* This file is part of TDE + Copyright (C) 2015 Timothy Pearson <[email protected]> + + 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 <config.h> + +#include <tqradiobutton.h> +#include <tqpushbutton.h> +#include <tqvalidator.h> +#include <tqlineedit.h> +#include <tqiconset.h> +#include <tqlabel.h> +#include <tqtabwidget.h> +#include <tqgroupbox.h> +#include <tqlayout.h> +#include <tqslider.h> +#include <tqpainter.h> +#include <tqstyle.h> +#include <tqfile.h> +#include <tqinternal_p.h> +#undef Unsorted // Required for --enable-final (tqdir.h) +#include <tqfiledialog.h> + +#include <kpassdlg.h> +#include <kbuttonbox.h> +#include <kcombobox.h> +#include <tdelocale.h> +#include <kiconloader.h> +#include <kurlrequester.h> +#include <tdeapplication.h> +#include <klineedit.h> +#include <kpushbutton.h> +#include <kstdguiitem.h> +#include <tdemessagebox.h> +#include <ksslcertificate.h> + +#include "cryptpassworddlg.h" + +CryptPasswordDialog::CryptPasswordDialog(TQWidget *parent, TQString passwordPrompt, TQString caption, bool allow_card, KSSLCertificate* card_cert, bool* use_card) + : KDialogBase(Plain, ((caption == "")?i18n("Enter Password"):caption), Ok|Cancel, Ok, parent, 0L, true, true), + m_useCard(use_card) +{ + m_base = new CryptPasswordDialogBase(plainPage()); + + TQGridLayout *mainGrid = new TQGridLayout(plainPage(), 1, 1, 0, spacingHint()); + mainGrid->setRowStretch(1, 1); + mainGrid->addWidget(m_base, 0, 0); + + m_base->passwordPrompt->setText(passwordPrompt); + m_base->passwordIcon->setPixmap(SmallIcon("password.png")); + + if (!allow_card) { + m_base->cardKeyButton->hide(); + m_base->cardKeyInfo->hide(); + } + else { + if (card_cert) { + m_base->cardKeyInfo->setText(card_cert->getSubject()); + } + } + + connect(m_base->textPasswordButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts())); + connect(m_base->filePasswordButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts())); + connect(m_base->cardKeyButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(processLockouts())); + connect(m_base->textPasswordEntry, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(processLockouts())); + connect(m_base->filePasswordURL, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(processLockouts())); + + m_base->textPasswordEntry->setFocus(); + + processLockouts(); +} + +CryptPasswordDialog::~CryptPasswordDialog() +{ +} + +TQByteArray CryptPasswordDialog::password() { + if (m_base->textPasswordButton->isOn() == true) { + m_password.duplicate(m_base->textPasswordEntry->password(), strlen(m_base->textPasswordEntry->password())); + if (m_useCard) *m_useCard = false; + } + else if (m_base->filePasswordButton->isOn() == true) { + m_password = TQFile(m_base->filePasswordURL->url()).readAll(); + if (m_useCard) *m_useCard = false; + } + else { + if (m_useCard) *m_useCard = true; + } + + return m_password; +} + +void CryptPasswordDialog::processLockouts() { + if (m_base->textPasswordButton->isOn() == true) { + m_base->textPasswordEntry->setEnabled(true); + m_base->filePasswordURL->setEnabled(false); + m_base->textPasswordEntry->setFocus(); + if (strlen(m_base->textPasswordEntry->password()) > 0) { + enableButtonOK(true); + } + else { + enableButtonOK(false); + } + } + else if (m_base->filePasswordButton->isOn() == true) { + m_base->textPasswordEntry->setEnabled(false); + m_base->filePasswordURL->setEnabled(true); + m_base->filePasswordURL->setFocus(); + if (TQFile(m_base->filePasswordURL->url()).exists()) { + enableButtonOK(true); + } + else { + enableButtonOK(false); + } + } + else { + m_base->textPasswordEntry->setEnabled(false); + m_base->filePasswordURL->setEnabled(false); + enableButtonOK(true); + } +} + +void CryptPasswordDialog::virtual_hook( int id, void* data ) +{ KDialogBase::virtual_hook( id, data ); } + +#include "cryptpassworddlg.moc" diff --git a/kcontrol/hwmanager/cryptpassworddlg.h b/kcontrol/hwmanager/cryptpassworddlg.h new file mode 100644 index 000000000..d595c4a73 --- /dev/null +++ b/kcontrol/hwmanager/cryptpassworddlg.h @@ -0,0 +1,64 @@ +/* This file is part of TDE + Copyright (C) 2015 Timothy Pearson <[email protected]> + + 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 __cryptpassworddlg_h__ +#define __cryptpassworddlg_h__ + +#include <kdialogbase.h> + +#include "cryptpassworddlgbase.h" + +class KSSLCertificate; + +/** + * + * Dialog to enter LUKS passwords or password files + * + * @version 0.1 + * @author Timothy Pearson <[email protected]> + */ + +class TDEUI_EXPORT CryptPasswordDialog : public KDialogBase +{ + Q_OBJECT +public: + /** + * Create a dialog that allows a user to enter LUKS passwords or password files + * @param parent Parent widget + */ + CryptPasswordDialog(TQWidget *parent, TQString passwordPrompt, TQString caption=TQString::null, bool allow_card=false, KSSLCertificate* card_cert=NULL, bool* use_card=NULL); + virtual ~CryptPasswordDialog(); + + TQByteArray password(); + +protected: + virtual void virtual_hook( int id, void* data ); + +private slots: + void processLockouts(); + +private: + CryptPasswordDialogBase* m_base; + TQByteArray m_password; + bool* m_useCard; + + class CryptPasswordDialogPrivate; + CryptPasswordDialogPrivate* d; +}; + +#endif diff --git a/kcontrol/hwmanager/cryptpassworddlgbase.ui b/kcontrol/hwmanager/cryptpassworddlgbase.ui new file mode 100644 index 000000000..549a591b0 --- /dev/null +++ b/kcontrol/hwmanager/cryptpassworddlgbase.ui @@ -0,0 +1,148 @@ +<!DOCTYPE UI><UI version="3.0" stdsetdef="1"> + <class>CryptPasswordDialogBase</class> + <widget class="TQWidget"> + <property name="name"> + <cstring>CryptPasswordDialogBase</cstring> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="TQLabel" row="0" column="0" colspan="1"> + <property name="name"> + <cstring>passwordIcon</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>4</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="TQLabel" row="0" column="1" colspan="1"> + <property name="name"> + <cstring>passwordPrompt</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + <widget class="TQGroupBox" row="1" column="0" colspan="2"> + <property name="name"> + <cstring>passwordProps</cstring> + </property> + <property name="title"> + <string>Password Source</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="TQButtonGroup" row="0" column="0" colspan="1"> + <property name="name"> + <cstring>enabledBox</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape"> + <enum>NoFrame</enum> + </property> + <property name="frameShadow"> + <enum>Plain</enum> + </property> + <property name="title"> + <string></string> + </property> + <property name="exclusive"> + <bool>true</bool> + </property> + <property name="radioButtonExclusive"> + <bool>true</bool> + </property> + <property name="margin"> + <number>0</number> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <widget class="TQRadioButton" row="0" column="0" colspan="1"> + <property name="name"> + <cstring>textPasswordButton</cstring> + </property> + <property name="text"> + <string>Text:</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + <widget class="KPasswordEdit" row="0" column="1" colspan="1"> + <property name="name"> + <cstring>textPasswordEntry</cstring> + </property> + </widget> + <widget class="TQRadioButton" row="1" column="0" colspan="1"> + <property name="name"> + <cstring>filePasswordButton</cstring> + </property> + <property name="text"> + <string>File:</string> + </property> + </widget> + <widget class="KURLRequester" row="1" column="1" colspan="1"> + <property name="name"> + <cstring>filePasswordURL</cstring> + </property> + <property name="filter"> + <cstring>*</cstring> + </property> + <property name="mode"> + <number>17</number> + </property> + </widget> + <widget class="TQRadioButton" row="2" column="0" colspan="1"> + <property name="name"> + <cstring>cardKeyButton</cstring> + </property> + <property name="text"> + <string>Cryptographic Card</string> + </property> + </widget> + <widget class="TQLabel" row="2" column="1" colspan="1"> + <property name="name"> + <cstring>cardKeyInfo</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </grid> + </widget> + </grid> + </widget> + </grid> + </widget> + <includes> + <include location="local" impldecl="in implementation">CryptPasswordDialogBase.ui.h</include> + </includes> + <Q_SLOTS> + <slot>enableSupport_toggled(bool)</slot> + </Q_SLOTS> + <includes> + <include location="local" impldecl="in implementation">kdialog.h</include> + </includes> + <layoutdefaults spacing="3" margin="6"/> + <layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/> +</UI> diff --git a/kcontrol/hwmanager/devicepropsdlg.cpp b/kcontrol/hwmanager/devicepropsdlg.cpp index 12de8cea9..885dc7a7a 100644 --- a/kcontrol/hwmanager/devicepropsdlg.cpp +++ b/kcontrol/hwmanager/devicepropsdlg.cpp @@ -32,13 +32,19 @@ #undef Unsorted // Required for --enable-final (tqdir.h) #include <tqfiledialog.h> +#include <kpassdlg.h> +#include <kactivelabel.h> #include <kbuttonbox.h> #include <kcombobox.h> #include <tdelocale.h> #include <tdeapplication.h> #include <klineedit.h> +#include <kpushbutton.h> #include <kstdguiitem.h> #include <tdemessagebox.h> +#include <ksslcertificate.h> + +#include "cryptpassworddlg.h" #include "devicepropsdlg.h" @@ -255,6 +261,7 @@ DevicePropertiesDialog::DevicePropertiesDialog(TDEGenericDevice* device, TQWidge // Remove all non-applicable tabs if (m_device->type() != TDEGenericDeviceType::Disk) { base->tabBarWidget->removePage(base->tabDisk); + base->tabBarWidget->removePage(base->tabDiskCrypt); } if (m_device->type() != TDEGenericDeviceType::CPU) { base->tabBarWidget->removePage(base->tabCPU); @@ -283,13 +290,29 @@ DevicePropertiesDialog::DevicePropertiesDialog(TDEGenericDevice* device, TQWidge if (m_device->type() != TDEGenericDeviceType::Event) { base->tabBarWidget->removePage(base->tabEvent); } + if (m_device->type() != TDEGenericDeviceType::CryptographicCard) { + base->tabBarWidget->removePage(base->tabCryptographicCard); + } if (m_device->type() == TDEGenericDeviceType::CPU) { connect(base->comboCPUGovernor, TQT_SIGNAL(activated(const TQString &)), this, TQT_SLOT(setCPUGovernor(const TQString &))); } if (m_device->type() == TDEGenericDeviceType::Disk) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(m_device); connect(base->buttonDiskMount, TQT_SIGNAL(clicked()), this, TQT_SLOT(mountDisk())); connect(base->buttonDiskUnmount, TQT_SIGNAL(clicked()), this, TQT_SLOT(unmountDisk())); + if (sdevice->isDiskOfType(TDEDiskDeviceType::LUKS)) { + connect(base->cryptLUKSAddKey, TQT_SIGNAL(clicked()), this, TQT_SLOT(cryptLUKSAddKey())); + connect(base->cryptLUKSDelKey, TQT_SIGNAL(clicked()), this, TQT_SLOT(cryptLUKSDelKey())); + connect(base->cryptLUKSKeySlotList, TQT_SIGNAL(selectionChanged()), this, TQT_SLOT(processLockouts())); + base->cryptLUKSKeySlotList->setAllColumnsShowFocus(true); + base->cryptLUKSKeySlotList->setFullWidth(true); + cryptLUKSPopulateList(); + processLockouts(); + } + else { + base->tabBarWidget->removePage(base->tabDiskCrypt); + } } if ((m_device->type() == TDEGenericDeviceType::OtherSensor) || (m_device->type() == TDEGenericDeviceType::ThermalSensor)) { @@ -340,17 +363,21 @@ TQString assembleSwitchList(TDESwitchType::TDESwitchType switches) { return (TDEEventDevice::friendlySwitchList(switches).join("<br>")); } +static TQString formatDisplayString(TQString input) { + return TQStyleSheet::escape(input); +} + void DevicePropertiesDialog::populateDeviceInformation() { if (m_device) { base->labelDeviceType->setText(m_device->friendlyDeviceType()); base->iconDeviceType->setPixmap(m_device->icon(TDEIcon::SizeSmall)); - base->labelDeviceName->setText(m_device->friendlyName()); - base->labelDeviceNode->setText((m_device->deviceNode().isNull())?i18n("<none>"):m_device->deviceNode()); - base->labelSystemPath->setText(m_device->systemPath()); - base->labelSubsytemType->setText(m_device->subsystem()); - base->labelDeviceDriver->setText((m_device->deviceDriver().isNull())?i18n("<none>"):m_device->deviceDriver()); - base->labelDeviceClass->setText((m_device->PCIClass().isNull())?i18n("<n/a>"):m_device->PCIClass()); - base->labelModalias->setText((m_device->moduleAlias().isNull())?i18n("<none>"):m_device->moduleAlias()); + base->labelDeviceName->setText(formatDisplayString(m_device->friendlyName())); + base->labelDeviceNode->setText(formatDisplayString((m_device->deviceNode().isNull())?i18n("<none>"):m_device->deviceNode())); + base->labelSystemPath->setText(formatDisplayString(m_device->systemPath())); + base->labelSubsytemType->setText(formatDisplayString(m_device->subsystem())); + base->labelDeviceDriver->setText(formatDisplayString((m_device->deviceDriver().isNull())?i18n("<none>"):m_device->deviceDriver())); + base->labelDeviceClass->setText(formatDisplayString((m_device->PCIClass().isNull())?i18n("<n/a>"):m_device->PCIClass())); + base->labelModalias->setText(formatDisplayString((m_device->moduleAlias().isNull())?i18n("<none>"):m_device->moduleAlias())); // These might be redundant #if 0 @@ -362,10 +389,10 @@ void DevicePropertiesDialog::populateDeviceInformation() { base->labelVendorModel->hide(); base->stocklabelVendorModel->hide(); #endif - base->labelSerialNumber->setText((m_device->serialNumber().isNull())?i18n("<unknown>"):m_device->serialNumber()); + base->labelSerialNumber->setText(formatDisplayString((m_device->serialNumber().isNull())?i18n("<unknown>"):m_device->serialNumber())); if (m_device->subsystem() == "pci") { - base->labelBusID->setText(m_device->busID()); + base->labelBusID->setText(formatDisplayString(m_device->busID())); base->labelBusID->show(); base->stocklabelBusID->show(); } @@ -379,15 +406,15 @@ void DevicePropertiesDialog::populateDeviceInformation() { TQString mountPoint = sdevice->mountPath(); if (mountPoint == "") mountPoint = i18n("<none>"); - base->labelDiskMountpoint->setText(mountPoint); + base->labelDiskMountpoint->setText(formatDisplayString(mountPoint)); TQString fsName = sdevice->fileSystemName(); if (fsName == "") fsName = i18n("<unknown>"); - base->labelDiskFileSystemType->setText(fsName); + base->labelDiskFileSystemType->setText(formatDisplayString(fsName)); TQString volUUID = sdevice->diskUUID(); if (volUUID == "") volUUID = i18n("<none>"); - base->labelDiskUUID->setText(volUUID); + base->labelDiskUUID->setText(formatDisplayString(volUUID)); // Show status TQString status_text = "<qt>"; @@ -663,19 +690,22 @@ void DevicePropertiesDialog::populateDeviceInformation() { if ((*it) == TDESystemPowerState::Active) { powerStatesString += i18n("Active<br>"); } - if ((*it) == TDESystemPowerState::Standby) { + else if ((*it) == TDESystemPowerState::Standby) { powerStatesString += i18n("Standby<br>"); } - if ((*it) == TDESystemPowerState::Freeze) { + else if ((*it) == TDESystemPowerState::Freeze) { powerStatesString += i18n("Freeze<br>"); } - if ((*it) == TDESystemPowerState::Suspend) { + else if ((*it) == TDESystemPowerState::Suspend) { powerStatesString += i18n("Suspend<br>"); } - if ((*it) == TDESystemPowerState::Hibernate) { + else if ((*it) == TDESystemPowerState::Hibernate) { powerStatesString += i18n("Hibernate<br>"); } - if ((*it) == TDESystemPowerState::PowerOff) { + else if ((*it) == TDESystemPowerState::HybridSuspend) { + powerStatesString += i18n("Hybrid Suspend<br>"); + } + else if ((*it) == TDESystemPowerState::PowerOff) { powerStatesString += i18n("Power Off<br>"); } } @@ -697,19 +727,22 @@ void DevicePropertiesDialog::populateDeviceInformation() { if ((*it) == TDESystemHibernationMethod::Unsupported) { label = i18n("<none>"); } - if ((*it) == TDESystemHibernationMethod::Platform) { + else if ((*it) == TDESystemHibernationMethod::Platform) { label = i18n("Platform"); } - if ((*it) == TDESystemHibernationMethod::Shutdown) { + else if ((*it) == TDESystemHibernationMethod::Suspend) { + label = i18n("Suspend"); + } + else if ((*it) == TDESystemHibernationMethod::Shutdown) { label = i18n("Shutdown"); } - if ((*it) == TDESystemHibernationMethod::Reboot) { + else if ((*it) == TDESystemHibernationMethod::Reboot) { label = i18n("Reboot"); } - if ((*it) == TDESystemHibernationMethod::TestProc) { + else if ((*it) == TDESystemHibernationMethod::TestProc) { label = i18n("Test Procedure"); } - if ((*it) == TDESystemHibernationMethod::Test) { + else if ((*it) == TDESystemHibernationMethod::Test) { label = i18n("Test"); } base->comboSystemHibernationMethod->insertItem(label, i); @@ -723,6 +756,7 @@ void DevicePropertiesDialog::populateDeviceInformation() { base->labelSystemUserCanFreeze->setText((rdevice->canFreeze())?i18n("Yes"):i18n("No")); base->labelSystemUserCanSuspend->setText((rdevice->canSuspend())?i18n("Yes"):i18n("No")); base->labelSystemUserCanHibernate->setText((rdevice->canHibernate())?i18n("Yes"):i18n("No")); + base->labelSystemUserCanHybridSuspend->setText((rdevice->canHybridSuspend())?i18n("Yes"):i18n("No")); base->labelSystemUserCanPowerOff->setText((rdevice->canPowerOff())?i18n("Yes"):i18n("No")); base->labelSystemHibernationSpace->setText((rdevice->diskSpaceNeededForHibernation()<0)?i18n("<unknown>"):TDEHardwareDevices::bytesToFriendlySizeString(rdevice->diskSpaceNeededForHibernation())); @@ -753,6 +787,73 @@ void DevicePropertiesDialog::populateDeviceInformation() { } base->labelEventSwitchActive->setText(activeSwitches); } + + if (m_device->type() == TDEGenericDeviceType::CryptographicCard) { + TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(m_device); + + connect(cdevice, TQT_SIGNAL(cardInserted(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardInserted())); + connect(cdevice, TQT_SIGNAL(cardRemoved(TDECryptographicCardDevice*)), this, TQT_SLOT(cryptographicCardRemoved())); + + updateCryptographicCardStatusDisplay(); + } + } +} + +void DevicePropertiesDialog::cryptographicCardInserted() { + updateCryptographicCardStatusDisplay(); +} + +void DevicePropertiesDialog::cryptographicCardRemoved() { + updateCryptographicCardStatusDisplay(); +} + +void DevicePropertiesDialog::updateCryptographicCardStatusDisplay() { + TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(m_device); + + int status = cdevice->cardPresent(); + if ((status < 0) ||(status > 1)) { + base->labelCardStatus->setText(i18n("Unknown")); + base->labelCardCertificates->setText(""); + base->groupCardCerts->hide(); + } + else if (status == 0) { + base->labelCardStatus->setText(i18n("Empty")); + base->labelCardCertificates->setText(""); + base->groupCardCerts->hide(); + } + else if (status == 1) { + base->labelCardStatus->setText(i18n("Inserted") + TQString("<br>") + i18n("ATR: %1").arg(cdevice->cardATR())); + + X509CertificatePtrList certList = cdevice->cardX509Certificates(); + + if (certList.count() > 0) { + // Assemble list of certificates on card + unsigned int certificate_number = 1; + TQString certInfo = "<qt>"; + X509CertificatePtrList::iterator it; + for (it = certList.begin(); it != certList.end(); ++it) { + KSSLCertificate* tdeCert = KSSLCertificate::fromX509(*it); + KSSLCertificate::KSSLValidation validationStatus = tdeCert->validate(); + certInfo += i18n("Certificate #%1").arg(certificate_number) + ":<br>"; + certInfo += i18n("Subject") + ": " + tdeCert->getSubject() + "<br>"; + certInfo += i18n("Issuer") + ": " + tdeCert->getIssuer() + "<br>"; + certInfo += i18n("Status") + ": " + KSSLCertificate::verifyText(validationStatus) + "<br>"; + certInfo += i18n("Valid From") + ": " + tdeCert->getNotBefore() + "<br>"; + certInfo += i18n("Valid Until") + ": " + tdeCert->getNotAfter() + "<br>"; + certInfo += i18n("Serial Number") + ": " + tdeCert->getSerialNumber() + "<br>"; + certInfo += i18n("MD5 Digest") + ": " + tdeCert->getMD5DigestText() + "<br>"; + certInfo += "<p>"; + delete tdeCert; + certificate_number++; + } + certInfo += "</qt>"; + base->labelCardCertificates->setText(certInfo); + base->groupCardCerts->show(); + } + else { + base->labelCardCertificates->setText(""); + base->groupCardCerts->hide(); + } } } @@ -825,6 +926,293 @@ void DevicePropertiesDialog::unmountDisk() { populateDeviceInformation(); } +void DevicePropertiesDialog::cryptLUKSAddKey() { + int retcode; + + if (m_device->type() == TDEGenericDeviceType::Disk) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(m_device); + + TQListViewItem* lvi = base->cryptLUKSKeySlotList->selectedItem(); + if (lvi) { + TDECryptographicCardDevice* cdevice = NULL; + unsigned int key_slot = lvi->text(0).toUInt(); + bool allow_card = false; + bool use_card = false; + bool luks_card_key_modified = false; + KSSLCertificate* card_cert = NULL; + X509* card_cert_x509; + TQString disk_uuid = sdevice->diskUUID(); + TDEGenericDevice *hwdevice; + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + TDEGenericHardwareList cardReaderList = hwdevices->listByDeviceClass(TDEGenericDeviceType::CryptographicCard); + for (hwdevice = cardReaderList.first(); hwdevice; hwdevice = cardReaderList.next()) { + cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); + X509CertificatePtrList certList = cdevice->cardX509Certificates(); + if (certList.count() > 0) { + allow_card = true; + card_cert_x509 = certList[0]; + card_cert = KSSLCertificate::fromX509(certList[0]); + } + } + TQByteArray new_password; + CryptPasswordDialog* passDlg = new CryptPasswordDialog(this, i18n("Enter the new LUKS password for key slot %1").arg(key_slot), TQString::null, allow_card, card_cert, &use_card); + if (passDlg->exec() == TQDialog::Accepted) { + new_password = passDlg->password(); + if (allow_card && use_card) { + // Create new private key for disk device + if (!TQDir("/etc/trinity/luks").exists()) { + TQDir directory; + if (!directory.mkdir("/etc/trinity/luks", true)) { + KMessageBox::error(this, i18n("<qt><b>Key creation failed</b><br>Please check that you have write access to /etc/trinity and try again</qt>"), i18n("Key creation failure")); + delete card_cert; + return; + } + } + if (!TQDir("/etc/trinity/luks/card").exists()) { + TQDir directory; + if (!directory.mkdir("/etc/trinity/luks/card", true)) { + KMessageBox::error(this, i18n("<qt><b>Key creation failed</b><br>Please check that you have write access to /etc/trinity/luks and try again</qt>"), i18n("Key creation failure")); + delete card_cert; + return; + } + } + TQString cryptoFileName = TQString("/etc/trinity/luks/card/%1_slot%2").arg(disk_uuid).arg(key_slot); + TQFile file(cryptoFileName); + if (file.exists()) { + if (KMessageBox::warningYesNo(this, i18n("<qt><b>You are about to overwrite an existing card key for LUKS key slot %1</b><br>This action cannot be undone<p>Are you sure you want to proceed?</qt>").arg(key_slot), i18n("Confirmation Required")) != KMessageBox::Yes) { + delete card_cert; + return; + } + } + if (file.open(IO_WriteOnly)) { + TQByteArray randomKey; + TQByteArray encryptedRandomKey; + + // Create a new secret key using the public key from the card certificate + if (TDECryptographicCardDevice::createNewSecretRSAKeyFromCertificate(randomKey, encryptedRandomKey, card_cert_x509) < 0) { + KMessageBox::error(this, i18n("<qt><b>Key creation failed</b><br>Unable to create new secret key using the provided X509 certificate</qt>"), i18n("Key creation failure")); + delete card_cert; + return; + } + + // Write the encrypted key file to disk + file.writeBlock(encryptedRandomKey, encryptedRandomKey.size()); + file.close(); + + // Use the secret key as the LUKS passcode + new_password = randomKey; + luks_card_key_modified = true; + } + else { + KMessageBox::error(this, i18n("<qt><b>Key creation failed</b><br>Please check that you have write access to /etc/trinity/luks/card and try again</qt>"), i18n("Key creation failure")); + delete card_cert; + return; + } + } + delete passDlg; + if (!sdevice->cryptOperationsUnlockPasswordSet()) { + TQCString password; + passDlg = new CryptPasswordDialog(this, i18n("Enter the LUKS device unlock password"), TQString::null, allow_card, card_cert, &use_card); + if (passDlg->exec() == TQDialog::Accepted) { + TQByteArray unlockPassword = passDlg->password(); + if (use_card) { + // List all matching keys in directory and try each in turn... + TQDir luksKeyDir("/etc/trinity/luks/card/"); + luksKeyDir.setFilter(TQDir::Files); + luksKeyDir.setSorting(TQDir::Unsorted); + + TQValueList<TQByteArray> luksCryptedList; + TQValueList<TQByteArray> luksDecryptedList; + TQValueList<int> luksSlotNumberList; + + const TQFileInfoList *luksKeyDirList = luksKeyDir.entryInfoList(); + TQFileInfoListIterator it(*luksKeyDirList); + TQFileInfo *luksKeyFileInfo; + TQString errstr; + while ((luksKeyFileInfo = it.current()) != 0) { + if (luksKeyFileInfo->fileName().startsWith(disk_uuid) && luksKeyFileInfo->fileName().contains("_slot")) { + // Found candidate, try decryption + TQFile luksKeyFile(luksKeyFileInfo->absFilePath()); + if (luksKeyFile.open(IO_ReadOnly)) { + TQByteArray keycrypted = luksKeyFile.readAll(); + luksCryptedList.append(keycrypted); + + // Parse the file name and find the matching key slot + int current_card_keyslot = -1; + TQString fileName = luksKeyFile.name(); + int pos = fileName.find("_slot"); + if (pos >= 0) { + fileName.remove(0, pos + strlen("_slot")); + current_card_keyslot = fileName.toInt(); + luksSlotNumberList.append(current_card_keyslot); + } + } + } + ++it; + } + + // Decrypt LUKS keys + TQValueList<int> retCodeList; + retcode = cdevice->decryptDataEncryptedWithCertPublicKey(luksCryptedList, luksDecryptedList, retCodeList, &errstr); + TQValueList<TQByteArray>::iterator it2; + TQValueList<int>::iterator it3; + TQValueList<int>::iterator it4; + for (it2 = luksDecryptedList.begin(), it3 = retCodeList.begin(), it4 = luksSlotNumberList.begin(); it2 != luksDecryptedList.end(); ++it2, ++it3, ++it4) { + TQByteArray luksKeyData = *it2; + retcode = *it3; + int current_card_keyslot = *it4; + if (retcode == -3) { + // User cancelled + break; + } + if (retcode < 0) { + // ERROR + } + else { + // Key decryption successful, try to open LUKS device... + sdevice->cryptSetOperationsUnlockPassword(luksKeyData); + if (sdevice->cryptCheckKey(current_card_keyslot) == TDELUKSResult::Success) { + break; + } + else { + sdevice->cryptClearOperationsUnlockPassword(); + } + } + } + if (!sdevice->cryptOperationsUnlockPasswordSet()) { + KMessageBox::error(this, i18n("<qt><b>Key write failed</b><br>Please check the LUKS password and try again</qt>"), i18n("Key write failure")); + } + } + else { + sdevice->cryptSetOperationsUnlockPassword(unlockPassword); + } + } + delete passDlg; + } + if (sdevice->cryptOperationsUnlockPasswordSet()) { + if ((lvi->text(1) == sdevice->cryptKeySlotFriendlyName(TDELUKSKeySlotStatus::Inactive)) || (KMessageBox::warningYesNo(this, i18n("<qt><b>You are about to overwrite the key in key slot %1</b><br>This action cannot be undone<p>Are you sure you want to proceed?</qt>").arg(key_slot), i18n("Confirmation Required")) == KMessageBox::Yes)) { + if (sdevice->cryptAddKey(key_slot, new_password) != TDELUKSResult::Success) { + sdevice->cryptClearOperationsUnlockPassword(); + KMessageBox::error(this, i18n("<qt><b>Key write failed</b><br>Please check the LUKS password and try again</qt>"), i18n("Key write failure")); + } + else { + if (luks_card_key_modified) { + if (KMessageBox::warningYesNo(this, i18n("<qt><b>You have created a new card-dependent key</b><br>Card-dependent keys work in conjunction with an encrypted key file stored on the host system.<br>When a card is used to boot, card-dependent keys must be updated in the initramfs image to become usable.<p>Would you like to update the initramfs image now?</qt>"), i18n("Update Required")) == KMessageBox::Yes) { + // Update the initramfs + if (system("update-initramfs -u -k all") != 0) { + KMessageBox::error(this, i18n("<qt><b>Initramfs update failed</b><br>Card-dependent keys may not be available for use until the root storage device is available / unlocked</qt>"), i18n("Initramfs update failure")); + } + } + } + } + } + } + } + else { + delete passDlg; + } + delete card_cert; + } + } + + cryptLUKSPopulateList(); +} + +void DevicePropertiesDialog::cryptLUKSDelKey() { + if (m_device->type() == TDEGenericDeviceType::Disk) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(m_device); + + TQListViewItem* lvi = base->cryptLUKSKeySlotList->selectedItem(); + if (lvi) { + unsigned int key_slot = lvi->text(0).toUInt(); + if (KMessageBox::warningYesNo(this, i18n("<qt><b>You are about to purge the key in key slot %1</b><br>This action cannot be undone<p>Are you sure you want to proceed?</qt>").arg(lvi->text(0)), i18n("Confirmation Required")) == KMessageBox::Yes) { + if (sdevice->cryptKeySlotStatus()[key_slot] & TDELUKSKeySlotStatus::Last) { + if (KMessageBox::warningYesNo(this, i18n("<qt><b>You are about to purge the last active key from the device!</b><p>This action will render the contents of the encrypted device permanently inaccessable and cannot be undone<p>Are you sure you want to proceed?</qt>"), i18n("Confirmation Required")) != KMessageBox::Yes) { + cryptLUKSPopulateList(); + return; + } + } + if (sdevice->cryptDelKey(key_slot) != TDELUKSResult::Success) { + sdevice->cryptClearOperationsUnlockPassword(); + KMessageBox::error(this, i18n("<qt><b>Key purge failed</b><br>The key in key slot %1 is still active</qt>").arg(lvi->text(0)), i18n("Key purge failure")); + } + else { + // See if there was a cryptographic card key associated with this device and slot + TQString disk_uuid = sdevice->diskUUID(); + TQDir luksKeyDir("/etc/trinity/luks/card/"); + luksKeyDir.setFilter(TQDir::Files); + luksKeyDir.setSorting(TQDir::Unsorted); + + const TQFileInfoList *luksKeyDirList = luksKeyDir.entryInfoList(); + TQFileInfoListIterator it(*luksKeyDirList); + TQFileInfo *luksKeyFileInfo; + TQString errstr; + while ((luksKeyFileInfo = it.current()) != 0) { + if (luksKeyFileInfo->fileName().startsWith(disk_uuid) && luksKeyFileInfo->fileName().contains("_slot")) { + // Parse the file name and find the matching key slot + int current_card_keyslot = -1; + TQString fileName = luksKeyFileInfo->absFilePath(); + TQString fileNameSlot = fileName; + int pos = fileNameSlot.find("_slot"); + if (pos >= 0) { + fileNameSlot.remove(0, pos + strlen("_slot")); + current_card_keyslot = fileNameSlot.toInt(); + if (current_card_keyslot >= 0) { + if ((unsigned int)current_card_keyslot == key_slot) { + if (!TQFile(fileName).remove()) { + KMessageBox::error(this, i18n("<qt><b>Card key purge failed</b><br>The card key for slot %1 has been fully deactivated but is still present on your system<br>This does not present a significant security risk</qt>").arg(lvi->text(0)), i18n("Key purge failure")); + } + break; + } + } + } + } + ++it; + } + } + } + } + } + + cryptLUKSPopulateList(); +} + +void DevicePropertiesDialog::cryptLUKSPopulateList() { + unsigned int i; + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(m_device); + + base->cryptLUKSKeySlotList->clear(); + unsigned int count = sdevice->cryptKeySlotCount(); + TDELUKSKeySlotStatusList status = sdevice->cryptKeySlotStatus(); + for (i = 0; i < count; i++) { + new TQListViewItem(base->cryptLUKSKeySlotList, TQString("%1").arg(i), sdevice->cryptKeySlotFriendlyName(status[i])); + } + + processLockouts(); +} + +void DevicePropertiesDialog::processLockouts() { + if (m_device->type() == TDEGenericDeviceType::Disk) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(m_device); + + TQListViewItem* lvi = base->cryptLUKSKeySlotList->selectedItem(); + if (lvi) { + if (lvi->text(1) == sdevice->cryptKeySlotFriendlyName(TDELUKSKeySlotStatus::Active)) { + base->cryptLUKSAddKey->setEnabled(true); + base->cryptLUKSDelKey->setEnabled(true); + } + else { + base->cryptLUKSAddKey->setEnabled(true); + base->cryptLUKSDelKey->setEnabled(false); + } + } + else { + base->cryptLUKSAddKey->setEnabled(false); + base->cryptLUKSDelKey->setEnabled(false); + } + } +} + void DevicePropertiesDialog::virtual_hook( int id, void* data ) { KDialogBase::virtual_hook( id, data ); } diff --git a/kcontrol/hwmanager/devicepropsdlg.h b/kcontrol/hwmanager/devicepropsdlg.h index bbff43977..e958d39ba 100644 --- a/kcontrol/hwmanager/devicepropsdlg.h +++ b/kcontrol/hwmanager/devicepropsdlg.h @@ -191,6 +191,16 @@ private slots: void mountDisk(); void unmountDisk(); + void cryptLUKSAddKey(); + void cryptLUKSDelKey(); + void cryptLUKSPopulateList(); + + void cryptographicCardInserted(); + void cryptographicCardRemoved(); + void updateCryptographicCardStatusDisplay(); + + void processLockouts(); + private: TDEGenericDevice* m_device; DevicePropertiesDialogBase* base; diff --git a/kcontrol/hwmanager/devicepropsdlgbase.ui b/kcontrol/hwmanager/devicepropsdlgbase.ui index 74afdf5f3..0ea911c71 100644 --- a/kcontrol/hwmanager/devicepropsdlgbase.ui +++ b/kcontrol/hwmanager/devicepropsdlgbase.ui @@ -80,7 +80,7 @@ <string>Device Name:</string> </property> </widget> - <widget class="TQLabel" row="1" column="1" colspan="3"> + <widget class="KActiveLabel" row="1" column="1" colspan="3"> <property name="name"> <cstring>labelDeviceName</cstring> </property> @@ -93,7 +93,7 @@ <string>Device Node:</string> </property> </widget> - <widget class="TQLabel" row="2" column="1" colspan="3"> + <widget class="KActiveLabel" row="2" column="1" colspan="3"> <property name="name"> <cstring>labelDeviceNode</cstring> </property> @@ -106,7 +106,7 @@ <string>System Path:</string> </property> </widget> - <widget class="TQLabel" row="3" column="1" colspan="3"> + <widget class="KActiveLabel" row="3" column="1" colspan="3"> <property name="name"> <cstring>labelSystemPath</cstring> </property> @@ -119,7 +119,7 @@ <string>Subsystem Type:</string> </property> </widget> - <widget class="TQLabel" row="4" column="1" colspan="3"> + <widget class="KActiveLabel" row="4" column="1" colspan="3"> <property name="name"> <cstring>labelSubsytemType</cstring> </property> @@ -132,7 +132,7 @@ <string>Device Driver:</string> </property> </widget> - <widget class="TQLabel" row="5" column="1" colspan="3"> + <widget class="KActiveLabel" row="5" column="1" colspan="3"> <property name="name"> <cstring>labelDeviceDriver</cstring> </property> @@ -145,7 +145,7 @@ <string>Device Class:</string> </property> </widget> - <widget class="TQLabel" row="6" column="1" colspan="3"> + <widget class="KActiveLabel" row="6" column="1" colspan="3"> <property name="name"> <cstring>labelDeviceClass</cstring> </property> @@ -158,7 +158,7 @@ <string>Manufacturer:</string> </property> </widget> - <widget class="TQLabel" row="7" column="1" colspan="3"> + <widget class="KActiveLabel" row="7" column="1" colspan="3"> <property name="name"> <cstring>labelVendorName</cstring> </property> @@ -171,7 +171,7 @@ <string>Model:</string> </property> </widget> - <widget class="TQLabel" row="8" column="1" colspan="3"> + <widget class="KActiveLabel" row="8" column="1" colspan="3"> <property name="name"> <cstring>labelVendorModel</cstring> </property> @@ -184,7 +184,7 @@ <string>Serial Number:</string> </property> </widget> - <widget class="TQLabel" row="9" column="1" colspan="3"> + <widget class="KActiveLabel" row="9" column="1" colspan="3"> <property name="name"> <cstring>labelSerialNumber</cstring> </property> @@ -197,7 +197,7 @@ <string>Bus ID:</string> </property> </widget> - <widget class="TQLabel" row="10" column="1" colspan="3"> + <widget class="KActiveLabel" row="10" column="1" colspan="3"> <property name="name"> <cstring>labelBusID</cstring> </property> @@ -210,7 +210,7 @@ <string>Technical Details:</string> </property> </widget> - <widget class="TQLabel" row="11" column="1" colspan="3"> + <widget class="KActiveLabel" row="11" column="1" colspan="3"> <property name="name"> <cstring>labelModalias</cstring> </property> @@ -266,7 +266,7 @@ <string>Mountpoint:</string> </property> </widget> - <widget class="TQLabel" row="0" column="1" colspan="1"> + <widget class="KActiveLabel" row="0" column="1" colspan="1"> <property name="name"> <cstring>labelDiskMountpoint</cstring> </property> @@ -279,7 +279,7 @@ <string>Filesystem Type:</string> </property> </widget> - <widget class="TQLabel" row="1" column="1" colspan="1"> + <widget class="KActiveLabel" row="1" column="1" colspan="1"> <property name="name"> <cstring>labelDiskFileSystemType</cstring> </property> @@ -292,7 +292,7 @@ <string>Volume UUID:</string> </property> </widget> - <widget class="TQLabel" row="2" column="1" colspan="1"> + <widget class="KActiveLabel" row="2" column="1" colspan="1"> <property name="name"> <cstring>labelDiskUUID</cstring> </property> @@ -308,7 +308,7 @@ <set>AlignTop|AlignLeft</set> </property> </widget> - <widget class="TQLabel" row="3" column="1" colspan="1"> + <widget class="KActiveLabel" row="3" column="1" colspan="1"> <property name="name"> <cstring>labelDiskStatus</cstring> </property> @@ -326,7 +326,7 @@ <property name="name"> <cstring>unnamed</cstring> </property> - <widget class="TQPushButton" row="0" column="0" colspan="1"> + <widget class="KPushButton" row="0" column="0" colspan="1"> <property name="name"> <cstring>buttonDiskMount</cstring> </property> @@ -334,7 +334,7 @@ <string>Mount</string> </property> </widget> - <widget class="TQPushButton" row="0" column="1" colspan="1"> + <widget class="KPushButton" row="0" column="1" colspan="1"> <property name="name"> <cstring>buttonDiskUnmount</cstring> </property> @@ -365,6 +365,95 @@ </widget> <widget class="TQWidget"> <property name="name"> + <cstring>tabDiskCrypt</cstring> + </property> + <attribute name="title"> + <string>LUKS</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="TQGroupBox" row="0" column="0"> + <property name="name"> + <cstring>groupLUKSProps</cstring> + </property> + <property name="title"> + <string>LUKS Information</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="TDEListView" row="0" column="0" colspan="2"> + <column> + <property name="text"> + <string>Slot Number</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizeable"> + <bool>true</bool> + </property> + </column> + <column> + <property name="text"> + <string>Status</string> + </property> + <property name="clickable"> + <bool>true</bool> + </property> + <property name="resizeable"> + <bool>true</bool> + </property> + </column> + <property name="name"> + <cstring>cryptLUKSKeySlotList</cstring> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + </widget> + <widget class="KPushButton" row="1" column="0" colspan="1"> + <property name="name"> + <cstring>cryptLUKSAddKey</cstring> + </property> + <property name="text"> + <string>Install new password into keyslot</string> + </property> + </widget> + <widget class="KPushButton" row="1" column="1" colspan="1"> + <property name="name"> + <cstring>cryptLUKSDelKey</cstring> + </property> + <property name="text"> + <string>Delete existing password from keyslot</string> + </property> + </widget> + </grid> + </widget> + <spacer row="8" column="0"> + <property name="name" stdset="0"> + <cstring>Spacer4</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> + </widget> + <widget class="TQWidget"> + <property name="name"> <cstring>tabCPU</cstring> </property> <attribute name="title"> @@ -1419,7 +1508,20 @@ <cstring>labelSystemUserCanHibernate</cstring> </property> </widget> - <widget class="TQLabel" row="7" column="0" colspan="1"> + <widget class="TQLabel" row="7" column="0" colspan="1"> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="text"> + <string>User Can Request Hybrid Suspend</string> + </property> + </widget> + <widget class="TQLabel" row="7" column="1" colspan="1"> + <property name="name"> + <cstring>labelSystemUserCanHybridSuspend</cstring> + </property> + </widget> + <widget class="TQLabel" row="8" column="0" colspan="1"> <property name="name"> <cstring>unnamed</cstring> </property> @@ -1427,7 +1529,7 @@ <string>User Can Request Shutdown</string> </property> </widget> - <widget class="TQLabel" row="7" column="1" colspan="1"> + <widget class="TQLabel" row="8" column="1" colspan="1"> <property name="name"> <cstring>labelSystemUserCanPowerOff</cstring> </property> @@ -1528,6 +1630,84 @@ </spacer> </grid> </widget> + <widget class="TQWidget"> + <property name="name"> + <cstring>tabCryptographicCard</cstring> + </property> + <attribute name="title"> + <string>Cryptographic Card</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="TQGroupBox" row="0" column="0"> + <property name="name"> + <cstring>groupInput</cstring> + </property> + <property name="title"> + <string>Card Status</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="TQLabel" row="0" column="0" colspan="1"> + <property name="name"> + <cstring>labelCardStatus</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="alignment"> + <set>AlignTop|AlignLeft</set> + </property> + </widget> + </grid> + </widget> + <widget class="TQGroupBox" row="1" column="0"> + <property name="name"> + <cstring>groupCardCerts</cstring> + </property> + <property name="title"> + <string>Card Certificates</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="TQLabel" row="0" column="0" colspan="1"> + <property name="name"> + <cstring>labelCardCertificates</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="alignment"> + <set>AlignTop|AlignLeft</set> + </property> + </widget> + </grid> + </widget> + <spacer row="8" column="0"> + <property name="name" stdset="0"> + <cstring>Spacer4</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> + </widget> </widget> </grid> </widget> diff --git a/kcontrol/hwmanager/hwdevicetray-autostart.desktop b/kcontrol/hwmanager/hwdevicetray-autostart.desktop new file mode 100644 index 000000000..57bd9b893 --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray-autostart.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=tdehwdevicetray +GenericName=Hardware Device Monitor +Comment=Monitor hardware devices from the system tray +Exec=tdehwdevicetray +Icon=kcmdevices +X-TDE-autostart-after=panel +X-TDE-StartupNotify=false +X-TDE-UniqueApplet=true +X-TDE-autostart-condition=tdehwdevicetrayrc:General:Autostart:true +Categories=System;Applet; diff --git a/kcontrol/hwmanager/hwdevicetray.cpp b/kcontrol/hwmanager/hwdevicetray.cpp new file mode 100644 index 000000000..b6ef8a6ad --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray.cpp @@ -0,0 +1,431 @@ +/* + * Copyright 2015 Timothy Pearson <[email protected]> + * + * This file is part of hwdevicetray, the TDE Hardware Device Monitor System Tray Application + * + * hwdevicetray 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 3 + * of the License, or (at your option) any later version. + * + * hwdevicetray 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 cryptocardwatcher. If not, see http://www.gnu.org/licenses/. + */ + +#include <tqtimer.h> +#include <tqimage.h> +#include <tqtooltip.h> +#include <tqfileinfo.h> + +#include <krun.h> +#include <tdeaction.h> +#include <tdeapplication.h> +#include <kcmultidialog.h> +#include <kdebug.h> +#include <khelpmenu.h> +#include <kiconloader.h> +#include <tdelocale.h> +#include <tdepopupmenu.h> +#include <kstdaction.h> +#include <kstdguiitem.h> +#include <tdeglobal.h> +#include <tdemessagebox.h> +#include <kpassivepopup.h> +#include <kstandarddirs.h> + +#include <dcopclient.h> + +#include <cstdlib> +#include <unistd.h> + +#include "hwdevicetray_configdialog.h" + +#include "hwdevicetray.h" + +HwDeviceSystemTray::HwDeviceSystemTray(TQWidget* parent, const char *name) + : KSystemTray(parent, name) { + + // Create notifier + m_hardwareNotifierContainer = new TDEPassivePopupStackContainer(); + connect(m_hardwareNotifierContainer, TQT_SIGNAL(popupClicked(KPassivePopup*, TQPoint, TQString)), this, TQT_SLOT(devicePopupClicked(KPassivePopup*, TQPoint, TQString))); + + // Create help submenu + m_help = new KHelpMenu(this, TDEGlobal::instance()->aboutData(), false, actionCollection()); + TDEPopupMenu *help = m_help->menu(); + help->connectItem(KHelpMenu::menuHelpContents, this, TQT_SLOT(slotHelpContents())); + + setPixmap(KSystemTray::loadIcon("kcmdevices")); + setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); + connect(this, TQT_SIGNAL(quitSelected()), this, TQT_SLOT(_quit())); + TQToolTip::add(this, i18n("Hardware device monitor")); + m_parent = parent; + + globalKeys = new TDEGlobalAccel(TQT_TQOBJECT(this)); + TDEGlobalAccel* keys = globalKeys; + #include "hwdevicetray_bindings.cpp" + // the keys need to be read from tdeglobals, not kickerrc + globalKeys->readSettings(); + globalKeys->setEnabled(true); + globalKeys->updateConnections(); + + connect(kapp, TQT_SIGNAL(settingsChanged(int)), TQT_SLOT(slotSettingsChanged(int))); + + new TDEActionMenu(i18n("Open Device"), SmallIcon("connect_creating", TQIconSet::Automatic), actionCollection(), "mount_menu"); + new TDEActionMenu(i18n("Eject Device"), SmallIcon("connect_no", TQIconSet::Automatic), actionCollection(), "unmount_menu"); + +#ifdef __TDE_HAVE_TDEHWLIB + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + connect(hwdevices, TQT_SIGNAL(hardwareAdded(TDEGenericDevice*)), this, TQT_SLOT(deviceAdded(TDEGenericDevice*))); + connect(hwdevices, TQT_SIGNAL(hardwareRemoved(TDEGenericDevice*)), this, TQT_SLOT(deviceRemoved(TDEGenericDevice*))); + connect(hwdevices, TQT_SIGNAL(hardwareUpdated(TDEGenericDevice*)), this, TQT_SLOT(deviceChanged(TDEGenericDevice*))); +#endif +} + +HwDeviceSystemTray::~HwDeviceSystemTray() { + delete m_hardwareNotifierContainer; +} + +/*! + * \b TQT_SLOT which called if hwdevicetray is exited by the user. In this case the user + * is asked through a yes/no box if "HwDeviceTray should start automatically on log in" and the + * result is written to the KDE configfile. + */ +void HwDeviceSystemTray::_quit () { + r_config = new KSimpleConfig("hwdevicetrayrc"); + + TQString tmp1 = i18n ("Start hardware device tray automatically when you log in?"); + int tmp2 = KMessageBox::questionYesNo (0, tmp1, i18n("Question"), i18n("Start Automatically"), i18n("Do Not Start")); + r_config->setGroup("General"); + r_config->writeEntry ("Autostart", tmp2 == KMessageBox::Yes); + r_config->sync (); + + exit(0); +} + +void HwDeviceSystemTray::resizeTrayIcon () { + // Honor Free Desktop specifications that allow for arbitrary system tray icon sizes + TQPixmap origpixmap; + TQPixmap scaledpixmap; + TQImage newIcon; + origpixmap = KSystemTray::loadSizedIcon("kcmdevices", width()); + newIcon = origpixmap; + newIcon = newIcon.smoothScale(width(), height()); + scaledpixmap = newIcon; + setPixmap(scaledpixmap); +} + +void HwDeviceSystemTray::resizeEvent (TQResizeEvent *) { + // Honor Free Desktop specifications that allow for arbitrary system tray icon sizes + resizeTrayIcon(); +} + +void HwDeviceSystemTray::showEvent (TQShowEvent *) { + // Honor Free Desktop specifications that allow for arbitrary system tray icon sizes + resizeTrayIcon(); +} + +void HwDeviceSystemTray::mousePressEvent(TQMouseEvent* e) { + // Popup the context menu with left-click + if (e->button() == Qt::LeftButton) { + contextMenuAboutToShow(contextMenu()); + contextMenu()->popup(e->globalPos()); + e->accept(); + return; + } + + KSystemTray::mousePressEvent(e); +} + +bool HwDeviceSystemTray::isMonitoredDevice(TDEStorageDevice* sdevice) { + // Type selection logic largely duplicated from the media manager tdeioslave + if (((sdevice->isDiskOfType(TDEDiskDeviceType::LUKS) + || sdevice->checkDiskStatus(TDEDiskDeviceStatus::ContainsFilesystem) + || sdevice->isDiskOfType(TDEDiskDeviceType::CDAudio) + || sdevice->checkDiskStatus(TDEDiskDeviceStatus::Blank)) + && !sdevice->checkDiskStatus(TDEDiskDeviceStatus::UsedByDevice) + && !sdevice->checkDiskStatus(TDEDiskDeviceStatus::Hidden) + && (sdevice->isDiskOfType(TDEDiskDeviceType::HDD) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDROM)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDR)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDRW)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDMO)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDMRRW)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDMRRWW)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDROM)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDRAM)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDR)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDRW)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDRDL)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDRWDL)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDPLUSR)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDPLUSRW)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDPLUSRDL)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDPLUSRWDL)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::BDROM)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::BDR)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::BDRW)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::HDDVDROM)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::HDDVDR)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::HDDVDRW)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDAudio)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::CDVideo)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::DVDVideo)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::BDVideo)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::Floppy)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::Zip)) + || (sdevice->isDiskOfType(TDEDiskDeviceType::Jaz)))) + || (sdevice->isDiskOfType(TDEDiskDeviceType::Camera))) { + return true; + } + else { + return false; + } +} + +void HwDeviceSystemTray::contextMenuAboutToShow(TDEPopupMenu* menu) { + menu->clear(); + menu->setCheckable(true); + + populateMenu(menu); + + menu->insertTitle(SmallIcon("configure"), i18n("Global Configuration")); + + TDEAction *actHardwareConfig = new TDEAction(i18n("Configure Hardware..."), SmallIconSet("kcmpci"), TDEShortcut(), TQT_TQOBJECT(this), TQT_SLOT(slotHardwareConfig()), actionCollection()); + actHardwareConfig->plug(menu); + + TDEAction *actShortcutKeys = new TDEAction(i18n("Configure Shortcut Keys..."), SmallIconSet("configure"), TDEShortcut(), TQT_TQOBJECT(this), TQT_SLOT(slotEditShortcutKeys()), actionCollection()); + actShortcutKeys->plug(menu); + + menu->insertItem(SmallIcon("help"), KStdGuiItem::help().text(), m_help->menu()); + TDEAction *quitAction = actionCollection()->action(KStdAction::name(KStdAction::Quit)); + quitAction->plug(menu); + + m_menu = menu; +} + +void HwDeviceSystemTray::configChanged() { + // +} + +void HwDeviceSystemTray::populateMenu(TDEPopupMenu* menu) { + int lastMountIndex; + int lastUnmountIndex; + TDEGenericDevice *hwdevice; + + TDEActionMenu* mountDiskActionMenu = static_cast<TDEActionMenu*>(actionCollection()->action("mount_menu")); + mountDiskActionMenu->popupMenu()->clear(); + m_mountMenuIndexMap.clear(); + TDEActionMenu* unmountDiskActionMenu = static_cast<TDEActionMenu*>(actionCollection()->action("unmount_menu")); + unmountDiskActionMenu->popupMenu()->clear(); + m_mountMenuIndexMap.clear(); + + menu->insertTitle(SmallIcon("drive-harddisk"), i18n("Storage Devices")); + + // Find all storage devices and add them to the popup menu + lastMountIndex = 1; + lastUnmountIndex = 1; + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + TDEGenericHardwareList diskDeviceList = hwdevices->listByDeviceClass(TDEGenericDeviceType::Disk); + for (hwdevice = diskDeviceList.first(); hwdevice; hwdevice = diskDeviceList.next()) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(hwdevice); + if (isMonitoredDevice(sdevice)) { + lastMountIndex = mountDiskActionMenu->popupMenu()->insertItem(hwdevice->icon(TDEIcon::SizeSmall), i18n("%1 (%2)").arg(sdevice->friendlyName(), sdevice->deviceNode())); + mountDiskActionMenu->popupMenu()->connectItem(lastMountIndex, this, TQT_SLOT(slotMountDevice(int))); + m_mountMenuIndexMap[lastMountIndex] = sdevice->diskUUID(); + if (m_mountMenuIndexMap[lastMountIndex] == "") { + m_mountMenuIndexMap[lastMountIndex] = sdevice->systemPath(); + } + if (sdevice->mountPath() != TQString::null) { + lastUnmountIndex = unmountDiskActionMenu->popupMenu()->insertItem(hwdevice->icon(TDEIcon::SizeSmall), i18n("%1 (%2)").arg(sdevice->friendlyName(), sdevice->deviceNode())); + unmountDiskActionMenu->popupMenu()->connectItem(lastUnmountIndex, this, TQT_SLOT(slotUnmountDevice(int))); + m_unmountMenuIndexMap[lastUnmountIndex] = sdevice->diskUUID(); + if (m_unmountMenuIndexMap[lastMountIndex] == "") { + m_unmountMenuIndexMap[lastMountIndex] = sdevice->systemPath(); + } + } + } + } + + if (lastMountIndex == 0) { + mountDiskActionMenu->setEnabled(false); + } + else { + mountDiskActionMenu->setEnabled(true); + } + if (lastUnmountIndex == 0) { + unmountDiskActionMenu->setEnabled(false); + } + else { + unmountDiskActionMenu->setEnabled(true); + } + + mountDiskActionMenu->plug(menu); + unmountDiskActionMenu->plug(menu); +} + +void HwDeviceSystemTray::slotMountDevice(int parameter) +{ + TDEGenericDevice *hwdevice; + TQString uuid = m_mountMenuIndexMap[parameter]; + if (uuid != "") { + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + TDEGenericHardwareList diskDeviceList = hwdevices->listByDeviceClass(TDEGenericDeviceType::Disk); + for (hwdevice = diskDeviceList.first(); hwdevice; hwdevice = diskDeviceList.next()) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(hwdevice); + if ((sdevice->diskUUID() == uuid) || (sdevice->systemPath() == uuid)) { + if (sdevice->isDiskOfType(TDEDiskDeviceType::Camera)) { + new KRun(TQString("media:/%1").arg(sdevice->friendlyName())); + } + else { + new KRun(TQString("system:/media/%1").arg(TQFileInfo(sdevice->deviceNode()).baseName(true))); + } + return; + } + } + } +} + +void HwDeviceSystemTray::slotUnmountDevice(int parameter) +{ + TDEGenericDevice *hwdevice; + TQString uuid = m_unmountMenuIndexMap[parameter]; + if (uuid != "") { + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + TDEGenericHardwareList diskDeviceList = hwdevices->listByDeviceClass(TDEGenericDeviceType::Disk); + for (hwdevice = diskDeviceList.first(); hwdevice; hwdevice = diskDeviceList.next()) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(hwdevice); + if ((sdevice->diskUUID() == uuid) || (sdevice->systemPath() == uuid)) { + if (sdevice->mountPath() != TQString::null) { + int retcode; + TQString errstr; + if (!sdevice->unmountDevice(&errstr, &retcode)) { + KMessageBox::error(0, i18n("<qt><b>Unable to eject device</b><p>Detailed error information:<br>%1 (code %2)</qt>").arg(errstr).arg(retcode), i18n("Eject Failed")); + } + return; + } + } + } + } +} + +void HwDeviceSystemTray::slotHardwareConfig() { + KCMultiDialog *kcm = new KCMultiDialog(KDialogBase::Plain, i18n("Configure"), this); + + kcm->addModule("hwmanager"); + kcm->setPlainCaption(i18n("Configure Hardware")); + kcm->exec(); +} + +void HwDeviceSystemTray::slotSettingsChanged(int category) { + if (category == (int) TDEApplication::SETTINGS_SHORTCUTS) { + globalKeys->readSettings(); + globalKeys->updateConnections(); + } +} + +void HwDeviceSystemTray::slotEditShortcutKeys() { + ConfigDialog *dlg = new ConfigDialog(globalKeys, true); + + if (dlg->exec() == TQDialog::Accepted) { + dlg->commitShortcuts(); + globalKeys->writeSettings(0, true); + globalKeys->updateConnections(); + } + + delete dlg; +} + +void HwDeviceSystemTray::deviceAdded(TDEGenericDevice* device) { +#ifdef __TDE_HAVE_TDEHWLIB + if (device->type() == TDEGenericDeviceType::Disk) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(device); + if (isMonitoredDevice(sdevice)) { + TQString uuid = sdevice->diskUUID(); + if (uuid == "") { + uuid = sdevice->systemPath(); + } + m_hardwareNotifierContainer->displayMessage( + i18n("A disk device has been added!"), + i18n("%1 (%2)").arg(sdevice->friendlyName(), sdevice->deviceNode()), SmallIcon("drive-harddisk"), + 0, 0, "ADD: " + uuid); + } + } +#endif +} + +void HwDeviceSystemTray::deviceRemoved(TDEGenericDevice* device) { +#ifdef __TDE_HAVE_TDEHWLIB + if (device->type() == TDEGenericDeviceType::Disk) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(device); + if (isMonitoredDevice(sdevice)) { + TQString uuid = sdevice->diskUUID(); + if (uuid == "") { + uuid = sdevice->systemPath(); + } + m_hardwareNotifierContainer->displayMessage( + i18n("A disk device has been removed!"), + i18n("%1 (%2)").arg(sdevice->friendlyName(), sdevice->deviceNode()), SmallIcon("drive-harddisk"), + 0, 0, "REMOVE: " + uuid); + } + } +#endif +} + +void HwDeviceSystemTray::deviceChanged(TDEGenericDevice* device) { +#ifdef __TDE_HAVE_TDEHWLIB + if (device->type() == TDEGenericDeviceType::Disk) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(device); + if (isMonitoredDevice(sdevice)) { + TQString uuid = sdevice->diskUUID(); + if (uuid == "") { + uuid = sdevice->systemPath(); + } + m_hardwareNotifierContainer->displayMessage( + i18n("A disk device has been changed!"), + i18n("%1 (%2)").arg(sdevice->friendlyName(), sdevice->deviceNode()), SmallIcon("drive-harddisk"), + 0, 0, "CHANGE: " + uuid); + } + } +#endif +} + +void HwDeviceSystemTray::devicePopupClicked(KPassivePopup* popup, TQPoint point, TQString uuid) { + TDEGenericDevice *hwdevice; + if (uuid.startsWith("ADD: ")) { + uuid = uuid.right(uuid.length() - strlen("ADD: ")); + if (uuid != "") { + TDEHardwareDevices *hwdevices = TDEGlobal::hardwareDevices(); + TDEGenericHardwareList diskDeviceList = hwdevices->listByDeviceClass(TDEGenericDeviceType::Disk); + for (hwdevice = diskDeviceList.first(); hwdevice; hwdevice = diskDeviceList.next()) { + TDEStorageDevice* sdevice = static_cast<TDEStorageDevice*>(hwdevice); + if ((sdevice->diskUUID() == uuid) || (sdevice->systemPath() == uuid)) { + // Pop up full media notification dialog + DCOPClient* dcopClient = TDEApplication::dcopClient(); + TQByteArray data; + TQDataStream arg(data, IO_WriteOnly); + bool allowNotification = true; + if (sdevice->isDiskOfType(TDEDiskDeviceType::Camera)) { + arg << sdevice->friendlyName(); + } + else { + arg << TQFileInfo(sdevice->deviceNode()).baseName(true); + } + arg << allowNotification; + dcopClient->send("kded", "medianotifier", "onMediumChange(TQString, bool)", data); + return; + } + } + } + } +} + +void HwDeviceSystemTray::slotHelpContents() { + kapp->invokeHelp(TQString::null, "hwdevicetray"); +} + +#include "hwdevicetray.moc"
\ No newline at end of file diff --git a/kcontrol/hwmanager/hwdevicetray.desktop b/kcontrol/hwmanager/hwdevicetray.desktop new file mode 100644 index 000000000..20a0297ce --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=tdehwdevicetray +GenericName=Hardware Device Monitor +Comment=Monitor hardware devices from the system tray +Exec=tdehwdevicetray +Icon=kcmdevices +Type=Application +OnlyShowIn=TDE; +Categories=Qt;TDE;System; +X-DocPath=tdehwdevicetray/index.html diff --git a/kcontrol/hwmanager/hwdevicetray.h b/kcontrol/hwmanager/hwdevicetray.h new file mode 100644 index 000000000..d49f5b4b3 --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray.h @@ -0,0 +1,95 @@ +/* + * Copyright 2015 Timothy Pearson <[email protected]> + * + * This file is part of hwdevicetray, the TDE Hardware Device Monitor System Tray Application + * + * hwdevicetray 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 3 + * of the License, or (at your option) any later version. + * + * hwdevicetray 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 cryptocardwatcher. If not, see http://www.gnu.org/licenses/. + */ + +#ifndef TDEHWDEVICETRAY_H +#define TDEHWDEVICETRAY_H + +#include <tqptrlist.h> + +#include <ksystemtray.h> +#include <kglobalaccel.h> +#include <ksimpleconfig.h> +#include <tdepassivepopupstack.h> + +#ifdef __TDE_HAVE_TDEHWLIB +#include <tdehardwaredevices.h> +#else +#define TDEGenericDevice void +#endif + +class KHelpMenu; +class TDEPopupMenu; + +typedef TQMap<int, TQString> TQStringMap; + +class HwDeviceSystemTray : public KSystemTray +{ + Q_OBJECT + +public: + HwDeviceSystemTray(TQWidget* parent = 0, const char *name = 0); + ~HwDeviceSystemTray(); + TDEGlobalAccel *globalKeys; + + virtual void contextMenuAboutToShow(TDEPopupMenu* menu); + + void configChanged(); + +protected slots: + void slotHardwareConfig(); + void slotEditShortcutKeys(); + void slotSettingsChanged(int category); + void slotHelpContents(); + + void slotMountDevice(int parameter); + void slotUnmountDevice(int parameter); + +protected: + void mousePressEvent(TQMouseEvent *e); + void resizeEvent(TQResizeEvent *); + void showEvent(TQShowEvent *); + +private slots: + void _quit(); + void deviceAdded(TDEGenericDevice*); + void deviceRemoved(TDEGenericDevice*); + void deviceChanged(TDEGenericDevice*); + + void devicePopupClicked(KPassivePopup*, TQPoint, TQString); + +private: + bool isMonitoredDevice(TDEStorageDevice* sdevice); + +private: + void populateMenu(TDEPopupMenu* menu); + void resizeTrayIcon(); + + bool m_popupUp; + KHelpMenu* m_help; + + TQWidget* m_parent; + TDEPassivePopupStackContainer* m_hardwareNotifierContainer; + + TQStringMap m_mountMenuIndexMap; + TQStringMap m_unmountMenuIndexMap; + TDEPopupMenu* m_menu; + KSimpleConfig *r_config; +}; + +#endif diff --git a/kcontrol/hwmanager/hwdevicetray_app.cpp b/kcontrol/hwmanager/hwdevicetray_app.cpp new file mode 100644 index 000000000..3f96f76a4 --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray_app.cpp @@ -0,0 +1,32 @@ +/* + * Copyright 2015 Timothy Pearson <[email protected]> + * + * This file is part of hwdevicetray, the TDE Hardware Device Monitor System Tray Application + * + * hwdevicetray 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 3 + * of the License, or (at your option) any later version. + * + * hwdevicetray 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 cryptocardwatcher. If not, see http://www.gnu.org/licenses/. + */ + +#include <kdebug.h> + +#include "hwdevicetray_app.h" + +#include "hwdevicetray.h" + +HwDeviceApp::HwDeviceApp() + : m_tray(new HwDeviceSystemTray(0L, "HwDeviceTray")) +{ + m_tray->show(); +} + +#include "hwdevicetray_app.moc"
\ No newline at end of file diff --git a/kcontrol/hwmanager/hwdevicetray_app.h b/kcontrol/hwmanager/hwdevicetray_app.h new file mode 100644 index 000000000..fae4d6cd9 --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray_app.h @@ -0,0 +1,39 @@ +/* + * Copyright 2015 Timothy Pearson <[email protected]> + * + * This file is part of hwdevicetray, the TDE Hardware Device Monitor System Tray Application + * + * hwdevicetray 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 3 + * of the License, or (at your option) any later version. + * + * hwdevicetray 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 cryptocardwatcher. If not, see http://www.gnu.org/licenses/. + */ + +#ifndef TDEHWDEVICEAPP_H +#define TDEHWDEVICEAPP_H + +#include <tqtimer.h> +#include <kuniqueapplication.h> + +class HwDeviceSystemTray; + +class HwDeviceApp : public KUniqueApplication +{ + Q_OBJECT + + public: + HwDeviceApp(); + + private: + HwDeviceSystemTray* m_tray; +}; + +#endif diff --git a/kcontrol/hwmanager/hwdevicetray_bindings.cpp b/kcontrol/hwmanager/hwdevicetray_bindings.cpp new file mode 100644 index 000000000..216b1a709 --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray_bindings.cpp @@ -0,0 +1,34 @@ +// -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8; -*- +/* This file is part of the KDE project + Copyright (C) by Andrew Stanley-Jones + + 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 NOSLOTS +# define DEF( name, key3, key4, fnSlot ) \ + keys->insert( name, i18n(name), TQString(), key3, key4, TQT_TQOBJECT(this), TQT_SLOT(fnSlot) ) +#else +# define DEF( name, key3, key4, fnSlot ) \ + keys->insert( name, i18n(name), TQString(), key3, key4 ) +#endif +#define WIN KKey::QtWIN + + keys->insert( "Program:hwdevicetray", i18n("Hardware Device Control") ); + + // DEF( I18N_NOOP("Switch Displays"), TDEShortcut(TQString("XF86Display")), TDEShortcut(TQString("XF86Display")), slotCycleDisplays() ); + +#undef DEF +#undef WIN diff --git a/kcontrol/hwmanager/hwdevicetray_configdialog.cpp b/kcontrol/hwmanager/hwdevicetray_configdialog.cpp new file mode 100644 index 000000000..648cdd72f --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray_configdialog.cpp @@ -0,0 +1,78 @@ +/* + * Copyright 2015 Timothy Pearson <[email protected]> + * + * This file is part of hwdevicetray, the TDE Hardware Device Monitor System Tray Application + * + * hwdevicetray 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 3 + * of the License, or (at your option) any later version. + * + * hwdevicetray 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 cryptocardwatcher. If not, see http://www.gnu.org/licenses/. + */ + +#include <tqlabel.h> +#include <tqlayout.h> +#include <tqlistview.h> +#include <tqpushbutton.h> +#include <tqtooltip.h> +#include <tqwhatsthis.h> +#include <tqvbuttongroup.h> +#include <assert.h> + +#include <kiconloader.h> +#include <tdelocale.h> +#include <tdepopupmenu.h> +#include <twinmodule.h> +#include <kregexpeditorinterface.h> +#include <tdeparts/componentfactory.h> + +#include "hwdevicetray_configdialog.h" + +ConfigDialog::ConfigDialog(TDEGlobalAccel *accel, bool isApplet) + : KDialogBase(Tabbed, i18n("Configure"), Ok | Cancel | Help, Ok, 0L, "config dialog") { + if (isApplet) { + setHelp(TQString::null, "tderandrtray"); + } + + TQFrame *w = 0L; // the parent for the widgets + + w = addVBoxPage(i18n("Global &Shortcuts")); + keysWidget = new KKeyChooser(accel, w); +} + + +ConfigDialog::~ConfigDialog() { +} + +// prevent huge size due to long regexps in the action-widget +void ConfigDialog::show() { + if (!isVisible()) { + KWinModule module(0, KWinModule::INFO_DESKTOP); + TQSize s1 = sizeHint(); + TQSize s2 = module.workArea().size(); + int w = s1.width(); + int h = s1.height(); + + if (s1.width() >= s2.width()) + w = s2.width(); + if (s1.height() >= s2.height()) + h = s2.height(); + + resize(w, h); + } + + KDialogBase::show(); +} + +void ConfigDialog::commitShortcuts() { + keysWidget->commitChanges(); +} + +#include "hwdevicetray_configdialog.moc" diff --git a/kcontrol/hwmanager/hwdevicetray_configdialog.h b/kcontrol/hwmanager/hwdevicetray_configdialog.h new file mode 100644 index 000000000..657b3ee43 --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray_configdialog.h @@ -0,0 +1,59 @@ +/* + * Copyright 2015 Timothy Pearson <[email protected]> + * + * This file is part of hwdevicetray, the TDE Hardware Device Monitor System Tray Application + * + * hwdevicetray 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 3 + * of the License, or (at your option) any later version. + * + * hwdevicetray 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 cryptocardwatcher. If not, see http://www.gnu.org/licenses/. + */ + +#ifndef HWDEVICETRAY_CONFIGDIALOG_H +#define HWDEVICETRAY_CONFIGDIALOG_H + +#include <tqcheckbox.h> +#include <tqevent.h> +#include <tqgroupbox.h> +#include <tqheader.h> +#include <tqradiobutton.h> +#include <tqvbox.h> + +#include <kdialogbase.h> +#include <keditlistbox.h> +#include <kkeydialog.h> +#include <tdelistview.h> +#include <knuminput.h> + +class TDEGlobalAccel; +class KKeyChooser; +class TDEListView; +class TQPushButton; +class TQDialog; +class ConfigDialog; + +class ConfigDialog : public KDialogBase +{ + Q_OBJECT + + public: + ConfigDialog(TDEGlobalAccel *accel, bool isApplet ); + ~ConfigDialog(); + + virtual void show(); + void commitShortcuts(); + + private: + KKeyChooser *keysWidget; + +}; + +#endif // CONFIGDIALOG_H diff --git a/kcontrol/hwmanager/hwdevicetray_main.cpp b/kcontrol/hwmanager/hwdevicetray_main.cpp new file mode 100644 index 000000000..b16f13509 --- /dev/null +++ b/kcontrol/hwmanager/hwdevicetray_main.cpp @@ -0,0 +1,51 @@ +/* + * Copyright 2015 Timothy Pearson <[email protected]> + * + * This file is part of hwdevicetray, the TDE Hardware Device Monitor System Tray Application + * + * hwdevicetray 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 3 + * of the License, or (at your option) any later version. + * + * hwdevicetray 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 cryptocardwatcher. If not, see http://www.gnu.org/licenses/. + */ + +#include <stdlib.h> +#include <kdebug.h> + +#include <tdelocale.h> +#include <tdecmdlineargs.h> +#include <tdeaboutdata.h> +#include <tdeglobal.h> + +#include "hwdevicetray_app.h" + +static const char hwdevicetrayVersion[] = "0.1"; +static const TDECmdLineOptions options[] = +{ + { "login", I18N_NOOP("Application is being auto-started at TDE session start"), 0L }, + TDECmdLineLastOption +}; + +int main(int argc, char **argv) +{ + TDEAboutData aboutData("hwdevicetray", I18N_NOOP("Hardware Device Monitor"), hwdevicetrayVersion, I18N_NOOP("Hardware Device Monitor Tray Application"), TDEAboutData::License_GPL_V3, "(c) 2015 Timothy Pearson", 0L, ""); + aboutData.addAuthor("Timothy Pearson",I18N_NOOP("Initial developer and maintainer"), "[email protected]"); + aboutData.setProductName("hwdevices/hwdevicetray"); + TDEGlobal::locale()->setMainCatalogue("hwdevicetray"); + + TDECmdLineArgs::init(argc,argv,&aboutData); + TDECmdLineArgs::addCmdLineOptions(options); + TDEApplication::addCmdLineOptions(); + + HwDeviceApp app; + + return app.exec(); +} diff --git a/kcontrol/hwmanager/hwmanager.cpp b/kcontrol/hwmanager/hwmanager.cpp index a82daf1be..1cd8b04e0 100644 --- a/kcontrol/hwmanager/hwmanager.cpp +++ b/kcontrol/hwmanager/hwmanager.cpp @@ -42,11 +42,14 @@ #include <kgenericfactory.h> #include <unistd.h> +#include <kpassdlg.h> #include <ksimpleconfig.h> #include <string> #include <stdio.h> #include <tqstring.h> +#include <tdecryptographiccarddevice.h> + #include "hwmanager.h" using namespace std; @@ -144,6 +147,12 @@ void TDEHWManager::populateTreeView() TDEGenericHardwareList hwlist = hwdevices->listByDeviceClass(TDEGenericDeviceType::RootSystem); TDEGenericDevice *hwdevice; for ( hwdevice = hwlist.first(); hwdevice; hwdevice = hwlist.next() ) { + if (hwdevice->type() == TDEGenericDeviceType::CryptographicCard) { + TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); + connect(cdevice, SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*))); + cdevice->enableCardMonitoring(true); + cdevice->enablePINEntryCallbacks(true); + } DeviceIconItem* item = new DeviceIconItem(base->deviceTree, hwdevice->detailedFriendlyName(), hwdevice->icon(base->deviceTree->iconSize()), hwdevice); if ((!selected_syspath.isNull()) && (hwdevice->systemPath() == selected_syspath)) { base->deviceTree->ensureItemVisible(item); @@ -160,6 +169,12 @@ void TDEHWManager::populateTreeView() TDEGenericDevice *hwdevice; TDEGenericHardwareList hwlist = hwdevices->listByDeviceClass((TDEGenericDeviceType::TDEGenericDeviceType)i); for ( hwdevice = hwlist.first(); hwdevice; hwdevice = hwlist.next() ) { + if (hwdevice->type() == TDEGenericDeviceType::CryptographicCard) { + TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); + connect(cdevice, SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*))); + cdevice->enableCardMonitoring(true); + cdevice->enablePINEntryCallbacks(true); + } DeviceIconItem* item = new DeviceIconItem(rootitem, hwdevice->detailedFriendlyName(), hwdevice->icon(base->deviceTree->iconSize()), hwdevice); if ((!selected_syspath.isNull()) && (hwdevice->systemPath() == selected_syspath)) { base->deviceTree->ensureItemVisible(item); @@ -177,6 +192,12 @@ void TDEHWManager::populateTreeViewLeaf(DeviceIconItem *parent, bool show_by_con TDEGenericHardwareList hwlist = hwdevices->listAllPhysicalDevices(); TDEGenericDevice *hwdevice; for ( hwdevice = hwlist.first(); hwdevice; hwdevice = hwlist.next() ) { + if (hwdevice->type() == TDEGenericDeviceType::CryptographicCard) { + TDECryptographicCardDevice* cdevice = static_cast<TDECryptographicCardDevice*>(hwdevice); + connect(cdevice, SIGNAL(pinRequested(TQString,TDECryptographicCardDevice*)), this, SLOT(cryptographicCardPinRequested(TQString,TDECryptographicCardDevice*))); + cdevice->enableCardMonitoring(true); + cdevice->enablePINEntryCallbacks(true); + } if (hwdevice->parentDevice() == parent->device()) { DeviceIconItem* item = new DeviceIconItem(parent, hwdevice->detailedFriendlyName(), hwdevice->icon(base->deviceTree->iconSize()), hwdevice); if ((!selected_syspath.isNull()) && (hwdevice->systemPath() == selected_syspath)) { @@ -207,6 +228,17 @@ void TDEHWManager::deviceChanged(TDEGenericDevice* device) { } } +void TDEHWManager::cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice) { + TQCString password; + int result = KPasswordDialog::getPassword(password, prompt); + if (result == KPasswordDialog::Accepted) { + cdevice->setProvidedPin(password); + } + else { + cdevice->setProvidedPin(TQString::null); + } +} + TQString TDEHWManager::quickHelp() const { return i18n("<h1>TDE Hardware Device Manager</h1> This module allows you to configure hardware devices on your system"); diff --git a/kcontrol/hwmanager/hwmanager.desktop b/kcontrol/hwmanager/hwmanager.desktop index 161c331bd..d0ef60728 100644 --- a/kcontrol/hwmanager/hwmanager.desktop +++ b/kcontrol/hwmanager/hwmanager.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Exec=tdecmshell hwmanager -Icon=background +Icon=hwinfo Type=Application X-DocPath=kcontrol/hwmanager/index.html diff --git a/kcontrol/hwmanager/hwmanager.h b/kcontrol/hwmanager/hwmanager.h index b75a494d9..abc05fa54 100644 --- a/kcontrol/hwmanager/hwmanager.h +++ b/kcontrol/hwmanager/hwmanager.h @@ -61,6 +61,7 @@ private slots: void populateTreeView(); void populateTreeViewLeaf(DeviceIconItem *parent, bool show_by_connection, TQString selected_syspath); void deviceChanged(TDEGenericDevice*); + void cryptographicCardPinRequested(TQString prompt, TDECryptographicCardDevice* cdevice); private: TDEHWManagerBase *base; diff --git a/kcontrol/input/pics/doubleclick_1.png b/kcontrol/input/pics/doubleclick_1.png Binary files differindex 33bfb6618..58e930a5d 100644 --- a/kcontrol/input/pics/doubleclick_1.png +++ b/kcontrol/input/pics/doubleclick_1.png diff --git a/kcontrol/input/pics/doubleclick_2.png b/kcontrol/input/pics/doubleclick_2.png Binary files differindex 4f7a9cd5b..2ff96ec6d 100644 --- a/kcontrol/input/pics/doubleclick_2.png +++ b/kcontrol/input/pics/doubleclick_2.png diff --git a/kcontrol/input/pics/mouse_lh.png b/kcontrol/input/pics/mouse_lh.png Binary files differindex acec7fe85..ce65c7b94 100644 --- a/kcontrol/input/pics/mouse_lh.png +++ b/kcontrol/input/pics/mouse_lh.png diff --git a/kcontrol/input/pics/mouse_rh.png b/kcontrol/input/pics/mouse_rh.png Binary files differindex de5cd8a86..68324c045 100644 --- a/kcontrol/input/pics/mouse_rh.png +++ b/kcontrol/input/pics/mouse_rh.png diff --git a/kcontrol/kcontrol/about/top-right-kcontrol.png b/kcontrol/kcontrol/about/top-right-kcontrol.png Binary files differindex a615af44d..8461f07c8 100644 --- a/kcontrol/kcontrol/about/top-right-kcontrol.png +++ b/kcontrol/kcontrol/about/top-right-kcontrol.png diff --git a/kcontrol/kcontrol/cr128-app-kcontrol.png b/kcontrol/kcontrol/cr128-app-kcontrol.png Binary files differindex 99a89e323..db7c6a6da 100644 --- a/kcontrol/kcontrol/cr128-app-kcontrol.png +++ b/kcontrol/kcontrol/cr128-app-kcontrol.png diff --git a/kcontrol/kcontrol/cr16-app-kcontrol.png b/kcontrol/kcontrol/cr16-app-kcontrol.png Binary files differindex 64bf8b71d..ea9f091ce 100644 --- a/kcontrol/kcontrol/cr16-app-kcontrol.png +++ b/kcontrol/kcontrol/cr16-app-kcontrol.png diff --git a/kcontrol/kcontrol/cr32-app-kcontrol.png b/kcontrol/kcontrol/cr32-app-kcontrol.png Binary files differindex 6537ba75e..0d95d9fa8 100644 --- a/kcontrol/kcontrol/cr32-app-kcontrol.png +++ b/kcontrol/kcontrol/cr32-app-kcontrol.png diff --git a/kcontrol/kcontrol/cr48-app-kcontrol.png b/kcontrol/kcontrol/cr48-app-kcontrol.png Binary files differindex bde85be5f..97d3d3c2d 100644 --- a/kcontrol/kcontrol/cr48-app-kcontrol.png +++ b/kcontrol/kcontrol/cr48-app-kcontrol.png diff --git a/kcontrol/kcontrol/cr64-app-kcontrol.png b/kcontrol/kcontrol/cr64-app-kcontrol.png Binary files differindex 4d4db5d65..9d5d0bd17 100644 --- a/kcontrol/kcontrol/cr64-app-kcontrol.png +++ b/kcontrol/kcontrol/cr64-app-kcontrol.png diff --git a/kcontrol/knotify/play.png b/kcontrol/knotify/play.png Binary files differindex e0daeb8c9..abc81b29c 100644 --- a/kcontrol/knotify/play.png +++ b/kcontrol/knotify/play.png diff --git a/kcontrol/konq/onlyone.png b/kcontrol/konq/onlyone.png Binary files differindex 7033763f3..4b4ad273d 100644 --- a/kcontrol/konq/onlyone.png +++ b/kcontrol/konq/onlyone.png diff --git a/kcontrol/konq/overlapping.png b/kcontrol/konq/overlapping.png Binary files differindex 145234576..833c893c7 100644 --- a/kcontrol/konq/overlapping.png +++ b/kcontrol/konq/overlapping.png diff --git a/kcontrol/konq/previews.cpp b/kcontrol/konq/previews.cpp index 1f7bf85c4..3b2349fc7 100644 --- a/kcontrol/konq/previews.cpp +++ b/kcontrol/konq/previews.cpp @@ -126,8 +126,8 @@ KPreviewOptions::KPreviewOptions( TQWidget *parent, const char */*name*/ ) m_maxSize = new KDoubleNumInput( this ); m_maxSize->setSuffix( i18n(" MB") ); - m_maxSize->setRange( 0.02, 10, 0.02, true ); m_maxSize->setPrecision( 1 ); + m_maxSize->setRange( 0.2, 100, 0.2, true ); label->setBuddy( m_maxSize ); lay->addWidget( m_maxSize ); connect( m_maxSize, TQT_SIGNAL( valueChanged(double) ), TQT_SLOT( changed() ) ); diff --git a/kcontrol/krdb/ad/WPerfect.ad b/kcontrol/krdb/ad/WPerfect.ad index f005d8452..ed9da05b2 100644 --- a/kcontrol/krdb/ad/WPerfect.ad +++ b/kcontrol/krdb/ad/WPerfect.ad @@ -41,8 +41,7 @@ WPFMShell*XmDialogShell*XmTextField*foreground: WINDOW_FOREGROUND XWp*XmDialogShell*background: BACKGROUND XWp*XmDialogShell*XmScrolledWindow*XmDrawingArea.background: WINDOW_BACKGROUND WPFMShell*XmDialogShell*background: WINDOW_BACKGROUND -WPFMShell*XmDialogShell*XmScrolledWindow*XmDrawingArea.background: -WINDOW_BACKGROUND +WPFMShell*XmDialogShell*XmScrolledWindow*XmDrawingArea.background: WINDOW_BACKGROUND XWp*XmDialogShell*XmDrawingArea.background: WINDOW_BACKGROUND XWp*XmDialogShell*XmList*background: WINDOW_BACKGROUND XWp*XmDialogShell*XmText*background: WINDOW_BACKGROUND diff --git a/kcontrol/krdb/krdb.cpp b/kcontrol/krdb/krdb.cpp index a1543a320..d01bd998e 100644 --- a/kcontrol/krdb/krdb.cpp +++ b/kcontrol/krdb/krdb.cpp @@ -558,9 +558,9 @@ void runRdb( uint flags ) TDEProcess proc; #ifndef NDEBUG - proc << "xrdb" << "-merge" << "-nocpp" << tmpFile.name(); + proc << "xrdb" << "-merge" << tmpFile.name(); #else - proc << "xrdb" << "-quiet" << "-merge" << "-nocpp" << tmpFile.name(); + proc << "xrdb" << "-quiet" << "-merge" << tmpFile.name(); #endif proc.start( TDEProcess::Block, TDEProcess::Stdin ); diff --git a/kcontrol/krdb/pics/lo-energy.png b/kcontrol/krdb/pics/lo-energy.png Binary files differindex c30be6021..a97c605ef 100644 --- a/kcontrol/krdb/pics/lo-energy.png +++ b/kcontrol/krdb/pics/lo-energy.png diff --git a/kcontrol/krdb/pics/logo.png b/kcontrol/krdb/pics/logo.png Binary files differindex 126a0032a..65ea9c7d7 100644 --- a/kcontrol/krdb/pics/logo.png +++ b/kcontrol/krdb/pics/logo.png diff --git a/kcontrol/krdb/pics/mini-world.png b/kcontrol/krdb/pics/mini-world.png Binary files differindex eae412a41..94abeba38 100644 --- a/kcontrol/krdb/pics/mini-world.png +++ b/kcontrol/krdb/pics/mini-world.png diff --git a/kcontrol/krdb/themes/HighContrastDark-big/HighContrastDark-big.preview.png b/kcontrol/krdb/themes/HighContrastDark-big/HighContrastDark-big.preview.png Binary files differindex f91c2521c..01f917cfa 100644 --- a/kcontrol/krdb/themes/HighContrastDark-big/HighContrastDark-big.preview.png +++ b/kcontrol/krdb/themes/HighContrastDark-big/HighContrastDark-big.preview.png diff --git a/kcontrol/krdb/themes/HighContrastDark/HighContrastDark.preview.png b/kcontrol/krdb/themes/HighContrastDark/HighContrastDark.preview.png Binary files differindex d8a33765e..10f62c473 100644 --- a/kcontrol/krdb/themes/HighContrastDark/HighContrastDark.preview.png +++ b/kcontrol/krdb/themes/HighContrastDark/HighContrastDark.preview.png diff --git a/kcontrol/krdb/themes/HighContrastLight-big/HighContrastLight-big.preview.png b/kcontrol/krdb/themes/HighContrastLight-big/HighContrastLight-big.preview.png Binary files differindex f013c23e0..3e325ff16 100644 --- a/kcontrol/krdb/themes/HighContrastLight-big/HighContrastLight-big.preview.png +++ b/kcontrol/krdb/themes/HighContrastLight-big/HighContrastLight-big.preview.png diff --git a/kcontrol/krdb/themes/HighContrastLight/HighContrastLight.preview.png b/kcontrol/krdb/themes/HighContrastLight/HighContrastLight.preview.png Binary files differindex 1cf565b2e..0a1ccf1cf 100644 --- a/kcontrol/krdb/themes/HighContrastLight/HighContrastLight.preview.png +++ b/kcontrol/krdb/themes/HighContrastLight/HighContrastLight.preview.png diff --git a/kcontrol/krdb/themes/KDE_Classic/KDE_Classic.preview.png b/kcontrol/krdb/themes/KDE_Classic/KDE_Classic.preview.png Binary files differindex 68599985a..eac818419 100644 --- a/kcontrol/krdb/themes/KDE_Classic/KDE_Classic.preview.png +++ b/kcontrol/krdb/themes/KDE_Classic/KDE_Classic.preview.png diff --git a/kcontrol/krdb/themes/Keramik/Keramik.preview.png b/kcontrol/krdb/themes/Keramik/Keramik.preview.png Binary files differindex 8614bb20b..649431e5e 100644 --- a/kcontrol/krdb/themes/Keramik/Keramik.preview.png +++ b/kcontrol/krdb/themes/Keramik/Keramik.preview.png diff --git a/kcontrol/krdb/themes/Plastik/Plastik.preview.png b/kcontrol/krdb/themes/Plastik/Plastik.preview.png Binary files differindex a8801c28f..f9ed5329d 100644 --- a/kcontrol/krdb/themes/Plastik/Plastik.preview.png +++ b/kcontrol/krdb/themes/Plastik/Plastik.preview.png diff --git a/kcontrol/krdb/themes/Platinum/Platinum.preview.png b/kcontrol/krdb/themes/Platinum/Platinum.preview.png Binary files differindex da45cccb9..0b6215e73 100644 --- a/kcontrol/krdb/themes/Platinum/Platinum.preview.png +++ b/kcontrol/krdb/themes/Platinum/Platinum.preview.png diff --git a/kcontrol/krdb/themes/Redmond/Redmond.preview.png b/kcontrol/krdb/themes/Redmond/Redmond.preview.png Binary files differindex 2e180b33d..cea6d9250 100644 --- a/kcontrol/krdb/themes/Redmond/Redmond.preview.png +++ b/kcontrol/krdb/themes/Redmond/Redmond.preview.png diff --git a/kcontrol/krdb/themes/Sunshine/Sunshine.preview.png b/kcontrol/krdb/themes/Sunshine/Sunshine.preview.png Binary files differindex eee57c71e..bbeb94462 100644 --- a/kcontrol/krdb/themes/Sunshine/Sunshine.preview.png +++ b/kcontrol/krdb/themes/Sunshine/Sunshine.preview.png diff --git a/kcontrol/krdb/themes/YellowOnBlue-big/YellowOnBlue-big.preview.png b/kcontrol/krdb/themes/YellowOnBlue-big/YellowOnBlue-big.preview.png Binary files differindex d68507d42..f0d673233 100644 --- a/kcontrol/krdb/themes/YellowOnBlue-big/YellowOnBlue-big.preview.png +++ b/kcontrol/krdb/themes/YellowOnBlue-big/YellowOnBlue-big.preview.png diff --git a/kcontrol/krdb/themes/YellowOnBlue/YellowOnBlue.preview.png b/kcontrol/krdb/themes/YellowOnBlue/YellowOnBlue.preview.png Binary files differindex 874d10738..9a4953c30 100644 --- a/kcontrol/krdb/themes/YellowOnBlue/YellowOnBlue.preview.png +++ b/kcontrol/krdb/themes/YellowOnBlue/YellowOnBlue.preview.png diff --git a/kcontrol/locale/pics/background.png b/kcontrol/locale/pics/background.png Binary files differindex d9d64462b..c1511734d 100644 --- a/kcontrol/locale/pics/background.png +++ b/kcontrol/locale/pics/background.png diff --git a/kcontrol/pics/cr128-app-access.png b/kcontrol/pics/cr128-app-access.png Binary files differindex 5405523ea..4aa25a496 100644 --- a/kcontrol/pics/cr128-app-access.png +++ b/kcontrol/pics/cr128-app-access.png diff --git a/kcontrol/pics/cr128-app-arts.png b/kcontrol/pics/cr128-app-arts.png Binary files differindex d22e0e65d..a50216403 100644 --- a/kcontrol/pics/cr128-app-arts.png +++ b/kcontrol/pics/cr128-app-arts.png diff --git a/kcontrol/pics/cr128-app-background.png b/kcontrol/pics/cr128-app-background.png Binary files differindex d18790b09..3aff44a08 100644 --- a/kcontrol/pics/cr128-app-background.png +++ b/kcontrol/pics/cr128-app-background.png diff --git a/kcontrol/pics/cr128-app-bell.png b/kcontrol/pics/cr128-app-bell.png Binary files differindex 530fbf64a..4f5e7d966 100644 --- a/kcontrol/pics/cr128-app-bell.png +++ b/kcontrol/pics/cr128-app-bell.png diff --git a/kcontrol/pics/cr128-app-cache.png b/kcontrol/pics/cr128-app-cache.png Binary files differindex f9261381d..b7e2849f2 100644 --- a/kcontrol/pics/cr128-app-cache.png +++ b/kcontrol/pics/cr128-app-cache.png diff --git a/kcontrol/pics/cr128-app-clock.png b/kcontrol/pics/cr128-app-clock.png Binary files differindex 692b0502e..f68e5ab99 100644 --- a/kcontrol/pics/cr128-app-clock.png +++ b/kcontrol/pics/cr128-app-clock.png diff --git a/kcontrol/pics/cr128-app-colors.png b/kcontrol/pics/cr128-app-colors.png Binary files differindex 2f6bf1640..79661b26a 100644 --- a/kcontrol/pics/cr128-app-colors.png +++ b/kcontrol/pics/cr128-app-colors.png diff --git a/kcontrol/pics/cr128-app-date.png b/kcontrol/pics/cr128-app-date.png Binary files differindex 1e34bb233..6455baabd 100644 --- a/kcontrol/pics/cr128-app-date.png +++ b/kcontrol/pics/cr128-app-date.png diff --git a/kcontrol/pics/cr128-app-energy.png b/kcontrol/pics/cr128-app-energy.png Binary files differindex 4186ee48d..83d31aeae 100644 --- a/kcontrol/pics/cr128-app-energy.png +++ b/kcontrol/pics/cr128-app-energy.png diff --git a/kcontrol/pics/cr128-app-energy_star.png b/kcontrol/pics/cr128-app-energy_star.png Binary files differindex d9460449c..35bd263c7 100644 --- a/kcontrol/pics/cr128-app-energy_star.png +++ b/kcontrol/pics/cr128-app-energy_star.png diff --git a/kcontrol/pics/cr128-app-filetypes.png b/kcontrol/pics/cr128-app-filetypes.png Binary files differindex 144482335..b0576bb2f 100644 --- a/kcontrol/pics/cr128-app-filetypes.png +++ b/kcontrol/pics/cr128-app-filetypes.png diff --git a/kcontrol/pics/cr128-app-fonts.png b/kcontrol/pics/cr128-app-fonts.png Binary files differindex f859e33e7..14f8be7e8 100644 --- a/kcontrol/pics/cr128-app-fonts.png +++ b/kcontrol/pics/cr128-app-fonts.png diff --git a/kcontrol/pics/cr128-app-help_index.png b/kcontrol/pics/cr128-app-help_index.png Binary files differindex 9a1ee3fe5..4552ad675 100644 --- a/kcontrol/pics/cr128-app-help_index.png +++ b/kcontrol/pics/cr128-app-help_index.png diff --git a/kcontrol/pics/cr128-app-hwinfo.png b/kcontrol/pics/cr128-app-hwinfo.png Binary files differindex d7a3052c5..a3959759a 100644 --- a/kcontrol/pics/cr128-app-hwinfo.png +++ b/kcontrol/pics/cr128-app-hwinfo.png diff --git a/kcontrol/pics/cr128-app-kcmdevices.png b/kcontrol/pics/cr128-app-kcmdevices.png Binary files differindex 0dd12a56a..2aab3160b 100644 --- a/kcontrol/pics/cr128-app-kcmdevices.png +++ b/kcontrol/pics/cr128-app-kcmdevices.png diff --git a/kcontrol/pics/cr128-app-kcmdf.png b/kcontrol/pics/cr128-app-kcmdf.png Binary files differindex cbec02996..ab1d996eb 100644 --- a/kcontrol/pics/cr128-app-kcmdf.png +++ b/kcontrol/pics/cr128-app-kcmdf.png diff --git a/kcontrol/pics/cr128-app-kcmkwm.png b/kcontrol/pics/cr128-app-kcmkwm.png Binary files differindex 710167623..e7278ae4d 100644 --- a/kcontrol/pics/cr128-app-kcmkwm.png +++ b/kcontrol/pics/cr128-app-kcmkwm.png diff --git a/kcontrol/pics/cr128-app-kcmmemory.png b/kcontrol/pics/cr128-app-kcmmemory.png Binary files differindex 8088fef9b..fcab66fdf 100644 --- a/kcontrol/pics/cr128-app-kcmmemory.png +++ b/kcontrol/pics/cr128-app-kcmmemory.png diff --git a/kcontrol/pics/cr128-app-kcmpartitions.png b/kcontrol/pics/cr128-app-kcmpartitions.png Binary files differindex 627c52fe7..e9a76dec8 100644 --- a/kcontrol/pics/cr128-app-kcmpartitions.png +++ b/kcontrol/pics/cr128-app-kcmpartitions.png diff --git a/kcontrol/pics/cr128-app-kcmpci.png b/kcontrol/pics/cr128-app-kcmpci.png Binary files differindex efed93129..3d8340ba5 100644 --- a/kcontrol/pics/cr128-app-kcmpci.png +++ b/kcontrol/pics/cr128-app-kcmpci.png diff --git a/kcontrol/pics/cr128-app-key_bindings.png b/kcontrol/pics/cr128-app-key_bindings.png Binary files differindex 4c24fa0e4..cef5d73d9 100644 --- a/kcontrol/pics/cr128-app-key_bindings.png +++ b/kcontrol/pics/cr128-app-key_bindings.png diff --git a/kcontrol/pics/cr128-app-kthememgr.png b/kcontrol/pics/cr128-app-kthememgr.png Binary files differindex 8c496e5d3..040cc1850 100644 --- a/kcontrol/pics/cr128-app-kthememgr.png +++ b/kcontrol/pics/cr128-app-kthememgr.png diff --git a/kcontrol/pics/cr128-app-locale.png b/kcontrol/pics/cr128-app-locale.png Binary files differindex 25403acc9..223d00838 100644 --- a/kcontrol/pics/cr128-app-locale.png +++ b/kcontrol/pics/cr128-app-locale.png diff --git a/kcontrol/pics/cr128-app-multimedia.png b/kcontrol/pics/cr128-app-multimedia.png Binary files differindex 5543818ba..e9a8edf92 100644 --- a/kcontrol/pics/cr128-app-multimedia.png +++ b/kcontrol/pics/cr128-app-multimedia.png diff --git a/kcontrol/pics/cr128-app-proxy.png b/kcontrol/pics/cr128-app-proxy.png Binary files differindex ec18d5a92..30837c888 100644 --- a/kcontrol/pics/cr128-app-proxy.png +++ b/kcontrol/pics/cr128-app-proxy.png diff --git a/kcontrol/pics/cr128-app-samba.png b/kcontrol/pics/cr128-app-samba.png Binary files differindex e4867d188..e8fed2a0f 100644 --- a/kcontrol/pics/cr128-app-samba.png +++ b/kcontrol/pics/cr128-app-samba.png diff --git a/kcontrol/pics/cr128-app-stylesheet.png b/kcontrol/pics/cr128-app-stylesheet.png Binary files differindex bc911a9c9..9c2f2408c 100644 --- a/kcontrol/pics/cr128-app-stylesheet.png +++ b/kcontrol/pics/cr128-app-stylesheet.png diff --git a/kcontrol/pics/cr128-app-tdescreensaver.png b/kcontrol/pics/cr128-app-tdescreensaver.png Binary files differindex e8f036fe3..0384dfb82 100644 --- a/kcontrol/pics/cr128-app-tdescreensaver.png +++ b/kcontrol/pics/cr128-app-tdescreensaver.png diff --git a/kcontrol/pics/cr128-app-tdmconfig.png b/kcontrol/pics/cr128-app-tdmconfig.png Binary files differindex f28f704f7..3dd4cb1a9 100644 --- a/kcontrol/pics/cr128-app-tdmconfig.png +++ b/kcontrol/pics/cr128-app-tdmconfig.png diff --git a/kcontrol/pics/cr128-category-preferences-desktop-personal.png b/kcontrol/pics/cr128-category-preferences-desktop-personal.png Binary files differindex 9e033dfcc..c4359f07b 100644 --- a/kcontrol/pics/cr128-category-preferences-desktop-personal.png +++ b/kcontrol/pics/cr128-category-preferences-desktop-personal.png diff --git a/kcontrol/pics/cr128-category-preferences-desktop.png b/kcontrol/pics/cr128-category-preferences-desktop.png Binary files differindex cd1a36b9a..9eebb8a0b 100644 --- a/kcontrol/pics/cr128-category-preferences-desktop.png +++ b/kcontrol/pics/cr128-category-preferences-desktop.png diff --git a/kcontrol/pics/cr128-device-laptop.png b/kcontrol/pics/cr128-device-laptop.png Binary files differindex 0fef41bc3..a3378c7a7 100644 --- a/kcontrol/pics/cr128-device-laptop.png +++ b/kcontrol/pics/cr128-device-laptop.png diff --git a/kcontrol/pics/cr16-app-access.png b/kcontrol/pics/cr16-app-access.png Binary files differindex a952d7786..c62db119a 100644 --- a/kcontrol/pics/cr16-app-access.png +++ b/kcontrol/pics/cr16-app-access.png diff --git a/kcontrol/pics/cr16-app-agent.png b/kcontrol/pics/cr16-app-agent.png Binary files differindex 9826d3457..013e21c49 100644 --- a/kcontrol/pics/cr16-app-agent.png +++ b/kcontrol/pics/cr16-app-agent.png diff --git a/kcontrol/pics/cr16-app-arts.png b/kcontrol/pics/cr16-app-arts.png Binary files differindex cc030d391..7716d5347 100644 --- a/kcontrol/pics/cr16-app-arts.png +++ b/kcontrol/pics/cr16-app-arts.png diff --git a/kcontrol/pics/cr16-app-background.png b/kcontrol/pics/cr16-app-background.png Binary files differindex 8645b601b..63a893333 100644 --- a/kcontrol/pics/cr16-app-background.png +++ b/kcontrol/pics/cr16-app-background.png diff --git a/kcontrol/pics/cr16-app-bell.png b/kcontrol/pics/cr16-app-bell.png Binary files differindex 188410853..9dd4cac12 100644 --- a/kcontrol/pics/cr16-app-bell.png +++ b/kcontrol/pics/cr16-app-bell.png diff --git a/kcontrol/pics/cr16-app-cache.png b/kcontrol/pics/cr16-app-cache.png Binary files differindex 9d3f243ab..4b3566714 100644 --- a/kcontrol/pics/cr16-app-cache.png +++ b/kcontrol/pics/cr16-app-cache.png diff --git a/kcontrol/pics/cr16-app-clock.png b/kcontrol/pics/cr16-app-clock.png Binary files differindex dca2c7ef8..799514b91 100644 --- a/kcontrol/pics/cr16-app-clock.png +++ b/kcontrol/pics/cr16-app-clock.png diff --git a/kcontrol/pics/cr16-app-colors.png b/kcontrol/pics/cr16-app-colors.png Binary files differindex c0a67bb90..f7b63e2ec 100644 --- a/kcontrol/pics/cr16-app-colors.png +++ b/kcontrol/pics/cr16-app-colors.png diff --git a/kcontrol/pics/cr16-app-cookie.png b/kcontrol/pics/cr16-app-cookie.png Binary files differindex 16617b9f4..0054f4711 100644 --- a/kcontrol/pics/cr16-app-cookie.png +++ b/kcontrol/pics/cr16-app-cookie.png diff --git a/kcontrol/pics/cr16-app-date.png b/kcontrol/pics/cr16-app-date.png Binary files differindex fbf29f521..6025df129 100644 --- a/kcontrol/pics/cr16-app-date.png +++ b/kcontrol/pics/cr16-app-date.png diff --git a/kcontrol/pics/cr16-app-energy.png b/kcontrol/pics/cr16-app-energy.png Binary files differindex ebad43996..489e7149c 100644 --- a/kcontrol/pics/cr16-app-energy.png +++ b/kcontrol/pics/cr16-app-energy.png diff --git a/kcontrol/pics/cr16-app-energy_star.png b/kcontrol/pics/cr16-app-energy_star.png Binary files differindex 52507f80a..f13297d75 100644 --- a/kcontrol/pics/cr16-app-energy_star.png +++ b/kcontrol/pics/cr16-app-energy_star.png diff --git a/kcontrol/pics/cr16-app-enhanced_browsing.png b/kcontrol/pics/cr16-app-enhanced_browsing.png Binary files differindex d9023041c..822449072 100644 --- a/kcontrol/pics/cr16-app-enhanced_browsing.png +++ b/kcontrol/pics/cr16-app-enhanced_browsing.png diff --git a/kcontrol/pics/cr16-app-filetypes.png b/kcontrol/pics/cr16-app-filetypes.png Binary files differindex e6d7266cf..18d419e99 100644 --- a/kcontrol/pics/cr16-app-filetypes.png +++ b/kcontrol/pics/cr16-app-filetypes.png diff --git a/kcontrol/pics/cr16-app-fonts.png b/kcontrol/pics/cr16-app-fonts.png Binary files differindex 78d71d03a..c9aa86201 100644 --- a/kcontrol/pics/cr16-app-fonts.png +++ b/kcontrol/pics/cr16-app-fonts.png diff --git a/kcontrol/pics/cr16-app-help_index.png b/kcontrol/pics/cr16-app-help_index.png Binary files differindex 1cb23431b..5b9b8c0fc 100644 --- a/kcontrol/pics/cr16-app-help_index.png +++ b/kcontrol/pics/cr16-app-help_index.png diff --git a/kcontrol/pics/cr16-app-hwinfo.png b/kcontrol/pics/cr16-app-hwinfo.png Binary files differindex 99889980d..730057b36 100644 --- a/kcontrol/pics/cr16-app-hwinfo.png +++ b/kcontrol/pics/cr16-app-hwinfo.png diff --git a/kcontrol/pics/cr16-app-icons.png b/kcontrol/pics/cr16-app-icons.png Binary files differindex 10d2a2d63..b3a9c31b7 100644 --- a/kcontrol/pics/cr16-app-icons.png +++ b/kcontrol/pics/cr16-app-icons.png diff --git a/kcontrol/pics/cr16-app-iconthemes.png b/kcontrol/pics/cr16-app-iconthemes.png Binary files differindex 4a9081564..aeedbb31a 100644 --- a/kcontrol/pics/cr16-app-iconthemes.png +++ b/kcontrol/pics/cr16-app-iconthemes.png diff --git a/kcontrol/pics/cr16-app-ieee1394.png b/kcontrol/pics/cr16-app-ieee1394.png Binary files differindex b7cec0007..320a63331 100644 --- a/kcontrol/pics/cr16-app-ieee1394.png +++ b/kcontrol/pics/cr16-app-ieee1394.png diff --git a/kcontrol/pics/cr16-app-kcmdevices.png b/kcontrol/pics/cr16-app-kcmdevices.png Binary files differindex c7c34a1a7..60625e1c8 100644 --- a/kcontrol/pics/cr16-app-kcmdevices.png +++ b/kcontrol/pics/cr16-app-kcmdevices.png diff --git a/kcontrol/pics/cr16-app-kcmkicker.png b/kcontrol/pics/cr16-app-kcmkicker.png Binary files differindex 0d04030fc..2331a29e0 100644 --- a/kcontrol/pics/cr16-app-kcmkicker.png +++ b/kcontrol/pics/cr16-app-kcmkicker.png diff --git a/kcontrol/pics/cr16-app-kcmkwm.png b/kcontrol/pics/cr16-app-kcmkwm.png Binary files differindex 775b96556..6bc50e3b8 100644 --- a/kcontrol/pics/cr16-app-kcmkwm.png +++ b/kcontrol/pics/cr16-app-kcmkwm.png diff --git a/kcontrol/pics/cr16-app-kcmmemory.png b/kcontrol/pics/cr16-app-kcmmemory.png Binary files differindex 6ddeddb68..55f23b7bc 100644 --- a/kcontrol/pics/cr16-app-kcmmemory.png +++ b/kcontrol/pics/cr16-app-kcmmemory.png diff --git a/kcontrol/pics/cr16-app-kcmmidi.png b/kcontrol/pics/cr16-app-kcmmidi.png Binary files differindex 4283b35f3..433e6ebab 100644 --- a/kcontrol/pics/cr16-app-kcmmidi.png +++ b/kcontrol/pics/cr16-app-kcmmidi.png diff --git a/kcontrol/pics/cr16-app-kcmpartitions.png b/kcontrol/pics/cr16-app-kcmpartitions.png Binary files differindex 5b6eb8764..ac33cc6a9 100644 --- a/kcontrol/pics/cr16-app-kcmpartitions.png +++ b/kcontrol/pics/cr16-app-kcmpartitions.png diff --git a/kcontrol/pics/cr16-app-kcmpci.png b/kcontrol/pics/cr16-app-kcmpci.png Binary files differindex 0ac401c6f..f7a607e12 100644 --- a/kcontrol/pics/cr16-app-kcmpci.png +++ b/kcontrol/pics/cr16-app-kcmpci.png diff --git a/kcontrol/pics/cr16-app-kcmprocessor.png b/kcontrol/pics/cr16-app-kcmprocessor.png Binary files differindex b7dc9b4d1..d87670dbc 100644 --- a/kcontrol/pics/cr16-app-kcmprocessor.png +++ b/kcontrol/pics/cr16-app-kcmprocessor.png diff --git a/kcontrol/pics/cr16-app-kcmscsi.png b/kcontrol/pics/cr16-app-kcmscsi.png Binary files differindex 2ac53532a..bfb82fd73 100644 --- a/kcontrol/pics/cr16-app-kcmscsi.png +++ b/kcontrol/pics/cr16-app-kcmscsi.png diff --git a/kcontrol/pics/cr16-app-kcmsound.png b/kcontrol/pics/cr16-app-kcmsound.png Binary files differindex dbf51d203..df9e473ca 100644 --- a/kcontrol/pics/cr16-app-kcmsound.png +++ b/kcontrol/pics/cr16-app-kcmsound.png diff --git a/kcontrol/pics/cr16-app-kcmx.png b/kcontrol/pics/cr16-app-kcmx.png Binary files differindex 29ea2da85..d31bb3f68 100644 --- a/kcontrol/pics/cr16-app-kcmx.png +++ b/kcontrol/pics/cr16-app-kcmx.png diff --git a/kcontrol/pics/cr16-app-key_bindings.png b/kcontrol/pics/cr16-app-key_bindings.png Binary files differindex 26266f1b1..151c13213 100644 --- a/kcontrol/pics/cr16-app-key_bindings.png +++ b/kcontrol/pics/cr16-app-key_bindings.png diff --git a/kcontrol/pics/cr16-app-keyboard.png b/kcontrol/pics/cr16-app-keyboard.png Binary files differindex 198d20221..e102dd721 100644 --- a/kcontrol/pics/cr16-app-keyboard.png +++ b/kcontrol/pics/cr16-app-keyboard.png diff --git a/kcontrol/pics/cr16-app-keyboard_layout.png b/kcontrol/pics/cr16-app-keyboard_layout.png Binary files differindex efbbcda82..4d86966ba 100644 --- a/kcontrol/pics/cr16-app-keyboard_layout.png +++ b/kcontrol/pics/cr16-app-keyboard_layout.png diff --git a/kcontrol/pics/cr16-app-knotify.png b/kcontrol/pics/cr16-app-knotify.png Binary files differindex a893d6229..338f9b957 100644 --- a/kcontrol/pics/cr16-app-knotify.png +++ b/kcontrol/pics/cr16-app-knotify.png diff --git a/kcontrol/pics/cr16-app-kthememgr.png b/kcontrol/pics/cr16-app-kthememgr.png Binary files differindex 2b3588a05..91a4faae9 100644 --- a/kcontrol/pics/cr16-app-kthememgr.png +++ b/kcontrol/pics/cr16-app-kthememgr.png diff --git a/kcontrol/pics/cr16-app-locale.png b/kcontrol/pics/cr16-app-locale.png Binary files differindex 0dfece4d3..448a18e65 100644 --- a/kcontrol/pics/cr16-app-locale.png +++ b/kcontrol/pics/cr16-app-locale.png diff --git a/kcontrol/pics/cr16-app-multimedia.png b/kcontrol/pics/cr16-app-multimedia.png Binary files differindex d2bf93a19..91a2281ac 100644 --- a/kcontrol/pics/cr16-app-multimedia.png +++ b/kcontrol/pics/cr16-app-multimedia.png diff --git a/kcontrol/pics/cr16-app-panel_settings.png b/kcontrol/pics/cr16-app-panel_settings.png Binary files differindex e66dd216a..7df91bed1 100644 --- a/kcontrol/pics/cr16-app-panel_settings.png +++ b/kcontrol/pics/cr16-app-panel_settings.png diff --git a/kcontrol/pics/cr16-app-proxy.png b/kcontrol/pics/cr16-app-proxy.png Binary files differindex 69f8bb745..1ca125153 100644 --- a/kcontrol/pics/cr16-app-proxy.png +++ b/kcontrol/pics/cr16-app-proxy.png diff --git a/kcontrol/pics/cr16-app-samba.png b/kcontrol/pics/cr16-app-samba.png Binary files differindex 3d2e6885a..988591c5e 100644 --- a/kcontrol/pics/cr16-app-samba.png +++ b/kcontrol/pics/cr16-app-samba.png diff --git a/kcontrol/pics/cr16-app-style.png b/kcontrol/pics/cr16-app-style.png Binary files differindex b727f8f60..e56f46c3f 100644 --- a/kcontrol/pics/cr16-app-style.png +++ b/kcontrol/pics/cr16-app-style.png diff --git a/kcontrol/pics/cr16-app-stylesheet.png b/kcontrol/pics/cr16-app-stylesheet.png Binary files differindex 6fdea61e2..ce78d34a3 100644 --- a/kcontrol/pics/cr16-app-stylesheet.png +++ b/kcontrol/pics/cr16-app-stylesheet.png diff --git a/kcontrol/pics/cr16-app-tdescreensaver.png b/kcontrol/pics/cr16-app-tdescreensaver.png Binary files differindex 200fe3dcc..39c57ea46 100644 --- a/kcontrol/pics/cr16-app-tdescreensaver.png +++ b/kcontrol/pics/cr16-app-tdescreensaver.png diff --git a/kcontrol/pics/cr16-app-tdmconfig.png b/kcontrol/pics/cr16-app-tdmconfig.png Binary files differindex 8f69e2b99..8f94a3ffc 100644 --- a/kcontrol/pics/cr16-app-tdmconfig.png +++ b/kcontrol/pics/cr16-app-tdmconfig.png diff --git a/kcontrol/pics/cr16-app-usb.png b/kcontrol/pics/cr16-app-usb.png Binary files differindex b772ba541..b3b25f1fa 100644 --- a/kcontrol/pics/cr16-app-usb.png +++ b/kcontrol/pics/cr16-app-usb.png diff --git a/kcontrol/pics/cr16-category-preferences-desktop-peripherals.png b/kcontrol/pics/cr16-category-preferences-desktop-peripherals.png Binary files differindex 18b3f92eb..2646c7a18 100644 --- a/kcontrol/pics/cr16-category-preferences-desktop-peripherals.png +++ b/kcontrol/pics/cr16-category-preferences-desktop-peripherals.png diff --git a/kcontrol/pics/cr16-category-preferences-desktop-personal.png b/kcontrol/pics/cr16-category-preferences-desktop-personal.png Binary files differindex 83e5b318b..6a1402e08 100644 --- a/kcontrol/pics/cr16-category-preferences-desktop-personal.png +++ b/kcontrol/pics/cr16-category-preferences-desktop-personal.png diff --git a/kcontrol/pics/cr16-category-preferences-desktop.png b/kcontrol/pics/cr16-category-preferences-desktop.png Binary files differindex fb4181004..fd965f4b3 100644 --- a/kcontrol/pics/cr16-category-preferences-desktop.png +++ b/kcontrol/pics/cr16-category-preferences-desktop.png diff --git a/kcontrol/pics/cr16-category-preferences-system.png b/kcontrol/pics/cr16-category-preferences-system.png Binary files differindex b97bfb434..b41c29633 100644 --- a/kcontrol/pics/cr16-category-preferences-system.png +++ b/kcontrol/pics/cr16-category-preferences-system.png diff --git a/kcontrol/pics/cr16-device-laptop.png b/kcontrol/pics/cr16-device-laptop.png Binary files differindex 9e221e632..5d5c97795 100644 --- a/kcontrol/pics/cr16-device-laptop.png +++ b/kcontrol/pics/cr16-device-laptop.png diff --git a/kcontrol/pics/cr22-app-access.png b/kcontrol/pics/cr22-app-access.png Binary files differindex ba7027a14..e6c53f3e3 100644 --- a/kcontrol/pics/cr22-app-access.png +++ b/kcontrol/pics/cr22-app-access.png diff --git a/kcontrol/pics/cr22-app-arts.png b/kcontrol/pics/cr22-app-arts.png Binary files differindex 2a1a4ceb0..fc5d462a4 100644 --- a/kcontrol/pics/cr22-app-arts.png +++ b/kcontrol/pics/cr22-app-arts.png diff --git a/kcontrol/pics/cr22-app-background.png b/kcontrol/pics/cr22-app-background.png Binary files differindex 3f742a847..d4eaaaa89 100644 --- a/kcontrol/pics/cr22-app-background.png +++ b/kcontrol/pics/cr22-app-background.png diff --git a/kcontrol/pics/cr22-app-bell.png b/kcontrol/pics/cr22-app-bell.png Binary files differindex f4dd1afd5..2746eefd2 100644 --- a/kcontrol/pics/cr22-app-bell.png +++ b/kcontrol/pics/cr22-app-bell.png diff --git a/kcontrol/pics/cr22-app-cache.png b/kcontrol/pics/cr22-app-cache.png Binary files differindex 509009956..aaa56df55 100644 --- a/kcontrol/pics/cr22-app-cache.png +++ b/kcontrol/pics/cr22-app-cache.png diff --git a/kcontrol/pics/cr22-app-colors.png b/kcontrol/pics/cr22-app-colors.png Binary files differindex 84fb0b922..4d94f4ccf 100644 --- a/kcontrol/pics/cr22-app-colors.png +++ b/kcontrol/pics/cr22-app-colors.png diff --git a/kcontrol/pics/cr22-app-cookie.png b/kcontrol/pics/cr22-app-cookie.png Binary files differindex eb11b7605..c1ec40149 100644 --- a/kcontrol/pics/cr22-app-cookie.png +++ b/kcontrol/pics/cr22-app-cookie.png diff --git a/kcontrol/pics/cr22-app-date.png b/kcontrol/pics/cr22-app-date.png Binary files differindex cb1f8455a..b1638e7f6 100644 --- a/kcontrol/pics/cr22-app-date.png +++ b/kcontrol/pics/cr22-app-date.png diff --git a/kcontrol/pics/cr22-app-energy.png b/kcontrol/pics/cr22-app-energy.png Binary files differindex 2893c77bf..92b5d27cd 100644 --- a/kcontrol/pics/cr22-app-energy.png +++ b/kcontrol/pics/cr22-app-energy.png diff --git a/kcontrol/pics/cr22-app-enhanced_browsing.png b/kcontrol/pics/cr22-app-enhanced_browsing.png Binary files differindex c7281f352..3563acea7 100644 --- a/kcontrol/pics/cr22-app-enhanced_browsing.png +++ b/kcontrol/pics/cr22-app-enhanced_browsing.png diff --git a/kcontrol/pics/cr22-app-filetypes.png b/kcontrol/pics/cr22-app-filetypes.png Binary files differindex 71e4ae8a2..72b185590 100644 --- a/kcontrol/pics/cr22-app-filetypes.png +++ b/kcontrol/pics/cr22-app-filetypes.png diff --git a/kcontrol/pics/cr22-app-fonts.png b/kcontrol/pics/cr22-app-fonts.png Binary files differindex 19fccc6c5..247a04d15 100644 --- a/kcontrol/pics/cr22-app-fonts.png +++ b/kcontrol/pics/cr22-app-fonts.png diff --git a/kcontrol/pics/cr22-app-hwinfo.png b/kcontrol/pics/cr22-app-hwinfo.png Binary files differindex 9eb787ef2..95779f68e 100644 --- a/kcontrol/pics/cr22-app-hwinfo.png +++ b/kcontrol/pics/cr22-app-hwinfo.png diff --git a/kcontrol/pics/cr22-app-ieee1394.png b/kcontrol/pics/cr22-app-ieee1394.png Binary files differindex 184c283bf..e582ea87d 100644 --- a/kcontrol/pics/cr22-app-ieee1394.png +++ b/kcontrol/pics/cr22-app-ieee1394.png diff --git a/kcontrol/pics/cr22-app-kcmdevices.png b/kcontrol/pics/cr22-app-kcmdevices.png Binary files differindex 49d63884d..7fe37589a 100644 --- a/kcontrol/pics/cr22-app-kcmdevices.png +++ b/kcontrol/pics/cr22-app-kcmdevices.png diff --git a/kcontrol/pics/cr22-app-kcmkicker.png b/kcontrol/pics/cr22-app-kcmkicker.png Binary files differindex 0901b7460..dbfa1e548 100644 --- a/kcontrol/pics/cr22-app-kcmkicker.png +++ b/kcontrol/pics/cr22-app-kcmkicker.png diff --git a/kcontrol/pics/cr22-app-kcmkwm.png b/kcontrol/pics/cr22-app-kcmkwm.png Binary files differindex b6c17916a..cd0271118 100644 --- a/kcontrol/pics/cr22-app-kcmkwm.png +++ b/kcontrol/pics/cr22-app-kcmkwm.png diff --git a/kcontrol/pics/cr22-app-kcmx.png b/kcontrol/pics/cr22-app-kcmx.png Binary files differindex fdab29916..9e04133c4 100644 --- a/kcontrol/pics/cr22-app-kcmx.png +++ b/kcontrol/pics/cr22-app-kcmx.png diff --git a/kcontrol/pics/cr22-app-key_bindings.png b/kcontrol/pics/cr22-app-key_bindings.png Binary files differindex 732f4d9c1..a1caf143d 100644 --- a/kcontrol/pics/cr22-app-key_bindings.png +++ b/kcontrol/pics/cr22-app-key_bindings.png diff --git a/kcontrol/pics/cr22-app-keyboard.png b/kcontrol/pics/cr22-app-keyboard.png Binary files differindex 4360481af..e54f4b367 100644 --- a/kcontrol/pics/cr22-app-keyboard.png +++ b/kcontrol/pics/cr22-app-keyboard.png diff --git a/kcontrol/pics/cr22-app-locale.png b/kcontrol/pics/cr22-app-locale.png Binary files differindex 827360a8b..452769ee6 100644 --- a/kcontrol/pics/cr22-app-locale.png +++ b/kcontrol/pics/cr22-app-locale.png diff --git a/kcontrol/pics/cr22-app-proxy.png b/kcontrol/pics/cr22-app-proxy.png Binary files differindex e8fef4233..58ec7917b 100644 --- a/kcontrol/pics/cr22-app-proxy.png +++ b/kcontrol/pics/cr22-app-proxy.png diff --git a/kcontrol/pics/cr22-app-samba.png b/kcontrol/pics/cr22-app-samba.png Binary files differindex 32b5972e9..905e399c5 100644 --- a/kcontrol/pics/cr22-app-samba.png +++ b/kcontrol/pics/cr22-app-samba.png diff --git a/kcontrol/pics/cr22-app-stylesheet.png b/kcontrol/pics/cr22-app-stylesheet.png Binary files differindex 625688457..a0ed2772f 100644 --- a/kcontrol/pics/cr22-app-stylesheet.png +++ b/kcontrol/pics/cr22-app-stylesheet.png diff --git a/kcontrol/pics/cr22-app-tdescreensaver.png b/kcontrol/pics/cr22-app-tdescreensaver.png Binary files differindex 7448fe237..63a349a78 100644 --- a/kcontrol/pics/cr22-app-tdescreensaver.png +++ b/kcontrol/pics/cr22-app-tdescreensaver.png diff --git a/kcontrol/pics/cr22-app-tdmconfig.png b/kcontrol/pics/cr22-app-tdmconfig.png Binary files differindex 399978a99..00e42ac3e 100644 --- a/kcontrol/pics/cr22-app-tdmconfig.png +++ b/kcontrol/pics/cr22-app-tdmconfig.png diff --git a/kcontrol/pics/cr22-category-preferences-desktop-personal.png b/kcontrol/pics/cr22-category-preferences-desktop-personal.png Binary files differindex 6b7153767..d805d03e4 100644 --- a/kcontrol/pics/cr22-category-preferences-desktop-personal.png +++ b/kcontrol/pics/cr22-category-preferences-desktop-personal.png diff --git a/kcontrol/pics/cr22-device-laptop.png b/kcontrol/pics/cr22-device-laptop.png Binary files differindex db7f61e89..e6520ce99 100644 --- a/kcontrol/pics/cr22-device-laptop.png +++ b/kcontrol/pics/cr22-device-laptop.png diff --git a/kcontrol/pics/cr32-app-access.png b/kcontrol/pics/cr32-app-access.png Binary files differindex c83070ca3..3e60c4be5 100644 --- a/kcontrol/pics/cr32-app-access.png +++ b/kcontrol/pics/cr32-app-access.png diff --git a/kcontrol/pics/cr32-app-agent.png b/kcontrol/pics/cr32-app-agent.png Binary files differindex d10a80c61..1a832620a 100644 --- a/kcontrol/pics/cr32-app-agent.png +++ b/kcontrol/pics/cr32-app-agent.png diff --git a/kcontrol/pics/cr32-app-arts.png b/kcontrol/pics/cr32-app-arts.png Binary files differindex 378cce9a6..eba7e5477 100644 --- a/kcontrol/pics/cr32-app-arts.png +++ b/kcontrol/pics/cr32-app-arts.png diff --git a/kcontrol/pics/cr32-app-background.png b/kcontrol/pics/cr32-app-background.png Binary files differindex 564ef39e8..ffc5ffaff 100644 --- a/kcontrol/pics/cr32-app-background.png +++ b/kcontrol/pics/cr32-app-background.png diff --git a/kcontrol/pics/cr32-app-bell.png b/kcontrol/pics/cr32-app-bell.png Binary files differindex 8d4079b99..9bc561ee1 100644 --- a/kcontrol/pics/cr32-app-bell.png +++ b/kcontrol/pics/cr32-app-bell.png diff --git a/kcontrol/pics/cr32-app-cache.png b/kcontrol/pics/cr32-app-cache.png Binary files differindex 7700fd9ad..b051f00f3 100644 --- a/kcontrol/pics/cr32-app-cache.png +++ b/kcontrol/pics/cr32-app-cache.png diff --git a/kcontrol/pics/cr32-app-clock.png b/kcontrol/pics/cr32-app-clock.png Binary files differindex 0f93b36cc..d986ffde9 100644 --- a/kcontrol/pics/cr32-app-clock.png +++ b/kcontrol/pics/cr32-app-clock.png diff --git a/kcontrol/pics/cr32-app-colors.png b/kcontrol/pics/cr32-app-colors.png Binary files differindex e5aa87cbd..b7e33832f 100644 --- a/kcontrol/pics/cr32-app-colors.png +++ b/kcontrol/pics/cr32-app-colors.png diff --git a/kcontrol/pics/cr32-app-cookie.png b/kcontrol/pics/cr32-app-cookie.png Binary files differindex 0879588c8..d287673a3 100644 --- a/kcontrol/pics/cr32-app-cookie.png +++ b/kcontrol/pics/cr32-app-cookie.png diff --git a/kcontrol/pics/cr32-app-date.png b/kcontrol/pics/cr32-app-date.png Binary files differindex 54b320347..923d08476 100644 --- a/kcontrol/pics/cr32-app-date.png +++ b/kcontrol/pics/cr32-app-date.png diff --git a/kcontrol/pics/cr32-app-energy.png b/kcontrol/pics/cr32-app-energy.png Binary files differindex e796c0528..573b026c4 100644 --- a/kcontrol/pics/cr32-app-energy.png +++ b/kcontrol/pics/cr32-app-energy.png diff --git a/kcontrol/pics/cr32-app-energy_star.png b/kcontrol/pics/cr32-app-energy_star.png Binary files differindex c26cf4cee..d4209e127 100644 --- a/kcontrol/pics/cr32-app-energy_star.png +++ b/kcontrol/pics/cr32-app-energy_star.png diff --git a/kcontrol/pics/cr32-app-filetypes.png b/kcontrol/pics/cr32-app-filetypes.png Binary files differindex 53d0099be..4d80e91df 100644 --- a/kcontrol/pics/cr32-app-filetypes.png +++ b/kcontrol/pics/cr32-app-filetypes.png diff --git a/kcontrol/pics/cr32-app-fonts.png b/kcontrol/pics/cr32-app-fonts.png Binary files differindex 9ace98c25..e7f40711a 100644 --- a/kcontrol/pics/cr32-app-fonts.png +++ b/kcontrol/pics/cr32-app-fonts.png diff --git a/kcontrol/pics/cr32-app-help_index.png b/kcontrol/pics/cr32-app-help_index.png Binary files differindex d5af86353..8c30c52f8 100644 --- a/kcontrol/pics/cr32-app-help_index.png +++ b/kcontrol/pics/cr32-app-help_index.png diff --git a/kcontrol/pics/cr32-app-hwinfo.png b/kcontrol/pics/cr32-app-hwinfo.png Binary files differindex dfb9a1c14..f59fafd92 100644 --- a/kcontrol/pics/cr32-app-hwinfo.png +++ b/kcontrol/pics/cr32-app-hwinfo.png diff --git a/kcontrol/pics/cr32-app-icons.png b/kcontrol/pics/cr32-app-icons.png Binary files differindex a12f847d9..6b3d9d13d 100644 --- a/kcontrol/pics/cr32-app-icons.png +++ b/kcontrol/pics/cr32-app-icons.png diff --git a/kcontrol/pics/cr32-app-iconthemes.png b/kcontrol/pics/cr32-app-iconthemes.png Binary files differindex c5326752a..425265cd3 100644 --- a/kcontrol/pics/cr32-app-iconthemes.png +++ b/kcontrol/pics/cr32-app-iconthemes.png diff --git a/kcontrol/pics/cr32-app-ieee1394.png b/kcontrol/pics/cr32-app-ieee1394.png Binary files differindex 0253e7976..0767a6a65 100644 --- a/kcontrol/pics/cr32-app-ieee1394.png +++ b/kcontrol/pics/cr32-app-ieee1394.png diff --git a/kcontrol/pics/cr32-app-kcmdevices.png b/kcontrol/pics/cr32-app-kcmdevices.png Binary files differindex d6354ad28..cbca902a0 100644 --- a/kcontrol/pics/cr32-app-kcmdevices.png +++ b/kcontrol/pics/cr32-app-kcmdevices.png diff --git a/kcontrol/pics/cr32-app-kcmdrkonqi.png b/kcontrol/pics/cr32-app-kcmdrkonqi.png Binary files differindex 26bb684cb..41181190e 100644 --- a/kcontrol/pics/cr32-app-kcmdrkonqi.png +++ b/kcontrol/pics/cr32-app-kcmdrkonqi.png diff --git a/kcontrol/pics/cr32-app-kcmkicker.png b/kcontrol/pics/cr32-app-kcmkicker.png Binary files differindex e60d5a26e..12b478e37 100644 --- a/kcontrol/pics/cr32-app-kcmkicker.png +++ b/kcontrol/pics/cr32-app-kcmkicker.png diff --git a/kcontrol/pics/cr32-app-kcmkwm.png b/kcontrol/pics/cr32-app-kcmkwm.png Binary files differindex a44e89764..4d9fd6b87 100644 --- a/kcontrol/pics/cr32-app-kcmkwm.png +++ b/kcontrol/pics/cr32-app-kcmkwm.png diff --git a/kcontrol/pics/cr32-app-kcmmemory.png b/kcontrol/pics/cr32-app-kcmmemory.png Binary files differindex 8b50f37c9..cb09465bd 100644 --- a/kcontrol/pics/cr32-app-kcmmemory.png +++ b/kcontrol/pics/cr32-app-kcmmemory.png diff --git a/kcontrol/pics/cr32-app-kcmmidi.png b/kcontrol/pics/cr32-app-kcmmidi.png Binary files differindex 8430f26fb..c6c2c1a31 100644 --- a/kcontrol/pics/cr32-app-kcmmidi.png +++ b/kcontrol/pics/cr32-app-kcmmidi.png diff --git a/kcontrol/pics/cr32-app-kcmpartitions.png b/kcontrol/pics/cr32-app-kcmpartitions.png Binary files differindex e5a746f31..4a0dec4c8 100644 --- a/kcontrol/pics/cr32-app-kcmpartitions.png +++ b/kcontrol/pics/cr32-app-kcmpartitions.png diff --git a/kcontrol/pics/cr32-app-kcmpci.png b/kcontrol/pics/cr32-app-kcmpci.png Binary files differindex fbde5bd3f..0be06cdf9 100644 --- a/kcontrol/pics/cr32-app-kcmpci.png +++ b/kcontrol/pics/cr32-app-kcmpci.png diff --git a/kcontrol/pics/cr32-app-kcmprocessor.png b/kcontrol/pics/cr32-app-kcmprocessor.png Binary files differindex 72b2b4691..75633e212 100644 --- a/kcontrol/pics/cr32-app-kcmprocessor.png +++ b/kcontrol/pics/cr32-app-kcmprocessor.png diff --git a/kcontrol/pics/cr32-app-kcmscsi.png b/kcontrol/pics/cr32-app-kcmscsi.png Binary files differindex d09ff08a2..9fb204eb6 100644 --- a/kcontrol/pics/cr32-app-kcmscsi.png +++ b/kcontrol/pics/cr32-app-kcmscsi.png diff --git a/kcontrol/pics/cr32-app-kcmsound.png b/kcontrol/pics/cr32-app-kcmsound.png Binary files differindex c122c880b..187025d0f 100644 --- a/kcontrol/pics/cr32-app-kcmsound.png +++ b/kcontrol/pics/cr32-app-kcmsound.png diff --git a/kcontrol/pics/cr32-app-kcmx.png b/kcontrol/pics/cr32-app-kcmx.png Binary files differindex 4157c391d..da9f7e1ad 100644 --- a/kcontrol/pics/cr32-app-kcmx.png +++ b/kcontrol/pics/cr32-app-kcmx.png diff --git a/kcontrol/pics/cr32-app-key_bindings.png b/kcontrol/pics/cr32-app-key_bindings.png Binary files differindex 6a3438d92..069c86cf8 100644 --- a/kcontrol/pics/cr32-app-key_bindings.png +++ b/kcontrol/pics/cr32-app-key_bindings.png diff --git a/kcontrol/pics/cr32-app-keyboard.png b/kcontrol/pics/cr32-app-keyboard.png Binary files differindex 3bbc80536..5a457e478 100644 --- a/kcontrol/pics/cr32-app-keyboard.png +++ b/kcontrol/pics/cr32-app-keyboard.png diff --git a/kcontrol/pics/cr32-app-keyboard_layout.png b/kcontrol/pics/cr32-app-keyboard_layout.png Binary files differindex 672c59310..d555a4b96 100644 --- a/kcontrol/pics/cr32-app-keyboard_layout.png +++ b/kcontrol/pics/cr32-app-keyboard_layout.png diff --git a/kcontrol/pics/cr32-app-knotify.png b/kcontrol/pics/cr32-app-knotify.png Binary files differindex ede0d8ed1..b9b1b46e5 100644 --- a/kcontrol/pics/cr32-app-knotify.png +++ b/kcontrol/pics/cr32-app-knotify.png diff --git a/kcontrol/pics/cr32-app-kthememgr.png b/kcontrol/pics/cr32-app-kthememgr.png Binary files differindex 2bf6a7782..114c0550f 100644 --- a/kcontrol/pics/cr32-app-kthememgr.png +++ b/kcontrol/pics/cr32-app-kthememgr.png diff --git a/kcontrol/pics/cr32-app-locale.png b/kcontrol/pics/cr32-app-locale.png Binary files differindex 96b4201ac..ae4433053 100644 --- a/kcontrol/pics/cr32-app-locale.png +++ b/kcontrol/pics/cr32-app-locale.png diff --git a/kcontrol/pics/cr32-app-multimedia.png b/kcontrol/pics/cr32-app-multimedia.png Binary files differindex 1e397c524..bfbd4ea52 100644 --- a/kcontrol/pics/cr32-app-multimedia.png +++ b/kcontrol/pics/cr32-app-multimedia.png diff --git a/kcontrol/pics/cr32-app-proxy.png b/kcontrol/pics/cr32-app-proxy.png Binary files differindex 46f68b243..e3d90ab76 100644 --- a/kcontrol/pics/cr32-app-proxy.png +++ b/kcontrol/pics/cr32-app-proxy.png diff --git a/kcontrol/pics/cr32-app-samba.png b/kcontrol/pics/cr32-app-samba.png Binary files differindex 0d79e5c83..03dd90797 100644 --- a/kcontrol/pics/cr32-app-samba.png +++ b/kcontrol/pics/cr32-app-samba.png diff --git a/kcontrol/pics/cr32-app-style.png b/kcontrol/pics/cr32-app-style.png Binary files differindex 2e29a93a0..a4eed07e0 100644 --- a/kcontrol/pics/cr32-app-style.png +++ b/kcontrol/pics/cr32-app-style.png diff --git a/kcontrol/pics/cr32-app-stylesheet.png b/kcontrol/pics/cr32-app-stylesheet.png Binary files differindex ab8918c30..3af0d2bef 100644 --- a/kcontrol/pics/cr32-app-stylesheet.png +++ b/kcontrol/pics/cr32-app-stylesheet.png diff --git a/kcontrol/pics/cr32-app-tdescreensaver.png b/kcontrol/pics/cr32-app-tdescreensaver.png Binary files differindex f527126bc..4c84e5da1 100644 --- a/kcontrol/pics/cr32-app-tdescreensaver.png +++ b/kcontrol/pics/cr32-app-tdescreensaver.png diff --git a/kcontrol/pics/cr32-app-tdmconfig.png b/kcontrol/pics/cr32-app-tdmconfig.png Binary files differindex a5cbf22d3..49b30dce6 100644 --- a/kcontrol/pics/cr32-app-tdmconfig.png +++ b/kcontrol/pics/cr32-app-tdmconfig.png diff --git a/kcontrol/pics/cr32-app-usb.png b/kcontrol/pics/cr32-app-usb.png Binary files differindex c7601cb87..e986b5c4b 100644 --- a/kcontrol/pics/cr32-app-usb.png +++ b/kcontrol/pics/cr32-app-usb.png diff --git a/kcontrol/pics/cr32-category-preferences-desktop-peripherals.png b/kcontrol/pics/cr32-category-preferences-desktop-peripherals.png Binary files differindex 785b8a0fc..3dda90fc9 100644 --- a/kcontrol/pics/cr32-category-preferences-desktop-peripherals.png +++ b/kcontrol/pics/cr32-category-preferences-desktop-peripherals.png diff --git a/kcontrol/pics/cr32-category-preferences-desktop-personal.png b/kcontrol/pics/cr32-category-preferences-desktop-personal.png Binary files differindex 4f1959142..cc5e97aa5 100644 --- a/kcontrol/pics/cr32-category-preferences-desktop-personal.png +++ b/kcontrol/pics/cr32-category-preferences-desktop-personal.png diff --git a/kcontrol/pics/cr32-category-preferences-desktop.png b/kcontrol/pics/cr32-category-preferences-desktop.png Binary files differindex 75e29219b..c125c441b 100644 --- a/kcontrol/pics/cr32-category-preferences-desktop.png +++ b/kcontrol/pics/cr32-category-preferences-desktop.png diff --git a/kcontrol/pics/cr32-category-preferences-system.png b/kcontrol/pics/cr32-category-preferences-system.png Binary files differindex 726784a4d..80c7fced5 100644 --- a/kcontrol/pics/cr32-category-preferences-system.png +++ b/kcontrol/pics/cr32-category-preferences-system.png diff --git a/kcontrol/pics/cr32-device-laptop.png b/kcontrol/pics/cr32-device-laptop.png Binary files differindex 866f3aae1..adf30f5e0 100644 --- a/kcontrol/pics/cr32-device-laptop.png +++ b/kcontrol/pics/cr32-device-laptop.png diff --git a/kcontrol/pics/cr48-app-access.png b/kcontrol/pics/cr48-app-access.png Binary files differindex c74f3d99f..95d221e44 100644 --- a/kcontrol/pics/cr48-app-access.png +++ b/kcontrol/pics/cr48-app-access.png diff --git a/kcontrol/pics/cr48-app-agent.png b/kcontrol/pics/cr48-app-agent.png Binary files differindex 50864ebc1..09b9daeb2 100644 --- a/kcontrol/pics/cr48-app-agent.png +++ b/kcontrol/pics/cr48-app-agent.png diff --git a/kcontrol/pics/cr48-app-arts.png b/kcontrol/pics/cr48-app-arts.png Binary files differindex 462eff9a2..5066c0297 100644 --- a/kcontrol/pics/cr48-app-arts.png +++ b/kcontrol/pics/cr48-app-arts.png diff --git a/kcontrol/pics/cr48-app-background.png b/kcontrol/pics/cr48-app-background.png Binary files differindex c2328e70b..631905b93 100644 --- a/kcontrol/pics/cr48-app-background.png +++ b/kcontrol/pics/cr48-app-background.png diff --git a/kcontrol/pics/cr48-app-bell.png b/kcontrol/pics/cr48-app-bell.png Binary files differindex 0c4b6c5e3..c7ab7feb7 100644 --- a/kcontrol/pics/cr48-app-bell.png +++ b/kcontrol/pics/cr48-app-bell.png diff --git a/kcontrol/pics/cr48-app-cache.png b/kcontrol/pics/cr48-app-cache.png Binary files differindex df779f4b3..613ca1c92 100644 --- a/kcontrol/pics/cr48-app-cache.png +++ b/kcontrol/pics/cr48-app-cache.png diff --git a/kcontrol/pics/cr48-app-clock.png b/kcontrol/pics/cr48-app-clock.png Binary files differindex b97479759..b879f928b 100644 --- a/kcontrol/pics/cr48-app-clock.png +++ b/kcontrol/pics/cr48-app-clock.png diff --git a/kcontrol/pics/cr48-app-colors.png b/kcontrol/pics/cr48-app-colors.png Binary files differindex 4be4e3501..e076381e0 100644 --- a/kcontrol/pics/cr48-app-colors.png +++ b/kcontrol/pics/cr48-app-colors.png diff --git a/kcontrol/pics/cr48-app-cookie.png b/kcontrol/pics/cr48-app-cookie.png Binary files differindex b3dc63ebc..a43cffd64 100644 --- a/kcontrol/pics/cr48-app-cookie.png +++ b/kcontrol/pics/cr48-app-cookie.png diff --git a/kcontrol/pics/cr48-app-date.png b/kcontrol/pics/cr48-app-date.png Binary files differindex a510951db..e0ce62cd9 100644 --- a/kcontrol/pics/cr48-app-date.png +++ b/kcontrol/pics/cr48-app-date.png diff --git a/kcontrol/pics/cr48-app-energy.png b/kcontrol/pics/cr48-app-energy.png Binary files differindex 269eb4435..b66182b74 100644 --- a/kcontrol/pics/cr48-app-energy.png +++ b/kcontrol/pics/cr48-app-energy.png diff --git a/kcontrol/pics/cr48-app-energy_star.png b/kcontrol/pics/cr48-app-energy_star.png Binary files differindex 5ed89d5ae..53da9fdc5 100644 --- a/kcontrol/pics/cr48-app-energy_star.png +++ b/kcontrol/pics/cr48-app-energy_star.png diff --git a/kcontrol/pics/cr48-app-filetypes.png b/kcontrol/pics/cr48-app-filetypes.png Binary files differindex 37f365e21..ca2cfda20 100644 --- a/kcontrol/pics/cr48-app-filetypes.png +++ b/kcontrol/pics/cr48-app-filetypes.png diff --git a/kcontrol/pics/cr48-app-fonts.png b/kcontrol/pics/cr48-app-fonts.png Binary files differindex a17a1f282..a51c707db 100644 --- a/kcontrol/pics/cr48-app-fonts.png +++ b/kcontrol/pics/cr48-app-fonts.png diff --git a/kcontrol/pics/cr48-app-help_index.png b/kcontrol/pics/cr48-app-help_index.png Binary files differindex 418e1daf8..07c01d003 100644 --- a/kcontrol/pics/cr48-app-help_index.png +++ b/kcontrol/pics/cr48-app-help_index.png diff --git a/kcontrol/pics/cr48-app-hwinfo.png b/kcontrol/pics/cr48-app-hwinfo.png Binary files differindex a7f8b281e..6db94cebe 100644 --- a/kcontrol/pics/cr48-app-hwinfo.png +++ b/kcontrol/pics/cr48-app-hwinfo.png diff --git a/kcontrol/pics/cr48-app-icons.png b/kcontrol/pics/cr48-app-icons.png Binary files differindex a9100e732..aeda713c8 100644 --- a/kcontrol/pics/cr48-app-icons.png +++ b/kcontrol/pics/cr48-app-icons.png diff --git a/kcontrol/pics/cr48-app-iconthemes.png b/kcontrol/pics/cr48-app-iconthemes.png Binary files differindex 3ae2864a2..4b0f8d57d 100644 --- a/kcontrol/pics/cr48-app-iconthemes.png +++ b/kcontrol/pics/cr48-app-iconthemes.png diff --git a/kcontrol/pics/cr48-app-ieee1394.png b/kcontrol/pics/cr48-app-ieee1394.png Binary files differindex e5dd54b89..6ace14e07 100644 --- a/kcontrol/pics/cr48-app-ieee1394.png +++ b/kcontrol/pics/cr48-app-ieee1394.png diff --git a/kcontrol/pics/cr48-app-kcmdevices.png b/kcontrol/pics/cr48-app-kcmdevices.png Binary files differindex 59f5d185a..ac9f8bdc8 100644 --- a/kcontrol/pics/cr48-app-kcmdevices.png +++ b/kcontrol/pics/cr48-app-kcmdevices.png diff --git a/kcontrol/pics/cr48-app-kcmdf.png b/kcontrol/pics/cr48-app-kcmdf.png Binary files differindex 29d351f8b..93323214a 100644 --- a/kcontrol/pics/cr48-app-kcmdf.png +++ b/kcontrol/pics/cr48-app-kcmdf.png diff --git a/kcontrol/pics/cr48-app-kcmdrkonqi.png b/kcontrol/pics/cr48-app-kcmdrkonqi.png Binary files differindex 54d7ce45f..86830c95a 100644 --- a/kcontrol/pics/cr48-app-kcmdrkonqi.png +++ b/kcontrol/pics/cr48-app-kcmdrkonqi.png diff --git a/kcontrol/pics/cr48-app-kcmkicker.png b/kcontrol/pics/cr48-app-kcmkicker.png Binary files differindex dc7aee7dd..90fae4e96 100644 --- a/kcontrol/pics/cr48-app-kcmkicker.png +++ b/kcontrol/pics/cr48-app-kcmkicker.png diff --git a/kcontrol/pics/cr48-app-kcmkwm.png b/kcontrol/pics/cr48-app-kcmkwm.png Binary files differindex aba583bed..b4b30269e 100644 --- a/kcontrol/pics/cr48-app-kcmkwm.png +++ b/kcontrol/pics/cr48-app-kcmkwm.png diff --git a/kcontrol/pics/cr48-app-kcmmemory.png b/kcontrol/pics/cr48-app-kcmmemory.png Binary files differindex 3424cfa33..b64d11d6a 100644 --- a/kcontrol/pics/cr48-app-kcmmemory.png +++ b/kcontrol/pics/cr48-app-kcmmemory.png diff --git a/kcontrol/pics/cr48-app-kcmmidi.png b/kcontrol/pics/cr48-app-kcmmidi.png Binary files differindex 8d716aca4..b27a1bcf1 100644 --- a/kcontrol/pics/cr48-app-kcmmidi.png +++ b/kcontrol/pics/cr48-app-kcmmidi.png diff --git a/kcontrol/pics/cr48-app-kcmopengl.png b/kcontrol/pics/cr48-app-kcmopengl.png Binary files differindex ae934924c..d21a43011 100644 --- a/kcontrol/pics/cr48-app-kcmopengl.png +++ b/kcontrol/pics/cr48-app-kcmopengl.png diff --git a/kcontrol/pics/cr48-app-kcmpartitions.png b/kcontrol/pics/cr48-app-kcmpartitions.png Binary files differindex bddfa43e8..a820a3046 100644 --- a/kcontrol/pics/cr48-app-kcmpartitions.png +++ b/kcontrol/pics/cr48-app-kcmpartitions.png diff --git a/kcontrol/pics/cr48-app-kcmpci.png b/kcontrol/pics/cr48-app-kcmpci.png Binary files differindex 51215dddf..1a79dcbaf 100644 --- a/kcontrol/pics/cr48-app-kcmpci.png +++ b/kcontrol/pics/cr48-app-kcmpci.png diff --git a/kcontrol/pics/cr48-app-kcmprocessor.png b/kcontrol/pics/cr48-app-kcmprocessor.png Binary files differindex 34e98e2f9..61253cf06 100644 --- a/kcontrol/pics/cr48-app-kcmprocessor.png +++ b/kcontrol/pics/cr48-app-kcmprocessor.png diff --git a/kcontrol/pics/cr48-app-kcmscsi.png b/kcontrol/pics/cr48-app-kcmscsi.png Binary files differindex d2abcebcf..ce003921c 100644 --- a/kcontrol/pics/cr48-app-kcmscsi.png +++ b/kcontrol/pics/cr48-app-kcmscsi.png diff --git a/kcontrol/pics/cr48-app-kcmx.png b/kcontrol/pics/cr48-app-kcmx.png Binary files differindex 99a635905..9facd5af7 100644 --- a/kcontrol/pics/cr48-app-kcmx.png +++ b/kcontrol/pics/cr48-app-kcmx.png diff --git a/kcontrol/pics/cr48-app-key_bindings.png b/kcontrol/pics/cr48-app-key_bindings.png Binary files differindex e4134ce3e..57692bada 100644 --- a/kcontrol/pics/cr48-app-key_bindings.png +++ b/kcontrol/pics/cr48-app-key_bindings.png diff --git a/kcontrol/pics/cr48-app-keyboard.png b/kcontrol/pics/cr48-app-keyboard.png Binary files differindex 04c821147..596c583c4 100644 --- a/kcontrol/pics/cr48-app-keyboard.png +++ b/kcontrol/pics/cr48-app-keyboard.png diff --git a/kcontrol/pics/cr48-app-keyboard_layout.png b/kcontrol/pics/cr48-app-keyboard_layout.png Binary files differindex ba0359447..ea20a16bc 100644 --- a/kcontrol/pics/cr48-app-keyboard_layout.png +++ b/kcontrol/pics/cr48-app-keyboard_layout.png diff --git a/kcontrol/pics/cr48-app-kicker.png b/kcontrol/pics/cr48-app-kicker.png Binary files differindex dc7aee7dd..90fae4e96 100644 --- a/kcontrol/pics/cr48-app-kicker.png +++ b/kcontrol/pics/cr48-app-kicker.png diff --git a/kcontrol/pics/cr48-app-knotify.png b/kcontrol/pics/cr48-app-knotify.png Binary files differindex b0aa6e8fa..6d3b598c7 100644 --- a/kcontrol/pics/cr48-app-knotify.png +++ b/kcontrol/pics/cr48-app-knotify.png diff --git a/kcontrol/pics/cr48-app-kthememgr.png b/kcontrol/pics/cr48-app-kthememgr.png Binary files differindex 50430c726..883dd353b 100644 --- a/kcontrol/pics/cr48-app-kthememgr.png +++ b/kcontrol/pics/cr48-app-kthememgr.png diff --git a/kcontrol/pics/cr48-app-locale.png b/kcontrol/pics/cr48-app-locale.png Binary files differindex e7defacbc..b05844c53 100644 --- a/kcontrol/pics/cr48-app-locale.png +++ b/kcontrol/pics/cr48-app-locale.png diff --git a/kcontrol/pics/cr48-app-multimedia.png b/kcontrol/pics/cr48-app-multimedia.png Binary files differindex dc766a89c..0ef1022f2 100644 --- a/kcontrol/pics/cr48-app-multimedia.png +++ b/kcontrol/pics/cr48-app-multimedia.png diff --git a/kcontrol/pics/cr48-app-proxy.png b/kcontrol/pics/cr48-app-proxy.png Binary files differindex 3683e298c..1317ff9ac 100644 --- a/kcontrol/pics/cr48-app-proxy.png +++ b/kcontrol/pics/cr48-app-proxy.png diff --git a/kcontrol/pics/cr48-app-samba.png b/kcontrol/pics/cr48-app-samba.png Binary files differindex d980263d8..534580c38 100644 --- a/kcontrol/pics/cr48-app-samba.png +++ b/kcontrol/pics/cr48-app-samba.png diff --git a/kcontrol/pics/cr48-app-style.png b/kcontrol/pics/cr48-app-style.png Binary files differindex 5d8af7e87..239281324 100644 --- a/kcontrol/pics/cr48-app-style.png +++ b/kcontrol/pics/cr48-app-style.png diff --git a/kcontrol/pics/cr48-app-stylesheet.png b/kcontrol/pics/cr48-app-stylesheet.png Binary files differindex f74586b3c..cbe7bc267 100644 --- a/kcontrol/pics/cr48-app-stylesheet.png +++ b/kcontrol/pics/cr48-app-stylesheet.png diff --git a/kcontrol/pics/cr48-app-tdescreensaver.png b/kcontrol/pics/cr48-app-tdescreensaver.png Binary files differindex 749f42253..290b72ae9 100644 --- a/kcontrol/pics/cr48-app-tdescreensaver.png +++ b/kcontrol/pics/cr48-app-tdescreensaver.png diff --git a/kcontrol/pics/cr48-app-tdmconfig.png b/kcontrol/pics/cr48-app-tdmconfig.png Binary files differindex d8b241ca9..dd419933e 100644 --- a/kcontrol/pics/cr48-app-tdmconfig.png +++ b/kcontrol/pics/cr48-app-tdmconfig.png diff --git a/kcontrol/pics/cr48-app-usb.png b/kcontrol/pics/cr48-app-usb.png Binary files differindex 4260b8259..a756a911a 100644 --- a/kcontrol/pics/cr48-app-usb.png +++ b/kcontrol/pics/cr48-app-usb.png diff --git a/kcontrol/pics/cr48-category-preferences-desktop-peripherals.png b/kcontrol/pics/cr48-category-preferences-desktop-peripherals.png Binary files differindex 5c1e16a5b..c6bbe3173 100644 --- a/kcontrol/pics/cr48-category-preferences-desktop-peripherals.png +++ b/kcontrol/pics/cr48-category-preferences-desktop-peripherals.png diff --git a/kcontrol/pics/cr48-category-preferences-desktop-personal.png b/kcontrol/pics/cr48-category-preferences-desktop-personal.png Binary files differindex 90aedf0f8..433db418a 100644 --- a/kcontrol/pics/cr48-category-preferences-desktop-personal.png +++ b/kcontrol/pics/cr48-category-preferences-desktop-personal.png diff --git a/kcontrol/pics/cr48-category-preferences-desktop.png b/kcontrol/pics/cr48-category-preferences-desktop.png Binary files differindex 342ebd7af..b8b4a3a48 100644 --- a/kcontrol/pics/cr48-category-preferences-desktop.png +++ b/kcontrol/pics/cr48-category-preferences-desktop.png diff --git a/kcontrol/pics/cr48-category-preferences-system.png b/kcontrol/pics/cr48-category-preferences-system.png Binary files differindex 3ed096d9d..dac0b12da 100644 --- a/kcontrol/pics/cr48-category-preferences-system.png +++ b/kcontrol/pics/cr48-category-preferences-system.png diff --git a/kcontrol/pics/cr48-device-laptop.png b/kcontrol/pics/cr48-device-laptop.png Binary files differindex 380f8ba0b..8f3546ad2 100644 --- a/kcontrol/pics/cr48-device-laptop.png +++ b/kcontrol/pics/cr48-device-laptop.png diff --git a/kcontrol/pics/cr64-app-access.png b/kcontrol/pics/cr64-app-access.png Binary files differindex 1d932d01d..9a762241a 100644 --- a/kcontrol/pics/cr64-app-access.png +++ b/kcontrol/pics/cr64-app-access.png diff --git a/kcontrol/pics/cr64-app-arts.png b/kcontrol/pics/cr64-app-arts.png Binary files differindex cab3cd94a..b1fb880b8 100644 --- a/kcontrol/pics/cr64-app-arts.png +++ b/kcontrol/pics/cr64-app-arts.png diff --git a/kcontrol/pics/cr64-app-background.png b/kcontrol/pics/cr64-app-background.png Binary files differindex 0f9de6c17..50706c290 100644 --- a/kcontrol/pics/cr64-app-background.png +++ b/kcontrol/pics/cr64-app-background.png diff --git a/kcontrol/pics/cr64-app-bell.png b/kcontrol/pics/cr64-app-bell.png Binary files differindex f83c4092e..c8993cef5 100644 --- a/kcontrol/pics/cr64-app-bell.png +++ b/kcontrol/pics/cr64-app-bell.png diff --git a/kcontrol/pics/cr64-app-cache.png b/kcontrol/pics/cr64-app-cache.png Binary files differindex a49b55d1d..6ddf0e0fd 100644 --- a/kcontrol/pics/cr64-app-cache.png +++ b/kcontrol/pics/cr64-app-cache.png diff --git a/kcontrol/pics/cr64-app-clock.png b/kcontrol/pics/cr64-app-clock.png Binary files differindex 5698b5e05..e32c65cbf 100644 --- a/kcontrol/pics/cr64-app-clock.png +++ b/kcontrol/pics/cr64-app-clock.png diff --git a/kcontrol/pics/cr64-app-colors.png b/kcontrol/pics/cr64-app-colors.png Binary files differindex bf01037f5..40fcfaff5 100644 --- a/kcontrol/pics/cr64-app-colors.png +++ b/kcontrol/pics/cr64-app-colors.png diff --git a/kcontrol/pics/cr64-app-cookie.png b/kcontrol/pics/cr64-app-cookie.png Binary files differindex 3988e0f23..8460269e7 100644 --- a/kcontrol/pics/cr64-app-cookie.png +++ b/kcontrol/pics/cr64-app-cookie.png diff --git a/kcontrol/pics/cr64-app-date.png b/kcontrol/pics/cr64-app-date.png Binary files differindex 06761d77e..3b46e6a7c 100644 --- a/kcontrol/pics/cr64-app-date.png +++ b/kcontrol/pics/cr64-app-date.png diff --git a/kcontrol/pics/cr64-app-energy.png b/kcontrol/pics/cr64-app-energy.png Binary files differindex 5223681ff..c233a51a9 100644 --- a/kcontrol/pics/cr64-app-energy.png +++ b/kcontrol/pics/cr64-app-energy.png diff --git a/kcontrol/pics/cr64-app-energy_star.png b/kcontrol/pics/cr64-app-energy_star.png Binary files differindex 13a4640ab..23756779d 100644 --- a/kcontrol/pics/cr64-app-energy_star.png +++ b/kcontrol/pics/cr64-app-energy_star.png diff --git a/kcontrol/pics/cr64-app-filetypes.png b/kcontrol/pics/cr64-app-filetypes.png Binary files differindex 6f723a9cc..5dc7ef613 100644 --- a/kcontrol/pics/cr64-app-filetypes.png +++ b/kcontrol/pics/cr64-app-filetypes.png diff --git a/kcontrol/pics/cr64-app-fonts.png b/kcontrol/pics/cr64-app-fonts.png Binary files differindex 6fdab333d..6808d43f0 100644 --- a/kcontrol/pics/cr64-app-fonts.png +++ b/kcontrol/pics/cr64-app-fonts.png diff --git a/kcontrol/pics/cr64-app-help_index.png b/kcontrol/pics/cr64-app-help_index.png Binary files differindex 56be1b7b0..2a48aa8fd 100644 --- a/kcontrol/pics/cr64-app-help_index.png +++ b/kcontrol/pics/cr64-app-help_index.png diff --git a/kcontrol/pics/cr64-app-hwinfo.png b/kcontrol/pics/cr64-app-hwinfo.png Binary files differindex bb3ac3019..100fa367f 100644 --- a/kcontrol/pics/cr64-app-hwinfo.png +++ b/kcontrol/pics/cr64-app-hwinfo.png diff --git a/kcontrol/pics/cr64-app-icons.png b/kcontrol/pics/cr64-app-icons.png Binary files differindex 3891bc74d..0635b6b87 100644 --- a/kcontrol/pics/cr64-app-icons.png +++ b/kcontrol/pics/cr64-app-icons.png diff --git a/kcontrol/pics/cr64-app-ieee1394.png b/kcontrol/pics/cr64-app-ieee1394.png Binary files differindex eb8d540b2..a9fc990c8 100644 --- a/kcontrol/pics/cr64-app-ieee1394.png +++ b/kcontrol/pics/cr64-app-ieee1394.png diff --git a/kcontrol/pics/cr64-app-kcmdevices.png b/kcontrol/pics/cr64-app-kcmdevices.png Binary files differindex 396b3d3ba..461628285 100644 --- a/kcontrol/pics/cr64-app-kcmdevices.png +++ b/kcontrol/pics/cr64-app-kcmdevices.png diff --git a/kcontrol/pics/cr64-app-kcmdf.png b/kcontrol/pics/cr64-app-kcmdf.png Binary files differindex 58378b148..78aea3b32 100644 --- a/kcontrol/pics/cr64-app-kcmdf.png +++ b/kcontrol/pics/cr64-app-kcmdf.png diff --git a/kcontrol/pics/cr64-app-kcmkwm.png b/kcontrol/pics/cr64-app-kcmkwm.png Binary files differindex d453cd2cb..982afdb16 100644 --- a/kcontrol/pics/cr64-app-kcmkwm.png +++ b/kcontrol/pics/cr64-app-kcmkwm.png diff --git a/kcontrol/pics/cr64-app-kcmmemory.png b/kcontrol/pics/cr64-app-kcmmemory.png Binary files differindex 61f7cc517..c56f138b0 100644 --- a/kcontrol/pics/cr64-app-kcmmemory.png +++ b/kcontrol/pics/cr64-app-kcmmemory.png diff --git a/kcontrol/pics/cr64-app-kcmpartitions.png b/kcontrol/pics/cr64-app-kcmpartitions.png Binary files differindex 1bcce6d00..42ca2f9f1 100644 --- a/kcontrol/pics/cr64-app-kcmpartitions.png +++ b/kcontrol/pics/cr64-app-kcmpartitions.png diff --git a/kcontrol/pics/cr64-app-kcmpci.png b/kcontrol/pics/cr64-app-kcmpci.png Binary files differindex 6fae64367..262326d25 100644 --- a/kcontrol/pics/cr64-app-kcmpci.png +++ b/kcontrol/pics/cr64-app-kcmpci.png diff --git a/kcontrol/pics/cr64-app-kcmx.png b/kcontrol/pics/cr64-app-kcmx.png Binary files differindex 64e33b953..e7b91bdd8 100644 --- a/kcontrol/pics/cr64-app-kcmx.png +++ b/kcontrol/pics/cr64-app-kcmx.png diff --git a/kcontrol/pics/cr64-app-key_bindings.png b/kcontrol/pics/cr64-app-key_bindings.png Binary files differindex ca5090329..e549f0e53 100644 --- a/kcontrol/pics/cr64-app-key_bindings.png +++ b/kcontrol/pics/cr64-app-key_bindings.png diff --git a/kcontrol/pics/cr64-app-knotify.png b/kcontrol/pics/cr64-app-knotify.png Binary files differindex 3a4d918ae..7036262ee 100644 --- a/kcontrol/pics/cr64-app-knotify.png +++ b/kcontrol/pics/cr64-app-knotify.png diff --git a/kcontrol/pics/cr64-app-kthememgr.png b/kcontrol/pics/cr64-app-kthememgr.png Binary files differindex 784b5aef3..201af4fc4 100644 --- a/kcontrol/pics/cr64-app-kthememgr.png +++ b/kcontrol/pics/cr64-app-kthememgr.png diff --git a/kcontrol/pics/cr64-app-locale.png b/kcontrol/pics/cr64-app-locale.png Binary files differindex 042c0d345..b88c1aa9c 100644 --- a/kcontrol/pics/cr64-app-locale.png +++ b/kcontrol/pics/cr64-app-locale.png diff --git a/kcontrol/pics/cr64-app-multimedia.png b/kcontrol/pics/cr64-app-multimedia.png Binary files differindex 406aad0f1..e4de0d7f7 100644 --- a/kcontrol/pics/cr64-app-multimedia.png +++ b/kcontrol/pics/cr64-app-multimedia.png diff --git a/kcontrol/pics/cr64-app-proxy.png b/kcontrol/pics/cr64-app-proxy.png Binary files differindex 9b5f5b6a8..b77a185c2 100644 --- a/kcontrol/pics/cr64-app-proxy.png +++ b/kcontrol/pics/cr64-app-proxy.png diff --git a/kcontrol/pics/cr64-app-samba.png b/kcontrol/pics/cr64-app-samba.png Binary files differindex 2bade600c..25807367d 100644 --- a/kcontrol/pics/cr64-app-samba.png +++ b/kcontrol/pics/cr64-app-samba.png diff --git a/kcontrol/pics/cr64-app-style.png b/kcontrol/pics/cr64-app-style.png Binary files differindex d3f70b0cb..6cf7cde02 100644 --- a/kcontrol/pics/cr64-app-style.png +++ b/kcontrol/pics/cr64-app-style.png diff --git a/kcontrol/pics/cr64-app-stylesheet.png b/kcontrol/pics/cr64-app-stylesheet.png Binary files differindex ac393bc3e..877009d54 100644 --- a/kcontrol/pics/cr64-app-stylesheet.png +++ b/kcontrol/pics/cr64-app-stylesheet.png diff --git a/kcontrol/pics/cr64-app-tdescreensaver.png b/kcontrol/pics/cr64-app-tdescreensaver.png Binary files differindex 69c8214fb..54a8fc847 100644 --- a/kcontrol/pics/cr64-app-tdescreensaver.png +++ b/kcontrol/pics/cr64-app-tdescreensaver.png diff --git a/kcontrol/pics/cr64-app-tdmconfig.png b/kcontrol/pics/cr64-app-tdmconfig.png Binary files differindex 57c5726d0..b48d949f6 100644 --- a/kcontrol/pics/cr64-app-tdmconfig.png +++ b/kcontrol/pics/cr64-app-tdmconfig.png diff --git a/kcontrol/pics/cr64-category-preferences-desktop-personal.png b/kcontrol/pics/cr64-category-preferences-desktop-personal.png Binary files differindex 136dcfe11..1f0a10af6 100644 --- a/kcontrol/pics/cr64-category-preferences-desktop-personal.png +++ b/kcontrol/pics/cr64-category-preferences-desktop-personal.png diff --git a/kcontrol/pics/cr64-category-preferences-desktop.png b/kcontrol/pics/cr64-category-preferences-desktop.png Binary files differindex b73346e44..51c28feaf 100644 --- a/kcontrol/pics/cr64-category-preferences-desktop.png +++ b/kcontrol/pics/cr64-category-preferences-desktop.png diff --git a/kcontrol/pics/cr64-device-laptop.png b/kcontrol/pics/cr64-device-laptop.png Binary files differindex 6084660cc..41879e6bc 100644 --- a/kcontrol/pics/cr64-device-laptop.png +++ b/kcontrol/pics/cr64-device-laptop.png diff --git a/kcontrol/randr/tderandrtray.h b/kcontrol/randr/tderandrtray.h index 8f382922f..334e1ef31 100644 --- a/kcontrol/randr/tderandrtray.h +++ b/kcontrol/randr/tderandrtray.h @@ -24,13 +24,14 @@ #include <ksystemtray.h> #include <kglobalaccel.h> -#include <libtderandr/libtderandr.h> #ifdef __TDE_HAVE_TDEHWLIB #include <tdehardwaredevices.h> #else #define TDEGenericDevice void #endif +#include <libtderandr/libtderandr.h> + class KHelpMenu; class TDEPopupMenu; diff --git a/kcontrol/tdefontinst/kcmfontinst/cr16-action-newfont.png b/kcontrol/tdefontinst/kcmfontinst/cr16-action-newfont.png Binary files differindex 61eef357e..96211d80e 100644 --- a/kcontrol/tdefontinst/kcmfontinst/cr16-action-newfont.png +++ b/kcontrol/tdefontinst/kcmfontinst/cr16-action-newfont.png diff --git a/kcontrol/tdefontinst/kcmfontinst/cr22-action-newfont.png b/kcontrol/tdefontinst/kcmfontinst/cr22-action-newfont.png Binary files differindex 049197a35..5804667fd 100644 --- a/kcontrol/tdefontinst/kcmfontinst/cr22-action-newfont.png +++ b/kcontrol/tdefontinst/kcmfontinst/cr22-action-newfont.png diff --git a/kcontrol/tdefontinst/kcmfontinst/cr32-action-newfont.png b/kcontrol/tdefontinst/kcmfontinst/cr32-action-newfont.png Binary files differindex 9cd3d57bc..746bbc703 100644 --- a/kcontrol/tdefontinst/kcmfontinst/cr32-action-newfont.png +++ b/kcontrol/tdefontinst/kcmfontinst/cr32-action-newfont.png diff --git a/kcontrol/tdm/tdm-appear.cpp b/kcontrol/tdm/tdm-appear.cpp index 8d3f848b5..cfd008481 100644 --- a/kcontrol/tdm/tdm-appear.cpp +++ b/kcontrol/tdm/tdm-appear.cpp @@ -479,6 +479,8 @@ void TDMAppearanceWidget::save() if (!sakwarning) { config->setGroup("X-:*-Greeter"); config->writeEntry("UseSAK", sakbox->isChecked()); + config->setGroup("X-*-Greeter"); + config->deleteEntry("UseSAK"); } // Enable/disable tsak as needed @@ -547,7 +549,12 @@ void TDMAppearanceWidget::load() // See if the SAK is enabled if (!sakwarning) { - config->setGroup("X-:*-Greeter"); + if (config->hasGroup("X-:*-Greeter")) { + config->setGroup("X-:*-Greeter"); + } + else { + config->setGroup("X-*-Greeter"); + } sakbox->setChecked(config->readBoolEntry("UseSAK", false)); } else { |