kexiformscrollview.h
1/* This file is part of the KDE project
2 Copyright (C) 2004 Cedric Pasteur <cedric.pasteur@free.fr>
3 Copyright (C) 2004-2006 Jaroslaw Staniek <js@iidea.pl>
4
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details.
14
15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19*/
20
21#ifndef KEXIFORMSCROLLVIEW_H
22#define KEXIFORMSCROLLVIEW_H
23
24#include "kexidataprovider.h"
25#include "kexiformeventhandler.h"
26#include "widgets/kexidbform.h"
27#include <widget/kexiscrollview.h>
28#include <widget/utils/kexirecordnavigator.h>
29#include <widget/utils/kexisharedactionclient.h>
30#include <widget/tableview/kexidataawareobjectiface.h>
31
33
41class KEXIFORMUTILS_EXPORT KexiFormScrollView :
42 public KexiScrollView,
48{
49 TQ_OBJECT
50
51 KEXI_DATAAWAREOBJECTINTERFACE
52
53 public:
54 KexiFormScrollView(TQWidget *parent, bool preview);
55 virtual ~KexiFormScrollView();
56
57 void setForm(KFormDesigner::Form *form) { m_form = form; }
58
62 virtual bool columnEditable(int col);
63
67 virtual int columns() const;
68
73 virtual KexiTableViewColumn* column(int col);
74
77 virtual int fieldNumberForColumn(int col) {
79 dbFormWidget()->orderedDataAwareWidgets()->at( col ));
80 if (!item)
81 return -1;
82 KexiFormDataItemInterfaceToIntMap::ConstIterator it(m_fieldNumbersForDataItems.find( item ));
83 return it!=m_fieldNumbersForDataItems.constEnd() ? (int)it.data() : -1;
84 }
85
87 void beforeSwitchView();
88
94 virtual int lastVisibleRow() const;
95
97 virtual TQScrollBar* verticalScrollBar() const { return KexiScrollView::verticalScrollBar(); }
98
99 public slots:
101 virtual void show();
102
103 //virtual void setFocus();
104
107 virtual int rowsPerPage() const;
108
110 virtual void ensureCellVisible(int row, int col/*=-1*/);
111
112 virtual void moveToRecordRequested(uint r);
113 virtual void moveToLastRecordRequested();
114 virtual void moveToPreviousRecordRequested();
115 virtual void moveToNextRecordRequested();
116 virtual void moveToFirstRecordRequested();
117 virtual void addNewRecordRequested() { KexiDataAwareObjectInterface::addNewRecordRequested(); }
118
122 virtual bool cancelEditor();
123
124 public slots:
126 virtual void refreshContentsSize();
127
132
136
142
143 signals:
144 virtual void itemChanged(KexiTableItem *, int row, int col);
145 virtual void itemChanged(KexiTableItem *, int row, int col, TQVariant oldValue);
146 virtual void itemDeleteRequest(KexiTableItem *, int row, int col);
147 virtual void currentItemDeleteRequest();
149 virtual void dataRefreshed();
150 virtual void dataSet( KexiTableViewData *data );
151 virtual void itemSelected(KexiTableItem *);
152 virtual void cellSelected(int col, int row);
153 virtual void sortedColumnChanged(int col);
154 virtual void rowEditStarted(int row);
155 virtual void rowEditTerminated(int row);
156 virtual void reloadActions();
157
158 protected slots:
159 void slotResizingStarted();
160
162 virtual void slotRowRepaintRequested(KexiTableItem& item);
163
165 virtual void slotAboutToDeleteRow(KexiTableItem& item, KexiDB::ResultInfo* result, bool repaint)
167
170
172 virtual void slotRowInserted(KexiTableItem *item, bool repaint);
173
175 virtual void slotRowInserted(KexiTableItem *item, uint row, bool repaint);
176
177 virtual void slotRowsDeleted( const TQValueList<int> & );
178
179 virtual void slotDataDestroying() { KexiDataAwareObjectInterface::slotDataDestroying(); }
180
184
186 virtual void copySelection();
187
189 virtual void cutSelection();
190
192 virtual void paste();
193
194 protected:
196 virtual void clearColumnsInternal(bool repaint);
197
199 virtual void addHeaderColumn(const TQString& caption, const TQString& description,
200 const TQIconSet& icon, int width);
201
203 virtual int currentLocalSortingOrder() const;
204
206 virtual int currentLocalSortColumn() const;
207
209 virtual void setLocalSortingOrder(int col, int order);
210
212 void sortColumnInternal(int col, int order = 0);
213
215 virtual void updateGUIAfterSorting();
216
218 virtual void createEditor(int row, int col, const TQString& addText = TQString(),
219 bool removeOld = false);
220
222 virtual KexiDataItemInterface *editor( int col, bool ignoreMissingEditor = false );
223
225 virtual void editorShowFocus( int row, int col );
226
229 virtual void updateCell(int row, int col);
230
232 virtual void updateCurrentCell();
233
236 virtual void updateRow(int row);
237
240 virtual void updateWidgetContents();
241
245 virtual void updateWidgetContentsSize();
246
250 virtual void updateWidgetScrollBars();
251
252 KexiDBForm* dbFormWidget() const;
253
255 virtual void valueChanged(KexiDataItemInterface* item);
256
261 virtual bool cursorAtNewRow() const;
262
266 inline virtual void selectCellInternal();
267
269 virtual void initDataContents();
270
275 virtual void updateAfterCancelRowEdit();
276
281 virtual void updateAfterAcceptRowEdit();
282
285 void handleDataWidgetAction(const TQString& actionName);
286
288 bool shouldDisplayDefaultValueForItem(KexiFormDataItemInterface* itemIface) const;
289
290 //virtual bool focusNextPrevChild( bool next );
291
292 KFormDesigner::Form *m_form;
293 int m_currentLocalSortColumn, m_localSortingOrder;
295 KexiTableItem *m_previousItem;
296};
297
298#endif
A simple class representing a form.
Definition form.h:136
A DB-aware form widget, acting as form's toplevel widget.
Definition kexidbform.h:44
The KexiDataAwareObjectInterface is an interface for record-based data object.
virtual void slotRowInserted(KexiTableItem *item, bool repaint)
Handles KexiTableViewData::rowInserted() signal to repaint when needed.
virtual void updateWidgetContents()=0
virtual void rowEditTerminated(int row)=0
virtual void cutSelection()=0
Cut current selection to a clipboard (e.g. cell)
virtual void ensureCellVisible(int row, int col)=0
virtual void clearColumnsInternal(bool repaint)=0
virtual void paste()=0
Paste current clipboard contents (e.g. to a cell)
virtual void updateRow(int row)=0
virtual KexiTableViewColumn * column(int col)
virtual int lastVisibleRow() const =0
virtual void slotRowRepaintRequested(KexiTableItem &item)
Handles KexiTableViewData::rowRepaintRequested() signal.
virtual void createEditor(int row, int col, const TQString &addText=TQString(), bool removeOld=false)=0
Creates editors and shows it, what usually means the beginning of a cell editing.
virtual void cellSelected(int col, int row)=0
virtual void updateWidgetContentsSize()=0
virtual void slotRowDeleted()
Handles KexiTableViewData::rowDeleted() signal to repaint when needed.
virtual void updateCell(int row, int col)=0
virtual void dataRefreshed()=0
virtual void updateWidgetScrollBars()=0
KexiDataItemInterface * editor() const
virtual void itemChanged(KexiTableItem *, int row, int col)=0
signals
virtual void copySelection()=0
Copy current selection to a clipboard (e.g. cell)
virtual void itemSelected(KexiTableItem *)=0
virtual int rowsPerPage() const =0
virtual void reloadActions()=0
virtual void sortedColumnChanged(int col)=0
virtual void editorShowFocus(int row, int col)=0
virtual void updateCurrentCell()=0
virtual void slotAboutToDeleteRow(KexiTableItem &item, KexiDB::ResultInfo *result, bool repaint)
Handles KexiTableViewData::aboutToDeleteRow() signal. Prepares info for slotRowDeleted().
An interface for declaring widgets to be data-aware.
An interface for declaring form widgets to be data-aware.
The KexiFormDataProvider class is a data provider for Kexi Forms.
virtual void valueChanged(KexiDataItemInterface *item)
virtual bool cursorAtNewRow() const
The KexiFormEventHandler class handles events defined within Kexi Forms.
KexiFormScrollView class provides a widget for displaying data in a form view.
virtual void slotRowDeleted()
Handles KexiTableViewData::rowDeleted() signal to repaint when needed.
virtual void newItemAppendedForAfterDeletingInSpreadSheetMode()
does nothing
virtual void reloadData()
virtual void scrollBarTipTimeout()
virtual void slotAboutToDeleteRow(KexiTableItem &item, KexiDB::ResultInfo *result, bool repaint)
Handles KexiTableViewData::aboutToDeleteRow() signal. Prepares info for slotRowDeleted().
virtual int fieldNumberForColumn(int col)
virtual TQScrollBar * verticalScrollBar() const
KexiTableItem * m_previousItem
Used in selectCellInternal() to avoid fetching the same record twice.
virtual void vScrollBarValueChanged(int v)
virtual void vScrollBarSliderReleased()
KexiRecordNavigatorHandler interface handles requests generated by KexiRecordNavigator.
virtual void moveToRecordRequested(uint r)=0
Moving to record r is requested. Records are counted from 0.
The scrollview which includes KexiDBForm.
virtual void refreshContentsSize()
The KexiSharedActionClient is an interface using application-wide (shared) actions.