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

List:       kde-commits
Subject:    KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets
From:       Ivan Čukić <ivan.cukic+kde () gmail ! com>
Date:       2008-08-31 20:07:42
Message-ID: 1220213262.587895.8863.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 855451 by ivan:

ActionListView, ActionListView2 mangling



 M  +5 -0      ActionListView.cpp  
 M  +10 -0     ActionListView.h  
 M  +79 -28    ActionListView2.cpp  
 M  +12 -5     ActionListView2.h  
 M  +39 -10    CustomListView.cpp  
 M  +14 -0     CustomListView.h  
 M  +7 -3      ScrollPane.cpp  


--- trunk/KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets/ActionListView.cpp #855450:855451
@@ -18,6 +18,9 @@
  */
 
 #include "ActionListView.h"
+
+#ifndef LANCELOT_ACTION_LIST_VIEW2_OVERRIDE
+
 #include <QLinkedListIterator>
 #include <cmath>
 #include <KDebug>
@@ -740,3 +743,5 @@
 int ActionListView::categoryItemHeight() const { return m_categoryItemHeight; }
 
 } // namespace Lancelot
+
+#endif
--- trunk/KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets/ActionListView.h #855450:855451
@@ -20,6 +20,15 @@
 #ifndef LANCELOT_ACTION_LIST_VIEW_H_
 #define LANCELOT_ACTION_LIST_VIEW_H_
 
+#ifndef LANCELOT_ACTION_LIST_VIEW2_OVERRIDE
+//    #define LANCELOT_ACTION_LIST_VIEW2_OVERRIDE
+#endif
+
+#ifdef LANCELOT_ACTION_LIST_VIEW2_OVERRIDE
+    #include <lancelot/widgets/ActionListView2.h>
+    #define ActionListView ActionListView2
+#else
+
 #include <lancelot/lancelot.h>
 #include <lancelot/lancelot_export.h>
 
@@ -181,5 +190,6 @@
 
 } // namespace Lancelot
 
+#endif
 #endif /* LANCELOT_ACTION_LIST_VIEW_H_ */
 
--- trunk/KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets/ActionListView2.cpp #855450:855451
@@ -26,6 +26,7 @@
     ActionListView2Item()
         : ExtenderButton(), m_selected(false)
     {
+        L_WIDGET_SET_INITIALIZED;
     }
 
     ~ActionListView2Item()
@@ -42,6 +43,20 @@
         return m_selected;
     }
 
+    L_Override virtual void paint(QPainter * painter,
+            const QStyleOptionGraphicsItem * option, QWidget * widget = 0)
+    {
+        painter->fillRect(
+                QRectF(QPointF(), size()),
+                QBrush(QColor(250, 200, 100))
+                );
+        painter->fillRect(
+                QRectF(QPointF(5, 5), size() - QSizeF(10, 10)),
+                QBrush(QColor(100, 200, 100))
+                );
+        ExtenderButton::paint(painter, option, widget);
+    }
+
 private:
     bool m_selected;
 };
@@ -60,12 +75,38 @@
 
     L_Override virtual CustomListItem * itemForIndex(int index)
     {
-
+        ActionListView2Item * item = new ActionListView2Item();
+        item->setTitle(m_model->title(index));
+        item->setDescription(m_model->description(index));
+        item->setIcon(m_model->icon(index));
+        item->setMinimumHeight(itemHeight(index, Qt::MinimumSize));
+        item->setPreferredHeight(itemHeight(index, Qt::PreferredSize));
+        item->setMaximumHeight(itemHeight(index, Qt::MaximumSize));
+        kDebug() << index << m_model->title(index);
+        return item;
     }
 
     L_Override virtual int itemHeight(int index, Qt::SizeHint which) const
     {
-
+        if (m_model->isCategory(index)) {
+            switch (which) {
+                case Qt::MinimumSize:
+                    return 20;
+                case Qt::MaximumSize:
+                    return 40;
+                default:
+                    return 30;
+            }
+        } else {
+            switch (which) {
+                case Qt::MinimumSize:
+                    return 30;
+                case Qt::MaximumSize:
+                    return 70;
+                default:
+                    return 50;
+            }
+        }
     }
 
     L_Override virtual void freeItem(int index)
@@ -83,6 +124,16 @@
         }
     }
 
+    void setModel(ActionListViewModel * model)
+    {
+        m_model = model;
+    }
+
+    ActionListViewModel * model()
+    {
+        return m_model;
+    }
+
 private:
     ActionListViewModel * m_model;
     QList < ActionListView2Item * > m_items;
@@ -92,56 +143,56 @@
 
 class ActionListView2::Private {
 public:
+    Private()
+        : itemFactory(NULL)
+    {
+    }
 
+    ~Private()
+    {
+        delete itemFactory;
+    }
+
+    ActionListView2ItemFactory * itemFactory;
 };
 
 ActionListView2::ActionListView2(QGraphicsItem * parent)
     : CustomListView(parent), d(new Private())
 {
-
+    L_WIDGET_SET_INITIALIZED;
 }
 
 ActionListView2::ActionListView2(ActionListViewModel * model, QGraphicsItem * parent)
     : CustomListView(new ActionListView2ItemFactory(model), model, parent),
       d(new Private())
 {
-
+    d->itemFactory = (ActionListView2ItemFactory *) list()->itemFactory();
+    L_WIDGET_SET_INITIALIZED;
 }
 
 ActionListView2::~ActionListView2()
 {
-
+    delete d;
 }
 
 void ActionListView2::setModel(ActionListViewModel * model)
 {
-
+    if (!d->itemFactory) {
+        d->itemFactory = new ActionListView2ItemFactory(model);
+        list()->setItemFactory(d->itemFactory);
+        list()->setModel(model);
+    } else {
+        d->itemFactory->setModel(model);
+        list()->setModel(model);
+    }
 }
 
 ActionListViewModel * ActionListView2::model() const
 {
-
+    if (!d->itemFactory) {
+        return NULL;
+    }
+    return d->itemFactory->model();
 }
 
-void ActionListView2::setCategoriesActivable(bool value)
-{
-
-}
-
-bool ActionListView2::categoriesActivable() const
-{
-
-}
-
-void ActionListView2::setExtenderPosition(ExtenderPosition position)
-{
-
-}
-
-ExtenderPosition ActionListView2::extenderPosition() const
-{
-
-}
-
-
 } // namespace Lancelot
--- trunk/KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets/ActionListView2.h #855450:855451
@@ -48,15 +48,22 @@
     void setModel(ActionListViewModel * model);
     ActionListViewModel * model() const;
 
-    void setCategoriesActivable(bool value);
-    bool categoriesActivable() const;
+    void setCategoriesActivable(bool value) {};
+    bool categoriesActivable() const {};
 
-    void setExtenderPosition(ExtenderPosition position);
-    ExtenderPosition extenderPosition() const;
+    void setExtenderPosition(ExtenderPosition position) {};
+    ExtenderPosition extenderPosition() const {};
 
+    void setItemsGroup(WidgetGroup * group = NULL) {};
+    void setItemsGroupByName(const QString & group) {};
+    WidgetGroup * itemsGroup() const {};
+
+    void setCategoriesGroup(WidgetGroup * group = NULL) {};
+    void setCategoriesGroupByName(const QString & group) {};
+    WidgetGroup * categoriesGroup() const {};
+
     // L_Override virtual void setGroup(WidgetGroup * group = NULL);
     // L_Override virtual void groupUpdated();
-
 Q_SIGNALS:
     void activated(int index);
 
--- trunk/KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets/CustomListView.cpp #855450:855451
@@ -76,9 +76,11 @@
 
     void recreateItems()
     {
+        kDebug() << "entered" << model << factory;
         if (!model || !factory) {
             return;
         }
+        kDebug() << "go! need:" << model->size() << "items";
 
         freeAllItems();
         qreal top = 0;
@@ -92,11 +94,12 @@
                 continue;
             }
 
+            kDebug() << "adding";
             item->setParentItem(q);
-            item->setGeometry(QRectF(
-                QPointF(0, top),
-                item->preferredSize()
-            ));
+            item->setGeometry(0, top,
+                    viewportSize.width(), item->preferredHeight()
+            );
+            kDebug() << "item geometry" << item->geometry();
             top += item->preferredHeight();
         }
     }
@@ -111,7 +114,8 @@
             position = 0;
         }
 
-        QGraphicsWidget * item = dynamic_cast < QGraphicsWidget * > (factory->itemForIndex(position));
+        QGraphicsWidget * item = dynamic_cast < QGraphicsWidget * >
+            (factory->itemForIndex(position));
 
         if (!item) {
             return;
@@ -170,6 +174,13 @@
         }
     }
 
+    void updateItemSizes()
+    {
+        foreach (QGraphicsWidget * item, items) {
+            item->resize(viewportSize.width(), item->size().height());
+        }
+    }
+
     CustomList * q;
     CustomListItemFactory * factory;
     AbstractListModel * model;
@@ -204,6 +215,7 @@
     }
 
     d->factory = factory;
+    d->recreateItems();
 }
 
 CustomListItemFactory * CustomList::itemFactory() const
@@ -226,6 +238,8 @@
             this, SLOT(modelItemAltered(int)));
     connect(m, SIGNAL(updated(int)),
             this, SLOT(modelUpdated(int)));
+
+    d->recreateItems();
 }
 
 AbstractListModel * CustomList::model() const
@@ -245,14 +259,22 @@
 void CustomList::viewportChanged(QRectF viewport)
 {
     if (d->viewportSize != viewport.size()) {
+        kDebug() << "size changed" << d->viewportSize <<
+            viewport.size();
+
         d->viewportSize = viewport.size();
+        resize(d->viewportSize.width(), fullSize().height());
+        d->updateItemSizes();
     }
     if (d->viewportOrigin != viewport.topLeft()) {
+        kDebug() << "origin changed" << d->viewportOrigin <<
+            viewport.topLeft();
         d->viewportOrigin = viewport.topLeft();
-        setGeometry(QRectF(
-                - d->viewportOrigin,
-                geometry().size()
-            ));
+        //setGeometry(QRectF(
+        //        - d->viewportOrigin,
+        //        geometry().size()
+        //    ));
+        setPos(- d->viewportOrigin);
     }
 }
 
@@ -297,8 +319,9 @@
 };
 
 CustomListView::CustomListView(QGraphicsItem * parent)
-    : ScrollPane(parent), d(new Private(NULL, this))
+    : ScrollPane(parent), d(new Private(new CustomList(this), this))
 {
+    L_WIDGET_SET_INITIALIZED;
 }
 
 CustomListView::CustomListView(CustomListItemFactory * factory,
@@ -306,6 +329,7 @@
     : ScrollPane(parent),
       d(new Private(new CustomList(factory, model, this), this))
 {
+    L_WIDGET_SET_INITIALIZED;
 }
 
 CustomListView::~CustomListView()
@@ -313,6 +337,11 @@
     delete d;
 }
 
+CustomList * CustomListView::list() const
+{
+    return d->list;
+}
+
 } // namespace Lancelot
 
 
--- trunk/KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets/CustomListView.h #855450:855451
@@ -94,6 +94,18 @@
     L_Override virtual void viewportChanged(QRectF viewport);
     L_Override virtual qreal scrollUnit(Qt::Orientation direction);
 
+    L_Override virtual void paint(QPainter * painter,
+            const QStyleOptionGraphicsItem * option, QWidget * widget = 0)
+    {
+        painter->fillRect(
+                QRectF(QPointF(), size()),
+                QBrush(QColor(250, 100, 100, 50))
+                );
+        painter->fillRect(
+                QRectF(QPointF(5, 5), size() - QSizeF(10, 10)),
+                QBrush(QColor(100, 100, 100, 50))
+                );
+    }
 protected Q_SLOTS:
     void modelItemInserted(int position);
     void modelItemRemoved(int position);
@@ -119,6 +131,8 @@
 
     virtual ~CustomListView();
 
+    CustomList * list() const;
+
 private:
     class Private;
     Private * const d;
--- trunk/KDE/kdeplasma-addons/applets/lancelot/libs/lancelot/widgets/ScrollPane.cpp #855450:855451
@@ -102,10 +102,8 @@
     d->centerContainer->setAcceptsHoverEvents(true);
     d->centerContainer->setFlag(QGraphicsItem::ItemClipsChildrenToShape);
 
-    kDebug() << "Connect" <<
     connect (d->vertical, SIGNAL(valueChanged(int)),
             this, SLOT(scrollVertical(int)));
-    kDebug() << "Connect" <<
     connect (d->horizontal, SIGNAL(valueChanged(int)),
             this, SLOT(scrollHorizontal(int)));
 
@@ -130,7 +128,12 @@
 
 void ScrollPane::setScrollableWidget(Scrollable * widget)
 {
+    if (d->widget == widget) {
+        return;
+    }
+
     d->widget = widget;
+
     QGraphicsWidget * qgw = dynamic_cast<QGraphicsWidget *>(widget);
     if (qgw) {
         qgw->setParentItem(d->centerContainer);
@@ -210,8 +213,9 @@
     if (geometry() == rect) {
         return;
     }
-
+    kDebug() << rect;
     Widget::setGeometry(rect);
+    kDebug() << geometry();
     scrollableWidgetSizeUpdated();
     d->updateViewport();
 }
[prev in list] [next in list] [prev in thread] [next in thread] 

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