kexi
kexidialogbase.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KEXIDIALOGBASE_H
00022 #define KEXIDIALOGBASE_H
00023
00024 #include "kexipartguiclient.h"
00025 #include "kexiactionproxy.h"
00026 #include "kexi.h"
00027 #include "kexipart.h"
00028
00029 #include <qguardedptr.h>
00030
00031 #include <kmdichildview.h>
00032 #include <kxmlguiclient.h>
00033
00034 class QWidgetStack;
00035 class KexiMainWindow;
00036 class KexiViewBase;
00037 class KActionCollection;
00038 class KexiContextHelpInfo;
00039 namespace KexiPart {
00040 class Part;
00041 }
00042
00043 namespace KoProperty {
00044 class Set;
00045 }
00046
00048
00049 class KEXICORE_EXPORT KexiDialogTempData : public QObject
00050 {
00051 public:
00052 KexiDialogTempData(QObject* parent)
00053 : QObject(parent, "KexiDialogTempData")
00054 , proposeOpeningInTextViewModeBecauseOfProblems(false)
00055 {}
00068 bool proposeOpeningInTextViewModeBecauseOfProblems : 1;
00069 };
00070
00072
00075 class KEXICORE_EXPORT KexiDialogBase :
00076 public KMdiChildView,
00077 public KexiActionProxy,
00078 public Kexi::ObjectStatus
00079 {
00080 Q_OBJECT
00081
00082 public:
00083 KexiDialogBase(KexiMainWindow *parent, const QString &caption = QString::null);
00084 virtual ~KexiDialogBase();
00085
00086 bool isRegistered();
00087
00089 KexiViewBase *selectedView() const;
00090
00093 KexiViewBase *viewForMode(int mode) const;
00094
00096 void addView(KexiViewBase *view);
00097
00100
00101
00103 virtual QSize minimumSizeHint() const;
00104
00106 virtual QSize sizeHint() const;
00107
00108 KexiMainWindow *mainWin() { return m_parentWindow; }
00109
00110
00111
00116 void setId(int id) { m_id = id; }
00117
00121 int id() const;
00122
00124 inline KexiPart::Part* part() const { return m_part; }
00125
00127 KexiPart::Item *partItem() const { return m_item; }
00128
00131 KexiPart::GUIClient* commonGUIClient() const;
00132
00135 KexiPart::GUIClient* guiClient() const;
00136
00140
00141
00144 virtual QString itemIcon();
00145
00151 bool supportsViewMode( int mode ) const { return m_supportedViewModes & mode; }
00152
00154 int currentViewMode() const { return m_currentViewMode; }
00155
00162 tristate switchToViewMode( int newViewMode );
00163
00164 void setContextHelp(const QString& caption, const QString& text, const QString& iconName);
00165
00167 virtual bool eventFilter(QObject *obj, QEvent *e);
00168
00172 virtual void attachToGUIClient();
00173 virtual void detachFromGUIClient();
00174
00180 bool dirty() const;
00181
00184 KexiViewBase* viewThatRecentlySetDirtyFlag() const { return m_viewThatRecentlySetDirtyFlag; }
00185
00192 bool neverSaved() const;
00193
00196 KoProperty::Set *propertySet();
00197
00198 KexiDB::SchemaData* schemaData() const { return m_schemaData; }
00200
00201
00203 KexiDialogTempData *tempData() const { return m_tempData; }
00204
00205
00206
00207
00210 void activate();
00211
00214 void deactivate();
00215
00216 public slots:
00217 virtual void setFocus();
00218
00219 void updateCaption();
00220
00227 tristate storeData(bool dontAsk = false);
00228
00237 tristate storeNewData();
00238
00242 void sendDetachedStateToCurrentView();
00243
00247 void sendAttachedStateToCurrentView();
00248
00249 signals:
00250 void updateContextHelp();
00251
00253 void closing();
00254
00257 void dirtyChanged(KexiDialogBase*);
00258
00259 protected slots:
00261 void setDirty(bool dirty);
00262
00263 protected:
00267 tristate switchToViewMode( int newViewMode, QMap<QString,QString>* staticObjectArgs,
00268 bool& proposeOpeningInTextViewModeBecauseOfProblems);
00269
00270 void registerDialog();
00271
00272 virtual void closeEvent( QCloseEvent * e );
00273
00275 void addView(KexiViewBase *view, int mode);
00276
00278 void removeView(int mode);
00279
00280 int m_supportedViewModes;
00281 int m_openedViewModes;
00282 int m_currentViewMode;
00283
00284 inline QWidgetStack * stack() const { return m_stack; }
00285
00287 void dirtyChanged(KexiViewBase* view);
00288 #if 0
00289
00293 bool loadDataBlock( QString &dataString, const QString& dataID = QString::null);
00294
00301 bool storeDataBlock( const QString &dataString, const QString& dataID = QString::null );
00302
00308 bool removeDataBlock( QString &dataString, const QString& dataID = QString::null);
00309
00313 bool storeDataBlock_internal( const QString &dataString, int o_id, const QString& dataID );
00314 #endif
00315
00316
00317 bool isDesignModePreloadedForTextModeHackUsed(int newViewMode) const;
00318
00319 private:
00320 KexiMainWindow *m_parentWindow;
00321 bool m_isRegistered;
00322 #ifdef KEXI_NO_CTXT_HELP
00323 KexiContextHelpInfo *m_contextHelpInfo;
00324 #endif
00325 int m_id;
00326 QGuardedPtr<KexiPart::Part> m_part;
00327 KexiPart::Item *m_item;
00328 QWidgetStack *m_stack;
00329 QString m_origCaption;
00330 KexiDB::SchemaData* m_schemaData;
00331 QGuardedPtr<KexiViewBase> m_newlySelectedView;
00332
00333
00334 QGuardedPtr<KexiViewBase> m_viewThatRecentlySetDirtyFlag;
00335 QGuardedPtr<KexiDialogTempData> m_tempData;
00336
00339 int m_creatingViewsMode;
00340
00341 bool m_destroying : 1;
00342 bool m_disableDirtyChanged;
00343
00344 friend class KexiMainWindow;
00345
00346 friend class KexiPart::Part;
00347 friend class KexiInternalPart;
00348 friend class KexiViewBase;
00349 };
00350
00351 #endif
00352
|