• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • workspace API Reference
  • KDE Home
  • Contact Us
 

liblancelot

  • sources
  • kde-4.14
  • workspace
  • kdeplasma-addons
  • libs
  • lancelot
  • widgets
ActionListView_p.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007, 2008, 2009, 2010 Ivan Cukic <ivan.cukic(at)kde.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser/Library General Public License version 2,
6  * or (at your option) any later version, as published by the Free
7  * Software Foundation
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser/Library General Public License for more details
13  *
14  * You should have received a copy of the GNU Lesser/Library General Public
15  * License along with this program; if not, write to the
16  * Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef LANCELOT_ACTION_LIST_VIEW_PH
21 #define LANCELOT_ACTION_LIST_VIEW_PH
22 
23 #include <QIcon>
24 
25 #include <Plasma/SvgWidget>
26 #include <Plasma/ItemBackground>
27 
28 #include <lancelot/lancelot.h>
29 #include <lancelot/lancelot_export.h>
30 #include <lancelot/models/ActionListModel.h>
31 #include <lancelot/widgets/ActionListView.h>
32 #include <lancelot/widgets/CustomListView.h>
33 
34 #include <lancelot/widgets/CustomItemBackground_p.h>
35 
36 namespace Lancelot
37 {
38 
39 //> ActionListViewItem
40 class ActionListViewItemFactory;
41 
42 class ActionListViewItem: public ExtenderButton, public CustomListItem {
43  Q_OBJECT
44 public:
45  ActionListViewItem(ActionListViewItemFactory * factory);
46  ~ActionListViewItem();
47 
48  L_Override void setSelected(bool selected = true);
49  L_Override bool isSelected() const;
50 
51  L_Override void contextMenuEvent(QGraphicsSceneContextMenuEvent * event);
52  L_Override void mousePressEvent(QGraphicsSceneMouseEvent * event);
53  L_Override void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
54 
55  L_Override void paint(QPainter * painter, const QStyleOptionGraphicsItem * option,
56  QWidget * widget);
57 
58 private:
59  QPointF m_mousePos;
60  bool m_inSetSelected;
61  ActionListViewItemFactory * m_factory;
62  static Plasma::Svg m_categoryTriangle;
63 
64 private Q_SLOTS:
65  void select();
66  void deselect();
67 };
68 //<
69 
70 //> ActionListViewItemFactory
71 class ActionListViewItemFactory: public CustomListItemFactory {
72  Q_OBJECT
73 public:
74  ActionListViewItemFactory(ActionListModel * model, ActionListView * view);
75  ~ActionListViewItemFactory();
76 
77  L_Override CustomListItem * itemForIndex(int index);
78  L_Override CustomListItem * itemForIndex(int index,
79  bool reload);
80  L_Override int itemCount() const;
81  L_Override int itemHeight(int index, Qt::SizeHint which) const;
82 
83  void setModel(ActionListModel * model);
84  ActionListModel * model() const;
85 
86  void setExtenderPosition(int position);
87  int extenderPosition() const;
88 
89  void setDisplayMode(ActionListView::ItemDisplayMode mode);
90  ActionListView::ItemDisplayMode displayMode() const;
91 
92  void itemContext(ActionListViewItem * sender,
93  bool mouseCoordinate = true);
94  void itemDrag(ActionListViewItem * sender, QGraphicsSceneMouseEvent * event);
95 
96  void activateSelectedItem();
97  void contextForSelectedItem();
98  void selectRelItem(int rel);
99  void setSelectedItem(ActionListViewItem * item, bool selected = true);
100  void activate(int index);
101 
102  void setItemExtender(int index);
103 
104  void setItemsGroup(Group * group = NULL);
105  Group * itemsGroup() const;
106 
107  void setCategoriesGroup(Group * group = NULL);
108  Group * categoriesGroup() const;
109 
110  void clearSelection();
111  void updateExtenderPosition();
112 
113  void setItemHeight(int height, Qt::SizeHint which);
114  void setCategoryHeight(int height, Qt::SizeHint which);
115 
116  int itemHeight(Qt::SizeHint which) const;
117  int categoryHeight(Qt::SizeHint which) const;
118 
119  void setItemIconSize(QSize size);
120  void setCategoryIconSize(QSize size);
121 
122  QSize itemIconSize() const;
123  QSize categoryIconSize() const;
124 
125 private:
126  void reload();
127 
128 private Q_SLOTS:
129  void modelUpdated();
130  void modelItemInserted(int index);
131  void modelItemDeleted(int index);
132  void modelItemAltered(int index);
133  void itemActivated();
134  void itemHovered();
135 
136  void updateSelectedBackground(ActionListViewItem * item = NULL);
137 
138  qreal preferredWidth() const;
139 
140 Q_SIGNALS:
141  void activated(int index);
142 
143 private:
144  ActionListModel * m_model;
145  QList < ActionListViewItem * > m_items;
146  int m_extenderPosition;
147 
148 
149  Group * m_itemsGroup;
150  Group * m_categoriesGroup;
151  ActionListView * m_view;
152 
153  bool m_categoriesActivable;
154 
155  QMap < Qt::SizeHint, int > m_itemHeight;
156  QMap < Qt::SizeHint, int > m_categoryHeight;
157  QSize m_itemIconSize;
158  QSize m_categoryIconSize;
159 
160  ActionListViewItem * m_selectedItem;
161  ActionListView::ItemDisplayMode m_displayMode;
162 
163  CustomItemBackground * m_selectedItemBackground;
164 
165  friend class ActionListViewItem;
166  friend class ActionListView;
167 };
168 //<
169 
170 //> ActionListView
171 class ActionListView::Private: public QObject {
172  Q_OBJECT
173 public:
174  Private(ActionListView * listView);
175  ~Private();
176 
177  ActionListViewItemFactory * itemFactory;
178  Plasma::SvgWidget * dropIndicator;
179  bool showsExtendersOutside : 1;
180  ActionListView * const q;
181 
182 public Q_SLOTS:
183  void immutabilityChanged(const Plasma::ImmutabilityType immutable);
184  void sizeHintUpdateNeeded();
185 
186 };
187 //<
188 
189 } // namespace Lancelot
190 
191 #endif /* LANCELOT_ACTION_LIST_VIEW_PH */
192 
Lancelot::ActionListViewItemFactory::activate
void activate(int index)
Definition: ActionListView.cpp:376
Lancelot::ActionListViewItemFactory
Definition: ActionListView_p.h:71
Lancelot::ActionListView::ItemDisplayMode
ItemDisplayMode
Definition: ActionListView.h:48
QWidget
Lancelot::ActionListViewItemFactory::displayMode
ActionListView::ItemDisplayMode displayMode() const
Definition: ActionListView.cpp:312
Lancelot::ActionListViewItemFactory::activateSelectedItem
void activateSelectedItem()
Definition: ActionListView.cpp:656
Lancelot::ActionListViewItemFactory::updateExtenderPosition
void updateExtenderPosition()
Definition: ActionListView.cpp:569
Lancelot::ActionListModel
This class represents a list data model.
Definition: ActionListModel.h:37
Lancelot::ActionListViewItemFactory::~ActionListViewItemFactory
~ActionListViewItemFactory()
Definition: ActionListView.cpp:159
QObject::sender
QObject * sender() const
Lancelot::ActionListViewItemFactory::setSelectedItem
void setSelectedItem(ActionListViewItem *item, bool selected=true)
Definition: ActionListView.cpp:681
Lancelot::ActionListViewItem::mouseMoveEvent
L_Override void mouseMoveEvent(QGraphicsSceneMouseEvent *event)
Definition: ActionListView.cpp:119
QMap< Qt::SizeHint, int >
Lancelot::CustomListItem
All classes that are going to be used in the CustomList must subclass this and QGraphicsWidget.
Definition: CustomListView.h:37
Lancelot::ActionListViewItemFactory::setModel
void setModel(ActionListModel *model)
Definition: ActionListView.cpp:476
Lancelot::ActionListViewItemFactory::itemIconSize
QSize itemIconSize() const
Definition: ActionListView.cpp:443
Lancelot::ActionListViewItemFactory::model
ActionListModel * model() const
Definition: ActionListView.cpp:504
Lancelot::ActionListViewItemFactory::setItemExtender
void setItemExtender(int index)
Definition: ActionListView.cpp:576
Lancelot::ActionListViewItemFactory::ActionListViewItemFactory
ActionListViewItemFactory(ActionListModel *model, ActionListView *view)
Definition: ActionListView.cpp:135
Lancelot::ActionListView
Definition: ActionListView.h:33
Lancelot::ActionListView::Private::Private
Private(ActionListView *listView)
Definition: ActionListView.cpp:787
QGraphicsWidget::event
virtual bool event(QEvent *event)
Lancelot::ActionListViewItemFactory::setItemIconSize
void setItemIconSize(QSize size)
Definition: ActionListView.cpp:429
L_Override
#define L_Override
Definition: lancelot_export.h:41
QPointF
Lancelot::ActionListView::Private::~Private
~Private()
Definition: ActionListView.cpp:807
Lancelot::ActionListViewItemFactory::itemForIndex
L_Override CustomListItem * itemForIndex(int index)
Definition: ActionListView.cpp:192
QObject::event
virtual bool event(QEvent *e)
lancelot_export.h
Lancelot::ActionListViewItemFactory::selectRelItem
void selectRelItem(int rel)
Definition: ActionListView.cpp:738
Lancelot::ActionListView::Private::dropIndicator
Plasma::SvgWidget * dropIndicator
Definition: ActionListView_p.h:178
QObject
QGraphicsSceneMouseEvent
Lancelot::ActionListViewItem::setSelected
L_Override void setSelected(bool selected=true)
Definition: ActionListView.cpp:81
QPainter
Lancelot::Group
Represents a group of object.
Definition: Global.h:63
Lancelot::ActionListViewItemFactory::setCategoriesGroup
void setCategoriesGroup(Group *group=NULL)
Definition: ActionListView.cpp:341
ActionListModel.h
QGraphicsSceneContextMenuEvent
QList
Lancelot::ActionListViewItemFactory::contextForSelectedItem
void contextForSelectedItem()
Definition: ActionListView.cpp:665
Lancelot::ActionListViewItem::~ActionListViewItem
~ActionListViewItem()
Definition: ActionListView.cpp:50
Lancelot::ActionListViewItem::contextMenuEvent
L_Override void contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
Definition: ActionListView.cpp:106
Lancelot::ActionListViewItemFactory::itemDrag
void itemDrag(ActionListViewItem *sender, QGraphicsSceneMouseEvent *event)
Definition: ActionListView.cpp:624
Lancelot::ActionListViewItem::paint
L_Override void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
Definition: ActionListView.cpp:56
Lancelot::ActionListViewItem::mousePressEvent
L_Override void mousePressEvent(QGraphicsSceneMouseEvent *event)
Definition: ActionListView.cpp:113
Lancelot::ActionListViewItemFactory::itemsGroup
Group * itemsGroup() const
Definition: ActionListView.cpp:336
QSize
Lancelot::ActionListViewItemFactory::categoryIconSize
QSize categoryIconSize() const
Definition: ActionListView.cpp:462
ActionListView.h
Lancelot::CustomItemBackground
Definition: CustomItemBackground_p.h:37
Lancelot::ActionListViewItemFactory::setDisplayMode
void setDisplayMode(ActionListView::ItemDisplayMode mode)
Definition: ActionListView.cpp:300
Lancelot::ActionListViewItemFactory::setItemHeight
void setItemHeight(int height, Qt::SizeHint which)
Definition: ActionListView.cpp:395
Lancelot::ActionListViewItem::ActionListViewItem
ActionListViewItem(ActionListViewItemFactory *factory)
Definition: ActionListView.cpp:42
Lancelot::ActionListView::Private
Definition: ActionListView_p.h:171
Lancelot::ActionListView::Private::immutabilityChanged
void immutabilityChanged(const Plasma::ImmutabilityType immutable)
Definition: ActionListView.cpp:812
Lancelot::ActionListView::Private::itemFactory
ActionListViewItemFactory * itemFactory
Definition: ActionListView_p.h:177
Lancelot::ActionListViewItemFactory::itemCount
L_Override int itemCount() const
Definition: ActionListView.cpp:386
Lancelot::ActionListViewItemFactory::setCategoryHeight
void setCategoryHeight(int height, Qt::SizeHint which)
Definition: ActionListView.cpp:412
Lancelot::ActionListViewItemFactory::categoryHeight
int categoryHeight(Qt::SizeHint which) const
Definition: ActionListView.cpp:424
Lancelot::ActionListViewItemFactory::setItemsGroup
void setItemsGroup(Group *group=NULL)
Definition: ActionListView.cpp:317
Lancelot::ActionListViewItemFactory::setCategoryIconSize
void setCategoryIconSize(QSize size)
Definition: ActionListView.cpp:448
lancelot.h
QStyleOptionGraphicsItem
Lancelot::ActionListViewItem::isSelected
L_Override bool isSelected() const
Definition: ActionListView.cpp:101
CustomListView.h
Lancelot::ActionListView::Private::q
ActionListView *const q
Definition: ActionListView_p.h:180
Lancelot::ActionListViewItemFactory::activated
void activated(int index)
CustomItemBackground_p.h
Lancelot::ActionListViewItem
Definition: ActionListView_p.h:42
Lancelot::ExtenderButton
Button widget with special activation options beside clicking - hover and extender activation...
Definition: ExtenderButton.h:39
Lancelot::CustomListItemFactory
Interface that manages the list model and serves as an interface between the actual data model and Cu...
Definition: CustomListView.h:53
Lancelot::ActionListViewItemFactory::categoriesGroup
Group * categoriesGroup() const
Definition: ActionListView.cpp:361
Lancelot::ActionListView::Private::showsExtendersOutside
bool showsExtendersOutside
Definition: ActionListView_p.h:179
Lancelot::ActionListView::Private::sizeHintUpdateNeeded
void sizeHintUpdateNeeded()
Definition: ActionListView.cpp:817
Lancelot::ActionListViewItemFactory::clearSelection
void clearSelection()
Definition: ActionListView.cpp:674
Lancelot::ActionListViewItemFactory::itemContext
void itemContext(ActionListViewItem *sender, bool mouseCoordinate=true)
Definition: ActionListView.cpp:591
Lancelot::ActionListViewItemFactory::itemHeight
L_Override int itemHeight(int index, Qt::SizeHint which) const
Definition: ActionListView.cpp:467
Lancelot::ActionListViewItemFactory::setExtenderPosition
void setExtenderPosition(int position)
Definition: ActionListView.cpp:555
Lancelot::ActionListViewItemFactory::extenderPosition
int extenderPosition() const
Definition: ActionListView.cpp:586
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:43:01 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

liblancelot

Skip menu "liblancelot"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

workspace API Reference

Skip menu "workspace API Reference"
  • kdeplasma-addons
  •       GroupingDesktop
  •     liblancelot

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal