summaryrefslogtreecommitdiff
path: root/noncore/styles/theme
authorsandman <sandman>2002-07-06 16:42:29 (UTC)
committer sandman <sandman>2002-07-06 16:42:29 (UTC)
commit3a422983abc7342c9229dccac825d0608fca10f3 (patch) (side-by-side diff)
treefd0d71eab4df0b286b78efe24184525ae4c819a3 /noncore/styles/theme
parent8beb5fcdbca8110dc586a7e620bf8eae892087fb (diff)
downloadopie-3a422983abc7342c9229dccac825d0608fca10f3.zip
opie-3a422983abc7342c9229dccac825d0608fca10f3.tar.gz
opie-3a422983abc7342c9229dccac825d0608fca10f3.tar.bz2
Complete renovation of the external style API:
- created two QCom interfaces in "styleinterface.h" - moved the liquid/theme settings apps into the plugins - modified the plugin interface for all three styles - extended appearance to fully support the new API (replaces the settings apps) Additional work: - made a workaround in appearance for a Qt Bug -- now a QDialog again (this should really be fixed in Qt, but Z won't work that way)
Diffstat (limited to 'noncore/styles/theme') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/styles/theme/opie-theme.control2
-rw-r--r--noncore/styles/theme/plugin.cpp118
-rw-r--r--noncore/styles/theme/plugin.h46
-rw-r--r--noncore/styles/theme/settings/main.cpp34
-rw-r--r--noncore/styles/theme/settings/settings.pro24
-rw-r--r--noncore/styles/theme/settings/themeset.h20
-rw-r--r--noncore/styles/theme/theme.pro5
-rw-r--r--noncore/styles/theme/themeset.cpp (renamed from noncore/styles/theme/settings/themeset.cpp)11
-rw-r--r--noncore/styles/theme/themeset.h20
9 files changed, 181 insertions, 99 deletions
diff --git a/noncore/styles/theme/opie-theme.control b/noncore/styles/theme/opie-theme.control
index 02739fb..adb4f4b 100644
--- a/noncore/styles/theme/opie-theme.control
+++ b/noncore/styles/theme/opie-theme.control
@@ -1,7 +1,7 @@
-Files: plugins/styles/libtheme.so* bin/theme-settings apps/Settings/Theme.desktop pics/theme/Theme.png
+Files: plugins/styles/libtheme.so*
Priority: optional
Section: opie/system
Maintainer: Robert Griebl <sandman@handhelds.org>
Architecture: arm
Version: $QPE_VERSION-$SUB_VERSION.1
Depends: opie-base ($QPE_VERSION)
diff --git a/noncore/styles/theme/plugin.cpp b/noncore/styles/theme/plugin.cpp
index b334357..4383693 100644
--- a/noncore/styles/theme/plugin.cpp
+++ b/noncore/styles/theme/plugin.cpp
@@ -1,19 +1,111 @@
-//#include <klocale.h>
#include "othemestyle.h"
+#include "themeset.h"
+#include "plugin.h"
-extern "C"
+
+
+ThemeInterface::ThemeInterface ( ) : ref ( 0 )
{
- QStyle * allocate() {
- return new OThemeStyle ( "" );
- }
- int minor_version() {
- return 0;
- }
- int major_version() {
- return 1;
- }
- const char * description() {
- return ( "Theme Style" );
+}
+
+ThemeInterface::~ThemeInterface ( )
+{
+}
+
+QStyle *ThemeInterface::create ( )
+{
+ return new OThemeStyle ( "" );
+}
+
+QString ThemeInterface::name ( )
+{
+ return QObject::tr( "Themed style", "name" );
+}
+
+QString ThemeInterface::description ( )
+{
+ return QObject::tr( "KDE2 theme compatible style engine", "description" );
+}
+
+QCString ThemeInterface::key ( )
+{
+ return QCString ( "theme" );
+}
+
+unsigned int ThemeInterface::version ( )
+{
+ return 100; // 1.0.0 (\d+.\d.\d)
+}
+
+QRESULT ThemeInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface )
+{
+ static ThemeSettingsInterface *setiface = 0;
+
+ *iface = 0;
+
+ if ( uuid == IID_QUnknown )
+ *iface = this;
+ else if ( uuid == IID_Style )
+ *iface = this;
+ else if ( uuid == IID_StyleSettings ) {
+ if ( !setiface )
+ setiface = new ThemeSettingsInterface ( );
+ *iface = setiface;
}
+
+ if ( *iface )
+ (*iface)-> addRef ( );
+
+ return QS_OK;
+}
+
+Q_EXPORT_INTERFACE()
+{
+ Q_CREATE_INSTANCE( ThemeInterface )
+}
+
+
+ThemeSettingsInterface::ThemeSettingsInterface ( ) : ref ( 0 )
+{
+ m_widget = 0;
+}
+
+ThemeSettingsInterface::~ThemeSettingsInterface ( )
+{
+}
+
+QWidget *ThemeSettingsInterface::create ( QWidget *parent, const char *name )
+{
+ m_widget = new ThemeSettings ( parent, name ? name : "THEME-SETTINGS" );
+
+ return m_widget;
+}
+
+bool ThemeSettingsInterface::accept ( )
+{
+ if ( !m_widget )
+ return false;
+
+ return m_widget-> writeConfig ( );
+}
+
+void ThemeSettingsInterface::reject ( )
+{
+}
+
+QRESULT ThemeSettingsInterface::queryInterface ( const QUuid &uuid, QUnknownInterface **iface )
+{
+ *iface = 0;
+
+
+ if ( uuid == IID_QUnknown )
+ *iface = this;
+ else if ( uuid == IID_StyleSettings )
+ *iface = this;
+
+ if ( *iface )
+ (*iface)-> addRef ( );
+
+ return QS_OK;
}
diff --git a/noncore/styles/theme/plugin.h b/noncore/styles/theme/plugin.h
new file mode 100644
index 0000000..d13fc5d
--- a/dev/null
+++ b/noncore/styles/theme/plugin.h
@@ -0,0 +1,46 @@
+#ifndef __OPIE_THEME_PLUGIN_H__
+#define __OPIE_THEME_PLUGIN_H__
+
+#include <qpe/styleinterface.h>
+
+class ThemeSettings;
+
+class ThemeInterface : public StyleInterface {
+public:
+ ThemeInterface ( );
+ virtual ~ThemeInterface ( );
+
+ QRESULT queryInterface ( const QUuid &, QUnknownInterface ** );
+ Q_REFCOUNT
+
+ virtual QStyle *create ( );
+
+ virtual QString description ( );
+ virtual QString name ( );
+ virtual QCString key ( );
+
+ virtual unsigned int version ( );
+
+private:
+ ulong ref;
+};
+
+class ThemeSettingsInterface : public StyleSettingsInterface {
+public:
+ ThemeSettingsInterface ( );
+ virtual ~ThemeSettingsInterface ( );
+
+ QRESULT queryInterface ( const QUuid &, QUnknownInterface ** );
+ Q_REFCOUNT
+
+ virtual QWidget *create ( QWidget *parent, const char *name = 0 );
+
+ virtual bool accept ( );
+ virtual void reject ( );
+
+private:
+ ThemeSettings *m_widget;
+ ulong ref;
+};
+
+#endif
diff --git a/noncore/styles/theme/settings/main.cpp b/noncore/styles/theme/settings/main.cpp
deleted file mode 100644
index 94d40f3..0000000
--- a/noncore/styles/theme/settings/main.cpp
+++ b/dev/null
@@ -1,34 +0,0 @@
-/**********************************************************************
-** Copyright (C) 2000 Trolltech AS. All rights reserved.
-**
-** This file is part of Qtopia Environment.
-**
-** This file may be distributed and/or modified under the terms of the
-** GNU General Public License version 2 as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL included in the
-** packaging of this file.
-**
-** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
-** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
-**
-** See http://www.trolltech.com/gpl/ for GPL licensing information.
-**
-** Contact info@trolltech.com if any conditions of this licensing are
-** not clear to you.
-**
-**********************************************************************/
-
-#include "themeset.h"
-
-#include <qpe/qpeapplication.h>
-
-
-int main ( int argc, char** argv )
-{
- QPEApplication a ( argc, argv );
-
- ThemeSet dlg;
- a. showMainWidget ( &dlg );
-
- return a. exec ( );
-}
diff --git a/noncore/styles/theme/settings/settings.pro b/noncore/styles/theme/settings/settings.pro
deleted file mode 100644
index 85d1f7a..0000000
--- a/noncore/styles/theme/settings/settings.pro
+++ b/dev/null
@@ -1,24 +0,0 @@
-TEMPLATE = app
-CONFIG += qt warn_on release
-DESTDIR = $(OPIEDIR)/bin
-HEADERS = themeset.h
-SOURCES = themeset.cpp main.cpp
-INCLUDEPATH += $(OPIEDIR)/include
-DEPENDPATH += ../$(OPIEDIR)/include
-LIBS += -lqpe
-TARGET = theme-settings
-
-TRANSLATIONS = ../../../../i18n/de/theme-settings.ts \
- ../../../../i18n/en/theme-settings.ts \
- ../../../../i18n/es/theme-settings.ts \
- ../../../../i18n/fr/theme-settings.ts \
- ../../../../i18n/hu/theme-settings.ts \
- ../../../../i18n/ja/theme-settings.ts \
- ../../../../i18n/ko/theme-settings.ts \
- ../../../../i18n/no/theme-settings.ts \
- ../../../../i18n/pl/theme-settings.ts \
- ../../../../i18n/pt/theme-settings.ts \
- ../../../../i18n/pt_BR/theme-settings.ts \
- ../../../../i18n/sl/theme-settings.ts \
- ../../../../i18n/zh_CN/theme-settings.ts \
- ../../../../i18n/zh_TW/theme-settings.ts
diff --git a/noncore/styles/theme/settings/themeset.h b/noncore/styles/theme/settings/themeset.h
deleted file mode 100644
index 24804ce..0000000
--- a/noncore/styles/theme/settings/themeset.h
+++ b/dev/null
@@ -1,20 +0,0 @@
-#ifndef __OPIE_THEME_SET_H__
-#define __OPIE_THEME_SET_H__
-
-#include <qdialog.h>
-
-class QListView;
-
-class ThemeSet : public QDialog {
- Q_OBJECT
-
-public:
- ThemeSet ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
-
-protected:
- virtual void accept ( );
-
-private:
- QListView *m_list;
-};
-#endif
diff --git a/noncore/styles/theme/theme.pro b/noncore/styles/theme/theme.pro
index fdcd20e..49c4103 100644
--- a/noncore/styles/theme/theme.pro
+++ b/noncore/styles/theme/theme.pro
@@ -1,16 +1,19 @@
TEMPLATE = lib
CONFIG = qt embedded debug warn_on
SOURCES = ogfxeffect.cpp \
othemestyle.cpp \
othemebase.cpp \
+ themeset.cpp \
plugin.cpp
HEADERS = ogfxeffect.h \
othemebase.h \
- othemestyle.h
+ othemestyle.h \
+ themeset.h \
+ plugin.h
LIBS += -lqpe
INCLUDEPATH += $(OPIEDIR)/include
DESTDIR = $(OPIEDIR)/plugins/styles
TARGET = theme
diff --git a/noncore/styles/theme/settings/themeset.cpp b/noncore/styles/theme/themeset.cpp
index 046618e..4a4efcb 100644
--- a/noncore/styles/theme/settings/themeset.cpp
+++ b/noncore/styles/theme/themeset.cpp
@@ -56,14 +56,14 @@ public:
QString m_theme;
};
-ThemeSet::ThemeSet ( QWidget* parent, const char *name, WFlags fl )
- : QDialog ( parent, name, fl )
+ThemeSettings::ThemeSettings ( QWidget* parent, const char *name, WFlags fl )
+ : QWidget ( parent, name, fl )
{
setCaption ( tr( "Theme Style" ) );
Config config ( "qpe" );
config. setGroup ( "Appearance" );
@@ -106,19 +106,18 @@ ThemeSet::ThemeSet ( QWidget* parent, const char *name, WFlags fl )
}
}
}
}
}
-void ThemeSet::accept ( )
+bool ThemeSettings::writeConfig ( )
{
Config config ( "qpe" );
config. setGroup ( "Appearance" );
MyItem *it = (MyItem *) m_list-> selectedItem ( );
config. writeEntry ( "Theme", it ? it-> m_theme : QString ( "" ));
+ config. write ( );
- Global::applyStyle ( );
-
- QDialog::accept ( );
+ return true;
}
diff --git a/noncore/styles/theme/themeset.h b/noncore/styles/theme/themeset.h
new file mode 100644
index 0000000..c337cfa
--- a/dev/null
+++ b/noncore/styles/theme/themeset.h
@@ -0,0 +1,20 @@
+#ifndef __OPIE_THEME_SETTINGS_H__
+#define __OPIE_THEME_SETTINGS_H__
+
+#include <qdialog.h>
+
+class QListView;
+
+class ThemeSettings : public QWidget {
+ Q_OBJECT
+
+public:
+ ThemeSettings ( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
+
+public:
+ virtual bool writeConfig ( );
+
+private:
+ QListView *m_list;
+};
+#endif