xref: /trunk/main/sfx2/source/appl/shutdownicon.hxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 
2 #ifndef __SHUTDOWNICON_HXX__
3 #define __SHUTDOWNICON_HXX__
4 
5 #include <com/sun/star/frame/XTerminateListener.hpp>
6 #include <com/sun/star/frame/XDesktop.hpp>
7 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
8 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
9 #include <com/sun/star/lang/XComponent.hpp>
10 #include <com/sun/star/lang/XEventListener.hpp>
11 #include <com/sun/star/lang/XServiceInfo.hpp>
12 #include <com/sun/star/lang/XInitialization.hpp>
13 #include <com/sun/star/lang/XInitialization.hpp>
14 #include <com/sun/star/beans/XFastPropertySet.hpp>
15 #ifndef _RTL_STRING_HXX
16 #include <rtl/string.hxx>
17 #endif
18 #ifndef _RTL_USTRING_HXX
19 #include <rtl/ustring.hxx>
20 #endif
21 #include <osl/mutex.hxx>
22 #include <osl/module.hxx>
23 #include <sfx2/sfxuno.hxx>
24 #include <cppuhelper/compbase4.hxx>
25 #include <sfx2/dllapi.h>
26 
27 class ResMgr;
28 namespace sfx2
29 {
30     class FileDialogHelper;
31 }
32 
33 typedef ::cppu::WeakComponentImplHelper4<
34     ::com::sun::star::lang::XInitialization,
35     ::com::sun::star::frame::XTerminateListener,
36     ::com::sun::star::lang::XServiceInfo,
37     ::com::sun::star::beans::XFastPropertySet > ShutdownIconServiceBase;
38 
39 #if defined(USE_APP_SHORTCUTS)
40 #define WRITER_URL      "private:factory/swriter"
41 #define CALC_URL        "private:factory/scalc"
42 #define IMPRESS_URL     "private:factory/simpress"
43 #define IMPRESS_WIZARD_URL     "private:factory/simpress?slot=6686"
44 #define DRAW_URL        "private:factory/sdraw"
45 #define MATH_URL        "private:factory/smath"
46 #define BASE_URL        "private:factory/sdatabase?Interactive"
47 #define STARTMODULE_URL ".uno:ShowStartModule"
48 #endif
49 
50 class SFX2_DLLPUBLIC ShutdownIcon : public ShutdownIconServiceBase
51 {
52         ::osl::Mutex            m_aMutex;
53         bool                    m_bVeto;
54         bool                    m_bListenForTermination;
55         bool                    m_bSystemDialogs;
56         ResMgr*                 m_pResMgr;
57         sfx2::FileDialogHelper* m_pFileDlg;
58         ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceManager;
59 
60         static ShutdownIcon *pShutdownIcon; // one instance
61 
62         oslGenericFunction m_pInitSystray;
63         oslGenericFunction m_pDeInitSystray;
64         ::osl::Module  *m_pPlugin;
65 
66         bool m_bInitialized;
67         void initSystray();
68         void deInitSystray();
69 
70         static bool LoadModule( osl::Module **pModule,
71                                 oslGenericFunction *pInit,
72                                 oslGenericFunction *pDeInit );
73         static void EnterModalMode();
74         static void LeaveModalMode();
75         static rtl::OUString getShortcutName();
76 
77         friend class SfxNotificationListener_Impl;
78 
79     public:
80         ShutdownIcon( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > aSMgr );
81 
82         virtual ~ShutdownIcon();
83 
84         SFX_DECL_XSERVICEINFO
85 
86         static ShutdownIcon* getInstance();
87         static ShutdownIcon* createInstance();
88 
89         static void terminateDesktop();
90         static void addTerminateListener();
91 
92         static void FileOpen();
93         static void OpenURL( const ::rtl::OUString& aURL, const ::rtl::OUString& rTarget, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& =
94             ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >( 0 ) );
95         static void FromTemplate();
96 
97         static void SetAutostart( bool bActivate );
98         static bool GetAutostart();
99         static bool bModalMode;
100 
101         void init() throw( ::com::sun::star::uno::Exception );
102 
103         static ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory >
104                     GetWrapperFactory( ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > & xSMgr );
105         static ::rtl::OUString  GetImplementationName_static();
106 
107         ::rtl::OUString GetResString( int id );
108         ::rtl::OUString GetUrlDescription( const ::rtl::OUString& aUrl );
109 
110         void SetVeto( bool bVeto )  { m_bVeto = bVeto;}
111         bool GetVeto()              { return m_bVeto; }
112 
113         void                    StartFileDialog();
114         sfx2::FileDialogHelper* GetFileDialog() const { return m_pFileDlg; }
115         static long DialogClosedHdl_Impl( ShutdownIcon*, sfx2::FileDialogHelper* );
116 
117         static bool IsQuickstarterInstalled();
118 
119         // Component Helper - force override
120         virtual void SAL_CALL disposing();
121 
122         // XEventListener
123         virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source )
124             throw(::com::sun::star::uno::RuntimeException);
125 
126         // XTerminateListener
127         virtual void SAL_CALL queryTermination( const ::com::sun::star::lang::EventObject& aEvent )
128             throw(::com::sun::star::frame::TerminationVetoException, ::com::sun::star::uno::RuntimeException);
129         virtual void SAL_CALL notifyTermination( const ::com::sun::star::lang::EventObject& aEvent )
130             throw(::com::sun::star::uno::RuntimeException);
131 
132         // XInitialization
133         virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments )
134             throw( ::com::sun::star::uno::Exception );
135 
136         // XFastPropertySet
137         virtual void SAL_CALL setFastPropertyValue(       ::sal_Int32                  nHandle,
138                                                     const ::com::sun::star::uno::Any& aValue )
139             throw (::com::sun::star::beans::UnknownPropertyException,
140                     ::com::sun::star::beans::PropertyVetoException,
141                     ::com::sun::star::lang::IllegalArgumentException,
142                     ::com::sun::star::lang::WrappedTargetException,
143                     ::com::sun::star::uno::RuntimeException);
144         virtual ::com::sun::star::uno::Any SAL_CALL getFastPropertyValue( ::sal_Int32 nHandle )
145             throw (::com::sun::star::beans::UnknownPropertyException,
146                     ::com::sun::star::lang::WrappedTargetException,
147                     ::com::sun::star::uno::RuntimeException);
148 
149         ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDesktop > m_xDesktop;
150 
151 #ifdef WNT
152         static void EnableAutostartW32( const rtl::OUString &aShortcutName );
153         static rtl::OUString GetAutostartFolderNameW32();
154 #endif
155 #ifdef OS2
156             static void SetAutostartOs2( bool bActivate );
157             static bool GetAutostartOs2( );
158 #endif
159 };
160 
161 extern "C" {
162 #  ifdef WNT
163     // builtin win32 systray
164     void win32_init_sys_tray();
165     void win32_shutdown_sys_tray();
166 #  elif defined QUARTZ
167     void aqua_init_systray();
168     void aqua_shutdown_systray();
169 #  endif
170     // external plugin systray impl.
171     void plugin_init_sys_tray();
172     void plugin_shutdown_sys_tray();
173 }
174 
175 #endif
176