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

okteta

  • sources
  • kde-4.12
  • kdesdk
  • okteta
  • libs
  • kasten
  • gui
  • shell
multiviewareas_p.h
Go to the documentation of this file.
1 /*
2  This file is part of the Kasten Framework, made within the KDE community.
3 
4  Copyright 2009 Friedrich W. H. Kossebau <kossebau@kde.org>
5 
6  This library is free software; you can redistribute it and/or
7  modify it under the terms of the GNU Lesser General Public
8  License as published by the Free Software Foundation; either
9  version 2.1 of the License, or (at your option) version 3, or any
10  later version accepted by the membership of KDE e.V. (or its
11  successor approved by the membership of KDE e.V.), which shall
12  act as a proxy defined in Section 6 of version 3 of the license.
13 
14  This library is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17  Lesser General Public License for more details.
18 
19  You should have received a copy of the GNU Lesser General Public
20  License along with this library. If not, see <http://www.gnu.org/licenses/>.
21 */
22 
23 #ifndef MULTIVIEWAREAS_P_H
24 #define MULTIVIEWAREAS_P_H
25 
26 // lib
27 #include "abstractgroupedviews_p.h"
28 #include "multiviewareas.h"
29 #include "tabbedviews.h"
30 // Qt
31 #include <QtGui/QSplitter>
32 
33 class QDragMoveEvent;
34 class QDropEvent;
35 
36 
37 namespace Kasten2
38 {
39 
40 class TabbedViews;
41 
42 
43 class MultiViewAreasPrivate : public AbstractGroupedViewsPrivate
44 {
45  public:
46  explicit MultiViewAreasPrivate( MultiViewAreas* parent );
47 
48  virtual ~MultiViewAreasPrivate();
49 
50  public:
51  void init();
52 
53  public: // AbstractViewArea API
54  void setFocus();
55  QWidget* widget() const;
56  bool hasFocus() const;
57 
58  public: // AbstractGroupedViews API
59  void addViews( const QList<AbstractView*>& views );
60  void removeViews( const QList<AbstractView*>& views );
61  void setViewFocus( AbstractView* view );
62 
63  QList<AbstractView*> viewList() const;
64  int viewCount() const;
65  AbstractView* viewFocus() const;
66 
67  public: // If::ToolInlineViewable API
68  void setCurrentToolInlineView( AbstractToolInlineView* view );
69 
70  public: // If::ViewAreaSplitable API
71  AbstractViewArea* splitViewArea( AbstractViewArea* viewArea, Qt::Orientation orientation );
72  void closeViewArea( AbstractViewArea* viewArea );
73  void setViewAreaFocus( AbstractViewArea* viewArea );
74  AbstractViewArea* viewAreaFocus() const;
75  int viewAreasCount() const;
76 
77  protected:
78  int indexOf( AbstractView* view ) const;
79 
80  protected:// slots
81  void onViewsRemoved();
82  void onViewAreaFocusChanged( bool hasFocus );
83 
84  protected:
85  Q_DECLARE_PUBLIC( MultiViewAreas )
86 
87  protected:
88  QList<TabbedViews*> mViewAreaList;
89  QSplitter* mMainSplitter;
90 
91  TabbedViews* mCurrentViewArea;
92  TabbedViews* mCurrentInlineToolViewArea;
93 };
94 
95 
96 inline QWidget* MultiViewAreasPrivate::widget() const { return mMainSplitter; }
97 inline bool MultiViewAreasPrivate::hasFocus() const { return mCurrentViewArea->hasFocus(); }
98 inline AbstractView* MultiViewAreasPrivate::viewFocus() const { return mCurrentViewArea->viewFocus(); }
99 inline AbstractViewArea* MultiViewAreasPrivate::viewAreaFocus() const { return mCurrentViewArea; }
100 inline int MultiViewAreasPrivate::viewAreasCount() const { return mViewAreaList.count(); }
101 
102 inline QList<AbstractView*> MultiViewAreasPrivate::viewList() const
103 {
104  QList<AbstractView*> result;
105 
106  foreach( TabbedViews* viewArea, mViewAreaList )
107  result.append( viewArea->viewList() );
108 
109  return result;
110 }
111 
112 inline int MultiViewAreasPrivate::viewCount() const
113 {
114  int result = 0;
115 
116  foreach( TabbedViews* viewArea, mViewAreaList )
117  result += viewArea->viewCount();
118 
119  return result;
120 }
121 
122 inline int MultiViewAreasPrivate::indexOf( AbstractView* view ) const
123 {
124  int result = -1;
125 
126  int globalBaseIndex = 0;
127  foreach( TabbedViews* viewArea, mViewAreaList )
128  {
129  const int localIndexOf = viewArea->indexOf( view );
130  if( localIndexOf != -1 )
131  {
132  result = globalBaseIndex + localIndexOf;
133  break;
134  }
135  globalBaseIndex += viewArea->viewCount();
136  }
137 
138  return result;
139 }
140 
141 inline void MultiViewAreasPrivate::setFocus()
142 {
143  mCurrentViewArea->setFocus();
144 }
145 
146 inline void MultiViewAreasPrivate::addViews( const QList<AbstractView*>& views )
147 {
148  Q_Q( MultiViewAreas );
149 
150  mCurrentViewArea->addViews( views );
151 
152  emit q->added( views );
153 }
154 
155 inline void MultiViewAreasPrivate::removeViews( const QList<AbstractView*>& views )
156 {
157  Q_Q( MultiViewAreas );
158 
159  // TODO: possible to just send the views of the given area?
160  foreach( TabbedViews* viewArea, mViewAreaList )
161  viewArea->removeViews( views );
162 
163  // TODO: above might trigger removal of areas before, is this a problem?
164  emit q->removing( views );
165 }
166 
167 inline void MultiViewAreasPrivate::setCurrentToolInlineView( AbstractToolInlineView* view )
168 {
169  if( mCurrentInlineToolViewArea && mCurrentInlineToolViewArea != mCurrentViewArea )
170  mCurrentInlineToolViewArea->setCurrentToolInlineView( 0 );
171 
172  mCurrentInlineToolViewArea = mCurrentViewArea;
173 
174  mCurrentViewArea->setCurrentToolInlineView( view );
175 }
176 
177 inline void MultiViewAreasPrivate::setViewFocus( AbstractView *view )
178 {
179  // TODO: makes this more efficient!
180  foreach( TabbedViews* viewArea, mViewAreaList )
181  {
182  const int localIndex = viewArea->indexOf( view );
183  if( localIndex != -1 )
184  {
185  viewArea->setViewFocus( view );
186  break;
187  }
188  }
189 }
190 
191  //TODO: this method could be removed, as it is the same as _viewArea->setFocus(), or?
192 inline void MultiViewAreasPrivate::setViewAreaFocus( AbstractViewArea* _viewArea )
193 {
194  TabbedViews* viewArea = static_cast<TabbedViews*>( _viewArea );
195  if( viewArea == mCurrentViewArea )
196  return;
197 
198  if( mViewAreaList.contains(viewArea) )
199  viewArea->setFocus();
200 }
201 
202 inline void MultiViewAreasPrivate::closeViewArea( AbstractViewArea* _viewArea )
203 {
204  Q_Q( MultiViewAreas );
205 
206  TabbedViews* viewArea = static_cast<TabbedViews*>( _viewArea );
207 
208  const QList<AbstractView*> views = viewArea->viewList();
209 
210  emit q->closeRequest( views );
211 }
212 
213 }
214 
215 #endif
Kasten2::AbstractView
Definition: abstractview.h:38
Kasten2::MultiViewAreasPrivate::viewList
QList< AbstractView * > viewList() const
Definition: multiviewareas_p.h:102
Kasten2::MultiViewAreasPrivate
Definition: multiviewareas_p.h:43
Kasten2::TabbedViews::hasFocus
virtual bool hasFocus() const
Definition: tabbedviews.cpp:82
Kasten2::AbstractToolInlineView
Definition: abstracttoolinlineview.h:39
Kasten2::MultiViewAreasPrivate::removeViews
void removeViews(const QList< AbstractView * > &views)
Definition: multiviewareas_p.h:155
Kasten2::MultiViewAreasPrivate::indexOf
int indexOf(AbstractView *view) const
Definition: multiviewareas_p.h:122
QWidget
Kasten2::MultiViewAreasPrivate::setFocus
void setFocus()
Definition: multiviewareas_p.h:141
Kasten2::MultiViewAreasPrivate::viewAreaFocus
AbstractViewArea * viewAreaFocus() const
Definition: multiviewareas_p.h:99
Kasten2::MultiViewAreasPrivate::mMainSplitter
QSplitter * mMainSplitter
Definition: multiviewareas_p.h:89
Kasten2::TabbedViews::removeViews
virtual void removeViews(const QList< AbstractView * > &views)
Definition: tabbedviews.cpp:97
Kasten2::MultiViewAreasPrivate::mCurrentInlineToolViewArea
TabbedViews * mCurrentInlineToolViewArea
Definition: multiviewareas_p.h:92
Kasten2::TabbedViews::setViewFocus
virtual void setViewFocus(AbstractView *view)
Definition: tabbedviews.cpp:111
Kasten2::TabbedViews::setCurrentToolInlineView
virtual void setCurrentToolInlineView(AbstractToolInlineView *view)
Definition: tabbedviews.cpp:104
Kasten2::MultiViewAreasPrivate::mViewAreaList
QList< TabbedViews * > mViewAreaList
Definition: multiviewareas_p.h:88
Kasten2::MultiViewAreas
Definition: multiviewareas.h:42
Kasten2::MultiViewAreasPrivate::setViewFocus
void setViewFocus(AbstractView *view)
Definition: multiviewareas_p.h:177
Kasten2::MultiViewAreasPrivate::MultiViewAreasPrivate
MultiViewAreasPrivate(MultiViewAreas *parent)
Kasten2::MultiViewAreasPrivate::splitViewArea
AbstractViewArea * splitViewArea(AbstractViewArea *viewArea, Qt::Orientation orientation)
Kasten2::MultiViewAreasPrivate::addViews
void addViews(const QList< AbstractView * > &views)
Definition: multiviewareas_p.h:146
Kasten2::MultiViewAreasPrivate::init
void init()
Kasten2::MultiViewAreasPrivate::~MultiViewAreasPrivate
virtual ~MultiViewAreasPrivate()
Kasten2::TabbedViews::setFocus
virtual void setFocus()
Definition: tabbedviews.cpp:118
Kasten2::MultiViewAreasPrivate::widget
QWidget * widget() const
Definition: multiviewareas_p.h:96
Kasten2::TabbedViews::viewFocus
virtual AbstractView * viewFocus() const
Definition: tabbedviews.cpp:75
Kasten2::AbstractViewArea
Definition: abstractviewarea.h:41
Kasten2::MultiViewAreasPrivate::viewAreasCount
int viewAreasCount() const
Definition: multiviewareas_p.h:100
Kasten2::TabbedViews
Definition: tabbedviews.h:41
multiviewareas.h
Kasten2::MultiViewAreasPrivate::setViewAreaFocus
void setViewAreaFocus(AbstractViewArea *viewArea)
Definition: multiviewareas_p.h:192
Kasten2::MultiViewAreasPrivate::onViewsRemoved
void onViewsRemoved()
Kasten2::MultiViewAreasPrivate::viewCount
int viewCount() const
Definition: multiviewareas_p.h:112
Kasten2::MultiViewAreasPrivate::viewFocus
AbstractView * viewFocus() const
Definition: multiviewareas_p.h:98
Kasten2::MultiViewAreasPrivate::setCurrentToolInlineView
void setCurrentToolInlineView(AbstractToolInlineView *view)
Definition: multiviewareas_p.h:167
tabbedviews.h
Kasten2::TabbedViews::viewList
virtual QList< AbstractView * > viewList() const
Definition: tabbedviews.cpp:47
Kasten2::MultiViewAreasPrivate::hasFocus
bool hasFocus() const
Definition: multiviewareas_p.h:97
Kasten2::TabbedViews::indexOf
int indexOf(AbstractView *view) const
Definition: tabbedviews.cpp:61
Kasten2::MultiViewAreasPrivate::closeViewArea
void closeViewArea(AbstractViewArea *viewArea)
Definition: multiviewareas_p.h:202
Kasten2::TabbedViews::addViews
virtual void addViews(const QList< AbstractView * > &views)
Definition: tabbedviews.cpp:90
Kasten2::MultiViewAreasPrivate::mCurrentViewArea
TabbedViews * mCurrentViewArea
Definition: multiviewareas_p.h:91
Kasten2::AbstractGroupedViewsPrivate
Definition: abstractgroupedviews_p.h:34
Kasten2::MultiViewAreasPrivate::onViewAreaFocusChanged
void onViewAreaFocusChanged(bool hasFocus)
Kasten2::TabbedViews::viewCount
virtual int viewCount() const
Definition: tabbedviews.cpp:54
QList
Definition: bookmarkable.h:29
abstractgroupedviews_p.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:04:08 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

okteta

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

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