[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