summaryrefslogtreecommitdiff
path: root/framework/inc/helper/titlebarupdate.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'framework/inc/helper/titlebarupdate.hxx')
-rw-r--r--framework/inc/helper/titlebarupdate.hxx249
1 files changed, 249 insertions, 0 deletions
diff --git a/framework/inc/helper/titlebarupdate.hxx b/framework/inc/helper/titlebarupdate.hxx
new file mode 100644
index 000000000000..8081f823cc52
--- /dev/null
+++ b/framework/inc/helper/titlebarupdate.hxx
@@ -0,0 +1,249 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef __FRAMEWORK_HELPER_TITLEBARUPDATE_HXX_
+#define __FRAMEWORK_HELPER_TITLEBARUPDATE_HXX_
+
+//_________________________________________________________________________________________________________________
+// my own includes
+//_________________________________________________________________________________________________________________
+
+#ifndef __FRAMEWORK_THREADHELP_THREADHELPBASE_HXX_
+#include <threadhelp/threadhelpbase.hxx>
+#endif
+
+#ifndef __FRAMEWORK_MACROS_DEBUG_HXX_
+#include <macros/debug.hxx>
+#endif
+
+#ifndef __FRAMEWORK_MACROS_XINTERFACE_HXX_
+#include <macros/xinterface.hxx>
+#endif
+
+#ifndef __FRAMEWORK_MACROS_XTYPEPROVIDER_HXX_
+#include <macros/xtypeprovider.hxx>
+#endif
+
+#ifndef __FRAMEWORK_GENERAL_H_
+#include <general.h>
+#endif
+
+//_________________________________________________________________________________________________________________
+// interface includes
+//_________________________________________________________________________________________________________________
+
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_XINITIALIZATION_HPP_
+#include <com/sun/star/lang/XInitialization.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_FRAME_XFRAME_HPP_
+#include <com/sun/star/frame/XFrame.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_FRAME_XTITLE_HPP_
+#include <com/sun/star/frame/XTitle.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_FRAME_XFRAMEACTIONLISTENER_HPP_
+#include <com/sun/star/frame/XFrameActionListener.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_FRAME_XTITLECHANGELISTENER_HPP_
+#include <com/sun/star/frame/XTitleChangeListener.hpp>
+#endif
+
+#ifndef _COM_SUN_STAR_LANG_XEVENTLISTENER_HPP_
+#include <com/sun/star/lang/XEventListener.hpp>
+#endif
+
+//_________________________________________________________________________________________________________________
+// other includes
+//_________________________________________________________________________________________________________________
+
+#ifndef INCLUDED_SVTOOLS_MODULEOPTIONS_HXX
+#include <unotools/moduleoptions.hxx>
+#endif
+
+#ifndef _CPPUHELPER_WEAK_HXX_
+#include <cppuhelper/weak.hxx>
+#endif
+
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
+//_________________________________________________________________________________________________________________
+// const
+//_________________________________________________________________________________________________________________
+
+//_________________________________________________________________________________________________________________
+// namespace
+//_________________________________________________________________________________________________________________
+
+namespace framework{
+
+//_________________________________________________________________________________________________________________
+// declarations
+//_________________________________________________________________________________________________________________
+
+/*-************************************************************************************************************//**
+ @short helps our frame on setting title/icon on the titlebar (including updates)
+
+ @devstatus draft
+ @threadsafe yes
+*//*-*************************************************************************************************************/
+class TitleBarUpdate : // interfaces
+ public css::lang::XTypeProvider
+ , public css::lang::XInitialization
+ , public css::frame::XTitleChangeListener // => XEventListener
+ , public css::frame::XFrameActionListener // => XEventListener
+ // baseclasses (order neccessary for right initialization!)
+ , private ThreadHelpBase
+ , public ::cppu::OWeakObject
+{
+ //________________________________
+ // structs, types
+
+ private:
+
+ struct TModuleInfo
+ {
+ /// internal id of this module
+ ::rtl::OUString sID;
+ /// localized name for this module
+ ::rtl::OUString sUIName;
+ /// configured icon for this module
+ ::sal_Int32 nIcon;
+ };
+
+ //________________________________
+ // member
+
+ private:
+
+ /// may we need an uno service manager to create own services
+ css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
+
+ /// reference to the frame which was created by the office himself
+ css::uno::WeakReference< css::frame::XFrame > m_xFrame;
+
+ //________________________________
+ // interface
+
+ public:
+
+ //____________________________
+ // ctor/dtor
+ TitleBarUpdate(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR);
+ virtual ~TitleBarUpdate( );
+
+ //____________________________
+ // XInterface, XTypeProvider
+ FWK_DECLARE_XINTERFACE
+ FWK_DECLARE_XTYPEPROVIDER
+
+ //____________________________
+ // XInitialization
+ virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any >& lArguments)
+ throw(css::uno::Exception ,
+ css::uno::RuntimeException);
+
+ //____________________________
+ // XFrameActionListener
+ virtual void SAL_CALL frameAction(const css::frame::FrameActionEvent& aEvent)
+ throw(css::uno::RuntimeException);
+
+ //____________________________
+ // XTitleChangeListener
+ virtual void SAL_CALL titleChanged(const css::frame::TitleChangedEvent& aEvent)
+ throw (css::uno::RuntimeException);
+
+ //____________________________
+ // XEventListener
+ virtual void SAL_CALL disposing(const css::lang::EventObject& aEvent)
+ throw(css::uno::RuntimeException);
+
+ //________________________________
+ // helper
+
+ private:
+
+ //____________________________
+ /** @short identify the application module, which is used behind the component
+ of our frame.
+
+ @param xFrame
+ contains the component, wich must be identified.
+
+ @param rInfo
+ describe the module in its details.
+ Is set only if return value is true.
+
+ @return [sal_Bool]
+ TRUE in casee module could be identified and all needed values could be read.
+ FALSE otherwise.
+ */
+ ::sal_Bool implst_getModuleInfo(const css::uno::Reference< css::frame::XFrame >& xFrame,
+ TModuleInfo& rInfo );
+
+ //____________________________
+ /** @short set a new icon and title on the title bar of our connected frame window.
+
+ @descr It does not check if an update is realy needed. That has to be done outside.
+ It retrieves all needed informations and update the title bar - nothing less -
+ nothing more.
+ */
+ void impl_forceUpdate();
+
+ //____________________________
+ /** @short identify the current component (inside the connected frame)
+ and set the right module icon on the title bar.
+
+ @param xFrame
+ the frame which contains the component and where the icon must be set
+ on the window title bar.
+ */
+ void impl_updateIcon(const css::uno::Reference< css::frame::XFrame >& xFrame);
+
+ //____________________________
+ /** @short gets the current title from the frame and set it on the window.
+
+ @param xFrame
+ the frame which contains the component and where the title must be set
+ on the window title bar.
+ */
+ void impl_updateTitle(const css::uno::Reference< css::frame::XFrame >& xFrame);
+
+}; // class TitleBarUpdate
+
+} // namespace framework
+
+#endif // #ifndef __FRAMEWORK_HELPER_TITLEBARUPDATE_HXX_