| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| #include "precompiled_sfx2.hxx" |
| |
| #include "DeckTitleBar.hxx" |
| #include "sfx2/sidebar/Theme.hxx" |
| #include "sfx2/sfxresid.hxx" |
| #include "Sidebar.hrc" |
| |
| #include <vcl/image.hxx> |
| |
| #ifdef DEBUG |
| #include "sfx2/sidebar/Tools.hxx" |
| #endif |
| |
| |
| namespace sfx2 { namespace sidebar { |
| |
| static const sal_Int32 gaLeftGripPadding (3); |
| static const sal_Int32 gaRightGripPadding (3); |
| |
| |
| DeckTitleBar::DeckTitleBar ( |
| const ::rtl::OUString& rsTitle, |
| Window* pParentWindow, |
| const ::boost::function<void(void)>& rCloserAction) |
| : TitleBar(rsTitle, pParentWindow, GetBackgroundPaint()), |
| mnCloserItemIndex(1), |
| maCloserAction(rCloserAction), |
| mbIsCloserVisible(false) |
| { |
| OSL_ASSERT(pParentWindow != NULL); |
| |
| if (maCloserAction) |
| SetCloserVisible(true); |
| |
| #ifdef DEBUG |
| SetText(A2S("DeckTitleBar")); |
| #endif |
| } |
| |
| |
| |
| |
| DeckTitleBar::~DeckTitleBar (void) |
| { |
| } |
| |
| |
| |
| |
| void DeckTitleBar::SetCloserVisible (const bool bIsCloserVisible) |
| { |
| if (mbIsCloserVisible != bIsCloserVisible) |
| { |
| mbIsCloserVisible = bIsCloserVisible; |
| |
| if (mbIsCloserVisible) |
| { |
| maToolBox.InsertItem( |
| mnCloserItemIndex, |
| Theme::GetImage(Theme::Image_Closer)); |
| maToolBox.SetQuickHelpText( |
| mnCloserItemIndex, |
| String(SfxResId(SFX_STR_SIDEBAR_CLOSE_DECK))); |
| } |
| else |
| maToolBox.RemoveItem( |
| maToolBox.GetItemPos(mnCloserItemIndex)); |
| } |
| } |
| |
| |
| |
| |
| Rectangle DeckTitleBar::GetTitleArea (const Rectangle& rTitleBarBox) |
| { |
| Image aGripImage (Theme::GetImage(Theme::Image_Grip)); |
| return Rectangle( |
| aGripImage.GetSizePixel().Width() + gaLeftGripPadding + gaRightGripPadding, |
| rTitleBarBox.Top(), |
| rTitleBarBox.Right(), |
| rTitleBarBox.Bottom()); |
| } |
| |
| |
| |
| |
| void DeckTitleBar::PaintDecoration (const Rectangle& rTitleBarBox) |
| { |
| (void)rTitleBarBox; |
| } |
| |
| |
| |
| |
| sidebar::Paint DeckTitleBar::GetBackgroundPaint (void) |
| { |
| return Theme::GetPaint(Theme::Paint_DeckTitleBarBackground); |
| } |
| |
| |
| |
| |
| Color DeckTitleBar::GetTextColor (void) |
| { |
| return Theme::GetColor(Theme::Color_DeckTitleFont); |
| } |
| |
| |
| |
| |
| void DeckTitleBar::HandleToolBoxItemClick (const sal_uInt16 nItemIndex) |
| { |
| if (nItemIndex == mnCloserItemIndex) |
| if (maCloserAction) |
| maCloserAction(); |
| } |
| |
| |
| |
| |
| cssu::Reference<css::accessibility::XAccessible> DeckTitleBar::CreateAccessible (void) |
| { |
| const ::rtl::OUString sAccessibleName(msTitle); |
| SetAccessibleName(sAccessibleName); |
| SetAccessibleDescription(sAccessibleName); |
| return TitleBar::CreateAccessible(); |
| } |
| |
| |
| |
| |
| void DeckTitleBar::DataChanged (const DataChangedEvent& rEvent) |
| { |
| maToolBox.SetItemImage( |
| mnCloserItemIndex, |
| Theme::GetImage(Theme::Image_Closer)); |
| TitleBar::DataChanged(rEvent); |
| } |
| |
| |
| } } // end of namespace sfx2::sidebar |