QStyleManager.h

00001 /*
00002  * @(#)QStyleManager.h  0.2.0 / 2007-10-09
00003  *
00004  * Copyright (c) 2007, ETF and contributors. All rights reserved.
00005  *
00006  * This software is licensed under the LGPL, version 2.1, license.
00007  * A copy of the license is included in the file LICENSE-LGPL.txt.
00008  */
00009 #ifndef QSTYLEMANAGER_H
00010 #define QSTYLEMANAGER_H
00011 
00012 #include "JavaQxQSwing.h"
00013 #include "QFontSet.h"
00014 
00015 /*^**************************************************************************^*/
00016 /*- QStyleManager Class.                                                     -*/
00017 /*^**************************************************************************^*/
00018 
00025 class JAVAQX_EXPORT QStyleManager : public QObject
00026 {
00027   Q_OBJECT
00028 private:
00029   QStyleManager();
00030   ~QStyleManager();
00031 public:
00032   const QString &systemStyleName() const;
00033   const QString &systemStyleDescription() const;
00034   QStringList &availableStyleNames();
00035   QStringList &availableThemeNames();
00036 public slots:
00037   jboolean setStyle(JNIEnv *env, jstring name);
00038   void setTheme(JNIEnv *env, jobject colorPalette, jobject fontSet);
00039   void setUseSystemTheme(JNIEnv *env, jboolean useSystemTheme);
00040   void fillPalette(JNIEnv *env, jobject customColorPalette, jstring name);
00041   void fillPalette(JNIEnv *env, jobject customColorPalette, jint argb);
00042   void fillFontSet(JNIEnv *env, jobject customFontSet, jstring name);
00043 public:
00044   static void initialize(JNIEnv *env, jclass systemColorPaletteClass,
00045                          jclass systemFontSetClass);
00046   static void setCustomProperty(const QString &name, const QString &value);
00047 public:
00048   inline static QStyleManager *instance();
00049 private:
00050   QStyle *createStyle(const QString &styleName);
00051   QPalette *getPalette(const QString &paletteName);
00052   QFontSet *getFontSet(const QString &fontSetName);
00053   QFontSet *getFontSet(JNIEnv *env, jobject fontSet);
00054   void fillPalette(JNIEnv *env, jobject customColorPalette, QPalette *palette);
00055   bool fillColor(JNIEnv *env, jobject customColorPalette, jfieldID fid,
00056                  QColor color);
00057   void loadPalette(JNIEnv *env, jobject colorPalette, QPalette *palette);
00058   void loadColor(JNIEnv *env, jobject customColorPalette, jmethodID metodID,
00059                  QPalette *palette, QPalette::ColorGroup cg,
00060                  QPalette::ColorRole cr);
00061   bool fillFont(JNIEnv *env, jobject customFontSet, jfieldID fid, QFont font);
00062   bool getFont(JNIEnv *env, QFont &result, jobject fontSet, jmethodID mid);
00063   bool initColorPaletteFIDs(JNIEnv *env, jclass cls);
00064   bool initColorPaletteMIDs(JNIEnv *env, jclass cls);
00065   bool initFontSetFIDs(JNIEnv *env, jclass cls);
00066   bool initFontSetMIDs(JNIEnv *env, jclass cls);
00067 private:
00068   QString m_systemStyleName;
00069   QString m_systemStyleDescription;
00070   QStringList m_availableStyleNames;
00071   QStringList m_availableThemeNames;
00072   QPalette m_systemPallete;
00073   QFontSet m_systemFontSet;
00074   QHash<QString, QPalette *> m_palettes;
00075   QHash<QString, QFontSet *> m_fontSets;
00076   bool m_useSystemTheme;
00077   #ifdef Q_OS_WIN32
00078     bool m_winThemeable;
00079   #endif // Q_OS_WIN32
00080 private:
00081   static QStyleManager *sm_instance;
00082   static jclass sm_systemColorPaletteClass;
00083   static jclass sm_systemFontSetClass;
00084   static jfieldID sm_systemColorPaletteNameFID;
00085   static jfieldID sm_systemFontSetNameFID;
00086   static jfieldID sm_activeBackgroundColorFID;
00087   static jfieldID sm_inactiveBackgroundColorFID;
00088   static jfieldID sm_disabledBackgroundColorFID;
00089   static jfieldID sm_activeForegroundColorFID;
00090   static jfieldID sm_inactiveForegroundColorFID;
00091   static jfieldID sm_disabledForegroundColorFID;
00092   static jfieldID sm_activeBaseColorFID;
00093   static jfieldID sm_inactiveBaseColorFID;
00094   static jfieldID sm_disabledBaseColorFID;
00095   static jfieldID sm_activeAlternateBaseColorFID;
00096   static jfieldID sm_inactiveAlternateBaseColorFID;
00097   static jfieldID sm_disabledAlternateBaseColorFID;
00098   static jfieldID sm_activeTextColorFID;
00099   static jfieldID sm_inactiveTextColorFID;
00100   static jfieldID sm_disabledTextColorFID;
00101   static jfieldID sm_activeButtonColorFID;
00102   static jfieldID sm_inactiveButtonColorFID;
00103   static jfieldID sm_disabledButtonColorFID;
00104   static jfieldID sm_activeButtonTextColorFID;
00105   static jfieldID sm_inactiveButtonTextColorFID;
00106   static jfieldID sm_disabledButtonTextColorFID;
00107   static jfieldID sm_activeBrightTextColorFID;
00108   static jfieldID sm_inactiveBrightTextColorFID;
00109   static jfieldID sm_disabledBrightTextColorFID;
00110   static jfieldID sm_activeLightColorFID;
00111   static jfieldID sm_inactiveLightColorFID;
00112   static jfieldID sm_disabledLightColorFID;
00113   static jfieldID sm_activeMidlightColorFID;
00114   static jfieldID sm_inactiveMidlightColorFID;
00115   static jfieldID sm_disabledMidlightColorFID;
00116   static jfieldID sm_activeDarkColorFID;
00117   static jfieldID sm_inactiveDarkColorFID;
00118   static jfieldID sm_disabledDarkColorFID;
00119   static jfieldID sm_activeMidColorFID;
00120   static jfieldID sm_inactiveMidColorFID;
00121   static jfieldID sm_disabledMidColorFID;
00122   static jfieldID sm_activeShadowColorFID;
00123   static jfieldID sm_inactiveShadowColorFID;
00124   static jfieldID sm_disabledShadowColorFID;
00125   static jfieldID sm_activeHighlightColorFID;
00126   static jfieldID sm_inactiveHighlightColorFID;
00127   static jfieldID sm_disabledHighlightColorFID;
00128   static jfieldID sm_activeHighlightedTextColorFID;
00129   static jfieldID sm_inactiveHighlightedTextColorFID;
00130   static jfieldID sm_disabledHighlightedTextColorFID;
00131   static jfieldID sm_activeLinkColorFID;
00132   static jfieldID sm_inactiveLinkColorFID;
00133   static jfieldID sm_disabledLinkColorFID;
00134   static jfieldID sm_activeLinkVisitedColorFID;
00135   static jfieldID sm_inactiveLinkVisitedColorFID;
00136   static jfieldID sm_disabledLinkVisitedColorFID;
00137   static jfieldID sm_defaultFontFID;
00138   static jfieldID sm_componentFontFID;
00139   static jfieldID sm_buttonFontFID;
00140   static jfieldID sm_menuFontFID;
00141   static jfieldID sm_menuBarFontFID;
00142   static jfieldID sm_textFontFID;
00143   static jfieldID sm_toolTipFontFID;
00144   static jmethodID sm_getActiveBackgroundColorMID;
00145   static jmethodID sm_getInactiveBackgroundColorMID;
00146   static jmethodID sm_getDisabledBackgroundColorMID;
00147   static jmethodID sm_getActiveForegroundColorMID;
00148   static jmethodID sm_getInactiveForegroundColorMID;
00149   static jmethodID sm_getDisabledForegroundColorMID;
00150   static jmethodID sm_getActiveBaseColorMID;
00151   static jmethodID sm_getInactiveBaseColorMID;
00152   static jmethodID sm_getDisabledBaseColorMID;
00153   static jmethodID sm_getActiveAlternateBaseColorMID;
00154   static jmethodID sm_getInactiveAlternateBaseColorMID;
00155   static jmethodID sm_getDisabledAlternateBaseColorMID;
00156   static jmethodID sm_getActiveTextColorMID;
00157   static jmethodID sm_getInactiveTextColorMID;
00158   static jmethodID sm_getDisabledTextColorMID;
00159   static jmethodID sm_getActiveButtonColorMID;
00160   static jmethodID sm_getInactiveButtonColorMID;
00161   static jmethodID sm_getDisabledButtonColorMID;
00162   static jmethodID sm_getActiveButtonTextColorMID;
00163   static jmethodID sm_getInactiveButtonTextColorMID;
00164   static jmethodID sm_getDisabledButtonTextColorMID;
00165   static jmethodID sm_getActiveBrightTextColorMID;
00166   static jmethodID sm_getInactiveBrightTextColorMID;
00167   static jmethodID sm_getDisabledBrightTextColorMID;
00168   static jmethodID sm_getActiveLightColorMID;
00169   static jmethodID sm_getInactiveLightColorMID;
00170   static jmethodID sm_getDisabledLightColorMID;
00171   static jmethodID sm_getActiveMidlightColorMID;
00172   static jmethodID sm_getInactiveMidlightColorMID;
00173   static jmethodID sm_getDisabledMidlightColorMID;
00174   static jmethodID sm_getActiveDarkColorMID;
00175   static jmethodID sm_getInactiveDarkColorMID;
00176   static jmethodID sm_getDisabledDarkColorMID;
00177   static jmethodID sm_getActiveMidColorMID;
00178   static jmethodID sm_getInactiveMidColorMID;
00179   static jmethodID sm_getDisabledMidColorMID;
00180   static jmethodID sm_getActiveShadowColorMID;
00181   static jmethodID sm_getInactiveShadowColorMID;
00182   static jmethodID sm_getDisabledShadowColorMID;
00183   static jmethodID sm_getActiveHighlightColorMID;
00184   static jmethodID sm_getInactiveHighlightColorMID;
00185   static jmethodID sm_getDisabledHighlightColorMID;
00186   static jmethodID sm_getActiveHighlightedTextColorMID;
00187   static jmethodID sm_getInactiveHighlightedTextColorMID;
00188   static jmethodID sm_getDisabledHighlightedTextColorMID;
00189   static jmethodID sm_getActiveLinkColorMID;
00190   static jmethodID sm_getInactiveLinkColorMID;
00191   static jmethodID sm_getDisabledLinkColorMID;
00192   static jmethodID sm_getActiveLinkVisitedColorMID;
00193   static jmethodID sm_getInactiveLinkVisitedColorMID;
00194   static jmethodID sm_getDisabledLinkVisitedColorMID;
00195   static jmethodID sm_getDefaultFontMID;
00196   static jmethodID sm_getComponentFontMID;
00197   static jmethodID sm_getFixedFontMID;
00198   static jmethodID sm_getButtonFontMID;
00199   static jmethodID sm_getMenuFontMID;
00200   static jmethodID sm_getMenuBarFontMID;
00201   static jmethodID sm_getTextFontMID;
00202   static jmethodID sm_getToolTipFontMID;
00203 };
00204 
00205 /*^**************************************************************************^*/
00206 /*- QStyleManager :: Public Static Inline Member Function.                   -*/
00207 /*^**************************************************************************^*/
00208 
00214 inline QStyleManager *QStyleManager::instance()
00215 {
00216   return sm_instance;
00217 }
00218 
00219 /*^**************************************************************************^*/
00220 /*- Macro Definition.                                                        -*/
00221 /*^**************************************************************************^*/
00222 
00223 #define qStyleManager (QStyleManager::instance())
00224 
00225 #endif // QSTYLEMANAGER_H
00226 
00227 /*^*****************************************************************************
00228   File History:
00229 
00230  - 2007-10-09 20:32:06 Slobodan
00231    Initial version
00232 
00233 *****************************************************************************^*/

Copyright © 2007 ETF and contributors. All Rights Reserved.