summaryrefslogtreecommitdiffstats
path: root/kcontrol/kthememanager/kthememanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/kthememanager/kthememanager.h')
-rw-r--r--kcontrol/kthememanager/kthememanager.h157
1 files changed, 157 insertions, 0 deletions
diff --git a/kcontrol/kthememanager/kthememanager.h b/kcontrol/kthememanager/kthememanager.h
new file mode 100644
index 000000000..972251f6a
--- /dev/null
+++ b/kcontrol/kthememanager/kthememanager.h
@@ -0,0 +1,157 @@
+// -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 4; -*-
+/* Copyright (C) 2003 Lukas Tinkl <lukas@kde.org>
+
+ 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; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#ifndef KTHEMEMANAGER_H
+#define KTHEMEMANAGER_H
+
+#include <kcmodule.h>
+#include <krun.h>
+#include <kservice.h>
+#include <kurl.h>
+
+#include "kthemedlg.h"
+#include "ktheme.h"
+
+class QString;
+
+class KAboutData;
+
+#define ORIGINAL_THEME "original" // no i18n() here!!!
+
+/*
+class KIconViewItem;
+
+class KThemeDetailsItem: public KIconViewItem
+{
+public:
+ KThemeDetailsItem( KIconView * parent, const QString & text, const QPixmap & icon, const QString & execString )
+ : KIconViewItem( parent, text, icon ) { m_exec = execString; }
+ virtual ~KThemeDetailsItem() { };
+
+ void exec() {
+ ( void ) new KRun( m_exec );
+ }
+private:
+ QString m_exec;
+};
+*/
+
+/**
+ *
+ * This is the for KControl config module for installing,
+ * creating and removing visual themes.
+ *
+ * @brief The Theme Manager config module.
+ * @author Lukas Tinkl <lukas@kde.org>
+ */
+class kthememanager: public KCModule
+{
+ Q_OBJECT
+public:
+ kthememanager( QWidget *parent=0, const char *name=0 );
+ virtual ~kthememanager();
+
+ /**
+ * Called on module startup
+ */
+ virtual void load();
+ virtual void load(bool useDefaults);
+ /**
+ * Called when applying the changes
+ */
+ virtual void save();
+ /**
+ * Called when the user requests the default values
+ */
+ virtual void defaults();
+
+protected:
+ void dragEnterEvent ( QDragEnterEvent * ev );
+ void dropEvent ( QDropEvent * ev );
+
+signals:
+ /**
+ * Emitted when some @p urls are dropped onto the kcm
+ */
+ void filesDropped(const KURL::List &urls);
+
+private slots:
+ /**
+ * Install a theme from a tarball (*.kth)
+ */
+ void slotInstallTheme();
+
+ /**
+ * Remove an installed theme
+ */
+ void slotRemoveTheme();
+
+ /**
+ * Create a new theme
+ */
+ void slotCreateTheme();
+
+ /**
+ * Update the theme's info and preview
+ */
+ void slotThemeChanged( QListViewItem * item );
+
+ /**
+ * Invoked when one drag and drops @p urls onto the kcm
+ * @see signal filesDropped
+ */
+ void slotFilesDropped( const KURL::List & urls );
+ void updateButton();
+
+private:
+ /**
+ * List themes available in the system and insert them into the listview.
+ */
+ void listThemes();
+
+ /**
+ * Performs the actual theme installation.
+ */
+ void addNewTheme( const KURL & url );
+
+ /**
+ * Perform internal initialization of paths.
+ */
+ void init();
+
+ /**
+ * Try to find out whether a theme is installed and get its version number
+ * @param themeName The theme name
+ * @return The theme's version number or -1 if not installed
+ */
+ static float getThemeVersion( const QString & themeName );
+
+ void queryLNFModules();
+
+ /**
+ * Updates the preview widget
+ */
+ void updatePreview( const QString & pixFile );
+ bool themeExist(const QString &_themeName);
+ KThemeDlg * dlg;
+
+ KTheme * m_theme;
+ KTheme * m_origTheme;
+};
+
+#endif