00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef AWIDGET_H
00031 #define AWIDGET_H
00032 #include <qsqlform.h>
00033 #include <qtoolbar.h>
00034 #include <qmainwindow.h>
00035 #include "ananas.h"
00036
00037 class QWidget;
00038
00039
00040
00052 class ANANAS_EXPORT aWidget : public QWidget
00053 {
00054 Q_OBJECT
00055
00056 Q_PROPERTY( int Id READ getId WRITE setId STORED true DESIGNABLE false )
00057 Q_PROPERTY( bool openEditor READ getOpenEditor WRITE setOpenEditor STORED false )
00058 Q_PROPERTY( int FormMode READ formMode WRITE setFormMode STORED true )
00059 public:
00060 aDatabase* db;
00061 aCfg* md;
00062 aEngine* engine;
00063
00064 aWidget( QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
00065 aWidget( const QString &oname, aDatabase *adb, QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
00066 aWidget( aCfgItem context, aDatabase *adb, QWidget *parent = 0, const char *name = 0, WFlags fl = 0 );
00067 virtual ~aWidget();
00068
00069 virtual bool checkStructure();
00070 virtual void initObject( aDatabase *adb );
00071 virtual void widgetEditor();
00072 static void widgetEditor( QWidget *object, QDialog *editor );
00073 virtual QDialog* createEditor( QWidget *parent );
00074 virtual QToolBar* createToolBar( QMainWindow *parent );
00075 virtual aObject* createDBObject( aCfgItem obj, aDatabase * );
00076 virtual QString displayString();
00077
00078 void init( aDatabase *adb );
00079 bool getOpenEditor() const { return false; };
00080 void setOpenEditor( bool );
00081 bool isInited() { return vInited; };
00082 virtual bool isContainer();
00083 void setInited( bool flag ){ vInited = flag; };
00084
00085
00086 static aWidget* parentContainer( QWidget *w );
00087 static aForm* parentForm( QWidget *w );
00088 aCfgItem* getMDObject();
00089 void setMDObject( aCfgItem object );
00090 aSQLTable* table( const QString &name = "" );
00091
00092
00093 void setObjectData( QWidget *object, aCfg *md );
00094 void getObjectData( QWidget *object );
00095 aCfg* getMd();
00096 virtual Q_ULLONG uid();
00097 virtual ERR_Code New();
00098 virtual ERR_Code Update();
00099 virtual ERR_Code TurnOn();
00100 virtual ERR_Code Select( Q_ULLONG id );
00101 aObject* dataObject(){ return dbobj; };
00102
00103 virtual Q_ULLONG docId();
00104 int formMode() const { return vFormMode; };
00105 virtual void setFormMode( int mode ){ vFormMode = mode; };
00106 virtual QString getFieldName() const { return ""; };
00107
00108 static QString widgetName( QWidget *w );
00109 static QWidget* Widget( QWidget *owner, QString name );
00110
00111
00112
00113 int getId() const { return vId ;};
00114 void setId( int fn ){ vId = fn; };
00115
00116 public slots:
00117 virtual QVariant value( const QString & name );
00118 virtual QString value() const {return QString::null;};
00119 virtual QString textValue() {return QString::null;};
00120 virtual void setValue( const QString &);
00121 virtual int setValue( const QString & name, const QVariant &value );
00122 virtual int setObjValue( const QString & nameWidget, aObject *value );
00123 virtual void SetReadOnly(bool);
00124 virtual int Refresh();
00125 QWidget* Widget( QString name, bool onlyMyWidgets = true );
00126
00127 virtual aDataField* getAttribute( const QString & name );
00128 virtual int setAttribute( const QString & name, const aDataField *value );
00129
00130 signals:
00131 void setData( QWidget *, aCfg * );
00132 void getData( QWidget * );
00133 void getMd( aCfg ** );
00134 void valueChanged( const QString &, const QVariant & );
00135 void valueChanged( const QString &, const QVariant &, const QString & );
00136 void changeObj(const QString &);
00137 void changeObjId(const Q_ULLONG);
00138 void keyPressed(QKeyEvent *e);
00139
00140 protected:
00141 aObject *dbobj;
00142 virtual void updateProp() {};
00143 virtual void keyPressEvent ( QKeyEvent * e );
00144 private:
00145 bool vInited;
00146 QString vName;
00147 int vId, vFormMode;
00148 aCfgItem obj;
00149 QSqlForm* form;
00150
00151 };
00152
00153
00154 #endif