QIconAdapter.h

00001 /*
00002  * @(#)QIconAdapter.h  0.2.0 / 2007-09-19
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 QICONADAPTER_H
00010 #define QICONADAPTER_H
00011 
00012 #include "JavaQxQSwing.h"
00013 #include "QSwingGraphics.h"
00014 
00015 /*^**************************************************************************^*/
00016 /*- QIconAdapter Class.                                                      -*/
00017 /*^**************************************************************************^*/
00018 
00025 class JAVAQX_EXPORT QIconAdapter : public QIcon
00026 {
00027 public:
00028   enum IconType { DefaultIcon, PressedIcon, SelectedIcon, DisabledIcon,
00029                   DisabledSelectedIcon, RolloverIcon, RolloverSelectedIcon };
00030 public:
00031   QIconAdapter(JNIEnv *env, jobject iconSet);
00032   QIconAdapter(JNIEnv *env, jobject iconSet, IconType *m_iconType);
00033 };
00034 
00035 /*^**************************************************************************^*/
00036 /*- QIconAdapterEngine Class.                                                -*/
00037 /*^**************************************************************************^*/
00038 
00045 class QIconAdapterEngine : public QIconEngine
00046 {
00047 public:
00048   QIconAdapterEngine(JNIEnv *env, jobject iconSet);
00049   QIconAdapterEngine(JNIEnv *env, jobject iconSet,
00050                      QIconAdapter::IconType *m_iconType);
00051   virtual ~QIconAdapterEngine();
00052 public:
00053   void setIcon(QPixmap *image);
00054   void setPressedIcon(QPixmap *image);
00055   void removePressedIcon();
00056   void setSelectedIcon(QPixmap *image);
00057   void removeSelectedIcon();
00058   void setDisabledIcon(QPixmap *image);
00059   void removeDisabledIcon();
00060   void setDisabledSelectedIcon(QPixmap *image);
00061   void removeDisabledSelectedIcon();
00062   void setRolloverIcon(QPixmap *image);
00063   void removeRolloverIcon();
00064   void setRolloverSelectedIcon(QPixmap *image);
00065   void removeRolloverSelectedIcon();
00066 public:
00067   QSize actualSize(const QSize &size, QIcon::Mode, QIcon::State);
00068   QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
00069   void paint(QPainter *painter, const QRect &rect, QIcon::Mode,
00070              QIcon::State state);
00071   void addFile(const QString &str, const QSize &size,  QIcon::Mode,
00072                QIcon::State);
00073   void addPixmap(const QPixmap &pm, QIcon::Mode, QIcon::State state);
00074 public:
00075   static void initialize(JNIEnv *env, jclass cls);
00076 private:
00077   QIconAdapter::IconType iconType(QIcon::Mode mode, QIcon::State state);
00078   void makeDisabledIcon();
00079   jint getWidth(jint type);
00080   jint getHeight(jint type);
00081   bool isDisabledIconSet();
00082 private:
00083   jobject m_iconSet;
00084   QPixmap *m_icons[7];
00085   QIconAdapter::IconType *m_iconType;
00086   bool m_makeDisabledIcon;
00087   bool m_disabledIconGenerated;
00088 private:
00089   static jfieldID sm_iconEnginePointerFID;
00090   static jmethodID sm_getIconWidthMID;
00091   static jmethodID sm_getIconHeightMID;
00092   static jmethodID sm_paintIconMID;
00093 };
00094 
00095 /*^**************************************************************************^*/
00096 /*- Macro Definitions.                                                       -*/
00097 /*^**************************************************************************^*/
00098 
00099 #define qIconAdapterEngine \
00100     (reinterpret_cast<QIconAdapterEngine *>(iconEnginePointer))
00101 #define qIconImage (reinterpret_cast<QPixmap *>(imagePointer))
00102 
00103 #endif //QICONADAPTER_H
00104 
00105 /*^*****************************************************************************
00106   File History:
00107 
00108  - 2007-09-19 09:51:06 Slobodan
00109    Initial version
00110 
00111 *****************************************************************************^*/

Copyright © 2007 ETF and contributors. All Rights Reserved.