kexi

kexiformscrollview.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 2004 Cedric Pasteur <cedric.pasteur@free.fr>
00003    Copyright (C) 2004-2005 Jaroslaw Staniek <js@iidea.pl>
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License as published by the Free Software Foundation; either
00008    version 2 of the License, or (at your option) any later version.
00009 
00010    This library is distributed in the hope that it will be useful,
00011    but WITHOUT ANY WARRANTY; without even the implied warranty of
00012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013    Library General Public License for more details.
00014 
00015    You should have received a copy of the GNU Library General Public License
00016    along with this library; see the file COPYING.LIB.  If not, write to
00017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018  * Boston, MA 02110-1301, USA.
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         //virtual void setFocus();
00094 
00097         virtual int rowsPerPage() const;
00098 
00100         virtual void ensureCellVisible(int row, int col/*=-1*/);
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         //virtual bool focusNextPrevChild( bool next );
00243 
00244         KFormDesigner::Form *m_form;
00245         int m_currentLocalSortColumn, m_localSortingOrder;
00247         KexiTableItem *m_previousItem;
00248 };
00249 
00250 #endif
KDE Home | KDE Accessibility Home | Description of Access Keys