• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

baseeditor.h

Go to the documentation of this file.
00001 #ifndef BASEEDITOR_H
00002 #define BASEEDITOR_H
00003 
00004 #include <QGridLayout>
00005 
00015 class WidgetLayout : public QGridLayout {
00016 public:
00017     WidgetLayout(QWidget *parent = 0);
00018     void addWidget (QWidget *widget, int row, int column, int rowSpan, int columnSpan);
00019     void setWidgetsEnabled(const bool &flag);
00020 
00021 private:
00022     bool widgetsEnabled;
00023 };
00024 
00025 #include <QSqlRelationalDelegate>
00026 
00027 class QSqlRelationalDelegate; //Qt creator issue: http://bugreports.qt.nokia.com/browse/QTCREATORBUG-335
00028 
00035 class MapperDelegate : public QSqlRelationalDelegate {
00036     Q_OBJECT
00037 public:
00038     MapperDelegate(QObject *parent = 0);
00039     void setEditorData(QWidget *editor, const QModelIndex &index) const;
00040     void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const;
00041 };
00042 
00043 #include <QDataWidgetMapper>
00044 
00050 class DataWidgetMapper : public QDataWidgetMapper {
00051 public:
00052     DataWidgetMapper(QObject *parent = 0);
00053     bool isDirty() const;
00054 };
00055 
00056 #include <QWidget>
00057 
00058 class QCompleter;
00059 
00065 class SeekerWidget : public QWidget {
00066     Q_OBJECT
00067 public:
00068     SeekerWidget(QWidget *parent = 0);
00069     QCompleter *completer();
00070     QComboBox *columnBox();
00071 
00072 private slots:
00073     void onColumnBoxIndexChange(const int &index);
00074 
00075 private:
00076     QCompleter *m_completer;
00077     QLineEdit *edit;
00078     QComboBox *columns;
00079 };
00080 
00081 #include "kexpandablegroupbox.h"
00082 
00091 class Seeker : public KExpandableGroupBox {
00092     Q_OBJECT
00093 public:
00094     Seeker(QWidget *parent = 0);
00095     void setModel(QAbstractItemModel *model);
00096     void setCompletionColumn(const int &column);
00097     SeekerWidget *widget() const;
00098 
00099 private slots:
00100     void updateColumnBox();
00101     void onCompletionActivation(const QModelIndex &completionIndex);
00102 
00103 signals:
00104     void found(const QModelIndex &index);
00105 };
00106 
00107 #include <QButtonGroup>
00108 
00109 class QAbstractButton;
00110 
00123 class BaseEditor : public QWidget {
00124     Q_OBJECT
00125 public:
00126     enum Buttons {
00127         ButtonNext,
00128         ButtonPrevious,
00129         ButtonNew,
00130         ButtonDelete,
00131         ButtonUndo,
00132         ButtonSubmit,
00133         ButtonClose,
00134         ButtonAdd
00135     };
00136 
00137     BaseEditor(QWidget *parent = 0);
00138     QAbstractButton *button(const Buttons &button);
00139     virtual bool isDirty() const = 0;
00140 
00141 protected:
00142     QGridLayout *mainLayout() const;
00143     QGridLayout *bottomLayout() const;
00144 
00145 protected slots:
00146     virtual void updateButtons() = 0;
00147     void onCloseButtonPress();
00148     virtual void onNewButtonPress() = 0;
00149     virtual void onSubmitButtonPress() = 0;
00150     virtual void onUndoButtonPress() = 0;
00151 
00152 private:
00153     void buttonConnect(const QAbstractButton *button, const char *slot);
00154 
00155 signals:
00156     void closeRequested();
00157 
00158 private:
00159     QGridLayout *m_mainLayout;
00160     QGridLayout *m_bottomLayout;
00161 
00162     QButtonGroup buttonGroup;
00163 };
00164 
00165 #include <QSqlRecord>
00166 
00167 class SqlTableModel;
00168 class QComboBox;
00169 class QSqlRelation;
00170 
00174 class MappedBaseEditor : public BaseEditor {
00175     Q_OBJECT
00176 public:
00177     MappedBaseEditor(QWidget *parent = 0);
00178     const QSqlRecord &currentPrimaryKey();
00179     const int currentMapperRow();
00180     void setTable(const QString &table, const QString &fieldName = QString(), Qt::SortOrder order = Qt::AscendingOrder, const QString &filter = QString());
00181     void select();
00182     virtual bool isDirty() const;
00183     SqlTableModel *model();
00184     DataWidgetMapper *mapper();
00185     void setCurrent(const QString &fieldIdName, const QVariant &fieldId);
00186     
00187 protected:
00188     void addWidgetMapping(QWidget *widget, const QString &mapFieldName, const QByteArray &propertyName = "");
00189     void addWidget(QWidget *widget, int row, int column, int rowSpan, int columnSpan);
00190     void addWidget(QWidget *widget, int row, int column, int rowSpan, int columnSpan,
00191                    const QString &mapFieldName, const QByteArray &propertyName = "");
00192     void addWidget(QComboBox *widget, int row, int column, int rowSpan, int columnSpan,
00193                    const QSqlRelation &relation, const QString &fkColumnName = QString(), const QByteArray &propertyName = "");
00194     WidgetLayout *widgetLayout();
00195     bool isCurrentRecordNew() const;
00196 
00197 private:
00198     void updateCurrentPrimaryKey();
00199 
00200 protected slots:
00201     virtual void onCurrentRecordChange(int row);
00202     virtual void onQueryChange();
00203     virtual void onNewButtonPress();
00204     virtual void onDeleteButtonPress();
00205     void onUndoButtonPress();
00206     virtual void onSubmitButtonPress();
00207     virtual void updateButtons();
00208 
00209 private:
00210     WidgetLayout *m_widgetLayout;
00211 
00212     SqlTableModel *m_model;
00213     DataWidgetMapper *m_mapper;
00214 
00215     QSqlRecord m_currentPrimaryKey;
00216     bool m_currentRecordIsNew;
00217 };
00218 
00219 #include <QSplitter>
00220 #include <QTreeView>
00221 #include <QTableView>
00222 #include <QItemSelection>
00223 #include <QModelIndexList>
00224 #include <QModelIndex>
00225 
00229 class TableBaseEditor : public BaseEditor {
00230     Q_OBJECT
00231 public:
00232     TableBaseEditor(QWidget *parent = 0);
00233     virtual bool isDirty() const;
00234     SqlTableModel *model() const;
00235     QTableView *table() const;
00236 
00237 protected slots:
00238     virtual void updateButtons();
00239     virtual void onNewButtonPress();
00240     virtual void onSubmitButtonPress();
00241     virtual void onUndoButtonPress();
00242 
00243 private:
00244     SqlTableModel *m_model;
00245     QTableView *m_table;
00246 };
00247 
00248 #endif // BASEEDITOR_H

Generated on Tue Aug 24 2010 15:58:54 for Smartlet by  doxygen 1.7.1