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
00093
00094 virtual int lastVisibleRow() const;
00095
00097 virtual QScrollBar* verticalScrollBar() const { return KexiScrollView::verticalScrollBar(); }
00098
00099 public slots:
00101 virtual void show();
00102
00103
00104
00107 virtual int rowsPerPage() const;
00108
00110 virtual void ensureCellVisible(int row, int col);
00111
00112 virtual void moveToRecordRequested(uint r);
00113 virtual void moveToLastRecordRequested();
00114 virtual void moveToPreviousRecordRequested();
00115 virtual void moveToNextRecordRequested();
00116 virtual void moveToFirstRecordRequested();
00117 virtual void addNewRecordRequested() { KexiDataAwareObjectInterface::addNewRecordRequested(); }
00118
00122 virtual bool cancelEditor();
00123
00124 public slots:
00126 virtual void refreshContentsSize();
00127
00130
00131 virtual void vScrollBarValueChanged(int v) { KexiDataAwareObjectInterface::vScrollBarValueChanged(v); }
00132
00134
00135 virtual void vScrollBarSliderReleased() { KexiDataAwareObjectInterface::vScrollBarSliderReleased(); }
00136
00140
00141 virtual void scrollBarTipTimeout() { KexiDataAwareObjectInterface::scrollBarTipTimeout(); }
00142
00143 signals:
00144 virtual void itemChanged(KexiTableItem *, int row, int col);
00145 virtual void itemChanged(KexiTableItem *, int row, int col, QVariant oldValue);
00146 virtual void itemDeleteRequest(KexiTableItem *, int row, int col);
00147 virtual void currentItemDeleteRequest();
00148 virtual void newItemAppendedForAfterDeletingInSpreadSheetMode();
00149 virtual void dataRefreshed();
00150 virtual void dataSet( KexiTableViewData *data );
00151 virtual void itemSelected(KexiTableItem *);
00152 virtual void cellSelected(int col, int row);
00153 virtual void sortedColumnChanged(int col);
00154 virtual void rowEditStarted(int row);
00155 virtual void rowEditTerminated(int row);
00156 virtual void reloadActions();
00157
00158 protected slots:
00159 void slotResizingStarted();
00160
00162 virtual void slotRowRepaintRequested(KexiTableItem& item);
00163
00165 virtual void slotAboutToDeleteRow(KexiTableItem& item, KexiDB::ResultInfo* result, bool repaint)
00166 { KexiDataAwareObjectInterface::slotAboutToDeleteRow(item, result, repaint); }
00167
00169 virtual void slotRowDeleted() { KexiDataAwareObjectInterface::slotRowDeleted(); }
00170
00172 virtual void slotRowInserted(KexiTableItem *item, bool repaint);
00173
00175 virtual void slotRowInserted(KexiTableItem *item, uint row, bool repaint);
00176
00177 virtual void slotRowsDeleted( const QValueList<int> & );
00178
00179 virtual void slotDataDestroying() { KexiDataAwareObjectInterface::slotDataDestroying(); }
00180
00183 virtual void reloadData() { KexiDataAwareObjectInterface::reloadData(); }
00184
00186 virtual void copySelection();
00187
00189 virtual void cutSelection();
00190
00192 virtual void paste();
00193
00194 protected:
00196 virtual void clearColumnsInternal(bool repaint);
00197
00199 virtual void addHeaderColumn(const QString& caption, const QString& description,
00200 const QIconSet& icon, int width);
00201
00203 virtual int currentLocalSortingOrder() const;
00204
00206 virtual int currentLocalSortColumn() const;
00207
00209 virtual void setLocalSortingOrder(int col, int order);
00210
00212 void sortColumnInternal(int col, int order = 0);
00213
00215 virtual void updateGUIAfterSorting();
00216
00218 virtual void createEditor(int row, int col, const QString& addText = QString::null,
00219 bool removeOld = false);
00220
00222 virtual KexiDataItemInterface *editor( int col, bool ignoreMissingEditor = false );
00223
00225 virtual void editorShowFocus( int row, int col );
00226
00229 virtual void updateCell(int row, int col);
00230
00232 virtual void updateCurrentCell();
00233
00236 virtual void updateRow(int row);
00237
00240 virtual void updateWidgetContents();
00241
00245 virtual void updateWidgetContentsSize();
00246
00250 virtual void updateWidgetScrollBars();
00251
00252 KexiDBForm* dbFormWidget() const;
00253
00255 virtual void valueChanged(KexiDataItemInterface* item);
00256
00261 virtual bool cursorAtNewRow() const;
00262
00266 inline virtual void selectCellInternal();
00267
00269 virtual void initDataContents();
00270
00275 virtual void updateAfterCancelRowEdit();
00276
00281 virtual void updateAfterAcceptRowEdit();
00282
00285 void handleDataWidgetAction(const QString& actionName);
00286
00288 bool shouldDisplayDefaultValueForItem(KexiFormDataItemInterface* itemIface) const;
00289
00290
00291
00292 KFormDesigner::Form *m_form;
00293 int m_currentLocalSortColumn, m_localSortingOrder;
00295 KexiTableItem *m_previousItem;
00296 };
00297
00298 #endif
|