summaryrefslogtreecommitdiffstats
path: root/kcontrol/kthememanager/kthememanager.h
blob: cbb0a1db50c64bde891a75642fe0b8fadaefe40e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
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 TQString & text, const TQPixmap & icon, const TQString & execString )
        : KIconViewItem( parent, text, icon ) { m_exec = execString; }
    virtual ~KThemeDetailsItem() { };

    void exec() {
        ( void ) new KRun( m_exec );
    }
private:
    TQString 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( TQWidget *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 ( TQDragEnterEvent * ev );
    void dropEvent ( TQDropEvent * 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( TQListViewItem * 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 TQString & themeName );

    void queryLNFModules();

    /**
     * Updates the preview widget
     */
    void updatePreview( const TQString & pixFile );
    bool themeExist(const TQString &_themeName);
    KThemeDlg * dlg;

    KTheme * m_theme;
    KTheme * m_origTheme;
};

#endif