Kaydet (Commit) eebf7fa2 authored tarafından Andre Fischer's avatar Andre Fischer Kaydeden (comit) Michael Meeks

Resolves: #i122086# Show icons in decks and titles (optionally)

(cherry picked from commit 80b53edb)

Change-Id: Ic9aafce182b96aa44956d9ddbf165f4cc736e41b
üst a1c02181
...@@ -53,6 +53,20 @@ ...@@ -53,6 +53,20 @@
</info> </info>
<value></value> <value></value>
</prop> </prop>
<prop oor:name="TitleBarIconURL" oor:type="xs:string">
<info>
<desc>This icon is displayed in the title bar of the deck.
Any URL scheme supported by the com.sun.star.graphic.GraphicProvider service is suitable here.</desc>
</info>
<value></value>
</prop>
<prop oor:name="HighContrastTitleBarIconURL" oor:type="xs:string">
<info>
<desc>This icon is displayed in the title bar of the deck when high contrast mode is active.
Any URL scheme supported by the com.sun.star.graphic.GraphicProvider service is suitable here.</desc>
</info>
<value></value>
</prop>
<prop oor:name="HelpURL" oor:type="xs:string"> <prop oor:name="HelpURL" oor:type="xs:string">
<info> <info>
<desc>Help about the sidebar deck.</desc> <desc>Help about the sidebar deck.</desc>
...@@ -142,6 +156,20 @@ ...@@ -142,6 +156,20 @@
</info> </info>
<value></value> <value></value>
</prop> </prop>
<prop oor:name="TitleBarIconURL" oor:type="xs:string">
<info>
<desc>This icon is displayed in the title bar of the panel.
Any URL scheme supported by the com.sun.star.graphic.GraphicProvider service is suitable here.</desc>
</info>
<value></value>
</prop>
<prop oor:name="HighContrastTitleBarIconURL" oor:type="xs:string">
<info>
<desc>This icon is displayed in the title bar of the panel when high contrast mode is active.
Any URL scheme supported by the com.sun.star.graphic.GraphicProvider service is suitable here.</desc>
</info>
<value></value>
</prop>
<prop oor:name="HelpURL" oor:type="xs:string"> <prop oor:name="HelpURL" oor:type="xs:string">
<info> <info>
<desc>Help about the sidebar content panel.</desc> <desc>Help about the sidebar content panel.</desc>
......
...@@ -93,6 +93,8 @@ private: ...@@ -93,6 +93,8 @@ private:
::boost::scoped_ptr<ScrollBar> mpVerticalScrollBar; ::boost::scoped_ptr<ScrollBar> mpVerticalScrollBar;
DECL_LINK(HandleVerticalScrollBarChange,void*); DECL_LINK(HandleVerticalScrollBarChange,void*);
}; };
......
...@@ -32,6 +32,8 @@ public: ...@@ -32,6 +32,8 @@ public:
::rtl::OUString msId; ::rtl::OUString msId;
::rtl::OUString msIconURL; ::rtl::OUString msIconURL;
::rtl::OUString msHighContrastIconURL; ::rtl::OUString msHighContrastIconURL;
::rtl::OUString msTitleBarIconURL;
::rtl::OUString msHighContrastTitleBarIconURL;
::rtl::OUString msHelpURL; ::rtl::OUString msHelpURL;
::rtl::OUString msHelpText; ::rtl::OUString msHelpText;
ContextList maContextList; ContextList maContextList;
......
...@@ -32,6 +32,8 @@ public: ...@@ -32,6 +32,8 @@ public:
sal_Bool mbIsTitleBarOptional; sal_Bool mbIsTitleBarOptional;
::rtl::OUString msId; ::rtl::OUString msId;
::rtl::OUString msDeckId; ::rtl::OUString msDeckId;
::rtl::OUString msTitleBarIconURL;
::rtl::OUString msHighContrastTitleBarIconURL;
::rtl::OUString msHelpURL; ::rtl::OUString msHelpURL;
ContextList maContextList; ContextList maContextList;
::rtl::OUString msImplementationURL; ::rtl::OUString msImplementationURL;
......
...@@ -269,6 +269,10 @@ void ResourceManager::ReadDeckList (void) ...@@ -269,6 +269,10 @@ void ResourceManager::ReadDeckList (void)
aDeckNode.getNodeValue("IconURL")); aDeckNode.getNodeValue("IconURL"));
rDeckDescriptor.msHighContrastIconURL = ::comphelper::getString( rDeckDescriptor.msHighContrastIconURL = ::comphelper::getString(
aDeckNode.getNodeValue("HighContrastIconURL")); aDeckNode.getNodeValue("HighContrastIconURL"));
rDeckDescriptor.msTitleBarIconURL = ::comphelper::getString(
aDeckNode.getNodeValue("TitleBarIconURL"));
rDeckDescriptor.msHighContrastTitleBarIconURL = ::comphelper::getString(
aDeckNode.getNodeValue("HighContrastTitleBarIconURL"));
rDeckDescriptor.msHelpURL = ::comphelper::getString( rDeckDescriptor.msHelpURL = ::comphelper::getString(
aDeckNode.getNodeValue("HelpURL")); aDeckNode.getNodeValue("HelpURL"));
rDeckDescriptor.msHelpText = rDeckDescriptor.msTitle; rDeckDescriptor.msHelpText = rDeckDescriptor.msTitle;
...@@ -320,6 +324,10 @@ void ResourceManager::ReadPanelList (void) ...@@ -320,6 +324,10 @@ void ResourceManager::ReadPanelList (void)
aPanelNode.getNodeValue("Id")); aPanelNode.getNodeValue("Id"));
rPanelDescriptor.msDeckId = ::comphelper::getString( rPanelDescriptor.msDeckId = ::comphelper::getString(
aPanelNode.getNodeValue("DeckId")); aPanelNode.getNodeValue("DeckId"));
rPanelDescriptor.msTitleBarIconURL = ::comphelper::getString(
aPanelNode.getNodeValue("TitleBarIconURL"));
rPanelDescriptor.msHighContrastTitleBarIconURL = ::comphelper::getString(
aPanelNode.getNodeValue("HighContrastTitleBarIconURL"));
rPanelDescriptor.msHelpURL = ::comphelper::getString( rPanelDescriptor.msHelpURL = ::comphelper::getString(
aPanelNode.getNodeValue("HelpURL")); aPanelNode.getNodeValue("HelpURL"));
rPanelDescriptor.msImplementationURL = ::comphelper::getString( rPanelDescriptor.msImplementationURL = ::comphelper::getString(
......
...@@ -487,6 +487,7 @@ void SidebarController::SwitchToDeck ( ...@@ -487,6 +487,7 @@ void SidebarController::SwitchToDeck (
// buttons. // buttons.
maFocusManager.SetPanels(aNewPanels); maFocusManager.SetPanels(aNewPanels);
mpTabBar->UpdateFocusManager(maFocusManager); mpTabBar->UpdateFocusManager(maFocusManager);
UpdateTitleBarIcons();
} }
...@@ -642,6 +643,7 @@ IMPL_LINK(SidebarController, WindowEventHandler, VclWindowEvent*, pEvent) ...@@ -642,6 +643,7 @@ IMPL_LINK(SidebarController, WindowEventHandler, VclWindowEvent*, pEvent)
// Force an update of deck and tab bar to reflect // Force an update of deck and tab bar to reflect
// changes in theme (high contrast mode). // changes in theme (high contrast mode).
Theme::HandleDataChange(); Theme::HandleDataChange();
UpdateTitleBarIcons();
mpParentWindow->Invalidate(); mpParentWindow->Invalidate();
break; break;
...@@ -931,4 +933,48 @@ void SidebarController::RestrictWidth (void) ...@@ -931,4 +933,48 @@ void SidebarController::RestrictWidth (void)
} }
void SidebarController::UpdateTitleBarIcons (void)
{
if ( ! mpCurrentDeck)
return;
const bool bIsHighContrastModeActive (Theme::IsHighContrastMode());
const ResourceManager& rResourceManager (ResourceManager::Instance());
// Update the deck icon.
const DeckDescriptor* pDeckDescriptor = rResourceManager.GetDeckDescriptor(mpCurrentDeck->GetId());
if (pDeckDescriptor != NULL && mpCurrentDeck->GetTitleBar())
{
const OUString sIconURL(
bIsHighContrastModeActive
? pDeckDescriptor->msHighContrastTitleBarIconURL
: pDeckDescriptor->msTitleBarIconURL);
mpCurrentDeck->GetTitleBar()->SetIcon(Tools::GetImage(sIconURL, mxFrame));
}
// Update the panel icons.
const SharedPanelContainer& rPanels (mpCurrentDeck->GetPanels());
for (SharedPanelContainer::const_iterator
iPanel(rPanels.begin()), iEnd(rPanels.end());
iPanel!=iEnd;
++iPanel)
{
if ( ! *iPanel)
continue;
if ((*iPanel)->GetTitleBar() == NULL)
continue;
const PanelDescriptor* pPanelDescriptor = rResourceManager.GetPanelDescriptor((*iPanel)->GetId());
if (pPanelDescriptor == NULL)
continue;
const OUString sIconURL (
bIsHighContrastModeActive
? pPanelDescriptor->msHighContrastTitleBarIconURL
: pPanelDescriptor->msTitleBarIconURL);
(*iPanel)->GetTitleBar()->SetIcon(Tools::GetImage(sIconURL, mxFrame));
}
}
} } // end of namespace sfx2::sidebar } } // end of namespace sfx2::sidebar
...@@ -161,6 +161,12 @@ private: ...@@ -161,6 +161,12 @@ private:
void RestrictWidth (void); void RestrictWidth (void);
/** Update the icons displayed in the title bars of the deck and
the panels. This is called once when a deck is created and
every time when a data change event is processed.
*/
void UpdateTitleBarIcons (void);
virtual void SAL_CALL disposing (void); virtual void SAL_CALL disposing (void);
}; };
......
...@@ -25,6 +25,11 @@ ...@@ -25,6 +25,11 @@
ToolbarValue::~ToolbarValue (void) {} ToolbarValue::~ToolbarValue (void) {}
namespace
{
const static sal_Int32 gnLeftIconSpace (3);
const static sal_Int32 gnRightIconSpace (3);
}
namespace sfx2 { namespace sidebar { namespace sfx2 { namespace sidebar {
...@@ -34,7 +39,8 @@ TitleBar::TitleBar ( ...@@ -34,7 +39,8 @@ TitleBar::TitleBar (
const sidebar::Paint& rInitialBackgroundPaint) const sidebar::Paint& rInitialBackgroundPaint)
: Window(pParentWindow), : Window(pParentWindow),
maToolBox(this), maToolBox(this),
msTitle(rsTitle) msTitle(rsTitle),
maIcon()
{ {
SetBackground(rInitialBackgroundPaint.GetWallpaper()); SetBackground(rInitialBackgroundPaint.GetWallpaper());
...@@ -60,6 +66,15 @@ void TitleBar::SetTitle (const ::rtl::OUString& rsTitle) ...@@ -60,6 +66,15 @@ void TitleBar::SetTitle (const ::rtl::OUString& rsTitle)
void TitleBar::SetIcon (const Image& rIcon)
{
maIcon = rIcon;
Invalidate();
}
void TitleBar::Paint (const Rectangle& rUpdateArea) void TitleBar::Paint (const Rectangle& rUpdateArea)
{ {
(void)rUpdateArea; (void)rUpdateArea;
...@@ -132,6 +147,20 @@ void TitleBar::PaintTitle (const Rectangle& rTitleBox) ...@@ -132,6 +147,20 @@ void TitleBar::PaintTitle (const Rectangle& rTitleBox)
{ {
Push(PUSH_FONT | PUSH_TEXTCOLOR); Push(PUSH_FONT | PUSH_TEXTCOLOR);
Rectangle aTitleBox (rTitleBox);
// When there is an icon then paint it at the left of the given
// box.
if ( !! maIcon)
{
DrawImage(
Point(
aTitleBox.Left() + gnLeftIconSpace,
aTitleBox.Top() + (aTitleBox.GetHeight()-maIcon.GetSizePixel().Height())/2),
maIcon);
aTitleBox.Left() += gnLeftIconSpace + maIcon.GetSizePixel().Width() + gnRightIconSpace;
}
Font aFont(GetFont()); Font aFont(GetFont());
aFont.SetWeight(WEIGHT_BOLD); aFont.SetWeight(WEIGHT_BOLD);
SetFont(aFont); SetFont(aFont);
...@@ -139,7 +168,7 @@ void TitleBar::PaintTitle (const Rectangle& rTitleBox) ...@@ -139,7 +168,7 @@ void TitleBar::PaintTitle (const Rectangle& rTitleBox)
// Paint title bar text. // Paint title bar text.
SetTextColor(GetTextColor()); SetTextColor(GetTextColor());
DrawText( DrawText(
rTitleBox, aTitleBox,
msTitle, msTitle,
TEXT_DRAW_LEFT | TEXT_DRAW_VCENTER); TEXT_DRAW_LEFT | TEXT_DRAW_VCENTER);
......
...@@ -37,6 +37,7 @@ public: ...@@ -37,6 +37,7 @@ public:
virtual ~TitleBar (void); virtual ~TitleBar (void);
void SetTitle (const ::rtl::OUString& rsTitle); void SetTitle (const ::rtl::OUString& rsTitle);
void SetIcon (const Image& rIcon);
virtual void Paint (const Rectangle& rUpdateArea); virtual void Paint (const Rectangle& rUpdateArea);
virtual void DataChanged (const DataChangedEvent& rEvent); virtual void DataChanged (const DataChangedEvent& rEvent);
...@@ -61,6 +62,7 @@ protected: ...@@ -61,6 +62,7 @@ protected:
private: private:
::rtl::OUString msTitle; ::rtl::OUString msTitle;
Image maIcon;
void PaintTitle (const Rectangle& rTitleBox); void PaintTitle (const Rectangle& rTitleBox);
DECL_LINK(SelectionHandler, ToolBox*); DECL_LINK(SelectionHandler, ToolBox*);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment