-rw-r--r-- | libopie/otabwidget.cpp | 32 |
1 files changed, 32 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() |