LCOV - code coverage report
Current view: top level - include/svtools - tabbar.hxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 7 15 46.7 %
Date: 2014-11-03 Functions: 6 14 42.9 %
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 INCLUDED_SVTOOLS_TABBAR_HXX
      21             : #define INCLUDED_SVTOOLS_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 vcl::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 - used in TabBar::AllowRenaming
     317             : 
     318             : enum TabBarAllowRenamingReturnCode {
     319             :    TABBAR_RENAMING_NO,
     320             :    TABBAR_RENAMING_YES,
     321             :    TABBAR_RENAMING_CANCEL
     322             : };
     323             : 
     324             : 
     325             : // - TabBar -
     326             : 
     327             : struct TabBar_Impl;
     328             : struct ImplTabBarItem;
     329             : 
     330             : class SVT_DLLPUBLIC TabBar : public vcl::Window
     331             : {
     332             :     friend class    ImplTabButton;
     333             :     friend class    ImplTabSizer;
     334             : 
     335             : private:
     336             :     ImplTabBarList* mpItemList;
     337             :     ImplTabButton*  mpFirstBtn;
     338             :     ImplTabButton*  mpPrevBtn;
     339             :     ImplTabButton*  mpNextBtn;
     340             :     ImplTabButton*  mpLastBtn;
     341             :     TabBar_Impl*    mpImpl;
     342             :     TabBarEdit*     mpEdit;
     343             :     OUString        maEditText;
     344             :     Color           maSelColor;
     345             :     Color           maSelTextColor;
     346             :     Size            maWinSize;
     347             :     long            mnMaxPageWidth;
     348             :     long            mnCurMaxWidth;
     349             :     long            mnOffX;
     350             :     long            mnOffY;
     351             :     long            mnLastOffX;
     352             :     long            mnSplitSize;
     353             :     sal_uLong       mnSwitchTime;
     354             :     WinBits         mnWinStyle;
     355             :     sal_uInt16      mnCurPageId;
     356             :     sal_uInt16      mnFirstPos;
     357             :     sal_uInt16      mnDropPos;
     358             :     sal_uInt16      mnSwitchId;
     359             :     sal_uInt16      mnEditId;
     360             :     bool            mbFormat;
     361             :     bool            mbFirstFormat;
     362             :     bool            mbSizeFormat;
     363             :     bool            mbAutoMaxWidth;
     364             :     bool            mbInSwitching;
     365             :     bool            mbAutoEditMode;
     366             :     bool            mbEditCanceled;
     367             :     bool            mbDropPos;
     368             :     bool            mbInSelect;
     369             :     bool            mbSelColor;
     370             :     bool            mbSelTextColor;
     371             :     bool            mbMirrored;
     372             :     bool            mbHasInsertTab; // if true, the tab bar has an extra tab at the end.
     373             :     bool            mbScrollAlwaysEnabled;
     374             :     Link            maSelectHdl;
     375             :     Link            maSplitHdl;
     376             :     Link            maScrollAreaContextHdl;
     377             :     size_t          maCurrentItemList;
     378             : 
     379             :     using Window::ImplInit;
     380             :     SVT_DLLPRIVATE void            ImplInit( WinBits nWinStyle );
     381             :     SVT_DLLPRIVATE void            ImplInitSettings( bool bFont, bool bBackground );
     382             :     SVT_DLLPRIVATE void            ImplGetColors( Color& rFaceColor, Color& rFaceTextColor,
     383             :                                    Color& rSelectColor, Color& rSelectTextColor );
     384             :     SVT_DLLPRIVATE void            ImplShowPage( sal_uInt16 nPos );
     385             :     SVT_DLLPRIVATE bool            ImplCalcWidth();
     386             :     SVT_DLLPRIVATE void            ImplFormat();
     387             :     SVT_DLLPRIVATE sal_uInt16      ImplGetLastFirstPos();
     388             :     SVT_DLLPRIVATE void            ImplInitControls();
     389             :     SVT_DLLPRIVATE void            ImplEnableControls();
     390             :     SVT_DLLPRIVATE void            ImplSelect();
     391             :     SVT_DLLPRIVATE void            ImplActivatePage();
     392             :     SVT_DLLPRIVATE bool            ImplDeactivatePage();
     393             :     SVT_DLLPRIVATE void            ImplPrePaint();
     394             :     SVT_DLLPRIVATE ImplTabBarItem* ImplGetLastTabBarItem( sal_uInt16 nItemCount );
     395             :     SVT_DLLPRIVATE Rectangle       ImplGetInsertTabRect(ImplTabBarItem* pItem) const;
     396             :                     DECL_DLLPRIVATE_LINK( ImplClickHdl, ImplTabButton* );
     397             : 
     398             :     ImplTabBarItem* seek( size_t i );
     399             :     ImplTabBarItem* prev();
     400             :     ImplTabBarItem* next();
     401             : 
     402             : public:
     403             :     static const sal_uInt16 APPEND;
     404             :     static const sal_uInt16 PAGE_NOT_FOUND;
     405             :     static const sal_uInt16 INSERT_TAB_POS;
     406             : 
     407             :                     TabBar( vcl::Window* pParent, WinBits nWinStyle = WB_STDTABBAR );
     408             :     virtual         ~TabBar();
     409             : 
     410             :     virtual void    MouseMove( const MouseEvent& rMEvt ) SAL_OVERRIDE;
     411             :     virtual void    MouseButtonDown( const MouseEvent& rMEvt ) SAL_OVERRIDE;
     412             :     virtual void    MouseButtonUp( const MouseEvent& rMEvt ) SAL_OVERRIDE;
     413             :     virtual void    Paint( const Rectangle& rRect ) SAL_OVERRIDE;
     414             :     virtual void    Resize() SAL_OVERRIDE;
     415             :     virtual void    RequestHelp( const HelpEvent& rHEvt ) SAL_OVERRIDE;
     416             :     virtual void    StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
     417             :     virtual void    DataChanged( const DataChangedEvent& rDCEvt ) SAL_OVERRIDE;
     418             : 
     419             :     virtual void    Select();
     420             :     virtual void    DoubleClick();
     421             :     virtual void    Split();
     422             :     virtual void    ActivatePage();
     423             :     virtual bool    DeactivatePage();
     424             :     virtual bool    StartRenaming();
     425             :     virtual TabBarAllowRenamingReturnCode    AllowRenaming();
     426             :     virtual void    EndRenaming();
     427             :     virtual void    Mirror();
     428             : 
     429             :     void            InsertPage( sal_uInt16 nPageId, const OUString& rText,
     430             :                                 TabBarPageBits nBits = 0,
     431             :                                 sal_uInt16 nPos = TabBar::APPEND );
     432             :     void            RemovePage( sal_uInt16 nPageId );
     433             :     void            MovePage( sal_uInt16 nPageId, sal_uInt16 nNewPos );
     434             : 
     435             :     Color           GetTabBgColor( sal_uInt16 nPageId ) const;
     436             :     void            SetTabBgColor( sal_uInt16 nPageId, const Color& aTabBgColor );
     437             :     bool            IsDefaultTabBgColor( sal_uInt16 nPageId );
     438             : 
     439             :     void            Clear();
     440             : 
     441             :     bool            IsPageEnabled( sal_uInt16 nPageId ) const;
     442             : 
     443             :     void            SetPageBits( sal_uInt16 nPageId, TabBarPageBits nBits = 0 );
     444             :     TabBarPageBits  GetPageBits( sal_uInt16 nPageId ) const;
     445             : 
     446             :     sal_uInt16      GetPageCount() const;
     447             :     sal_uInt16      GetPageId( sal_uInt16 nPos ) const;
     448             :     sal_uInt16      GetPagePos( sal_uInt16 nPageId ) const;
     449             :     sal_uInt16      GetPageId( const Point& rPos, bool bCheckInsTab = false ) const;
     450             :     Rectangle       GetPageRect( sal_uInt16 nPageId ) const;
     451             :     // returns the rectangle in which page tabs are drawn
     452             :     Rectangle       GetPageArea() const;
     453             : 
     454             :     void            SetCurPageId( sal_uInt16 nPageId );
     455        4022 :     sal_uInt16      GetCurPageId() const { return mnCurPageId; }
     456             : 
     457             :     void            SetFirstPageId( sal_uInt16 nPageId );
     458             :     sal_uInt16      GetFirstPageId() const { return GetPageId( mnFirstPos ); }
     459             :     void            MakeVisible( sal_uInt16 nPageId );
     460             : 
     461             :     void            SelectPage( sal_uInt16 nPageId, bool bSelect = true );
     462             :     sal_uInt16      GetSelectPageCount() const;
     463             :     bool            IsPageSelected( sal_uInt16 nPageId ) const;
     464             : 
     465             :     void            EnableAutoMaxPageWidth( bool bEnable = true ) { mbAutoMaxWidth = bEnable; }
     466             :     bool            IsAutoMaxPageWidthEnabled() const { return mbAutoMaxWidth; }
     467             :     void            SetMaxPageWidth( long nMaxWidth );
     468             :     long            GetMaxPageWidth() const { return mnMaxPageWidth; }
     469             :     void            ResetMaxPageWidth() { SetMaxPageWidth( 0 ); }
     470             :     bool            IsMaxPageWidth() const { return mnMaxPageWidth != 0; }
     471             : 
     472         918 :     void            EnableEditMode( bool bEnable = true ) { mbAutoEditMode = bEnable; }
     473             :     bool            IsEditModeEnabled() const { return mbAutoEditMode; }
     474             :     bool            StartEditMode( sal_uInt16 nPageId );
     475             :     void            EndEditMode( bool bCancel = false );
     476           0 :     void            SetEditText( const OUString& rText ) { maEditText = rText; }
     477           0 :     const OUString& GetEditText() const { return maEditText; }
     478           0 :     bool            IsInEditMode() const { return (mpEdit != NULL); }
     479           0 :     bool            IsEditModeCanceled() const { return mbEditCanceled; }
     480           0 :     sal_uInt16      GetEditPageId() const { return mnEditId; }
     481             : 
     482             :     /** Mirrors the entire control including position of buttons and splitter.
     483             :         Mirroring is done relative to the current direction of the GUI.
     484             :         @param bMirrored  sal_True = the control will draw itself RTL in LTR GUI,
     485             :             and vice versa; sal_False = the control behaves according to the
     486             :             current direction of the GUI. */
     487             :     void            SetMirrored(bool bMirrored = true);
     488             :     /** Returns sal_True, if the control is set to mirrored mode (see SetMirrored()). */
     489           0 :     bool            IsMirrored() const { return mbMirrored; }
     490             : 
     491             :     /** Sets the control to LTR or RTL mode regardless of the GUI direction.
     492             :         @param bRTL  sal_False = the control will draw from left to right;
     493             :             sal_True = the control will draw from right to left. */
     494             :     void            SetEffectiveRTL( bool bRTL );
     495             :     /** Returns true, if the control draws from right to left (see SetEffectiveRTL()). */
     496             :     bool            IsEffectiveRTL() const;
     497             : 
     498             :     bool            StartDrag( const CommandEvent& rCEvt, vcl::Region& rRegion );
     499             :     sal_uInt16      ShowDropPos( const Point& rPos );
     500             :     void            HideDropPos();
     501             :     bool            SwitchPage( const Point& rPos );
     502             :     void            EndSwitchPage();
     503             :     bool            IsInSwitching() { return mbInSwitching; }
     504             : 
     505             :     const Color&    GetSelectColor() const { return maSelColor; }
     506             :     bool            IsSelectColor() const { return mbSelColor; }
     507             :     const Color&    GetSelectTextColor() const { return maSelTextColor; }
     508             :     bool            IsSelectTextColor() const { return mbSelTextColor; }
     509             : 
     510             :     void            SetPageText( sal_uInt16 nPageId, const OUString& rText );
     511             :     OUString        GetPageText( sal_uInt16 nPageId ) const;
     512             :     OUString        GetHelpText( sal_uInt16 nPageId ) const;
     513             :     OString         GetHelpId( sal_uInt16 nPageId ) const;
     514             : 
     515           0 :     long            GetSplitSize() const { return mnSplitSize; }
     516             : 
     517             :     void            SetHelpText( const OUString& rText )
     518             :                         { Window::SetHelpText( rText ); }
     519             :     OUString        GetHelpText() const
     520             :                         { return Window::GetHelpText(); };
     521         372 :     void            SetHelpId( const OString& rId )
     522         372 :                         { Window::SetHelpId( rId ); }
     523             :     const OString& GetHelpId() const
     524             :                         { return Window::GetHelpId(); }
     525             : 
     526             :     void            SetStyle( WinBits nStyle );
     527        2404 :     WinBits         GetStyle() const { return mnWinStyle; }
     528             : 
     529             :     void            SetScrollAlwaysEnabled(bool bScrollAlwaysEnabled);
     530             : 
     531             :     Size            CalcWindowSizePixel() const;
     532             : 
     533           0 :     void            SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
     534         758 :     void            SetSplitHdl( const Link& rLink ) { maSplitHdl = rLink; }
     535         546 :     void            SetScrollAreaContextHdl( const Link& rLink ) { maScrollAreaContextHdl = rLink; }
     536             : 
     537             :     // accessibility
     538             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible() SAL_OVERRIDE;
     539             : };
     540             : 
     541             : #endif // INCLUDED_SVTOOLS_TABBAR_HXX
     542             : 
     543             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10