• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeparts
 

tdeparts

  • tdeparts
statusbarextension.cpp
1/* This file is part of the KDE project
2 Copyright (C) 2003 Daniel Molkentin <molkentin@kde.org>
3 Copyright (C) 2003 David Faure <faure@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
21#include "statusbarextension.h"
22
23#include <tqvaluelist.h>
24#include <tqobjectlist.h>
25
26#include <kstatusbar.h>
27#include <tdemainwindow.h>
28#include <kdebug.h>
29#include <tdelibs_export.h>
30#include <tdeparts/part.h>
31#include <tdeparts/event.h>
32
33using namespace KParts;
34
36// Helper Classes
38
39class KParts::StatusBarItem {
40 public:
41 StatusBarItem() // for QValueList
42 : m_widget(0), m_visible(false)
43 {}
44 StatusBarItem( TQWidget * widget, int stretch, bool permanent )
45 : m_widget(widget), m_stretch(stretch), m_permanent(permanent), m_visible(false)
46 {}
47
48 TQWidget * widget() const { return m_widget; }
49
50 void ensureItemShown( KStatusBar * sb )
51 {
52 if ( !m_visible )
53 {
54 sb->addWidget( m_widget, m_stretch, m_permanent );
55 m_visible = true;
56 m_widget->show();
57 }
58 }
59 void ensureItemHidden( KStatusBar * sb )
60 {
61 if ( m_visible )
62 {
63 sb->removeWidget( m_widget );
64 m_visible = false;
65 m_widget->hide();
66 }
67 }
68 private:
69 TQWidget * m_widget;
70 int m_stretch;
71 bool m_permanent;
72 bool m_visible; // true when the item has been added to the statusbar
73};
74
76
77
78StatusBarExtension::StatusBarExtension(KParts::ReadOnlyPart *parent, const char* name)
79 : TQObject(parent, name), m_statusBar(0), d(0)
80{
81 parent->installEventFilter(this);
82}
83
84StatusBarExtension::~StatusBarExtension()
85{
86}
87
88
89StatusBarExtension *StatusBarExtension::childObject( TQObject *obj )
90{
91 if ( !obj || obj->childrenListObject().isEmpty() )
92 return 0L;
93
94 // we try to do it on our own, in hope that we are faster than
95 // queryList, which looks kind of big :-)
96 const TQObjectList children = obj->childrenListObject();
97 TQObjectListIt it( children );
98 for (; it.current(); ++it )
99 if ( it.current()->inherits( "KParts::StatusBarExtension" ) )
100 return static_cast<KParts::StatusBarExtension *>( it.current() );
101
102 return 0L;
103}
104
105bool StatusBarExtension::eventFilter(TQObject * watched, TQEvent* ev)
106{
107 if ( !GUIActivateEvent::test( ev ) ||
108 !watched->inherits("KParts::ReadOnlyPart") )
109 return TQObject::eventFilter(watched, ev);
110
111 KStatusBar * sb = statusBar();
112 if ( !sb )
113 return TQObject::eventFilter(watched, ev);
114
115 GUIActivateEvent *gae = static_cast<GUIActivateEvent*>(ev);
116
117 if ( gae->activated() )
118 {
119 TQValueListIterator<StatusBarItem> it = m_statusBarItems.begin();
120 for ( ; it != m_statusBarItems.end() ; ++it )
121 (*it).ensureItemShown( sb );
122 }
123 else
124 {
125 TQValueListIterator<StatusBarItem> it = m_statusBarItems.begin();
126 for ( ; it != m_statusBarItems.end() ; ++it )
127 (*it).ensureItemHidden( sb );
128 }
129
130 return false;
131
132}
133
134KStatusBar * StatusBarExtension::statusBar() const
135{
136 if ( !m_statusBar ) {
137 TQWidget* w = static_cast<KParts::ReadOnlyPart*>(parent())->widget();
138 TDEMainWindow* mw = dynamic_cast<TDEMainWindow *>( w->topLevelWidget() );
139 if ( mw )
140 m_statusBar = mw->statusBar();
141 }
142 return m_statusBar;
143}
144
145void StatusBarExtension::setStatusBar( KStatusBar* status )
146{
147 m_statusBar = status;
148}
149
150void StatusBarExtension::addStatusBarItem( TQWidget * widget, int stretch, bool permanent )
151{
152 m_statusBarItems.append( StatusBarItem( widget, stretch, permanent ) );
153 TQValueListIterator<StatusBarItem> it = m_statusBarItems.fromLast();
154 KStatusBar * sb = statusBar();
155 Q_ASSERT(sb);
156 if (sb)
157 (*it).ensureItemShown( sb );
158}
159
160void StatusBarExtension::removeStatusBarItem( TQWidget * widget )
161{
162 KStatusBar * sb = statusBar();
163 TQValueListIterator<StatusBarItem> it = m_statusBarItems.begin();
164 for ( ; it != m_statusBarItems.end() ; ++it )
165 if ( (*it).widget() == widget )
166 {
167 if ( sb )
168 (*it).ensureItemHidden( sb );
169 m_statusBarItems.remove( it );
170 break;
171 }
172 if ( it == m_statusBarItems.end() )
173 kdWarning(1000) << "StatusBarExtension::removeStatusBarItem. Widget not found : " << widget << endl;
174}
175
176#include "statusbarextension.moc"
KParts::GUIActivateEvent
This event is sent to a Part when its GUI has been activated or deactivated.
Definition: event.h:55
KParts::ReadOnlyPart
Base class for any "viewer" part.
Definition: part.h:339
KParts::StatusBarExtension
An extension for KParts that allows more sophisticated statusbar handling.
Definition: statusbarextension.h:54
KParts::StatusBarExtension::addStatusBarItem
void addStatusBarItem(TQWidget *widget, int stretch, bool permanent)
This adds a widget to the statusbar for this part.
Definition: statusbarextension.cpp:150
KParts::StatusBarExtension::statusBar
KStatusBar * statusBar() const
Definition: statusbarextension.cpp:134
KParts::StatusBarExtension::setStatusBar
void setStatusBar(KStatusBar *status)
This allows the hosting application to set a particular KStatusBar for this part.
Definition: statusbarextension.cpp:145
KParts::StatusBarExtension::removeStatusBarItem
void removeStatusBarItem(TQWidget *widget)
Remove a widget from the statusbar for this part.
Definition: statusbarextension.cpp:160
KParts::StatusBarExtension::childObject
static StatusBarExtension * childObject(TQObject *obj)
Queries obj for a child object which inherits from this BrowserExtension class.
Definition: statusbarextension.cpp:89
KStatusBar
TDEMainWindow
TDEMainWindow::statusBar
KStatusBar * statusBar()
kdWarning
kdbgstream kdWarning(int area=0)
endl
kndbgstream & endl(kndbgstream &s)
TDEStdAccel::name
TQString name(StdAccel id)

tdeparts

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

tdeparts

Skip menu "tdeparts"
  • 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 tdeparts by doxygen 1.9.4
This website is maintained by Timothy Pearson.