LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/include/svtools - tabbar.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 6 14 42.9 %
Date: 2013-07-09 Functions: 5 13 38.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef _TABBAR_HXX
      21             : #define _TABBAR_HXX
      22             : 
      23             : #include "svtools/svtdllapi.h"
      24             : #include <tools/link.hxx>
      25             : #include <vcl/window.hxx>
      26             : #include <vector>
      27             : 
      28             : class MouseEvent;
      29             : class TrackingEvent;
      30             : class DataChangedEvent;
      31             : class ImplTabButton;
      32             : class ImplTabSizer;
      33             : class TabBarEdit;
      34             : 
      35             : struct ImplTabBarItem;
      36             : typedef ::std::vector< ImplTabBarItem* > ImplTabBarList;
      37             : 
      38             : // -----------------
      39             : // - Dokumentation -
      40             : // -----------------
      41             : 
      42             : /*
      43             : 
      44             : Erlaubte StyleBits
      45             : ------------------
      46             : 
      47             : WB_SCROLL       - Die Tabs koennen ueber ein Extra-Feld gescrollt werden
      48             : WB_MINSCROLL    - Die Tabs koennen ueber 2 zusaetzliche Buttons gescrollt werden
      49             : WB_RANGESELECT  - Zusammenhaengende Bereiche koennen selektiert werden
      50             : WB_MULTISELECT  - Einzelne Tabs koennen selektiert werden
      51             : WB_BORDER       - Oben und unten wird ein Strich gezeichnet
      52             : WB_TOPBORDER    - Oben wird ein Border gezeichnet
      53             : WB_3DTAB        - Die Tabs und der Border werden in 3D gezeichnet
      54             : WB_DRAG         - Vom TabBar wird ein StartDrag-Handler gerufen, wenn
      55             :                   Drag and Drop gestartet werden soll. Es wird ausserdem
      56             :                   im TabBar mit EnableDrop() Drag and Drop eingeschaltet.
      57             : WB_SIZEABLE     - Vom TabBar wird ein Split-Handler gerufen, wenn der Anwender
      58             :                   den TabBar in der Breite aendern will
      59             : WB_STDTABBAR    - WB_BORDER
      60             : 
      61             : Wenn man den TabBar zum Beispiel als Property-Bar benutzen moechte, sollten
      62             : die WinBits WB_TOPBORDER und WB_3DTAB anstatt WB_BORDER gesetzt werden.
      63             : 
      64             : 
      65             : Erlaubte PageBits
      66             : -----------------
      67             : 
      68             : TPB_SPECIAL     - Andere Darstellung des TabTextes, zum Beispiel fuer
      69             :                   Szenario-Seiten.
      70             : 
      71             : 
      72             : Handler
      73             : -------
      74             : 
      75             : Select          - Wird gerufen, wenn eine Tab selektiert oder
      76             :                   deselektiert wird
      77             : DoubleClick     - Wird gerufen, wenn ein DoubleClick im TabBar ausgeloest
      78             :                   wurde. Innerhalb des Handlers liefert GetCurPageId() die
      79             :                   angeklickte Tab zurueck oder 0, wenn keine Tab angeklickt
      80             :                   wurde
      81             : ActivatePage    - Wird gerufen, wenn eine andere Seite aktiviert wird.
      82             :                   GetCurPageId() gibt die aktivierte Seite zurueck.
      83             : DeactivatePage  - Wird gerufen, wenn eine Seite deaktiviert wird. Wenn
      84             :                   eine andere Seite aktiviert werden darf, muss sal_True
      85             :                   zurueckgegeben werden, wenn eine andere Seite von
      86             :                   der Aktivierung ausgeschlossen werden soll, muss
      87             :                   sal_False zurueckgegeben werden. GetCurPageId() gibt die
      88             :                   zu deaktivierende Seite zurueck.
      89             : 
      90             : 
      91             : 
      92             : Drag and Drop
      93             : -------------
      94             : 
      95             : Fuer Drag and Drop muss das WinBit WB_DRAG gesetzt werden. Ausserdem
      96             : muss der Command-, QueryDrop-Handler und der Drop-Handler ueberlagert
      97             : werden. Dabei muss in den Handlern folgendes implementiert werden:
      98             : 
      99             : Command         - Wenn in diesem Handler das Dragging gestartet werden
     100             :                   soll, muss StartDrag() gerufen werden. Diese Methode
     101             :                   selektiert dann den entsprechenden Eintrag oder gibt
     102             :                   sal_False zurueck, wenn das Dragging nicht durchgefuhert
     103             :                   werden kann.
     104             : 
     105             : QueryDrop       - Dieser Handler wird von StarView immer dann gerufen, wenn
     106             :                   bei einem Drag-Vorgang die Maus ueber das Fenster gezogen
     107             :                   wird (siehe dazu auch SV-Doku). In diesem Handler muss
     108             :                   festgestellt werden, ob ein Drop moeglich ist. Die
     109             :                   Drop-Position kann im TabBar mit ShowDropPos() angezeigt
     110             :                   werden. Beim Aufruf muss die Position vom Event uebergeben
     111             :                   werden. Wenn sich die Position am linken oder rechten
     112             :                   Rand befindet, wird automatisch im TabBar gescrollt.
     113             :                   Diese Methode gibt auch die entsprechende Drop-Position
     114             :                   zurueck, die auch fuer ein Drop gebraucht wird. Wenn das
     115             :                   Fenster beim Drag verlassen wird, kann mit HideDropPos()
     116             :                   die DropPosition wieder weggenommen werden. Es ist dadurch
     117             :                   auch moeglich, ein von ausserhalb des TabBars ausgeloestes
     118             :                   Drag zu verarbeiten.
     119             : 
     120             : Drop            - Im Drop-Handler muessen dann die Pages verschoben werden,
     121             :                   oder die neuen Pages eingefuegt werden. Die entsprechende
     122             :                   Drop-Postion kann mit ShowDropPos() ermittelt werden.
     123             : 
     124             : Folgende Methoden werden fuer Drag and Drop gebraucht und muessen von
     125             : den Handlern gerufen werden:
     126             : 
     127             : StartDrag       - Muss aus dem Commnad-Handler gerufen werden. Als Parameter
     128             :                   muss der CommandEvent uebergeben werden und eine Referenz
     129             :                   auf eine Region. Diese Region muss dann bei ExecuteDrag()
     130             :                   uebergeben werden, wenn der Rueckgabewert sagt, das
     131             :                   ExecuteDrag durchgefuehrt werden soll. Falls der Eintrag
     132             :                   nicht selektiert ist, wird er vorher als aktueller
     133             :                   Eintrag gesetzt. Es ist daher darauf zu achten, das aus
     134             :                   dieser Methode heraus der Select-Handler gerufen werden
     135             :                   kann.
     136             : 
     137             : ShowDropPos     - Diese Methode muss vom QueryDrop-Handler gerufen werden,
     138             :                   damit der TabBar anzeigt, wo die Tabs eingefuegt werden.
     139             :                   Diese Methode kann auch im Drop-Handler benutzt werden,
     140             :                   um die Position zu ermitteln wo die Tabs eingefuegt werden
     141             :                   sollen. In der Methode muss die Position vom Event
     142             :                   uebergeben werden. Diese Methode gibt die Position zurueck,
     143             :                   wo die Tabs eingefuegt werden sollen.
     144             : 
     145             : HideDropPos     - Diese Methode nimmt die vorher mit ShowDropPos() angezeigte
     146             :                   DropPosition wieder zurueck. Diese Methode sollte dann
     147             :                   gerufen werden, wenn bei QueryDrop() das Fenster verlassen
     148             :                   wird oder der Dragvorgang beendet wurde.
     149             : 
     150             : Folgende Methoden koennen eingesetzt werden, wenn bei D&D die Seiten
     151             : umgeschaltet werden sollen:
     152             : 
     153             : SwitchPage      - Diese Methode muss vom QueryDrop-Handler gerufen werden,
     154             :                   wenn die Seite ueber der sich der Mousepointer befindet,
     155             :                   umgeschaltet werden soll. Diese Methode sollte jedesmal
     156             :                   gerufen werden, wenn der QueryDrop-Handler gerufen wird.
     157             :                   Das umschalten der Seite passiert zeitverzoegert (500 ms)
     158             :                   und wird automatisch von dieser Methode verwaltet.
     159             :                   In der Methode muss die Position vom Event uebergeben
     160             :                   werden. Diese Methode gibt sal_True zurueck, wenn die Page
     161             :                   umgeschaltet wurde.
     162             : 
     163             : EndSwitchPage   - Diese Methode setzt die Daten fuer das umschalten der
     164             :                   Seiten zurueck. Diese Methode sollte dann gerufen werden,
     165             :                   wenn bei QueryDrop() das Fenster verlassen wird oder
     166             :                   der Dragvorgang beendet wurde.
     167             : 
     168             : IsInSwitching   - Mit dieser Methode kann im ActivatePage()/DeactivatePage()
     169             :                   abgefragt werden, ob dies durch SwitchPage() veranlasst
     170             :                   wurde. So kann dann beispielsweise in DeactivatePage()
     171             :                   das Umschalten ohne eine Fehlerbox verhindert werden.
     172             : 
     173             : 
     174             : Fenster-Resize
     175             : --------------
     176             : 
     177             : Wenn das Fenster vom Anwender in der Breite geaendert werden kann, dann
     178             : muss das WinBit WB_SIZEABLE gesetzt werden. In diesem Fall muss noch
     179             : folgender Handler ueberlagert werden:
     180             : 
     181             : Split           - Wenn dieser Handler gerufen wird, sollte das Fenster
     182             :                   auf die Breite angepasst werden, die von GetSplitSize()
     183             :                   zurueckgegeben wird. Dabei wird keine minimale und
     184             :                   maximale Breite beruecksichtig. Eine minimale Breite
     185             :                   kann mit GetMinSize() abgefragt werden und die maximale
     186             :                   Breite muss von der Anwendung selber berechnet werden.
     187             :                   Da nur Online-Resize unterstuetzt wird, muss das Fenster
     188             :                   innerhalb dieses Handlers in der Breite geaendert
     189             :                   werden und eventuell abhaengige Fenster ebenfalls. Fuer
     190             :                   diesen Handler kann auch mit SetSplitHdl() ein
     191             :                   Link gesetzt werden.
     192             : 
     193             : Folgende Methoden liefern beim Splitten weitere Informationen:
     194             : 
     195             : GetSplitSize()  - Liefert die Breite des TabBars zurueck, auf die der
     196             :                   Anwender das Fenster resizen will. Dabei wird keine
     197             :                   minimale oder maximale Breite beruecksichtigt. Es wird
     198             :                   jedoch nie eine Breite < 5 zurueckgeliefert. Diese Methode
     199             :                   liefert nur solange richtige Werte, wie Splitten aktiv
     200             :                   ist.
     201             : 
     202             : GetMinSize()    - Mit dieser Methode kann eine minimale Fensterbreite
     203             :                   abgefragt werden, so das min. etwas eines Tabs sichtbar
     204             :                   ist. Jedoch kann der TabBar immer noch schmaler gesetzt
     205             :                   werden, als die Breite, die diese Methode zurueckliefert.
     206             :                   Diese Methode kann auch aufgerufen werden, wenn kein
     207             :                   Splitten aktiv ist.
     208             : 
     209             : 
     210             : Edit-Modus
     211             : ----------
     212             : 
     213             : Der Tabbar bietet auch Moeglichkeiten, das der Anwender in den Tabreitern
     214             : die Namen aendern kann.
     215             : 
     216             : EnableEditMode  - Damit kann eingestellt werden, das bei Alt+LeftClick
     217             :                   StartEditMode() automatisch vom TabBar gerufen wird.
     218             :                   Im StartRenaming()-Handler kann dann das Umbenennen
     219             :                   noch abgelehnt werden.
     220             : StartEditMode   - Mit dieser Methode wird der EditModus auf einem
     221             :                   Tab gestartet. sal_False wird zurueckgegeben, wenn
     222             :                   der Editmodus schon aktiv ist, mit StartRenaming()
     223             :                   der Modus abgelehnt wurde oder kein Platz zum
     224             :                   Editieren vorhanden ist.
     225             : EndEditMode     - Mit dieser Methode wird der EditModus beendet.
     226             : SetEditText     - Mit dieser Methode kann der Text im AllowRenaming()-
     227             :                   Handler noch durch einen anderen Text ersetzt werden.
     228             : GetEditText     - Mit dieser Methode kann im AllowRenaming()-Handler
     229             :                   der Text abgefragt werden, den der Anwender eingegeben
     230             :                   hat.
     231             : IsInEditMode    - Mit dieser Methode kann abgefragt werden, ob der
     232             :                   Editmodus aktiv ist.
     233             : IsEditModeCanceled      - Mit dieser Methode kann im EndRenaming()-
     234             :                           Handler abgefragt werden, ob die Umbenenung
     235             :                           abgebrochen wurde.
     236             : GetEditPageId   - Mit dieser Methode wird in den Renaming-Handlern
     237             :                   abgefragt, welcher Tab umbenannt wird/wurde.
     238             : 
     239             : StartRenaming() - Dieser Handler wird gerufen, wenn ueber StartEditMode()
     240             :                   der Editmodus gestartet wurde. Mit GetEditPageId()
     241             :                   kann abgefragt werden, welcher Tab umbenannt werden
     242             :                   soll. sal_False sollte zurueckgegeben werden, wenn
     243             :                   der Editmodus nicht gestartet werden soll.
     244             : AllowRenaming() - Dieser Handler wird gerufen, wenn der Editmodus
     245             :                   beendet wird (nicht bei Cancel). In diesem Handler
     246             :                   kann dann getestet werden, ob der Text OK ist.
     247             :                   Mit GetEditPageId() kann abgefragt werden, welcher Tab
     248             :                   umbenannt wurde.
     249             :                   Es sollte einer der folgenden Werte zurueckgegeben
     250             :                   werden:
     251             :                   TAB_RENAMING_YES
     252             :                   Der Tab wird umbenannt.
     253             :                   TAB_RENAMING_NO
     254             :                   Der Tab wird nicht umbenannt, der Editmodus bleibt
     255             :                   jedoch aktiv, so das der Anwender den Namen
     256             :                   entsprechent anpassen kann.
     257             :                   TAB_RENAMING_CANCEL
     258             :                   Der Editmodus wird abgebrochen und der alte
     259             :                   Text wieder hergestellt.
     260             : EndRenaming()   - Dieser Handler wird gerufen, wenn der Editmodus
     261             :                   beendet wurde. Mit GetEditPageId() kann abgefragt
     262             :                   werden, welcher Tab umbenannt wurde. Mit
     263             :                   IsEditModeCanceled() kann abgefragt werden, ob der
     264             :                   Modus abgebrochen wurde und der Name dadurch nicht
     265             :                   geaendert wurde.
     266             : 
     267             : 
     268             : Maximale Pagebreite
     269             : -------------------
     270             : 
     271             : Die Pagebreite der Tabs kann begrenzt werden, damit ein einfacheres
     272             : Navigieren ueber diese moeglich ist. Wenn der Text dann nicht komplett
     273             : angezeigt werden kann, wird er mit ... abgekuerzt und in der Tip-
     274             : oder der aktiven Hilfe (wenn kein Hilfetext gesetzt ist) wird dann der
     275             : ganze Text angezeigt. Mit EnableAutoMaxPageWidth() kann eingestellt
     276             : werden, ob die maximale Pagebreite sich nach der gerade sichtbaren
     277             : Breite richten soll (ist der default). Ansonsten kann auch die
     278             : maximale Pagebreite mit SetMaxPageWidth() (in Pixeln) gesetzt werden
     279             : (die AutoMaxPageWidth wird dann ignoriert).
     280             : 
     281             : 
     282             : KontextMenu
     283             : -----------
     284             : 
     285             : Wenn ein kontextsensitives PopupMenu anzeigt werden soll, muss der
     286             : Command-Handler ueberlagert werden. Mit GetPageId() und bei
     287             : Uebergabe der Mausposition kann ermittelt werden, ob der Mausclick
     288             : ueber einem bzw. ueber welchem Item durchgefuehrt wurde.
     289             : */
     290             : 
     291             : // -----------
     292             : // - WinBits -
     293             : // -----------
     294             : 
     295             : #define WB_RANGESELECT      ((WinBits)0x00200000)
     296             : #define WB_MULTISELECT      ((WinBits)0x00400000)
     297             : #define WB_TOPBORDER        ((WinBits)0x04000000)
     298             : #define WB_3DTAB            ((WinBits)0x08000000)
     299             : #define WB_MINSCROLL        ((WinBits)0x20000000)
     300             : #define WB_INSERTTAB        ((WinBits)0x40000000)
     301             : #define WB_STDTABBAR        WB_BORDER
     302             : 
     303             : // ------------------
     304             : // - TabBarPageBits -
     305             : // ------------------
     306             : 
     307             : typedef sal_uInt16 TabBarPageBits;
     308             : 
     309             : // -------------------------
     310             : // - Bits fuer TabBarPages -
     311             : // -------------------------
     312             : 
     313             : #define TPB_SPECIAL         ((TabBarPageBits)0x0001)
     314             : 
     315             : // ----------------
     316             : // - TabBar-Types -
     317             : // ----------------
     318             : 
     319             : #define TABBAR_RENAMING_YES    ((long)sal_True)
     320             : #define TABBAR_RENAMING_NO     ((long)sal_False)
     321             : #define TABBAR_RENAMING_CANCEL ((long)2)
     322             : 
     323             : // ----------
     324             : // - TabBar -
     325             : // ----------
     326             : struct TabBar_Impl;
     327             : struct ImplTabBarItem;
     328             : 
     329             : class SVT_DLLPUBLIC TabBar : public Window
     330             : {
     331             :     friend class    ImplTabButton;
     332             :     friend class    ImplTabSizer;
     333             : 
     334             : private:
     335             :     ImplTabBarList* mpItemList;
     336             :     ImplTabButton*  mpFirstBtn;
     337             :     ImplTabButton*  mpPrevBtn;
     338             :     ImplTabButton*  mpNextBtn;
     339             :     ImplTabButton*  mpLastBtn;
     340             :     TabBar_Impl*    mpImpl;
     341             :     TabBarEdit*     mpEdit;
     342             :     OUString        maEditText;
     343             :     Color           maSelColor;
     344             :     Color           maSelTextColor;
     345             :     Size            maWinSize;
     346             :     long            mnMaxPageWidth;
     347             :     long            mnCurMaxWidth;
     348             :     long            mnOffX;
     349             :     long            mnOffY;
     350             :     long            mnLastOffX;
     351             :     long            mnSplitSize;
     352             :     sal_uLong           mnSwitchTime;
     353             :     WinBits         mnWinStyle;
     354             :     sal_uInt16          mnCurPageId;
     355             :     sal_uInt16          mnFirstPos;
     356             :     sal_uInt16          mnDropPos;
     357             :     sal_uInt16          mnSwitchId;
     358             :     sal_uInt16          mnEditId;
     359             :     sal_Bool            mbFormat;
     360             :     sal_Bool            mbFirstFormat;
     361             :     sal_Bool            mbSizeFormat;
     362             :     sal_Bool            mbAutoMaxWidth;
     363             :     sal_Bool            mbInSwitching;
     364             :     sal_Bool            mbAutoEditMode;
     365             :     sal_Bool            mbEditCanceled;
     366             :     sal_Bool            mbDropPos;
     367             :     sal_Bool            mbInSelect;
     368             :     sal_Bool            mbSelColor;
     369             :     sal_Bool            mbSelTextColor;
     370             :     bool            mbMirrored;
     371             :     bool            mbHasInsertTab; // if true, the tab bar has an extra tab at the end.
     372             :     Link            maSelectHdl;
     373             :     Link            maDoubleClickHdl;
     374             :     Link            maSplitHdl;
     375             :     Link            maActivatePageHdl;
     376             :     Link            maDeactivatePageHdl;
     377             :     Link            maStartRenamingHdl;
     378             :     Link            maAllowRenamingHdl;
     379             :     Link            maEndRenamingHdl;
     380             :     size_t          maCurrentItemList;
     381             : 
     382             :     using Window::ImplInit;
     383             :     SVT_DLLPRIVATE void            ImplInit( WinBits nWinStyle );
     384             :     SVT_DLLPRIVATE void            ImplInitSettings( sal_Bool bFont, sal_Bool bBackground );
     385             :     SVT_DLLPRIVATE void            ImplGetColors( Color& rFaceColor, Color& rFaceTextColor,
     386             :                                    Color& rSelectColor, Color& rSelectTextColor );
     387             :     SVT_DLLPRIVATE void            ImplShowPage( sal_uInt16 nPos );
     388             :     SVT_DLLPRIVATE sal_Bool            ImplCalcWidth();
     389             :     SVT_DLLPRIVATE void            ImplFormat();
     390             :     SVT_DLLPRIVATE sal_uInt16          ImplGetLastFirstPos();
     391             :     SVT_DLLPRIVATE void            ImplInitControls();
     392             :     SVT_DLLPRIVATE void            ImplEnableControls();
     393             :     SVT_DLLPRIVATE void         ImplSelect();
     394             :     SVT_DLLPRIVATE void         ImplActivatePage();
     395             :     SVT_DLLPRIVATE long         ImplDeactivatePage();
     396             :     SVT_DLLPRIVATE void            ImplPrePaint();
     397             :     SVT_DLLPRIVATE ImplTabBarItem* ImplGetLastTabBarItem( sal_uInt16 nItemCount );
     398             :     SVT_DLLPRIVATE Rectangle       ImplGetInsertTabRect(ImplTabBarItem* pItem) const;
     399             :                     DECL_DLLPRIVATE_LINK( ImplClickHdl, ImplTabButton* );
     400             : 
     401             :     ImplTabBarItem* seek( size_t i );
     402             :     ImplTabBarItem* prev();
     403             :     ImplTabBarItem* next();
     404             : 
     405             : public:
     406             :     static const sal_uInt16 APPEND;
     407             :     static const sal_uInt16 PAGE_NOT_FOUND;
     408             :     static const sal_uInt16 INSERT_TAB_POS;
     409             : 
     410             :                     TabBar( Window* pParent, WinBits nWinStyle = WB_STDTABBAR );
     411             :     virtual         ~TabBar();
     412             : 
     413             :     virtual void    MouseMove( const MouseEvent& rMEvt );
     414             :     virtual void    MouseButtonDown( const MouseEvent& rMEvt );
     415             :     virtual void    MouseButtonUp( const MouseEvent& rMEvt );
     416             :     virtual void    Paint( const Rectangle& rRect );
     417             :     virtual void    Resize();
     418             :     virtual void    RequestHelp( const HelpEvent& rHEvt );
     419             :     virtual void    StateChanged( StateChangedType nStateChange );
     420             :     virtual void    DataChanged( const DataChangedEvent& rDCEvt );
     421             : 
     422             :     virtual void    Select();
     423             :     virtual void    DoubleClick();
     424             :     virtual void    Split();
     425             :     virtual void    ActivatePage();
     426             :     virtual long    DeactivatePage();
     427             :     virtual long    StartRenaming();
     428             :     virtual long    AllowRenaming();
     429             :     virtual void    EndRenaming();
     430             :     virtual void    Mirror();
     431             : 
     432             :     void            InsertPage( sal_uInt16 nPageId, const OUString& rText,
     433             :                                 TabBarPageBits nBits = 0,
     434             :                                 sal_uInt16 nPos = TabBar::APPEND );
     435             :     void            RemovePage( sal_uInt16 nPageId );
     436             :     void            MovePage( sal_uInt16 nPageId, sal_uInt16 nNewPos );
     437             : 
     438             :     Color           GetTabBgColor( sal_uInt16 nPageId ) const;
     439             :     void            SetTabBgColor( sal_uInt16 nPageId, const Color& aTabBgColor );
     440             :     sal_Bool        IsDefaultTabBgColor( sal_uInt16 nPageId );
     441             : 
     442             :     void            Clear();
     443             : 
     444             :     sal_Bool            IsPageEnabled( sal_uInt16 nPageId ) const;
     445             : 
     446             :     void            SetPageBits( sal_uInt16 nPageId, TabBarPageBits nBits = 0 );
     447             :     TabBarPageBits  GetPageBits( sal_uInt16 nPageId ) const;
     448             : 
     449             :     sal_uInt16          GetPageCount() const;
     450             :     sal_uInt16          GetPageId( sal_uInt16 nPos ) const;
     451             :     sal_uInt16          GetPagePos( sal_uInt16 nPageId ) const;
     452             :     sal_uInt16          GetPageId( const Point& rPos, bool bCheckInsTab = false ) const;
     453             :     Rectangle       GetPageRect( sal_uInt16 nPageId ) const;
     454             :     // returns the rectangle in which page tabs are drawn
     455             :     Rectangle       GetPageArea() const;
     456             : 
     457             :     void            SetCurPageId( sal_uInt16 nPageId );
     458         987 :     sal_uInt16          GetCurPageId() const { return mnCurPageId; }
     459             : 
     460             :     void            SetFirstPageId( sal_uInt16 nPageId );
     461             :     sal_uInt16          GetFirstPageId() const { return GetPageId( mnFirstPos ); }
     462             :     void            MakeVisible( sal_uInt16 nPageId );
     463             : 
     464             :     void            SelectPage( sal_uInt16 nPageId, sal_Bool bSelect = sal_True );
     465             :     sal_uInt16          GetSelectPageCount() const;
     466             :     sal_Bool            IsPageSelected( sal_uInt16 nPageId ) const;
     467             : 
     468             :     void            EnableAutoMaxPageWidth( sal_Bool bEnable = sal_True ) { mbAutoMaxWidth = bEnable; }
     469             :     sal_Bool            IsAutoMaxPageWidthEnabled() const { return mbAutoMaxWidth; }
     470             :     void            SetMaxPageWidth( long nMaxWidth );
     471             :     long            GetMaxPageWidth() const { return mnMaxPageWidth; }
     472             :     void            ResetMaxPageWidth() { SetMaxPageWidth( 0 ); }
     473             :     sal_Bool            IsMaxPageWidth() const { return mnMaxPageWidth != 0; }
     474             : 
     475         320 :     void            EnableEditMode( sal_Bool bEnable = sal_True ) { mbAutoEditMode = bEnable; }
     476             :     sal_Bool            IsEditModeEnabled() const { return mbAutoEditMode; }
     477             :     sal_Bool            StartEditMode( sal_uInt16 nPageId );
     478             :     void            EndEditMode( sal_Bool bCancel = sal_False );
     479           0 :     void            SetEditText( const OUString& rText ) { maEditText = rText; }
     480           0 :     const OUString& GetEditText() const { return maEditText; }
     481           0 :     sal_Bool            IsInEditMode() const { return (mpEdit != NULL); }
     482           0 :     sal_Bool            IsEditModeCanceled() const { return mbEditCanceled; }
     483           0 :     sal_uInt16          GetEditPageId() const { return mnEditId; }
     484             : 
     485             :     /** Mirrors the entire control including position of buttons and splitter.
     486             :         Mirroring is done relative to the current direction of the GUI.
     487             :         @param bMirrored  sal_True = the control will draw itself RTL in LTR GUI,
     488             :             and vice versa; sal_False = the control behaves according to the
     489             :             current direction of the GUI. */
     490             :     void            SetMirrored(bool bMirrored = true);
     491             :     /** Returns sal_True, if the control is set to mirrored mode (see SetMirrored()). */
     492           0 :     bool            IsMirrored() const { return mbMirrored; }
     493             : 
     494             :     /** Sets the control to LTR or RTL mode regardless of the GUI direction.
     495             :         @param bRTL  sal_False = the control will draw from left to right;
     496             :             sal_True = the control will draw from right to left. */
     497             :     void            SetEffectiveRTL( bool bRTL );
     498             :     /** Returns true, if the control draws from right to left (see SetEffectiveRTL()). */
     499             :     bool            IsEffectiveRTL() const;
     500             : 
     501             :     sal_Bool            StartDrag( const CommandEvent& rCEvt, Region& rRegion );
     502             :     sal_uInt16          ShowDropPos( const Point& rPos );
     503             :     void            HideDropPos();
     504             :     sal_Bool            SwitchPage( const Point& rPos );
     505             :     void            EndSwitchPage();
     506             :     sal_Bool            IsInSwitching() { return mbInSwitching; }
     507             : 
     508             :     const Color&    GetSelectColor() const { return maSelColor; }
     509             :     sal_Bool            IsSelectColor() const { return mbSelColor; }
     510             :     const Color&    GetSelectTextColor() const { return maSelTextColor; }
     511             :     sal_Bool            IsSelectTextColor() const { return mbSelTextColor; }
     512             : 
     513             :     void            SetPageText( sal_uInt16 nPageId, const OUString& rText );
     514             :     OUString        GetPageText( sal_uInt16 nPageId ) const;
     515             :     XubString       GetHelpText( sal_uInt16 nPageId ) const;
     516             :     OString    GetHelpId( sal_uInt16 nPageId ) const;
     517             : 
     518           0 :     long            GetSplitSize() const { return mnSplitSize; }
     519             : 
     520             :     void            SetHelpText( const XubString& rText )
     521             :                         { Window::SetHelpText( rText ); }
     522             :     XubString       GetHelpText() const
     523             :                         { return Window::GetHelpText(); };
     524         117 :     void            SetHelpId( const OString& rId )
     525         117 :                         { Window::SetHelpId( rId ); }
     526             :     const OString& GetHelpId() const
     527             :                         { return Window::GetHelpId(); }
     528             : 
     529             :     void            SetStyle( WinBits nStyle );
     530        1034 :     WinBits         GetStyle() const { return mnWinStyle; }
     531             : 
     532             :     Size            CalcWindowSizePixel() const;
     533             : 
     534           0 :     void            SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
     535             :     const Link&     GetSelectHdl() const { return maSelectHdl; }
     536             :     void            SetDoubleClickHdl( const Link& rLink ) { maDoubleClickHdl = rLink; }
     537             :     const Link&     GetDoubleClickHdl() const { return maDoubleClickHdl; }
     538         320 :     void            SetSplitHdl( const Link& rLink ) { maSplitHdl = rLink; }
     539             :     const Link&     GetSplitHdl() const { return maSplitHdl; }
     540             :     void            SetActivatePageHdl( const Link& rLink ) { maActivatePageHdl = rLink; }
     541             :     const Link&     GetActivatePageHdl() const { return maActivatePageHdl; }
     542             :     void            SetDeactivatePageHdl( const Link& rLink ) { maDeactivatePageHdl = rLink; }
     543             :     const Link&     GetDeactivatePageHdl() const { return maDeactivatePageHdl; }
     544             :     void            SetStartRenamingHdl( const Link& rLink ) { maStartRenamingHdl = rLink; }
     545             :     const Link&     GetStartRenamingHdl() const { return maStartRenamingHdl; }
     546             :     void            SetAllowRenamingHdl( const Link& rLink ) { maAllowRenamingHdl = rLink; }
     547             :     const Link&     GetAllowRenamingHdl() const { return maAllowRenamingHdl; }
     548             :     void            SetEndRenamingHdl( const Link& rLink ) { maEndRenamingHdl = rLink; }
     549             :     const Link&     GetEndRenamingHdl() const { return maEndRenamingHdl; }
     550             : 
     551             :     // accessibility
     552             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
     553             : };
     554             : 
     555             : #endif  // _TABBAR_HXX
     556             : 
     557             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10