00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef QICONADAPTER_H
00010 #define QICONADAPTER_H
00011
00012 #include "JavaQxQSwing.h"
00013 #include "QSwingGraphics.h"
00014
00015
00016
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
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
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
00107
00108
00109
00110
00111