-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 @@ -96,2 +96,3 @@ OTabWidget::OTabWidget( QWidget *parent, const char *name, TabStyle s, TabPositi + tabs.setAutoDelete( TRUE ); currentTab= 0x0; @@ -139,2 +140,31 @@ void OTabWidget::addTab( QWidget *child, const QString &icon, const QString &lab +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 ) @@ -232,2 +262,4 @@ void OTabWidget::selectTab( OTabInfo *tab ) widgetStack->raiseWidget( tab->control() ); + + emit currentChanged( tab->control() ); } diff --git a/libopie/otabwidget.h b/libopie/otabwidget.h index bacda07..d61fe9e 100644 --- a/libopie/otabwidget.h +++ b/libopie/otabwidget.h @@ -120,2 +120,10 @@ public: /** + * @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() @@ -213,2 +221,11 @@ private: +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: |