From kde-commits Thu Sep 02 21:15:21 2010 From: =?utf-8?q?Jaros=C5=82aw=20Staniek?= Date: Thu, 02 Sep 2010 21:15:21 +0000 To: kde-commits Subject: koffice/kexi Message-Id: <20100902211521.6E8BEAC883 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=128346189616149 SVN commit 1171139 by staniek: Forms *Widgets Tree tab ported Note: not finalized yet, items still invisible M +0 -1 CMakeLists.txt M +10 -0 doc/dev/CHANGELOG-Kexi-js M +2 -2 formeditor/CMakeLists.txt A formeditor/WidgetTreeWidget.cpp formeditor/objecttreeview.cpp#1170621 [License: LGPL (v2+)] A formeditor/WidgetTreeWidget.h formeditor/objecttreeview.h#1170621 [License: LGPL (v2+)] D formeditor/objecttreeview.cpp D formeditor/objecttreeview.h M +62 -47 formeditor/tabstopdialog.cpp M +10 -6 formeditor/tabstopdialog.h M +6 -6 plugins/forms/kexiformmanager.cpp M +2 -2 plugins/forms/kexiformmanager.h M +8 -18 plugins/forms/kexiformpart.cpp --- trunk/koffice/kexi/CMakeLists.txt #1171138:1171139 @@ -18,7 +18,6 @@ -DKEXI_NO_AUTOFIELD_WIDGET -DKEXI_NO_FORM_LAYOUTS -DKEXI_NO_FORM_SPRING_ELEMENT - -DKEXI_NO_OBJECTTREEVIEW ) #no default: add_definitions(-DKDE_DEFAULT_DEBUG_AREA=44010) --- trunk/koffice/kexi/doc/dev/CHANGELOG-Kexi-js #1171138:1171139 @@ -41,6 +41,7 @@ - fix syncing form geometry with properties in the propeditor - show Spring element and autofield widget for 2.3 - disable 'assign action' when no button is selected + - port 'assign action' dialog to QColumnView - disable mouse-over highlighting effect for buttons and check boxes TODO: (Windows-only?) when right-clicking again after context menu has been displayed, update selection, otherwise the context menu items won't be adequate to the selection @@ -109,6 +110,15 @@ , fieldsExpandedWithInternal(0) + //, orderByColumnList(copy->orderByColumnList) +2010-09-02 +Forms +*Widgets Tree tab ported +TODO: finalize this, still invisible + +2010-09-01 +Forms +*ObjectTreeView/ObjectTreeViewItem renamed to WidgetTreeWidget/WidgetTreeWidgetItem and ported to QTreeWidget/QTreeWidgetItem + 2010-08-30 Core *Clarify error message: when non-kexi SQLite file is opened, display "Database project '...' does not appear to have been created using Kexi and cannot be opened. It is an SQLite file created using other tools." --- trunk/koffice/kexi/formeditor/CMakeLists.txt #1171138:1171139 @@ -23,7 +23,7 @@ formIO.cpp FormWidget.cpp FormWidgetInterface.cpp - objecttreeview.cpp + WidgetTreeWidget.cpp #todo spring.cpp commands.cpp events.cpp @@ -71,7 +71,7 @@ FormWidget.h FormWidgetInterface.h objecttree.h - objecttreeview.h + WidgetTreeWidget.h widgetfactory.h WidgetInfo.h widgetlibrary.h --- trunk/koffice/kexi/formeditor/tabstopdialog.cpp #1171138:1171139 @@ -1,6 +1,6 @@ /* This file is part of the KDE project Copyright (C) 2004 Cedric Pasteur - Copyright (C) 2005 Jarosław Staniek + Copyright (C) 2005,2010 Jarosław Staniek This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -30,7 +30,7 @@ #include #include "form.h" -#include "objecttreeview.h" +#include "WidgetTreeWidget.h" #include "tabstopdialog.h" @@ -52,19 +52,21 @@ QFrame *frame = new QFrame(this); setMainWidget(frame); QGridLayout *l = new QGridLayout(frame); - m_treeview = new ObjectTreeView(frame, - ObjectTreeView::DisableSelection | ObjectTreeView::DisableContextMenu); - m_treeview->setObjectName("tabstops_treeview"); - m_treeview->setItemsMovable(true); - m_treeview->setDragEnabled(true); - m_treeview->setDropVisualizer(true); - m_treeview->setAcceptDrops(true); - m_treeview->setFocus(); - l->addWidget(m_treeview, 0, 0); + m_widgetTree = new WidgetTreeWidget(frame, + WidgetTreeWidget::DisableSelection | WidgetTreeWidget::DisableContextMenu); + m_widgetTree->setObjectName("tabstops:widgetTree"); + m_widgetTree->setDragEnabled(true); + m_widgetTree->setDropIndicatorShown(true); + //2.0 m_widgetTree->setItemsMovable(true); + //2.0 m_widgetTree->setDropVisualizer(true); + m_widgetTree->setDragDropMode(QAbstractItemView::InternalMove); + m_widgetTree->setAcceptDrops(true); + //m_widgetTree->setFocus(); + l->addWidget(m_widgetTree, 0, 0); - m_treeview->m_form = 0; - connect(m_treeview, SIGNAL(currentChanged(Q3ListViewItem*)), this, SLOT(updateButtons(Q3ListViewItem*))); - connect(m_treeview, SIGNAL(moved(Q3ListViewItem*, Q3ListViewItem*, Q3ListViewItem*)), this, SLOT(updateButtons(Q3ListViewItem*))); + m_widgetTree->m_form = 0; + connect(m_widgetTree, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged())); +#warning TODO connect(m_widgetTree, SIGNAL(moved(Q3ListViewItem*, Q3ListViewItem*, Q3ListViewItem*)), this, SLOT(updateButtons(Q3ListViewItem*))); QVBoxLayout *vbox = new QVBoxLayout(); l->addLayout(vbox, 0, 1); @@ -85,7 +87,7 @@ l->addWidget(m_check, 1, 0, 1, 2); updateGeometry(); - setInitialSize(QSize(500 + m_btnUp->width(), qMax(400, m_treeview->height()))); + setInitialSize(QSize(500 + m_btnUp->width(), qMax(400, m_widgetTree->height()))); } TabStopDialog::~TabStopDialog() @@ -94,8 +96,8 @@ int TabStopDialog::exec(Form *form) { - m_treeview->clear(); - m_treeview->m_form = form; + m_widgetTree->clear(); + m_widgetTree->m_form = form; if (form->autoTabStops()) form->autoAssignTabStops(); @@ -104,14 +106,15 @@ ObjectTreeList::ConstIterator it(form->tabStops()->constBegin()); it+=(form->tabStops()->count()-1); for (;it!=form->tabStops()->constEnd(); --it) { - new ObjectTreeViewItem(m_treeview, *it); + new WidgetTreeWidgetItem(m_widgetTree, *it); } } m_check->setChecked(form->autoTabStops()); - if (m_treeview->firstChild()) { - m_treeview->setCurrentItem(m_treeview->firstChild()); - m_treeview->setSelected(m_treeview->firstChild(), true); + if (m_widgetTree->invisibleRootItem()->childCount() > 0) { + QTreeWidgetItem *firstItem = m_widgetTree->invisibleRootItem()->child(0); + m_widgetTree->setCurrentItem(firstItem); + firstItem->setSelected(true); } if (QDialog::Rejected == KDialog::exec()) @@ -126,54 +129,66 @@ //add items to the order list form->tabStops()->clear(); - ObjectTreeViewItem *item = (ObjectTreeViewItem*)m_treeview->firstChild(); - while (item) { - ObjectTreeItem *tree = item->objectTree(); + QTreeWidgetItemIterator it(m_widgetTree); + while (*it) { + ObjectTreeItem *tree = static_cast(*it)->data(); if (tree) form->tabStops()->append(tree); - item = (ObjectTreeViewItem*)item->nextSibling(); } return QDialog::Accepted; } -void -TabStopDialog::moveItemUp() +void TabStopDialog::moveItemUp() { - if (!m_treeview->selectedItem()) + QTreeWidgetItem *selected = m_widgetTree->selectedItem(); + if (!selected) return; - Q3ListViewItem *before = m_treeview->selectedItem()->itemAbove(); - before->moveItem(m_treeview->selectedItem()); - updateButtons(m_treeview->selectedItem()); + // we assume there is flat list + QTreeWidgetItem *root = m_widgetTree->invisibleRootItem(); + const int selectedIndex = root->indexOfChild(selected); + if (selectedIndex < 1) + return; // no place to move + root->takeChild(selectedIndex); + root->insertChild(selectedIndex - 1, selected); + updateButtons(selected); } -void -TabStopDialog::moveItemDown() +void TabStopDialog::moveItemDown() { - Q3ListViewItem *item = m_treeview->selectedItem(); - if (!item) + QTreeWidgetItem *selected = m_widgetTree->selectedItem(); + if (!selected) return; - item->moveItem(item->nextSibling()); - updateButtons(item); + // we assume there is flat list + QTreeWidgetItem *root = m_widgetTree->invisibleRootItem(); + const int selectedIndex = root->indexOfChild(selected); + if (selectedIndex >= (root->childCount() - 1)) + return; // no place to move + root->takeChild(selectedIndex); + root->insertChild(selectedIndex + 1, selected); + updateButtons(selected); } -void -TabStopDialog::updateButtons(Q3ListViewItem *item) +void TabStopDialog::updateButtons(QTreeWidgetItem *item) { - m_btnUp->setEnabled(item && (item->itemAbove() && m_treeview->isEnabled() + QTreeWidgetItem *root = m_widgetTree->invisibleRootItem(); + m_btnUp->setEnabled(item && (root->indexOfChild(item) > 0 && m_widgetTree->isEnabled() /*&& (item->itemAbove()->parent() == item->parent()))*/)); - m_btnDown->setEnabled(item && item->nextSibling() && m_treeview->isEnabled()); + m_btnDown->setEnabled(item && root->indexOfChild(item) < (root->childCount() - 1) && m_widgetTree->isEnabled()); } -void -TabStopDialog::slotRadioClicked(bool isOn) +void TabStopDialog::slotSelectionChanged() { - m_treeview->setEnabled(!isOn); - updateButtons(m_treeview->selectedItem()); + updateButtons(m_widgetTree->selectedItem()); } -bool -TabStopDialog::autoTabStops() const +void TabStopDialog::slotRadioClicked(bool isOn) { + m_widgetTree->setEnabled(!isOn); + updateButtons(m_widgetTree->selectedItem()); +} + +bool TabStopDialog::autoTabStops() const +{ return m_check->isChecked(); } --- trunk/koffice/kexi/formeditor/tabstopdialog.h #1171138:1171139 @@ -1,5 +1,6 @@ /* This file is part of the KDE project Copyright (C) 2004 Cedric Pasteur + Copyright (C) 2005,2010 Jarosław Staniek This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public @@ -24,7 +25,7 @@ #include -class Q3ListViewItem; +class QTreeWidgetItem; class QCheckBox; class KPushButton; @@ -32,7 +33,7 @@ { class Form; -class ObjectTreeView; +class WidgetTreeWidget; //! A dialog to edit Form tab stops /*! The user can change the order by dragging list items or using buttons at the right. @@ -45,17 +46,20 @@ TabStopDialog(QWidget *parent); virtual ~TabStopDialog(); + bool autoTabStops() const; + public slots: int exec(KFormDesigner::Form *form); + +protected slots: void moveItemUp(); void moveItemDown(); - void updateButtons(Q3ListViewItem*); + void updateButtons(QTreeWidgetItem *item); void slotRadioClicked(bool isOn); + void slotSelectionChanged(); - bool autoTabStops() const; - protected: - ObjectTreeView *m_treeview; + WidgetTreeWidget *m_widgetTree; KPushButton *m_btnUp, *m_btnDown; QCheckBox *m_check; }; --- trunk/koffice/kexi/plugins/forms/kexiformmanager.cpp #1171138:1171139 @@ -40,7 +40,7 @@ #include #include #include -#include +#include #include #include @@ -58,7 +58,7 @@ #ifdef KFD_SIGSLOTS dragConnectionAction = 0; #endif - treeView = 0; + widgetTree = 0; collection = 0; } ~KexiFormManagerPrivate() { @@ -69,7 +69,7 @@ KexiFormPart* part; KFormDesigner::WidgetLibrary* lib; KFormDesigner::ActionGroup* widgetActionGroup; - KFormDesigner::ObjectTreeView *treeView; + KFormDesigner::WidgetTreeWidget *widgetTree; #ifdef KEXI_DEBUG_GUI //! For debugging purposes QPointer uiCodeDialog; @@ -106,7 +106,7 @@ { } -void KexiFormManager::init(KexiFormPart *part, KFormDesigner::ObjectTreeView *treeView) +void KexiFormManager::init(KexiFormPart *part, KFormDesigner::WidgetTreeWidget *widgetTree) { /* @todo add configuration for supported factory groups */ QStringList supportedFactoryGroups; @@ -130,8 +130,8 @@ this, SLOT(slotAssignAction())); } - d->treeView = treeView; - if (d->treeView) { + d->widgetTree = widgetTree; + if (d->widgetTree) { #ifdef __GNUC__ #warning "Port this: connect()" #else --- trunk/koffice/kexi/plugins/forms/kexiformmanager.h #1171138:1171139 @@ -29,7 +29,7 @@ namespace KFormDesigner { class WidgetLibrary; -class ObjectTreeView; +class WidgetTreeWidget; class ActionGroup; class Command; } @@ -43,7 +43,7 @@ static KexiFormManager* self(); //! Called by KexiFormPart() - void init(KexiFormPart *part, KFormDesigner::ObjectTreeView *treeView); + void init(KexiFormPart *part, KFormDesigner::WidgetTreeWidget *widgetTree); virtual QAction* action(const char* name); virtual void enableAction(const char* name, bool enable); --- trunk/koffice/kexi/plugins/forms/kexiformpart.cpp #1171138:1171139 @@ -46,7 +46,7 @@ #include #include //2.0 #include -#include +#include #include #include @@ -65,18 +65,14 @@ { public: Private() { -#ifndef KEXI_NO_OBJECTTREEVIEW - objectTreeView = new KFormDesigner::ObjectTreeView(0); - objectTreeView->setObjectName("KexiFormPart:ObjectTreeView"); -#endif + widgetTree = new KFormDesigner::WidgetTreeWidget(0); + widgetTree->setObjectName("KexiFormPart:WidgetTreeWidget"); } ~Private() { -#ifndef KEXI_NO_OBJECTTREEVIEW - delete static_cast(objectTreeView); -#endif + delete static_cast(widgetTree); delete static_cast(dataSourcePage); } - QPointer objectTreeView; + QPointer widgetTree; QPointer dataSourcePage; KexiDataSourceComboBox *dataSourceCombo; }; @@ -103,7 +99,7 @@ /* 2.0 removed KFormDesigner::FormManager *formManager = KFormDesigner::FormManager::self(); if (!formManager) {*/ - KexiFormManager::self()->init(this, d->objectTreeView); // this should create KexiFormManager singleton + KexiFormManager::self()->init(this, d->widgetTree); // this should create KexiFormManager singleton // } /* 2.0 slotPropertyChanged() code moved to Form so this connection can be removed @@ -490,14 +486,8 @@ tab->addTab(d->dataSourcePage, KIcon("server-database"), QString()); tab->setTabToolTip(tab->indexOf(d->dataSourcePage), i18n("Data Source")); -#if 0 - tab->addTab(d->objectTreeView, KIcon("widgets"), QString()); - tab->setTabToolTip(tab->indexOf(d->objectTreeView), i18n("Widgets")); -#else -#ifdef __GNUC__ -#warning -#endif -#endif + tab->addTab(d->widgetTree, KIcon("widgets"), QString()); + tab->setTabToolTip(tab->indexOf(d->widgetTree), i18n("Widgets")); } //----------------