lib

kotabpalette.cc

00001 /*
00002  *  Copyright (c) 2005 Boudewijn Rempt <boud@valdyas.org>
00003  *
00004    This library is free software; you can redistribute it and/or
00005    modify it under the terms of the GNU Library General Public
00006    License version 2, as published by the Free Software Foundation.
00007 
00008    This library is distributed in the hope that it will be useful,
00009    but WITHOUT ANY WARRANTY; without even the implied warranty of
00010    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011    Library General Public License for more details.
00012 
00013    You should have received a copy of the GNU Library General Public License
00014    along with this library; see the file COPYING.LIB.  If not, write to
00015    the Free Software Foundation, Inc.,  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00016  */
00017 
00018 
00019 #include <qdockwindow.h>
00020 
00021 #include <ktabwidget.h>
00022 #include <kdebug.h>
00023 
00024 #include <KoView.h>
00025 
00026 #include <kopalette.h>
00027 #include <kotabpalette.h>
00028 #include "kopalettemanager.h"
00029 
00030 KoTabPalette::KoTabPalette(QWidget * parent, const char * name)
00031     : KoPalette(parent, name)
00032 {
00033     m_page = new KTabWidget(this);
00034     m_page->setTabShape(QTabWidget::Triangular);
00035     m_page->setFocusPolicy(QWidget::TabFocus);
00036     //m_page->setFont(m_font);
00037     m_page->setMargin(1);
00038     //m_page->setTabReorderingEnabled(true);
00039     setMainWidget(m_page);
00040     m_style = PALETTE_DOCKER;
00041 }
00042 
00043 KoTabPalette::~KoTabPalette()
00044 {
00045 }
00046 
00047 void KoTabPalette::plug(QWidget * w, const QString & /*name*/, int position)
00048 {
00049     if (!w) return;
00050     
00051     w -> unsetFont(); // Use the parent font
00052 
00053     m_page -> insertTab(w, w -> caption(), position);
00054     show();
00055 }
00056 
00057 void KoTabPalette::resetFont() 
00058 {
00059     KoPalette::resetFont();
00060     m_page->unsetFont();
00061 }
00062 
00063 void KoTabPalette::unplug(const QWidget * w)
00064 {
00065     m_page->removePage(const_cast<QWidget *>(w));
00066     if (m_page->count() == 0)
00067         hide();
00068 }
00069 
00070 void KoTabPalette::showPage(QWidget *w)
00071 {
00072     m_page->showPage(w);
00073     if (m_hiddenPages.find(w) == m_hiddenPages.end()) return;
00074 
00075     int i = *m_hiddenPages.find(w);
00076     m_page->insertTab(w, w->caption(), i);
00077     m_hiddenPages.erase(w);
00078     show();
00079 }
00080 
00081 void KoTabPalette::makeVisible(bool v)
00082 {
00083     //kdDebug() << "make visible called for " << name() << ", " << v << "\n";
00084     if (v && m_page->count() > 0)
00085         show();
00086     else
00087         hide();
00088 }
00089 
00090 int KoTabPalette::indexOf(QWidget *w)
00091 {
00092     if (m_hiddenPages.find(w) != m_hiddenPages.end()) {
00093         int i = m_page->indexOf(w);
00094         return -i;
00095     }
00096     else {
00097         return m_page->indexOf(w);
00098     }
00099 }
00100 
00101 bool KoTabPalette::isHidden(QWidget * w)
00102 {
00103     return (m_hiddenPages.find(w) != m_hiddenPages.end());
00104 }
00105 
00106 void KoTabPalette::hidePage( QWidget *w)
00107 {
00108     if (m_hiddenPages.find(w) != m_hiddenPages.end()) return;
00109     
00110     int i = m_page->indexOf(w);
00111     m_page->removePage(w);
00112     m_hiddenPages[w] = i;
00113     if (m_page->count() == 0) {
00114         hide();
00115     }
00116 }
00117 
00118 void KoTabPalette::togglePageHidden(QWidget *w)
00119 {
00120     if (m_hiddenPages.find(w) != m_hiddenPages.end()) {
00121         int i = *m_hiddenPages.find(w);
00122         m_page->insertTab(w, w->caption(), i);
00123         m_hiddenPages.erase(w);
00124         show();
00125     }
00126     else {
00127         int i = m_page->indexOf(w);
00128         m_page->removePage(w);
00129         m_hiddenPages[w] = i;
00130         if (m_page->count() == 0) {
00131             hide();
00132         }
00133     }
00134 }
00135 
00136 #include "kotabpalette.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys