• 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
51namespace KMDIPrivate
52{
53 class TabWidgetPrivate
54 {
55
56 };
57}
58
59namespace KMDI
60{
61
62TabWidget::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, TQ_SIGNAL(closeRequest(TQWidget*)), this, TQ_SLOT(closeTab(TQWidget*)));
74}
75
76TabWidget::~TabWidget()
77{
78 delete d;
79 d = 0;
80}
81
82bool 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 = ((TQChildEvent*)e)->child();
93 if ((pLostChild != 0L) && (pLostChild->isWidgetType())) {
94 TQObjectList *list = pLostChild->queryList( "TQWidget" );
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 = ((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" );
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, TQ_SIGNAL(destroyed()), this, TQ_SLOT(childDestroyed()));
126 }
127 delete list; // delete the list, not the objects
128 }
129 }
130
131 return KTabWidget::eventFilter (obj, e);
132}
133
134void 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 = sender();
139 if ((pLostChild != 0L) && (pLostChild->isWidgetType()))
140 {
141 TQObjectList *list = ((TQObject*)(pLostChild))->queryList("TQWidget");
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
154void TabWidget::closeTab(TQWidget* w)
155{
156 w->close();
157}
158
159void TabWidget::addTab ( TQWidget * child, const TQString & label )
160{
161 KTabWidget::addTab(child,label);
162 showPage(child);
163 maybeShow();
164}
165
166void TabWidget::addTab ( TQWidget * child, const TQIconSet & iconset, const TQString & label )
167{
168 KTabWidget::addTab(child,iconset,label);
169 showPage(child);
170 maybeShow();
171}
172
173void TabWidget::addTab ( TQWidget * child, TQTab * tab )
174{
175 KTabWidget::addTab(child,tab);
176 showPage(child);
177 maybeShow();
178}
179
180void 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
188void 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
196void 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
204void TabWidget::removePage ( TQWidget * w )
205{
206 KTabWidget::removePage(w);
207 maybeShow();
208}
209
210void TabWidget::updateIconInView( TQWidget *w, TQPixmap icon )
211{
212 changeTab(w,icon,tabLabel(w));
213}
214
215void TabWidget::updateCaptionInView( TQWidget *w, const TQString &caption )
216{
217 changeTab(w, caption);
218}
219
220void 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
253void 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
271void TabWidget::setTabWidgetVisibility( KMDI::TabWidgetVisibility visibility )
272{
273 m_visibility = visibility;
274 maybeShow();
275}
276
277KMDI::TabWidgetVisibility TabWidget::tabWidgetVisibility( ) const
278{
279 return m_visibility;
280}
281
282}
KMDI
A namespace for the KMDI library.
Definition dockcontainer.cpp:52

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
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdemdi/tdemdi by doxygen 1.9.8
This website is maintained by Timothy Pearson.