kmdidocumentviewtabwidget.cpp
00001 //---------------------------------------------------------------------------- 00002 // 00003 // This program is free software; you can redistribute it and/or modify 00004 // it under the terms of the GNU Library General Public License as 00005 // published by the Free Software Foundation; either version 2 of the 00006 // License, or (at your option) any later version. 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 // kate: space-indent off; tab-width 4; replace-tabs off; indent-mode csands; 00148