23 #include <QtCore/QObject>
32 using namespace KParts;
38 class KParts::StatusBarItem {
41 : m_widget(0), m_visible(false)
43 StatusBarItem(
QWidget * widget,
int stretch,
bool permanent )
44 : m_widget(widget), m_stretch(stretch), m_permanent(permanent), m_visible(false)
47 QWidget * widget()
const {
return m_widget; }
51 if ( m_widget && !m_visible )
54 sb->addPermanentWidget( m_widget, m_stretch );
56 sb->addWidget( m_widget, m_stretch );
63 if ( m_widget && m_visible )
65 sb->removeWidget( m_widget );
71 QPointer<QWidget> m_widget;
77 class KParts::StatusBarExtensionPrivate
94 :
QObject(parent), d(new StatusBarExtensionPrivate(this))
96 parent->installEventFilter(
this);
102 for (
int i = d->m_statusBarItems.count () - 1; i >= 0 ; --i ) {
103 if ( d->m_statusBarItems[i].widget() ) {
105 d->m_statusBarItems[i].ensureItemHidden( sb );
107 d->m_statusBarItems[i].widget()->deleteLater();
116 return KGlobal::findDirectChild<KParts::StatusBarExtension*>(obj);
122 !::qobject_cast<KParts::ReadOnlyPart *>(watched) )
123 return QObject::eventFilter(watched, ev);
127 return QObject::eventFilter(watched, ev);
132 if ( d->m_activated )
135 for ( ; it != d->m_statusBarItems.end() ; ++it )
136 (*it).ensureItemShown( sb );
141 for ( ; it != d->m_statusBarItems.end() ; ++it )
142 (*it).ensureItemHidden( sb );
151 if ( !d->m_statusBar ) {
158 return d->m_statusBar;
163 d->m_statusBar = status;
168 d->m_statusBarItems.append( StatusBarItem( widget, stretch, permanent ) );
169 StatusBarItem& it = d->m_statusBarItems.last();
171 if (sb && d->m_activated)
172 it.ensureItemShown( sb );
179 for ( ; it != d->m_statusBarItems.end() ; ++it )
180 if ( (*it).widget() == widget )
183 (*it).ensureItemHidden( sb );
184 d->m_statusBarItems.erase( it );
188 kWarning(1000) <<
"StatusBarExtension::removeStatusBarItem. Widget not found : " << widget;
191 #include "statusbarextension.moc"