• 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 
33 using namespace KParts;
34 
36 // Helper Classes
38 
39 class 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 
78 StatusBarExtension::StatusBarExtension(KParts::ReadOnlyPart *parent, const char* name)
79  : TQObject(parent, name), m_statusBar(0), d(0)
80 {
81  parent->installEventFilter(this);
82 }
83 
84 StatusBarExtension::~StatusBarExtension()
85 {
86 }
87 
88 
89 StatusBarExtension *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 
105 bool 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 
134 KStatusBar * StatusBarExtension::statusBar() const
135 {
136  if ( !m_statusBar ) {
137  TQWidget* w = static_cast<KParts::ReadOnlyPart*>(parent())->widget();
138  TDEMainWindow* mw = tqt_dynamic_cast<TDEMainWindow *>( w->topLevelWidget() );
139  if ( mw )
140  m_statusBar = mw->statusBar();
141  }
142  return m_statusBar;
143 }
144 
145 void StatusBarExtension::setStatusBar( KStatusBar* status )
146 {
147  m_statusBar = status;
148 }
149 
150 void 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 
160 void 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::StatusBarExtension::childObject
static StatusBarExtension * childObject(TQObject *obj)
Queries obj for a child object which inherits from this BrowserExtension class.
Definition: statusbarextension.cpp:89
KParts::StatusBarExtension::statusBar
KStatusBar * statusBar() const
Definition: statusbarextension.cpp:134
KStatusBar
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
TDEMainWindow
kdWarning
kdbgstream kdWarning(int area=0)
KParts::GUIActivateEvent
This event is sent to a Part when its GUI has been activated or deactivated.
Definition: event.h:54
KParts::StatusBarExtension
An extension for KParts that allows more sophisticated statusbar handling.
Definition: statusbarextension.h:53
KParts::StatusBarExtension::removeStatusBarItem
void removeStatusBarItem(TQWidget *widget)
Remove a widget from the statusbar for this part.
Definition: statusbarextension.cpp:160
endl
kndbgstream & endl(kndbgstream &s)
KParts
Definition: browserextension.cpp:64
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::ReadOnlyPart
Base class for any "viewer" part.
Definition: part.h:338

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
  •     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 tdeparts by doxygen 1.8.8
This website is maintained by Timothy Pearson.