kexi
kexiformscrollview.h00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef KEXIFORMSCROLLVIEW_H
00022 #define KEXIFORMSCROLLVIEW_H
00023
00024 #include "kexidataprovider.h"
00025 #include "kexiformeventhandler.h"
00026 #include "widgets/kexidbform.h"
00027 #include <widget/kexiscrollview.h>
00028 #include <widget/utils/kexirecordnavigator.h>
00029 #include <widget/utils/kexisharedactionclient.h>
00030 #include <widget/tableview/kexidataawareobjectiface.h>
00031
00033
00041 class KEXIFORMUTILS_EXPORT KexiFormScrollView :
00042 public KexiScrollView,
00043 public KexiRecordNavigatorHandler,
00044 public KexiSharedActionClient,
00045 public KexiDataAwareObjectInterface,
00046 public KexiFormDataProvider,
00047 public KexiFormEventHandler
00048 {
00049 Q_OBJECT
00050 KEXI_DATAAWAREOBJECTINTERFACE
00051
00052 public:
00053 KexiFormScrollView(QWidget *parent, bool preview);
00054 virtual ~KexiFormScrollView();
00055
00056 void setForm(KFormDesigner::Form *form) { m_form = form; }
00057
00061 virtual bool columnEditable(int col);
00062
00067 virtual int columns() const;
00068
00073 virtual KexiTableViewColumn* column(int col);
00074
00077 virtual int fieldNumberForColumn(int col) {
00078 KexiFormDataItemInterface *item = dynamic_cast<KexiFormDataItemInterface*>(
00079 dbFormWidget()->orderedDataAwareWidgets()->at( col ));
00080 if (!item)
00081 return -1;
00082 KexiFormDataItemInterfaceToIntMap::ConstIterator it(m_fieldNumbersForDataItems.find( item ));
00083 return it!=m_fieldNumbersForDataItems.constEnd() ? (int)it.data() : -1;
00084 }
00085
00087 void beforeSwitchView();
00088
00089 public slots:
00091 virtual void show();
00092
00093
00094
00097 virtual int rowsPerPage() const;
00098
00100 virtual void ensureCellVisible(int row, int col);
00101
00102 virtual void moveToRecordRequested(uint r);
00103 virtual void moveToLastRecordRequested();
00104 virtual void moveToPreviousRecordRequested();
00105 virtual void moveToNextRecordRequested();
00106 virtual void moveToFirstRecordRequested();
00107 virtual void addNewRecordRequested() { KexiDataAwareObjectInterface::addNewRecordRequested(); }
00108
00110 virtual void cancelEditor();
00111
00112 public slots:
00114 virtual void refreshContentsSize();
00115
00116 signals:
00117 virtual void itemChanged(KexiTableItem *, int row, int col);
00118 virtual void itemChanged(KexiTableItem *, int row, int col, QVariant oldValue);
00119 virtual void itemDeleteRequest(KexiTableItem *, int row, int col);
00120 virtual void currentItemDeleteRequest();
00121 virtual void dataRefreshed();
00122 virtual void dataSet( KexiTableViewData *data );
00123 virtual void itemSelected(KexiTableItem *);
00124 virtual void cellSelected(int col, int row);
00125 virtual void sortedColumnChanged(int col);
00126 virtual void rowEditStarted(int row);
00127 virtual void rowEditTerminated(int row);
00128 virtual void reloadActions();
00129
00130 protected slots:
00131 void slotResizingStarted();
00132
00134 virtual void slotRowRepaintRequested(KexiTableItem& item);
00135
00137 virtual void slotAboutToDeleteRow(KexiTableItem& item, KexiDB::ResultInfo* result, bool repaint)
00138 { KexiDataAwareObjectInterface::slotAboutToDeleteRow(item, result, repaint); }
00139
00141 virtual void slotRowDeleted() { KexiDataAwareObjectInterface::slotRowDeleted(); }
00142
00144 virtual void slotRowInserted(KexiTableItem *item, bool repaint);
00145
00147 virtual void slotRowInserted(KexiTableItem *item, uint row, bool repaint);
00148
00149 virtual void slotRowsDeleted( const QValueList<int> & );
00150
00151 virtual void slotDataDestroying() { KexiDataAwareObjectInterface::slotDataDestroying(); }
00152
00155 virtual void reloadData() { KexiDataAwareObjectInterface::reloadData(); }
00156
00157 protected:
00159 virtual void clearColumnsInternal(bool repaint);
00160
00162 virtual void addHeaderColumn(const QString& caption, const QString& description, int width);
00163
00165 virtual int currentLocalSortingOrder() const;
00166
00168 virtual int currentLocalSortColumn() const;
00169
00171 virtual void setLocalSortingOrder(int col, int order);
00172
00174 void sortColumnInternal(int col, int order = 0);
00175
00177 virtual void updateGUIAfterSorting();
00178
00180 virtual void createEditor(int row, int col, const QString& addText = QString::null,
00181 bool removeOld = false);
00182
00184 virtual KexiDataItemInterface *editor( int col, bool ignoreMissingEditor = false );
00185
00187 virtual void editorShowFocus( int row, int col );
00188
00191 virtual void updateCell(int row, int col);
00192
00195 virtual void updateRow(int row);
00196
00199 virtual void updateWidgetContents();
00200
00204 virtual void updateWidgetContentsSize();
00205
00209 virtual void updateWidgetScrollBars();
00210
00211 KexiDBForm* dbFormWidget() const;
00212
00214 virtual void valueChanged(KexiDataItemInterface* item);
00215
00220 virtual bool cursorAtNewRow();
00221
00225 inline virtual void selectCellInternal();
00226
00228 virtual void initDataContents();
00229
00234 virtual void updateAfterCancelRowEdit();
00235
00240 virtual void updateAfterAcceptRowEdit();
00241
00242
00243
00244 KFormDesigner::Form *m_form;
00245 int m_currentLocalSortColumn, m_localSortingOrder;
00247 KexiTableItem *m_previousItem;
00248 };
00249
00250 #endif
|