00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <qtimer.h>
00011
00012 #include <ktabbar.h>
00013 #include <kpopupmenu.h>
00014 #include "kmdidocumentviewtabwidget.h"
00015
00016 KMdiDocumentViewTabWidget::KMdiDocumentViewTabWidget( QWidget* parent, const char* name ) : KTabWidget( parent, name )
00017 {
00018 m_visibility = KMdi::ShowWhenMoreThanOneTab;
00019 tabBar() ->hide();
00020 setHoverCloseButton( true );
00021 connect( this, SIGNAL( closeRequest( QWidget* ) ), this, SLOT( closeTab( QWidget* ) ) );
00022 }
00023
00024 KMdiDocumentViewTabWidget::~KMdiDocumentViewTabWidget()
00025 {}
00026
00027 void KMdiDocumentViewTabWidget::closeTab( QWidget* w )
00028 {
00029 w->close();
00030 }
00031 void KMdiDocumentViewTabWidget::addTab ( QWidget * child, const QString & label )
00032 {
00033 KTabWidget::addTab( child, label );
00034 showPage( child );
00035 QTimer::singleShot(0, this, SLOT(maybeShow()));
00036 }
00037
00038 void KMdiDocumentViewTabWidget::addTab ( QWidget * child, const QIconSet & iconset, const QString & label )
00039 {
00040 KTabWidget::addTab( child, iconset, label );
00041 showPage( child );
00042 QTimer::singleShot(0, this, SLOT(maybeShow()));
00043 }
00044
00045 void KMdiDocumentViewTabWidget::addTab ( QWidget * child, QTab * tab )
00046 {
00047 KTabWidget::addTab( child, tab );
00048 showPage( child );
00049 QTimer::singleShot(0, this, SLOT(maybeShow()));
00050 }
00051
00052 void KMdiDocumentViewTabWidget::insertTab ( QWidget * child, const QString & label, int index )
00053 {
00054 KTabWidget::insertTab( child, label, index );
00055 showPage( child );
00056 QTimer::singleShot(0, this, SLOT(maybeShow()));
00057 tabBar() ->repaint();
00058 }
00059
00060 void KMdiDocumentViewTabWidget::insertTab ( QWidget * child, const QIconSet & iconset, const QString & label, int index )
00061 {
00062 KTabWidget::insertTab( child, iconset, label, index );
00063 showPage( child );
00064 QTimer::singleShot(0, this, SLOT(maybeShow()));
00065 tabBar() ->repaint();
00066 }
00067
00068 void KMdiDocumentViewTabWidget::insertTab ( QWidget * child, QTab * tab, int index )
00069 {
00070 KTabWidget::insertTab( child, tab, index );
00071 showPage( child );
00072 QTimer::singleShot(0, this, SLOT(maybeShow()));
00073 tabBar() ->repaint();
00074 }
00075
00076 void KMdiDocumentViewTabWidget::removePage ( QWidget * w )
00077 {
00078 KTabWidget::removePage( w );
00079 QTimer::singleShot(0, this, SLOT(maybeShow()));
00080 }
00081
00082 void KMdiDocumentViewTabWidget::updateIconInView( QWidget *w, QPixmap icon )
00083 {
00084 changeTab( w, icon, tabLabel( w ) );
00085 }
00086
00087 void KMdiDocumentViewTabWidget::updateCaptionInView( QWidget *w, const QString &caption )
00088 {
00089 changeTab( w, caption );
00090 }
00091
00092 void KMdiDocumentViewTabWidget::maybeShow()
00093 {
00094 switch (m_visibility)
00095 {
00096 case KMdi::AlwaysShowTabs:
00097 tabBar() ->show();
00098 if ( cornerWidget() )
00099 {
00100 if ( count() == 0 )
00101 cornerWidget() ->hide();
00102 else
00103 cornerWidget() ->show();
00104 }
00105 break;
00106
00107 case KMdi::ShowWhenMoreThanOneTab:
00108 if ( count() < 2 )
00109 tabBar() ->hide();
00110 else tabBar() ->show();
00111 if ( cornerWidget() )
00112 {
00113 if ( count() < 2 )
00114 cornerWidget() ->hide();
00115 else
00116 cornerWidget() ->show();
00117 }
00118 break;
00119 case KMdi::NeverShowTabs:
00120 tabBar() ->hide();
00121 break;
00122 }
00123 }
00124
00125 void KMdiDocumentViewTabWidget::setTabWidgetVisibility( KMdi::TabWidgetVisibility visibility )
00126 {
00127 m_visibility = visibility;
00128 maybeShow();
00129 }
00130
00131 void KMdiDocumentViewTabWidget::moveTab( int from, int to )
00132 {
00133 emit initiateTabMove( from, to );
00134 KTabWidget::moveTab( from, to );
00135 }
00136
00137 KMdi::TabWidgetVisibility KMdiDocumentViewTabWidget::tabWidgetVisibility( )
00138 {
00139 return m_visibility;
00140 }
00141
00142
00143 #ifndef NO_INCLUDE_MOCFILES
00144 #include "kmdidocumentviewtabwidget.moc"
00145 #endif
00146
00147
00148