-rw-r--r-- | libopie/otabwidget.cpp | 32 | ||||
-rw-r--r-- | libopie/otabwidget.h | 17 |
2 files changed, 49 insertions, 0 deletions
diff --git a/libopie/otabwidget.cpp b/libopie/otabwidget.cpp index d5b963b..1f3fbb0 100644 --- a/libopie/otabwidget.cpp +++ b/libopie/otabwidget.cpp @@ -94,6 +94,7 @@ OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPositi tabBar->setShape( QTabBar::RoundedBelow ); } + tabs.setAutoDelete( TRUE ); currentTab= 0x0; } @@ -137,6 +138,35 @@ void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &lab selectTab( tabinfo ); } +void OTabWidget::removePage( QWidget *childwidget ) +{ + if ( childwidget ) + { + OTabInfo *tab = tabs.first(); + while ( tab && tab->control() != childwidget ) + { + tab = tabs.next(); + } + if ( tab && tab->control() == childwidget ) + { + tabBar->setTabEnabled( tab->id(), FALSE ); + tabBar->removeTab( tabBar->tab( tab->id() ) ); + int i = 0; + while ( i < tabList->count() && tabList->text( i ) != tab->label() ) + { + i++; + } + if ( tabList->text( i ) == tab->label() ) + { + tabList->removeItem( i ); + } + widgetStack->removeWidget( childwidget ); + tabs.remove( tab ); + setUpLayout(); + } + } +} + void OTabWidget::setCurrentTab( QWidget *childwidget ) { OTabInfo *newtab = tabs.first(); @@ -230,6 +260,8 @@ void OTabWidget::selectTab( OTabInfo *tab ) tabBar->update(); widgetStack->raiseWidget( tab->control() ); + + emit currentChanged( tab->control() ); } void OTabWidget::setUpLayout() diff --git a/libopie/otabwidget.h b/libopie/otabwidget.h index bacda07..d61fe9e 100644 --- a/libopie/otabwidget.h +++ b/libopie/otabwidget.h @@ -118,6 +118,14 @@ public: void addTab( QWidget *, const QString &, const QString & ); /** + * @fn removePage( QWidget *widget ) + * @brief Remove widget from control. Does not delete widget. + * + * @param widget Widget control to be removed. + */ + void removePage( QWidget * ); + +/** * @fn tabStyle() * @brief Returns current widget selection control style. */ @@ -211,6 +219,15 @@ private: */ void setUpLayout(); +signals: +/** + * @fn currentChanegd( QWidget *widget ) + * @brief This signal is emitted whenever the widget has changed. + * + * @param widget Pointer to new current widget. + */ + void currentChanged( QWidget * ); + private slots: /** |