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
92 :
QObject(parent), d(new StatusBarExtensionPrivate(this))
94 parent->installEventFilter(
this);
100 for (
int i = d->m_statusBarItems.count () - 1; i >= 0 ; --i ) {
101 if ( d->m_statusBarItems[i].widget() ) {
103 d->m_statusBarItems[i].ensureItemHidden( sb );
105 d->m_statusBarItems[i].widget()->deleteLater();
114 return KGlobal::findDirectChild<KParts::StatusBarExtension*>(obj);
120 !::qobject_cast<KParts::ReadOnlyPart *>(watched) )
121 return QObject::eventFilter(watched, ev);
125 return QObject::eventFilter(watched, ev);
132 for ( ; it != d->m_statusBarItems.end() ; ++it )
133 (*it).ensureItemShown( sb );
138 for ( ; it != d->m_statusBarItems.end() ; ++it )
139 (*it).ensureItemHidden( sb );
148 if ( !d->m_statusBar ) {
155 return d->m_statusBar;
160 d->m_statusBar = status;
165 d->m_statusBarItems.append( StatusBarItem( widget, stretch, permanent ) );
166 StatusBarItem& it = d->m_statusBarItems.last();
169 it.ensureItemShown( sb );
176 for ( ; it != d->m_statusBarItems.end() ; ++it )
177 if ( (*it).widget() == widget )
180 (*it).ensureItemHidden( sb );
181 d->m_statusBarItems.erase( it );
185 kWarning(1000) <<
"StatusBarExtension::removeStatusBarItem. Widget not found : " << widget;
188 #include "statusbarextension.moc"