xref: /AOO42X/main/sfx2/source/sidebar/DeckTitleBar.cxx (revision 055746153e5cd78346b485d23b1c8e3408d513f1)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 #include "precompiled_sfx2.hxx"
23 
24 #include "DeckTitleBar.hxx"
25 #include "sfx2/sidebar/Theme.hxx"
26 #include "sfx2/sfxresid.hxx"
27 #include "Sidebar.hrc"
28 
29 #include <vcl/image.hxx>
30 
31 #ifdef DEBUG
32 #include "sfx2/sidebar/Tools.hxx"
33 #endif
34 
35 namespace sfx2 { namespace sidebar {
36 
37 static const sal_Int32 gaLeftGripPadding (3);
38 static const sal_Int32 gaRightGripPadding (4);
39 
40 
DeckTitleBar(const::rtl::OUString & rsTitle,Window * pParentWindow,const::boost::function<void (void)> & rCloserAction)41 DeckTitleBar::DeckTitleBar (
42     const ::rtl::OUString& rsTitle,
43     Window* pParentWindow,
44     const ::boost::function<void(void)>& rCloserAction)
45     : TitleBar(rsTitle, pParentWindow, GetBackgroundPaint()),
46       mnCloserItemIndex(1),
47       maCloserAction(rCloserAction),
48       mbIsCloserVisible(false)
49 {
50     OSL_ASSERT(pParentWindow != NULL);
51 
52     if (maCloserAction)
53         SetCloserVisible(true);
54 
55 #ifdef DEBUG
56     SetText(A2S("DeckTitleBar"));
57 #endif
58 }
59 
~DeckTitleBar(void)60 DeckTitleBar::~DeckTitleBar (void)
61 {
62 }
63 
SetCloserVisible(const bool bIsCloserVisible)64 void DeckTitleBar::SetCloserVisible (const bool bIsCloserVisible)
65 {
66     if (mbIsCloserVisible != bIsCloserVisible)
67     {
68         mbIsCloserVisible = bIsCloserVisible;
69 
70         if (mbIsCloserVisible)
71         {
72             maToolBox.InsertItem(
73                 mnCloserItemIndex,
74                 Theme::GetImage(Theme::Image_Closer));
75             maToolBox.SetQuickHelpText(
76                 mnCloserItemIndex,
77                 String(SfxResId(SFX_STR_SIDEBAR_CLOSE_DECK)));
78         }
79         else
80             maToolBox.RemoveItem(
81                 maToolBox.GetItemPos(mnCloserItemIndex));
82     }
83 }
84 
GetTitleArea(const Rectangle & rTitleBarBox)85 Rectangle DeckTitleBar::GetTitleArea (const Rectangle& rTitleBarBox)
86 {
87     Image aGripImage (Theme::GetImage(Theme::Image_Grip));
88     return Rectangle(
89         aGripImage.GetSizePixel().Width() + gaLeftGripPadding + gaRightGripPadding,
90         rTitleBarBox.Top(),
91         rTitleBarBox.Right(),
92         rTitleBarBox.Bottom());
93 }
94 
PaintDecoration(const Rectangle & rTitleBarBox)95 void DeckTitleBar::PaintDecoration (const Rectangle& rTitleBarBox)
96 {
97     (void)rTitleBarBox;
98 }
99 
GetBackgroundPaint(void)100 sidebar::Paint DeckTitleBar::GetBackgroundPaint (void)
101 {
102     return Theme::GetPaint(Theme::Paint_DeckTitleBarBackground);
103 }
104 
GetTextColor(void)105 Color DeckTitleBar::GetTextColor (void)
106 {
107     return Theme::GetColor(Theme::Color_DeckTitleFont);
108 }
109 
HandleToolBoxItemClick(const sal_uInt16 nItemIndex)110 void DeckTitleBar::HandleToolBoxItemClick (const sal_uInt16 nItemIndex)
111 {
112     if (nItemIndex == mnCloserItemIndex)
113         if (maCloserAction)
114             maCloserAction();
115 }
116 
CreateAccessible(void)117 cssu::Reference<css::accessibility::XAccessible> DeckTitleBar::CreateAccessible (void)
118 {
119     const ::rtl::OUString sAccessibleName(msTitle);
120     SetAccessibleName(sAccessibleName);
121     SetAccessibleDescription(sAccessibleName);
122     return TitleBar::CreateAccessible();
123 }
124 
DataChanged(const DataChangedEvent & rEvent)125 void DeckTitleBar::DataChanged (const DataChangedEvent& rEvent)
126 {
127     maToolBox.SetItemImage(
128         mnCloserItemIndex,
129         Theme::GetImage(Theme::Image_Closer));
130     TitleBar::DataChanged(rEvent);
131 }
132 
133 } } // end of namespace sfx2::sidebar
134 
135 /* vim: set noet sw=4 ts=4: */
136