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
00066 virtual int columns() const;
00067
00072 virtual KexiTableViewColumn* column(int col);
00073
00076 virtual int fieldNumberForColumn(int col) {
00077 KexiFormDataItemInterface *item = dynamic_cast<KexiFormDataItemInterface*>(
00078 dbFormWidget()->orderedDataAwareWidgets()->at( col ));
00079 if (!item)
00080 return -1;
00081 KexiFormDataItemInterfaceToIntMap::ConstIterator it(m_fieldNumbersForDataItems.find( item ));
00082 return it!=m_fieldNumbersForDataItems.constEnd() ? (int)it.data() : -1;
00083 }
00084
00086 void beforeSwitchView();
00087
00092
00093 virtual int lastVisibleRow() const;
00094
00096 virtual QScrollBar* verticalScrollBar() const { return KexiScrollView::verticalScrollBar(); }
00097
00098 public slots:
00100 virtual void show();
00101
00102
00103
00106 virtual int rowsPerPage() const;
00107
00109 virtual void ensureCellVisible(int row, int col);
00110
00111 virtual void moveToRecordRequested(uint r);
00112 virtual void moveToLastRecordRequested();
00113 virtual void moveToPreviousRecordRequested();
00114 virtual void moveToNextRecordRequested();
00115 virtual void moveToFirstRecordRequested();
00116 virtual void addNewRecordRequested() { KexiDataAwareObjectInterface::addNewRecordRequested(); }
00117
00121 virtual bool cancelEditor();
00122
00123 public slots:
00125 virtual void refreshContentsSize();
00126
00129
00130 virtual void vScrollBarValueChanged(int v) { KexiDataAwareObjectInterface::vScrollBarValueChanged(v); }
00131
00133
00134 virtual void vScrollBarSliderReleased() { KexiDataAwareObjectInterface::vScrollBarSliderReleased(); }
00135
00139
00140 virtual void scrollBarTipTimeout() { KexiDataAwareObjectInterface::scrollBarTipTimeout(); }
00141
00142 signals:
00143 virtual void itemChanged(KexiTableItem *, int row, int col);
00144 virtual void itemChanged(KexiTableItem *, int row, int col, QVariant oldValue);
00145 virtual void itemDeleteRequest(KexiTableItem *, int row, int col);
00146 virtual void currentItemDeleteRequest();
00147 virtual void newItemAppendedForAfterDeletingInSpreadSheetMode();
00148 virtual void dataRefreshed();
00149 virtual void dataSet( KexiTableViewData *data );
00150 virtual void itemSelected(KexiTableItem *);
00151 virtual void cellSelected(int col, int row);
00152 virtual void sortedColumnChanged(int col);
00153 virtual void rowEditStarted(int row);
00154 virtual void rowEditTerminated(int row);
00155 virtual void reloadActions();
00156
00157 protected slots:
00158 void slotResizingStarted();
00159
00161 virtual void slotRowRepaintRequested(KexiTableItem& item);
00162
00164 virtual void slotAboutToDeleteRow(KexiTableItem& item, KexiDB::ResultInfo* result, bool repaint)
00165 { KexiDataAwareObjectInterface::slotAboutToDeleteRow(item, result, repaint); }
00166
00168 virtual void slotRowDeleted() { KexiDataAwareObjectInterface::slotRowDeleted(); }
00169
00171 virtual void slotRowInserted(KexiTableItem *item, bool repaint);
00172
00174 virtual void slotRowInserted(KexiTableItem *item, uint row, bool repaint);
00175
00176 virtual void slotRowsDeleted( const QValueList<int> & );
00177
00178 virtual void slotDataDestroying() { KexiDataAwareObjectInterface::slotDataDestroying(); }
00179
00182 virtual void reloadData() { KexiDataAwareObjectInterface::reloadData(); }
00183
00185 virtual void copySelection();
00186
00188 virtual void cutSelection();
00189
00191 virtual void paste();
00192
00193 protected:
00195 virtual void clearColumnsInternal(bool repaint);
00196
00198 virtual void addHeaderColumn(const QString& caption, const QString& description,
00199 const QIconSet& icon, int width);
00200
00202 virtual int currentLocalSortingOrder() const;
00203
00205 virtual int currentLocalSortColumn() const;
00206
00208 virtual void setLocalSortingOrder(int col, int order);
00209
00211 void sortColumnInternal(int col, int order = 0);
00212
00214 virtual void updateGUIAfterSorting();
00215
00217 virtual void createEditor(int row, int col, const QString& addText = QString::null,
00218 bool removeOld = false);
00219
00221 virtual KexiDataItemInterface *editor( int col, bool ignoreMissingEditor = false );
00222
00224 virtual void editorShowFocus( int row, int col );
00225
00228 virtual void updateCell(int row, int col);
00229
00231 virtual void updateCurrentCell();
00232
00235 virtual void updateRow(int row);
00236
00239 virtual void updateWidgetContents();
00240
00244 virtual void updateWidgetContentsSize();
00245
00249 virtual void updateWidgetScrollBars();
00250
00251 KexiDBForm* dbFormWidget() const;
00252
00254 virtual void valueChanged(KexiDataItemInterface* item);
00255
00260 virtual bool cursorAtNewRow() const;
00261
00265 inline virtual void selectCellInternal();
00266
00268 virtual void initDataContents();
00269
00274 virtual void updateAfterCancelRowEdit();
00275
00280 virtual void updateAfterAcceptRowEdit();
00281
00284 void handleDataWidgetAction(const QString& actionName);
00285
00287 bool shouldDisplayDefaultValueForItem(KexiFormDataItemInterface* itemIface) const;
00288
00289
00290
00291 KFormDesigner::Form *m_form;
00292 int m_currentLocalSortColumn, m_localSortingOrder;
00294 KexiTableItem *m_previousItem;
00295 };
00296
00297 #endif
|