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 
KDE Home | KDE Accessibility Home | Description of Access Keys