Author: af Date: Tue Apr 23 15:08:04 2013 New Revision: 1471003 URL: http://svn.apache.org/r1471003 Log: 122086: Show icons in decks and titles (optionally).
Modified: openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs openoffice/trunk/main/sfx2/source/sidebar/Deck.hxx openoffice/trunk/main/sfx2/source/sidebar/DeckDescriptor.hxx openoffice/trunk/main/sfx2/source/sidebar/PanelDescriptor.hxx openoffice/trunk/main/sfx2/source/sidebar/ResourceManager.cxx openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx openoffice/trunk/main/sfx2/source/sidebar/TitleBar.cxx openoffice/trunk/main/sfx2/source/sidebar/TitleBar.hxx Modified: openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs URL: http://svn.apache.org/viewvc/openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs (original) +++ openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/UI/Sidebar.xcs Tue Apr 23 15:08:04 2013 @@ -58,6 +58,20 @@ </info> <value></value> </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"> <info> <desc>Help about the sidebar deck.</desc> @@ -147,6 +161,20 @@ </info> <value></value> </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"> <info> <desc>Help about the sidebar content panel.</desc> Modified: openoffice/trunk/main/sfx2/source/sidebar/Deck.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/Deck.hxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/Deck.hxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/Deck.hxx Tue Apr 23 15:08:04 2013 @@ -97,6 +97,8 @@ private: ::boost::scoped_ptr<ScrollBar> mpVerticalScrollBar; DECL_LINK(HandleVerticalScrollBarChange,void*); + + }; Modified: openoffice/trunk/main/sfx2/source/sidebar/DeckDescriptor.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/DeckDescriptor.hxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/DeckDescriptor.hxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/DeckDescriptor.hxx Tue Apr 23 15:08:04 2013 @@ -36,6 +36,8 @@ public: ::rtl::OUString msId; ::rtl::OUString msIconURL; ::rtl::OUString msHighContrastIconURL; + ::rtl::OUString msTitleBarIconURL; + ::rtl::OUString msHighContrastTitleBarIconURL; ::rtl::OUString msHelpURL; ::rtl::OUString msHelpText; ContextList maContextList; Modified: openoffice/trunk/main/sfx2/source/sidebar/PanelDescriptor.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/PanelDescriptor.hxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/PanelDescriptor.hxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/PanelDescriptor.hxx Tue Apr 23 15:08:04 2013 @@ -36,6 +36,8 @@ public: sal_Bool mbIsTitleBarOptional; ::rtl::OUString msId; ::rtl::OUString msDeckId; + ::rtl::OUString msTitleBarIconURL; + ::rtl::OUString msHighContrastTitleBarIconURL; ::rtl::OUString msHelpURL; ContextList maContextList; ::rtl::OUString msImplementationURL; Modified: openoffice/trunk/main/sfx2/source/sidebar/ResourceManager.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/ResourceManager.cxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/ResourceManager.cxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/ResourceManager.cxx Tue Apr 23 15:08:04 2013 @@ -279,6 +279,10 @@ void ResourceManager::ReadDeckList (void aDeckNode.getNodeValue("IconURL")); rDeckDescriptor.msHighContrastIconURL = ::comphelper::getString( aDeckNode.getNodeValue("HighContrastIconURL")); + rDeckDescriptor.msTitleBarIconURL = ::comphelper::getString( + aDeckNode.getNodeValue("TitleBarIconURL")); + rDeckDescriptor.msHighContrastTitleBarIconURL = ::comphelper::getString( + aDeckNode.getNodeValue("HighContrastTitleBarIconURL")); rDeckDescriptor.msHelpURL = ::comphelper::getString( aDeckNode.getNodeValue("HelpURL")); rDeckDescriptor.msHelpText = rDeckDescriptor.msTitle; @@ -331,6 +335,10 @@ void ResourceManager::ReadPanelList (voi aPanelNode.getNodeValue("Id")); rPanelDescriptor.msDeckId = ::comphelper::getString( aPanelNode.getNodeValue("DeckId")); + rPanelDescriptor.msTitleBarIconURL = ::comphelper::getString( + aPanelNode.getNodeValue("TitleBarIconURL")); + rPanelDescriptor.msHighContrastTitleBarIconURL = ::comphelper::getString( + aPanelNode.getNodeValue("HighContrastTitleBarIconURL")); rPanelDescriptor.msHelpURL = ::comphelper::getString( aPanelNode.getNodeValue("HelpURL")); rPanelDescriptor.msImplementationURL = ::comphelper::getString( Modified: openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/SidebarController.cxx Tue Apr 23 15:08:04 2013 @@ -495,6 +495,7 @@ void SidebarController::SwitchToDeck ( // buttons. maFocusManager.SetPanels(aNewPanels); mpTabBar->UpdateFocusManager(maFocusManager); + UpdateTitleBarIcons(); } @@ -650,6 +651,7 @@ IMPL_LINK(SidebarController, WindowEvent // Force an update of deck and tab bar to reflect // changes in theme (high contrast mode). Theme::HandleDataChange(); + UpdateTitleBarIcons(); mpParentWindow->Invalidate(); break; @@ -939,4 +941,48 @@ void SidebarController::RestrictWidth (v } + + +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 Modified: openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/SidebarController.hxx Tue Apr 23 15:08:04 2013 @@ -164,6 +164,12 @@ private: sal_Int32 SetChildWindowWidth (const sal_Int32 nNewWidth); 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); }; Modified: openoffice/trunk/main/sfx2/source/sidebar/TitleBar.cxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/TitleBar.cxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/TitleBar.cxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/TitleBar.cxx Tue Apr 23 15:08:04 2013 @@ -30,6 +30,11 @@ ToolbarValue::~ToolbarValue (void) {} +namespace +{ + const static sal_Int32 gnLeftIconSpace (3); + const static sal_Int32 gnRightIconSpace (3); +} namespace sfx2 { namespace sidebar { @@ -39,10 +44,11 @@ TitleBar::TitleBar ( const sidebar::Paint& rInitialBackgroundPaint) : Window(pParentWindow), maToolBox(this), - msTitle(rsTitle) + msTitle(rsTitle), + maIcon() { SetBackground(rInitialBackgroundPaint.GetWallpaper()); - + maToolBox.SetSelectHdl(LINK(this, TitleBar, SelectionHandler)); } @@ -65,6 +71,15 @@ void TitleBar::SetTitle (const ::rtl::OU +void TitleBar::SetIcon (const Image& rIcon) +{ + maIcon = rIcon; + Invalidate(); +} + + + + void TitleBar::Paint (const Rectangle& rUpdateArea) { (void)rUpdateArea; @@ -137,6 +152,20 @@ void TitleBar::PaintTitle (const Rectang { 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()); aFont.SetWeight(WEIGHT_BOLD); SetFont(aFont); @@ -144,7 +173,7 @@ void TitleBar::PaintTitle (const Rectang // Paint title bar text. SetTextColor(GetTextColor()); DrawText( - rTitleBox, + aTitleBox, msTitle, TEXT_DRAW_LEFT | TEXT_DRAW_VCENTER); Modified: openoffice/trunk/main/sfx2/source/sidebar/TitleBar.hxx URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sfx2/source/sidebar/TitleBar.hxx?rev=1471003&r1=1471002&r2=1471003&view=diff ============================================================================== --- openoffice/trunk/main/sfx2/source/sidebar/TitleBar.hxx (original) +++ openoffice/trunk/main/sfx2/source/sidebar/TitleBar.hxx Tue Apr 23 15:08:04 2013 @@ -41,6 +41,7 @@ public: virtual ~TitleBar (void); void SetTitle (const ::rtl::OUString& rsTitle); + void SetIcon (const Image& rIcon); virtual void Paint (const Rectangle& rUpdateArea); virtual void DataChanged (const DataChangedEvent& rEvent); @@ -65,7 +66,8 @@ protected: private: ::rtl::OUString msTitle; - + Image maIcon; + void PaintTitle (const Rectangle& rTitleBox); DECL_LINK(SelectionHandler, ToolBox*); };