summaryrefslogtreecommitdiff
path: root/noncore/settings/appearance2/stylelistitem.h
Side-by-side diff
Diffstat (limited to 'noncore/settings/appearance2/stylelistitem.h') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/appearance2/stylelistitem.h85
1 files changed, 85 insertions, 0 deletions
diff --git a/noncore/settings/appearance2/stylelistitem.h b/noncore/settings/appearance2/stylelistitem.h
new file mode 100644
index 0000000..3cc63dc
--- a/dev/null
+++ b/noncore/settings/appearance2/stylelistitem.h
@@ -0,0 +1,85 @@
+#ifndef STYLELISTITEM_H
+#define STYLELISTITEM_H
+
+#include <qlistbox.h>
+#include <qpe/styleinterface.h>
+
+#include <stdio.h>
+
+class StyleListItem : public QListBoxText {
+public:
+ StyleListItem ( const QString &t, QStyle *sty ) : QListBoxText ( t )
+ {
+ m_lib = 0;
+ m_style_if = 0;
+ m_settings_if = 0;
+ m_style = sty;
+ }
+
+ StyleListItem ( QLibrary *lib, StyleInterface *iface ) : QListBoxText ( iface-> name ( ))
+ {
+ m_lib = lib;
+ m_style_if = iface;
+ m_settings_if = 0;
+ m_style = iface-> create ( );
+
+ iface-> queryInterface ( IID_StyleSettings, (QUnknownInterface **) &m_settings_if );
+ }
+
+ virtual ~StyleListItem ( )
+ {
+ delete m_style;
+
+ if ( m_settings_if )
+ m_settings_if-> release ( );
+ if ( m_style_if )
+ m_style_if-> release ( );
+ delete m_lib;
+ }
+
+ bool hasSettings ( ) const
+ {
+ return ( m_settings_if );
+ }
+
+ QWidget *settings ( QWidget *parent )
+ {
+ return m_settings_if ? m_settings_if-> create ( parent ) : 0;
+ }
+
+ bool setSettings ( bool accepted )
+ {
+ if ( !m_settings_if )
+ return false;
+
+ if ( accepted )
+ return m_settings_if-> accept ( );
+ else {
+ m_settings_if-> reject ( );
+ return false;
+ }
+ }
+
+ QString key ( )
+ {
+ if ( m_style_if )
+ return QString ( m_style_if-> key ( ));
+ else
+ return text ( );
+ }
+
+ QStyle *style ( )
+ {
+ return m_style;
+ }
+
+private:
+ QLibrary *m_lib;
+ QStyle *m_style;
+ StyleInterface *m_style_if;
+ StyleSettingsInterface *m_settings_if;
+
+};
+
+
+#endif