kexi
kexidbimagebox.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KexiDBImageBox_H
00022 #define KexiDBImageBox_H
00023
00024 #include "kexiformdataiteminterface.h"
00025 #include <qwidget.h>
00026 #include <kactioncollection.h>
00027 #include <kexiblobbuffer.h>
00028 #include <qtimer.h>
00029
00031
00033 class KEXIFORMUTILS_EXPORT KexiDBImageBox : public QWidget, public KexiFormDataItemInterface
00034 {
00035 Q_OBJECT
00036 Q_PROPERTY( QString dataSource READ dataSource WRITE setDataSource )
00037 Q_PROPERTY( QCString dataSourceMimeType READ dataSourceMimeType WRITE setDataSourceMimeType )
00038 Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly )
00039
00040
00041 Q_PROPERTY( uint pixmapId READ pixmapId WRITE setPixmapId DESIGNABLE true STORED false )
00042 Q_PROPERTY( uint storedPixmapId READ storedPixmapId WRITE setStoredPixmapId DESIGNABLE false STORED true )
00043 Q_PROPERTY( bool scaledContents READ hasScaledContents WRITE setScaledContents )
00044 Q_PROPERTY( bool keepAspectRatio READ keepAspectRatio WRITE setKeepAspectRatio )
00045 Q_PROPERTY( Alignment alignment READ alignment WRITE setAlignment )
00046
00047
00048 public:
00049 KexiDBImageBox( bool designMode, QWidget *parent, const char *name = 0 );
00050 virtual ~KexiDBImageBox();
00051
00052 inline QString dataSource() const { return KexiFormDataItemInterface::dataSource(); }
00053 inline QCString dataSourceMimeType() const { return KexiFormDataItemInterface::dataSourceMimeType(); }
00054
00055 virtual QVariant value();
00056
00057
00058
00059 QPixmap pixmap() const;
00060
00061 uint pixmapId() const;
00062
00063 uint storedPixmapId() const;
00064
00065 virtual void setInvalidState( const QString& displayText );
00066
00067 virtual bool valueIsNull();
00068
00069 virtual bool valueIsEmpty();
00070
00071 virtual QWidget* widget();
00072
00074 virtual bool cursorAtStart();
00075
00077 virtual bool cursorAtEnd();
00078
00079
00080
00081
00082
00083
00084 virtual bool isReadOnly() const;
00085
00086 bool hasScaledContents() const;
00087
00088
00089
00090 int alignment() const { return m_alignment; }
00091
00092 bool keepAspectRatio() const { return m_keepAspectRatio; }
00093
00094 virtual QSize sizeHint() const;
00095
00096 KActionCollection* actionCollection() { return &m_actionCollection; }
00097
00101
00102
00103 public slots:
00104 void setPixmapId(uint id);
00105
00106 void setStoredPixmapId(uint id);
00107
00109 virtual void setDataSource( const QString &ds );
00110
00111 inline void setDataSourceMimeType(const QCString &ds) { KexiFormDataItemInterface::setDataSourceMimeType(ds); }
00112
00113 virtual void setReadOnly(bool set);
00114
00117
00118
00121
00122
00123 void setScaledContents(bool set);
00124
00125 void insertFromFile();
00126
00127 void setAlignment(int alignment);
00128
00129 void setKeepAspectRatio(bool set);
00130
00131 void updateActionsAvailability();
00132
00133 void saveAs();
00134
00135 void cut();
00136
00137 void copy();
00138
00139 void paste();
00140
00141 virtual void clear();
00142
00143 void showProperties();
00144
00145 signals:
00147 virtual void valueChanged(const QByteArray& data);
00148 void idChanged(long id);
00149
00150 protected slots:
00151 void slotAboutToHidePopupMenu();
00152 void slotChooserPressed();
00153
00154 protected:
00156 QByteArray data() const;
00157
00158 virtual void contextMenuEvent ( QContextMenuEvent * e );
00159
00160
00161 virtual void paintEvent( QPaintEvent* );
00162
00163
00165 virtual void setValueInternal( const QVariant& add, bool );
00166
00168 void updateActionStrings();
00169 void updatePixmap();
00170
00172 void setData(const KexiBLOBBuffer::Handle& handle);
00173
00174 bool popupMenuAvailable();
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189 QPixmap m_pixmap;
00190 QByteArray m_value;
00191
00192 KexiBLOBBuffer::Handle m_data;
00193
00194 class Button;
00195 Button *m_chooser;
00196 KPopupMenu *m_popup;
00197 KActionCollection m_actionCollection;
00198 KAction *m_insertFromFileAction, *m_saveAsAction, *m_cutAction, *m_copyAction, *m_pasteAction,
00199 *m_deleteAction, *m_propertiesAction;
00200 QTimer m_clickTimer;
00201 int m_titleID;
00202 int m_alignment;
00203 bool m_designMode : 1;
00204 bool m_readOnly : 1;
00205 bool m_scaledContents : 1;
00206 bool m_keepAspectRatio : 1;
00207 bool m_insideSetData : 1;
00208
00209 };
00210
00211 #endif
|