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

kcachegrind

  • sources
  • kde-4.12
  • kdesdk
  • kcachegrind
  • libviews
traceitemview.h
Go to the documentation of this file.
1 /* This file is part of KCachegrind.
2  Copyright (C) 2003-2009 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
3 
4  KCachegrind is free software; you can redistribute it and/or
5  modify it under the terms of the GNU General Public
6  License as published by the Free Software Foundation, version 2.
7 
8  This program is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License
14  along with this program; see the file COPYING. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 */
18 
19 /*
20  * Trace Item View
21  */
22 
23 #ifndef TRACEITEMVIEW_H
24 #define TRACEITEMVIEW_H
25 
26 #include <QTimer>
27 
28 #include "tracedata.h"
29 
30 class QWidget;
31 class QMenu;
32 
33 class TopLevelBase;
34 class TraceItemView;
35 
36 /* Helper class for TraceItemView for merging update requests.
37  *
38  * This can not be directly done in TraceItemView which can not have slots,
39  * as this would need TraceItemView to be inherited from QObject. However,
40  * we want subclasses of TraceItemView to also inherit from QWidget, and
41  * multiple inheritance of a QObject is impossible
42  */
43 class TraceItemViewUpdateTimer: public QTimer
44 {
45  Q_OBJECT
46 
47 public:
48  explicit TraceItemViewUpdateTimer(TraceItemView* view);
49 
50 private slots:
51  void timeoutTriggered();
52 
53 private:
54  TraceItemView* _view;
55 };
56 
57 
70 class TraceItemView
71 {
72  friend class TraceItemViewUpdateTimer;
73 
74 public:
75 
80  enum { nothingChanged = 0,
81  eventTypeChanged = 1,
82  eventType2Changed = 2,
83  groupTypeChanged = 4,
84  partsChanged = 8,
85  activeItemChanged = 16,
86  selectedItemChanged = 32,
87  dataChanged = 64,
88  configChanged = 128 };
89 
90  enum Direction { None, Back, Forward, Up };
91 
92  // a TraceItemView can have a position in a parent container
93  enum Position { Hidden, Top, Right, Left, Bottom };
94 
95  explicit TraceItemView(TraceItemView* parentView, TopLevelBase* top = 0);
96  virtual ~TraceItemView();
97 
98  virtual QString whatsThis() const;
99 
100  // visualization layout and options (uses ConfigStorage)
101  virtual void saveLayout(const QString& prefix, const QString& postfix);
102  virtual void restoreLayout(const QString& prefix, const QString& postfix);
103  virtual void saveOptions(const QString& prefix, const QString& postfix);
104  virtual void restoreOptions(const QString& prefix, const QString& postfix);
105 
106  // Immediate remove all references to old data, and set the new.
107  // This resets the visualization state.
108  // A GUI update has to be triggered with updateView().
109  // Overwrite in container views to also set new data for all members.
110  virtual void setData(TraceData* d);
111 
112  // modify visualization state, updates automatically
113  void setEventType(EventType* t) { _newEventType = t; updateView(); }
114  void setEventType2(EventType* t) { _newEventType2 = t; updateView(); }
115  void set(ProfileContext::Type g) { _newGroupType = g; updateView(); }
116  void set(const TracePartList& l) { _newPartList = l; updateView(); }
117  // returns false if nothing can be shown for this trace item
118  bool activate(CostItem* i);
119  void select(CostItem* i);
120  void notifyChange(int changeType) { _status |= changeType; updateView(); }
121  // all in one
122  bool set(int, TraceData*, EventType*, EventType*,
123  ProfileContext::Type, const TracePartList&,
124  CostItem*, CostItem*);
125 
126  // if mergeUpdates is true (default), calls to updateView do not
127  // directly trigger an update of the view
128  void setMergeUpdates(bool b) { _mergeUpdates = b; }
129 
130  // general update request, call if view is/gets visible
131  // force: update immediately even if invisible and no change was detected
132  void updateView(bool force = false);
133 
138  virtual void selected(TraceItemView* sender, CostItem*);
139  virtual void partsSelected(TraceItemView* sender, const TracePartList&);
140  virtual void directionActivated(TraceItemView* sender, Direction);
141  virtual void selectedEventType(TraceItemView* sender, EventType*);
142  virtual void selectedEventType2(TraceItemView* sender, EventType*);
143  virtual void activated(TraceItemView* sender, CostItem*);
144  virtual void selectedGroupType(TraceItemView* sender, ProfileContext::Type);
145 
146  // getters...
147  // always get the newest values
148  TraceData* data() const { return _newData; }
149  CostItem* activeItem() const { return _newActiveItem; }
150  CostItem* selectedItem() const { return _newSelectedItem; }
151  EventType* eventType() const { return _newEventType; }
152  EventType* eventType2() const { return _newEventType2; }
153  ProfileContext::Type groupType() const { return _newGroupType; }
154  const TracePartList& partList() const { return _newPartList; }
155 
156  TraceFunction* activeFunction();
157  int status() const { return _status; }
158 
159  // pointer to top level window to e.g. show status messages
160  void setTopLevel(TopLevelBase* t) { _topLevel = t; }
161  TopLevelBase* topLevel() const { return _topLevel; }
162 
163  void setPosition(Position p) { _pos = p; }
164  Position position() const { return _pos; }
165 
166  void setTitle(QString t) { _title = t; }
167  QString title() const { return _title; }
168 
169  // We depend on derived class to be a widget.
170  // Force overiding by making this abstract.
171  virtual QWidget* widget() = 0;
172 
182  virtual CostItem* canShow(CostItem* i) { return i; }
183 
184  /* convenience functions for often used context menu items */
185  void addEventTypeMenu(QMenu*,bool withCost2 = true);
186  void addGoMenu(QMenu*);
187 
188 protected:
189  // helpers to call selected()/activated() of parentView
190  void selected(CostItem*);
191  void partsSelected(const TracePartList&);
192  void activated(CostItem*);
193  void selectedEventType(EventType*);
194  void selectedEventType2(EventType*);
195  void selectedGroupType(ProfileContext::Type);
196  void directionActivated(TraceItemView::Direction);
197 
198  /* Is this view visible?
199  * if not, doUpdate() will not be called by updateView()
200  */
201  virtual bool isViewVisible();
202 
203  // update handler (to be reimplemented)
204  virtual void doUpdate(int changeType, bool force);
205 
206  TraceItemView* _parentView;
207  TopLevelBase* _topLevel;
208 
209  TraceData* _data;
210  TracePartList _partList;
211  CostItem *_activeItem, *_selectedItem;
212  EventType *_eventType, *_eventType2;
213  ProfileContext::Type _groupType;
214 
215 private:
216  /* Multiple update requests via updateView() are merged, and result in one
217  * call to triggerUpdate() after a timeout (using TraceItemViewUpdateTimer)
218  */
219  void triggerUpdate(bool force);
220 
221  TraceData* _newData;
222  TracePartList _newPartList;
223  CostItem *_newActiveItem, *_newSelectedItem;
224  EventType *_newEventType, *_newEventType2;
225  ProfileContext::Type _newGroupType;
226  TraceItemViewUpdateTimer* _updateTimer;
227 
228  QString _title;
229  int _status;
230  bool _mergeUpdates, _needsUpdate;
231  Position _pos;
232 };
233 
234 
235 
236 #endif
TraceItemView::TraceItemView
TraceItemView(TraceItemView *parentView, TopLevelBase *top=0)
Definition: traceitemview.cpp:48
TraceItemView::selectedItemChanged
Definition: traceitemview.h:86
TraceItemView::_topLevel
TopLevelBase * _topLevel
Definition: traceitemview.h:207
TraceItemView::eventType2
EventType * eventType2() const
Definition: traceitemview.h:152
TraceItemView::_parentView
TraceItemView * _parentView
Definition: traceitemview.h:206
TraceItemView::_selectedItem
CostItem * _selectedItem
Definition: traceitemview.h:211
TraceItemView::selectedEventType2
virtual void selectedEventType2(TraceItemView *sender, EventType *)
Definition: traceitemview.cpp:366
TraceItemView::eventType
EventType * eventType() const
Definition: traceitemview.h:151
TraceItemView::set
void set(ProfileContext::Type g)
Definition: traceitemview.h:115
TraceItemView::partsSelected
virtual void partsSelected(TraceItemView *sender, const TracePartList &)
Definition: traceitemview.cpp:326
TraceItemView::setEventType2
void setEventType2(EventType *t)
Definition: traceitemview.h:114
TraceItemView::Position
Position
Definition: traceitemview.h:93
TraceItemView::directionActivated
virtual void directionActivated(TraceItemView *sender, Direction)
Definition: traceitemview.cpp:383
TraceItemView::addEventTypeMenu
void addEventTypeMenu(QMenu *, bool withCost2=true)
Definition: traceitemview.cpp:456
TraceItemView::set
void set(const TracePartList &l)
Definition: traceitemview.h:116
TraceItemView::configChanged
Definition: traceitemview.h:88
QWidget
TraceItemView::setEventType
void setEventType(EventType *t)
Definition: traceitemview.h:113
TraceFunction
A traced function.
Definition: tracedata.h:1122
TraceItemView::_data
TraceData * _data
Definition: traceitemview.h:209
TraceItemView::addGoMenu
void addGoMenu(QMenu *)
Definition: traceitemview.cpp:461
TraceItemView::restoreLayout
virtual void restoreLayout(const QString &prefix, const QString &postfix)
Definition: traceitemview.cpp:103
CostItem
Base class for cost items.
Definition: costitem.h:37
TraceItemView::updateView
void updateView(bool force=false)
Definition: traceitemview.cpp:185
TraceItemView::Back
Definition: traceitemview.h:90
TraceItemView::position
Position position() const
Definition: traceitemview.h:164
TraceItemView::title
QString title() const
Definition: traceitemview.h:167
TraceItemView::activeFunction
TraceFunction * activeFunction()
Definition: traceitemview.cpp:121
TraceItemView::_groupType
ProfileContext::Type _groupType
Definition: traceitemview.h:213
TraceItemView::whatsThis
virtual QString whatsThis() const
Definition: traceitemview.cpp:74
EventType
A cost type, e.g.
Definition: eventtype.h:43
TraceItemView::partList
const TracePartList & partList() const
Definition: traceitemview.h:154
TraceItemView::setMergeUpdates
void setMergeUpdates(bool b)
Definition: traceitemview.h:128
TraceItemView::_eventType2
EventType * _eventType2
Definition: traceitemview.h:212
TraceItemView
Abstract Base Class for KCachegrind Views.
Definition: traceitemview.h:70
TraceItemView::setData
virtual void setData(TraceData *d)
Definition: traceitemview.cpp:165
TraceItemView::selectedItem
CostItem * selectedItem() const
Definition: traceitemview.h:150
TraceItemView::_eventType
EventType * _eventType
Definition: traceitemview.h:212
TraceItemView::partsChanged
Definition: traceitemview.h:84
tracedata.h
TraceItemView::setTitle
void setTitle(QString t)
Definition: traceitemview.h:166
TraceItemView::Right
Definition: traceitemview.h:93
TraceItemView::dataChanged
Definition: traceitemview.h:87
TopLevelBase
Definition: toplevelbase.h:34
TraceItemView::canShow
virtual CostItem * canShow(CostItem *i)
This function is called when a new item should become active.
Definition: traceitemview.h:182
TraceItemView::None
Definition: traceitemview.h:90
TraceItemView::topLevel
TopLevelBase * topLevel() const
Definition: traceitemview.h:161
TraceItemView::Up
Definition: traceitemview.h:90
TraceItemView::Bottom
Definition: traceitemview.h:93
TraceItemView::nothingChanged
Definition: traceitemview.h:80
TraceItemView::_activeItem
CostItem * _activeItem
Definition: traceitemview.h:211
TraceItemView::activate
bool activate(CostItem *i)
Definition: traceitemview.cpp:110
TraceItemView::notifyChange
void notifyChange(int changeType)
Definition: traceitemview.h:120
TraceItemView::eventTypeChanged
Definition: traceitemview.h:81
TraceItemView::Forward
Definition: traceitemview.h:90
TraceItemView::selected
virtual void selected(TraceItemView *sender, CostItem *)
Notification from child views.
Definition: traceitemview.cpp:313
TraceItemView::data
TraceData * data() const
Definition: traceitemview.h:148
TraceItemView::activated
virtual void activated(TraceItemView *sender, CostItem *)
Definition: traceitemview.cpp:342
TraceItemView::isViewVisible
virtual bool isViewVisible()
Definition: traceitemview.cpp:157
TraceItemViewUpdateTimer
Definition: traceitemview.h:43
TraceItemView::saveLayout
virtual void saveLayout(const QString &prefix, const QString &postfix)
Definition: traceitemview.cpp:87
TraceItemView::~TraceItemView
virtual ~TraceItemView()
Definition: traceitemview.cpp:69
TraceItemView::saveOptions
virtual void saveOptions(const QString &prefix, const QString &postfix)
Definition: traceitemview.cpp:95
TraceItemView::restoreOptions
virtual void restoreOptions(const QString &prefix, const QString &postfix)
Definition: traceitemview.cpp:106
TraceItemView::doUpdate
virtual void doUpdate(int changeType, bool force)
Definition: traceitemview.cpp:391
TraceItemView::activeItem
CostItem * activeItem() const
Definition: traceitemview.h:149
TraceItemView::activeItemChanged
Definition: traceitemview.h:85
TraceItemView::Direction
Direction
Definition: traceitemview.h:90
ProfileContext::Type
Type
Definition: context.h:36
TraceItemViewUpdateTimer::TraceItemViewUpdateTimer
TraceItemViewUpdateTimer(TraceItemView *view)
Definition: traceitemview.cpp:34
TraceItemView::Hidden
Definition: traceitemview.h:93
TraceItemView::groupTypeChanged
Definition: traceitemview.h:83
TracePartList
QList< TracePart * > TracePartList
Definition: tracedata.h:176
TraceItemView::setTopLevel
void setTopLevel(TopLevelBase *t)
Definition: traceitemview.h:160
TraceItemView::setPosition
void setPosition(Position p)
Definition: traceitemview.h:163
TraceItemView::eventType2Changed
Definition: traceitemview.h:82
TraceItemView::widget
virtual QWidget * widget()=0
TraceData
This class holds profiling data of multiple tracefiles generated with cachegrind on one command...
Definition: tracedata.h:1363
TraceItemView::select
void select(CostItem *i)
Definition: traceitemview.cpp:79
TraceItemView::status
int status() const
Definition: traceitemview.h:157
TraceItemView::selectedGroupType
virtual void selectedGroupType(TraceItemView *sender, ProfileContext::Type)
Definition: traceitemview.cpp:374
TraceItemView::_partList
TracePartList _partList
Definition: traceitemview.h:210
TraceItemView::groupType
ProfileContext::Type groupType() const
Definition: traceitemview.h:153
TraceItemView::Top
Definition: traceitemview.h:93
TraceItemView::selectedEventType
virtual void selectedEventType(TraceItemView *sender, EventType *)
Definition: traceitemview.cpp:358
TraceItemView::Left
Definition: traceitemview.h:93
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:03:27 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kcachegrind

Skip menu "kcachegrind"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

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