From kde-commits Mon Feb 28 23:18:13 2011 From: Adam Pigg Date: Mon, 28 Feb 2011 23:18:13 +0000 To: kde-commits Subject: =?utf-8?q?=5Bcalligra/kexi-mobile-adam=5Fpigg=5D_kexi/plugins/au?= Message-Id: <20110228231813.BE1F4A60CE () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=129893513126605 Git commit bcf9ae0e3d17f999a1a6716bd71f28f77a4ef85c by Adam Pigg. Committed on 01/03/2011 at 00:13. Pushed by piggz into branch 'kexi-mobile-adam_pigg'. Implemented record navigation in auto forms M +4 -4 kexi/plugins/autoforms/KexiAutoFormView.cpp M +32 -1 kexi/plugins/autoforms/widgets/AutoForm.cpp M +7 -2 kexi/plugins/autoforms/widgets/AutoForm.h http://commits.kde.org/calligra/bcf9ae0e3d17f999a1a6716bd71f28f77a4ef85c diff --git a/kexi/plugins/autoforms/KexiAutoFormView.cpp b/kexi/plugins/autoforms/KexiAutoFormView.cpp index f770465..e634e85 100644 --- a/kexi/plugins/autoforms/KexiAutoFormView.cpp +++ b/kexi/plugins/autoforms/KexiAutoFormView.cpp @@ -94,22 +94,22 @@ void KexiAutoFormView::addNewRecordRequested() void KexiAutoFormView::moveToFirstRecordRequested() { - + m_autoForm->selectFirstRow(); } void KexiAutoFormView::moveToNextRecordRequested() { - + m_autoForm->selectNextRow(); } void KexiAutoFormView::moveToPreviousRecordRequested() { - + m_autoForm->selectPrevRow(); } void KexiAutoFormView::moveToLastRecordRequested() { - + m_autoForm->selectLastRow(); } void KexiAutoFormView::moveToRecordRequested(uint r) diff --git a/kexi/plugins/autoforms/widgets/AutoForm.cpp b/kexi/plugins/autoforms/widgets/AutoForm.cpp index 644dad9..187e8ae 100644 --- a/kexi/plugins/autoforms/widgets/AutoForm.cpp +++ b/kexi/plugins/autoforms/widgets/AutoForm.cpp @@ -22,8 +22,9 @@ #include #include "AutoLineEdit.h" #include +#include -AutoForm::AutoForm(QWidget* parent, KexiRecordNavigator *nav): QWidget(parent) +AutoForm::AutoForm(QWidget* parent, KexiRecordNavigator *nav): QWidget(parent), m_previousRecord(0) { setBackgroundRole(QPalette::Window); m_layout = new QGridLayout(this); @@ -182,6 +183,36 @@ void AutoForm::setLocalSortingOrder(int col, int order) } +void AutoForm::selectCellInternal() +{ + //m_currentItem is already set by KexiDataAwareObjectInterface::setCursorPosition() + if (m_currentItem) { + if (m_currentItem != m_previousRecord) { + fillDataItems(*m_currentItem, cursorAtNewRow()); + m_previousRecord = m_currentItem; + +//!@todo needed? +#if 0 + QWidget *w = 0; + if (m_curCol >= 0 && m_curCol < dbFormWidget()->orderedDataAwareWidgets()->count()) { + w = dbFormWidget()->orderedDataAwareWidgets()->at(m_curCol); + } + if (w) { + w->setFocus(); // re-focus, as we could have lost focus, e.g. when navigator button was clicked + // select all + KexiFormDataItemInterface *iface = dynamic_cast(w); + //! @todo add option for not selecting the field + if (iface) { + iface->selectAllOnFocusIfNeeded(); + } + } +#endif + } + } else { + m_previousRecord = 0; + } +} + void AutoForm::sortedColumnChanged(int col) { diff --git a/kexi/plugins/autoforms/widgets/AutoForm.h b/kexi/plugins/autoforms/widgets/AutoForm.h index 75f5203..238af30 100644 --- a/kexi/plugins/autoforms/widgets/AutoForm.h +++ b/kexi/plugins/autoforms/widgets/AutoForm.h @@ -28,6 +28,10 @@ class QGridLayout; +namespace KexiDB { + class RecordDate; +} + class AutoForm : public QWidget, public KexiDataAwareObjectInterface, public KexiFormDataProvider @@ -39,8 +43,6 @@ public: AutoForm(QWidget* parent, KexiRecordNavigator *nav); virtual ~AutoForm(); - void initDataSource(); - protected: virtual void resizeEvent(QResizeEvent* ); @@ -71,6 +73,7 @@ protected: virtual void rowEditTerminated(int row); virtual int rowsPerPage() const; virtual void setLocalSortingOrder(int col, int order); + virtual void selectCellInternal(); virtual void sortedColumnChanged(int col); virtual void updateCell(int row, int col); virtual void updateCurrentCell(); @@ -86,6 +89,8 @@ private: QGridLayout *m_layout; QList m_widgets; + KexiDB::RecordData *m_previousRecord; + void buildForm(); void layoutForm(); };