summaryrefslogtreecommitdiff
path: root/noncore/styles/theme/themeset.cpp
Unidiff
Diffstat (limited to 'noncore/styles/theme/themeset.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/styles/theme/themeset.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/noncore/styles/theme/themeset.cpp b/noncore/styles/theme/themeset.cpp
new file mode 100644
index 0000000..4a4efcb
--- a/dev/null
+++ b/noncore/styles/theme/themeset.cpp
@@ -0,0 +1,123 @@
1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3**
4** This file is part of Qtopia Environment.
5**
6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20
21
22
23#include "themeset.h"
24
25#include <qpe/qpeapplication.h>
26#include <qpe/global.h>
27
28#include <qlabel.h>
29#include <qlayout.h>
30#include <qlistview.h>
31#include <qdir.h>
32
33#include <qpe/config.h>
34
35
36class MyConfig : public Config
37{
38public:
39 MyConfig ( const QString &f, Domain d ) : Config ( f, d )
40 { }
41
42 bool hasGroup ( const QString &gname ) const
43 {
44 QMap< QString, ConfigGroup>::ConstIterator it = groups. find ( gname );
45 return ( it != groups.end() );
46 }
47};
48
49class MyItem : public QListViewItem
50{
51public:
52 MyItem ( QListView *lv, const QString &name, const QString &comm, const QString &theme ) : QListViewItem ( lv, name, comm )
53 {
54 m_theme = theme;
55 }
56
57
58 QString m_theme;
59};
60
61
62ThemeSettings::ThemeSettings ( QWidget* parent, const char *name, WFlags fl )
63 : QWidget ( parent, name, fl )
64{
65 setCaption ( tr( "Theme Style" ) );
66
67 Config config ( "qpe" );
68 config. setGroup ( "Appearance" );
69
70 QString active = config. readEntry ( "Theme", "default" );
71
72 QVBoxLayout *vbox = new QVBoxLayout ( this );
73 vbox-> setSpacing ( 3 );
74 vbox-> setMargin ( 6 );
75
76 vbox-> addWidget ( new QLabel ( tr( "Select the theme to be used" ), this ));
77
78 m_list = new QListView ( this );
79 m_list-> addColumn ( tr( "Name" ));
80 m_list-> addColumn ( tr( "Description" ));
81 m_list-> setSelectionMode ( QListView::Single );
82 m_list-> setAllColumnsShowFocus ( true );
83 vbox-> addWidget ( m_list, 10 );
84
85 QListViewItem *item = new MyItem ( m_list, tr( "[No theme]" ), "", "" );
86 m_list-> setSelected ( item, true );
87
88 QString path = QPEApplication::qpeDir() + "/plugins/styles/themes";
89 QStringList list = QDir ( path, "*.themerc" ). entryList ( );
90
91 for ( QStringList::Iterator it = list. begin(); it != list. end ( ); ++it ) {
92 MyConfig cfg ( path + "/" + *it, Config::File );
93
94 if ( cfg. hasGroup ( "Misc" )) {
95 cfg. setGroup ( "Misc" );
96
97 QString name = cfg. readEntry ( "Name" );
98 QString comm = cfg. readEntry ( "Comment" );
99
100 if ( !name. isEmpty ( )) {
101 QString fname = (*it). left ((*it). length ( ) - 8 );
102
103 item = new MyItem ( m_list, name, comm, fname );
104 if ( active == fname ) {
105 m_list-> setSelected ( item, true );
106 }
107 }
108 }
109 }
110}
111
112bool ThemeSettings::writeConfig ( )
113{
114 Config config ( "qpe" );
115 config. setGroup ( "Appearance" );
116
117 MyItem *it = (MyItem *) m_list-> selectedItem ( );
118 config. writeEntry ( "Theme", it ? it-> m_theme : QString ( "" ));
119 config. write ( );
120
121 return true;
122}
123