/************************************************************** * * 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 #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& 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 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