blob: a25908a0984f405d754f1ca5e59c360e245af906 [file] [log] [blame]
/**************************************************************
*
* 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