• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdemdi/tdemdi
 

tdemdi/tdemdi

  • tdemdi
  • tdemdi
tabwidget.cpp
1 /* This file is part of the KDE libraries
2  Copyright (C) 2004 Christoph Cullmann <cullmann@kde.org>
3  Copyright (C) 2002,2003 Joseph Wenninger <jowenn@kde.org>
4 
5  This library is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  Library General Public License for more details.
14 
15  You should have received a copy of the GNU Library General Public License
16  along with this library; see the file COPYING.LIB. If not, write to
17  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19 
20  Based on:
21 
22  //----------------------------------------------------------------------------
23  // Project : KDE MDI extension
24  //
25  // begin : 07/1999 by Szymon Stefanek as part of kvirc
26  // (an IRC application)
27  // changes : 09/1999 by Falk Brettschneider to create an
28  // - 06/2000 stand-alone Qt extension set of
29  // classes and a Qt-based library
30  // : 02/2000 by Massimo Morin (mmorin@schedsys.com)
31  // 2000-2003 maintained by the KDevelop project
32  // patches : -/2000 by Lars Beikirch (Lars.Beikirch@gmx.net)
33  // : 01/2003 by Jens Zurheide (jens.zurheide@gmx.de)
34  //
35  // copyright : (C) 1999-2003 by Falk Brettschneider
36  // and
37  // Szymon Stefanek (stefanek@tin.it)
38  // email : falkbr@kdevelop.org (Falk Brettschneider)
39  //----------------------------------------------------------------------------
40 */
41 
42 #include <ktabbar.h>
43 #include <tdepopupmenu.h>
44 #include <kdebug.h>
45 
46 #include <tqobjectlist.h>
47 
48 #include "tabwidget.h"
49 #include "tabwidget.moc"
50 
51 namespace KMDIPrivate
52 {
53  class TabWidgetPrivate
54  {
55 
56  };
57 }
58 
59 namespace KMDI
60 {
61 
62 TabWidget::TabWidget(TQWidget* parent, const char* name)
63  : KTabWidget(parent,name)
64  , m_visibility (KMDI::ShowWhenMoreThanOneTab)
65  , d (new KMDIPrivate::TabWidgetPrivate())
66 {
67  installEventFilter (this);
68 
69  tabBar()->hide();
70 
71  setHoverCloseButton(true);
72 
73  connect(this, TQT_SIGNAL(closeRequest(TQWidget*)), this, TQT_SLOT(closeTab(TQWidget*)));
74 }
75 
76 TabWidget::~TabWidget()
77 {
78  delete d;
79  d = 0;
80 }
81 
82 bool TabWidget::eventFilter(TQObject *obj, TQEvent *e )
83 {
84  if(e->type() == TQEvent::FocusIn)
85  {
86  emit focusInEvent ();
87  }
88  else if (e->type() == TQEvent::ChildRemoved)
89  {
90  // if we lost a child we uninstall ourself as event filter for the lost
91  // child and its children
92  TQObject* pLostChild = TQT_TQOBJECT(((TQChildEvent*)e)->child());
93  if ((pLostChild != 0L) && (pLostChild->isWidgetType())) {
94  TQObjectList *list = pLostChild->queryList( TQWIDGET_OBJECT_NAME_STRING );
95  list->insert(0, pLostChild); // add the lost child to the list too, just to save code
96  TQObjectListIt it( *list ); // iterate over all lost child widgets
97  TQObject * o;
98  while ( (o=it.current()) != 0 ) { // for each found object...
99  TQWidget* widg = (TQWidget*)o;
100  ++it;
101  widg->removeEventFilter(this);
102  }
103  delete list; // delete the list, not the objects
104  }
105  }
106  else if (e->type() == TQEvent::ChildInserted)
107  {
108  // if we got a new child and we are attached to the MDI system we
109  // install ourself as event filter for the new child and its children
110  // (as we did when we were added to the MDI system).
111  TQObject* pNewChild = TQT_TQOBJECT(((TQChildEvent*)e)->child());
112  if ((pNewChild != 0L) && (pNewChild->isWidgetType()))
113  {
114  TQWidget* pNewWidget = (TQWidget*)pNewChild;
115  if (pNewWidget->testWFlags((WFlags)(WType_Dialog | WShowModal)))
116  return false;
117  TQObjectList *list = pNewWidget->queryList( TQWIDGET_OBJECT_NAME_STRING );
118  list->insert(0, pNewChild); // add the new child to the list too, just to save code
119  TQObjectListIt it( *list ); // iterate over all new child widgets
120  TQObject * o;
121  while ( (o=it.current()) != 0 ) { // for each found object...
122  TQWidget* widg = (TQWidget*)o;
123  ++it;
124  widg->installEventFilter(this);
125  connect(widg, TQT_SIGNAL(destroyed()), this, TQT_SLOT(childDestroyed()));
126  }
127  delete list; // delete the list, not the objects
128  }
129  }
130 
131  return KTabWidget::eventFilter (obj, e);
132 }
133 
134 void TabWidget::childDestroyed()
135 {
136  // if we lost a child we uninstall ourself as event filter for the lost
137  // child and its children
138  const TQObject* pLostChild = TQT_TQOBJECT_CONST(sender());
139  if ((pLostChild != 0L) && (pLostChild->isWidgetType()))
140  {
141  TQObjectList *list = ((TQObject*)(pLostChild))->queryList(TQWIDGET_OBJECT_NAME_STRING);
142  list->insert(0, pLostChild); // add the lost child to the list too, just to save code
143  TQObjectListIt it( *list ); // iterate over all lost child widgets
144  TQObject * obj;
145  while ( (obj=it.current()) != 0 ) { // for each found object...
146  TQWidget* widg = (TQWidget*)obj;
147  ++it;
148  widg->removeEventFilter(this);
149  }
150  delete list; // delete the list, not the objects
151  }
152 }
153 
154 void TabWidget::closeTab(TQWidget* w)
155 {
156  w->close();
157 }
158 
159 void TabWidget::addTab ( TQWidget * child, const TQString & label )
160 {
161  KTabWidget::addTab(child,label);
162  showPage(child);
163  maybeShow();
164 }
165 
166 void TabWidget::addTab ( TQWidget * child, const TQIconSet & iconset, const TQString & label )
167 {
168  KTabWidget::addTab(child,iconset,label);
169  showPage(child);
170  maybeShow();
171 }
172 
173 void TabWidget::addTab ( TQWidget * child, TQTab * tab )
174 {
175  KTabWidget::addTab(child,tab);
176  showPage(child);
177  maybeShow();
178 }
179 
180 void TabWidget::insertTab ( TQWidget * child, const TQString & label, int index)
181 {
182  KTabWidget::insertTab(child,label,index);
183  showPage(child);
184  maybeShow();
185  tabBar()->repaint();
186 }
187 
188 void TabWidget::insertTab ( TQWidget * child, const TQIconSet & iconset, const TQString & label, int index )
189 {
190  KTabWidget::insertTab(child,iconset,label,index);
191  showPage(child);
192  maybeShow();
193  tabBar()->repaint();
194 }
195 
196 void TabWidget::insertTab ( TQWidget * child, TQTab * tab, int index)
197 {
198  KTabWidget::insertTab(child,tab,index);
199  showPage(child);
200  maybeShow();
201  tabBar()->repaint();
202 }
203 
204 void TabWidget::removePage ( TQWidget * w )
205 {
206  KTabWidget::removePage(w);
207  maybeShow();
208 }
209 
210 void TabWidget::updateIconInView( TQWidget *w, TQPixmap icon )
211 {
212  changeTab(w,icon,tabLabel(w));
213 }
214 
215 void TabWidget::updateCaptionInView( TQWidget *w, const TQString &caption )
216 {
217  changeTab(w, caption);
218 }
219 
220 void TabWidget::maybeShow()
221 {
222  switch (m_visibility)
223  {
224  case KMDI::AlwaysShowTabs:
225  tabBar()->show();
226 
227  // show/hide corner widgets
228  if (count() == 0)
229  setCornerWidgetVisibility(false);
230  else
231  setCornerWidgetVisibility(true);
232 
233  break;
234 
235  case KMDI::ShowWhenMoreThanOneTab:
236  if (count()<2) tabBar()->hide();
237  else tabBar()->show();
238 
239  // show/hide corner widgets
240  if (count() < 2)
241  setCornerWidgetVisibility(false);
242  else
243  setCornerWidgetVisibility(true);
244 
245  break;
246 
247  case KMDI::NeverShowTabs:
248  tabBar()->hide();
249  break;
250  }
251 }
252 
253 void TabWidget::setCornerWidgetVisibility(bool visible) {
254  // there are two corner widgets: on TopLeft and on TopTight!
255 
256  if (cornerWidget(TQt::TopLeft) ) {
257  if (visible)
258  cornerWidget(TQt::TopLeft)->show();
259  else
260  cornerWidget(TQt::TopLeft)->hide();
261  }
262 
263  if (cornerWidget(TQt::TopRight) ) {
264  if (visible)
265  cornerWidget(TQt::TopRight)->show();
266  else
267  cornerWidget(TQt::TopRight)->hide();
268  }
269 }
270 
271 void TabWidget::setTabWidgetVisibility( KMDI::TabWidgetVisibility visibility )
272 {
273  m_visibility = visibility;
274  maybeShow();
275 }
276 
277 KMDI::TabWidgetVisibility TabWidget::tabWidgetVisibility( ) const
278 {
279  return m_visibility;
280 }
281 
282 }
KMDIPrivate
Definition: guiclient.cpp:51
KMDI
A namespace for the KMDI library.
Definition: dockcontainer.cpp:51

tdemdi/tdemdi

Skip menu "tdemdi/tdemdi"
  • Main Page
  • Namespace List
  • File List
  • Namespace Members

tdemdi/tdemdi

Skip menu "tdemdi/tdemdi"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  •     tdecore
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  • tdeioslave
  •   http
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdemdi/tdemdi by doxygen 1.8.8
This website is maintained by Timothy Pearson.