[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    koffice/kexi
From:       Jarosław Staniek <staniek () kde ! org>
Date:       2010-09-02 21:15:21
Message-ID: 20100902211521.6E8BEAC883 () svn ! kde ! org
[Download RAW message or body]

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 <cedric.pasteur@free.fr>
-   Copyright (C) 2005 Jarosław Staniek <staniek@kde.org>
+   Copyright (C) 2005,2010 Jarosław Staniek <staniek@kde.org>
 
    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 <kpushbutton.h>
 
 #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<WidgetTreeWidgetItem*>(*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 <cedric.pasteur@free.fr>
+   Copyright (C) 2005,2010 Jarosław Staniek <staniek@kde.org>
 
    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 <kexi_export.h>
 
-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 <formeditor/objecttree.h>
 #include <formeditor/formIO.h>
 #include <formeditor/kexiactionselectiondialog.h>
-#include <formeditor/objecttreeview.h>
+#include <formeditor/WidgetTreeWidget.h>
 
 #include <koproperty/Set.h>
 #include <koproperty/Property.h>
@@ -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<KPageDialog> 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 <formeditor/form.h>
 #include <formeditor/formIO.h>
 //2.0 #include <formeditor/widgetpropertyset.h>
-#include <formeditor/objecttreeview.h>
+#include <formeditor/WidgetTreeWidget.h>
 
 #include <koproperty/Property.h>
 #include <koproperty/Set.h>
@@ -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<KFormDesigner::ObjectTreeView*>(objectTreeView);
-#endif
+        delete static_cast<KFormDesigner::WidgetTreeWidget*>(widgetTree);
         delete static_cast<KexiDataSourcePage*>(dataSourcePage);
     }
-    QPointer<KFormDesigner::ObjectTreeView> objectTreeView;
+    QPointer<KFormDesigner::WidgetTreeWidget> widgetTree;
     QPointer<KexiDataSourcePage> 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"));
 }
 
 //----------------


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic