1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19 #ifndef INCLUDED_SFX2_EVENT_HXX
20 #define INCLUDED_SFX2_EVENT_HXX
21
22 #include <sal/config.h>
23
24 #include <ostream>
25
26 #include <sfx2/dllapi.h>
27 #include <svl/hint.hxx>
28 #include <unotools/eventcfg.hxx>
29 #include <rtl/ustring.hxx>
30
31 #include <com/sun/star/uno/Sequence.hxx>
32 #include <com/sun/star/frame/XController2.hpp>
33 #include <com/sun/star/view/PrintableState.hpp>
34
35 namespace com::sun::star::beans { struct PropertyValue; }
36
37 /**
38 these values get stored in streams in a 16-bit value
39 */
40 enum class SvMacroItemId : sal_uInt16 {
41 NONE = 0,
42
43 // used by SwHTMLForm_Impl
44 HtmlOnSubmitForm,
45 HtmlOnResetForm,
46 HtmlOnGetFocus,
47 HtmlOnLoseFocus,
48 HtmlOnClick,
49 HtmlOnClickItem,
50 HtmlOnChange,
51 HtmlOnSelect,
52
53 // used by SwHTMLParser
54 OpenDoc,
55 PrepareCloseDoc,
56 ActivateDoc,
57 DeactivateDoc,
58
59 // Events for Controls etc.
60 OnMouseOver = 5100,
61 OnClick = 5101,
62 OnMouseOut = 5102,
63
64 OnImageLoadDone = 10000,
65 OnImageLoadCancel = 10001,
66 OnImageLoadError = 10002,
67
68 SwObjectSelect = 20000,
69 SwStartInsGlossary = 20001,
70 SwEndInsGlossary = 20002,
71 SwFrmKeyInputAlpha = 20004,
72 SwFrmKeyInputNoAlpha = 20005,
73 SwFrmResize = 20006,
74 SwFrmMove = 20007,
75 };
76
77 template< typename charT, typename traits >
operator <<(std::basic_ostream<charT,traits> & stream,const SvMacroItemId & id)78 inline std::basic_ostream<charT, traits> & operator <<(
79 std::basic_ostream<charT, traits> & stream, const SvMacroItemId& id )
80 {
81 switch(id)
82 {
83 case SvMacroItemId::NONE: return stream << "NONE";
84 case SvMacroItemId::HtmlOnSubmitForm: return stream << "HtmlOnSubmitForm";
85 case SvMacroItemId::HtmlOnResetForm: return stream << "HtmlOnResetForm";
86 case SvMacroItemId::HtmlOnGetFocus: return stream << "HtmlOnGetFocus";
87 case SvMacroItemId::HtmlOnLoseFocus: return stream << "HtmlOnLoseFocus";
88 case SvMacroItemId::HtmlOnClick: return stream << "HtmlOnClick";
89 case SvMacroItemId::HtmlOnClickItem: return stream << "HtmlOnClickItem";
90 case SvMacroItemId::HtmlOnChange: return stream << "HtmlOnChange";
91 case SvMacroItemId::HtmlOnSelect: return stream << "HtmlOnSelect";
92 case SvMacroItemId::OpenDoc: return stream << "OpenDoc";
93 case SvMacroItemId::PrepareCloseDoc: return stream << "PrepareCloseDoc";
94 case SvMacroItemId::ActivateDoc: return stream << "ActivateDoc";
95 case SvMacroItemId::DeactivateDoc: return stream << "DeactivateDoc";
96 case SvMacroItemId::OnMouseOver: return stream << "OnMouseOver";
97 case SvMacroItemId::OnClick: return stream << "OnClick";
98 case SvMacroItemId::OnMouseOut: return stream << "OnMouseOut";
99 case SvMacroItemId::OnImageLoadDone: return stream << "OnImageLoadDone";
100 case SvMacroItemId::OnImageLoadCancel: return stream << "OnImageLoadCancel";
101 case SvMacroItemId::OnImageLoadError: return stream << "OnImageLoadError";
102 case SvMacroItemId::SwObjectSelect: return stream << "SwObjectSelect";
103 case SvMacroItemId::SwStartInsGlossary: return stream << "SwStartInsGlossary";
104 case SvMacroItemId::SwEndInsGlossary: return stream << "SwEndInsGlossary";
105 case SvMacroItemId::SwFrmKeyInputAlpha: return stream << "SwFrmKeyInputAlpha";
106 case SvMacroItemId::SwFrmKeyInputNoAlpha: return stream << "SwFrmKeyInputNoAlpha";
107 case SvMacroItemId::SwFrmResize: return stream << "SwFrmResize";
108 case SvMacroItemId::SwFrmMove: return stream << "SwFrmMove";
109 default: return stream << "unk(" << std::to_string(int(id)) << ")";
110 }
111 }
112
113 class SfxObjectShell;
114
115 enum class SfxEventHintId {
116 NONE = 0,
117 ActivateDoc,
118 CloseDoc,
119 CloseView,
120 CreateDoc,
121 DeactivateDoc,
122 DocCreated,
123 LoadFinished,
124 ModifyChanged,
125 OpenDoc,
126 PrepareCloseDoc,
127 PrepareCloseView,
128 PrintDoc,
129 SaveAsDoc,
130 SaveAsDocDone,
131 SaveAsDocFailed,
132 SaveDoc,
133 SaveDocDone,
134 SaveDocFailed,
135 SaveToDoc,
136 SaveToDocDone,
137 SaveToDocFailed,
138 StorageChanged,
139 ViewCreated,
140 VisAreaChanged,
141 // SW events
142 SwMailMerge,
143 SwMailMergeEnd,
144 SwEventPageCount,
145 SwEventFieldMerge,
146 SwEventFieldMergeFinished,
147 SwEventLayoutFinished,
148 };
149
150 template< typename charT, typename traits >
operator <<(std::basic_ostream<charT,traits> & stream,const SfxEventHintId & id)151 inline std::basic_ostream<charT, traits> & operator <<(
152 std::basic_ostream<charT, traits> & stream, const SfxEventHintId& id )
153 {
154 switch(id)
155 {
156 case SfxEventHintId::NONE: return stream << "NONE";
157 case SfxEventHintId::ActivateDoc: return stream << "ActivateDoc";
158 case SfxEventHintId::CloseDoc: return stream << "CloseDoc";
159 case SfxEventHintId::CloseView: return stream << "CloseView";
160 case SfxEventHintId::CreateDoc: return stream << "CreateDoc";
161 case SfxEventHintId::DeactivateDoc: return stream << "DeactivateDoc";
162 case SfxEventHintId::DocCreated: return stream << "DocCreated";
163 case SfxEventHintId::LoadFinished: return stream << "LoadFinished";
164 case SfxEventHintId::ModifyChanged: return stream << "ModifyChanged";
165 case SfxEventHintId::OpenDoc: return stream << "OpenDoc";
166 case SfxEventHintId::PrepareCloseDoc: return stream << "PrepareCloseDoc";
167 case SfxEventHintId::PrepareCloseView: return stream << "PrepareCloseView";
168 case SfxEventHintId::PrintDoc: return stream << "PrintDoc";
169 case SfxEventHintId::SaveAsDoc: return stream << "SaveAsDoc";
170 case SfxEventHintId::SaveAsDocDone: return stream << "SaveAsDocDone";
171 case SfxEventHintId::SaveAsDocFailed: return stream << "SaveAsDocFailed";
172 case SfxEventHintId::SaveDoc: return stream << "SaveDoc";
173 case SfxEventHintId::SaveDocDone: return stream << "SaveDocDone";
174 case SfxEventHintId::SaveDocFailed: return stream << "SaveDocFailed";
175 case SfxEventHintId::SaveToDoc: return stream << "SaveToDoc";
176 case SfxEventHintId::SaveToDocDone: return stream << "SaveToDocDone";
177 case SfxEventHintId::SaveToDocFailed: return stream << "SaveToDocFailed";
178 case SfxEventHintId::StorageChanged: return stream << "StorageChanged";
179 case SfxEventHintId::ViewCreated: return stream << "ViewCreated";
180 case SfxEventHintId::VisAreaChanged: return stream << "VisAreaChanged";
181 case SfxEventHintId::SwMailMerge: return stream << "SwMailMerge";
182 case SfxEventHintId::SwMailMergeEnd: return stream << "SwMailMergeEnd";
183 case SfxEventHintId::SwEventPageCount: return stream << "SwEventPageCount";
184 case SfxEventHintId::SwEventFieldMerge: return stream << "SwEventFieldMerge";
185 case SfxEventHintId::SwEventFieldMergeFinished: return stream << "SwEventFieldMergeFinished";
186 case SfxEventHintId::SwEventLayoutFinished: return stream << "SwEventLayoutFinished";
187 default: return stream << "unk(" << std::to_string(int(id)) << ")";
188 }
189 }
190
191 class SFX2_DLLPUBLIC SfxEventHint : public SfxHint
192 {
193 SfxObjectShell* pObjShell;
194 OUString aEventName;
195 SfxEventHintId nEventId;
196
197 public:
SfxEventHint(SfxEventHintId nId,const OUString & aName,SfxObjectShell * pObj)198 SfxEventHint( SfxEventHintId nId, const OUString& aName, SfxObjectShell *pObj )
199 : pObjShell(pObj),
200 aEventName(aName),
201 nEventId(nId)
202 {}
203
GetEventId() const204 SfxEventHintId GetEventId() const
205 { return nEventId; }
206
GetEventName() const207 const OUString& GetEventName() const
208 { return aEventName; }
209
GetObjShell() const210 SfxObjectShell* GetObjShell() const
211 { return pObjShell; }
212 };
213
214
215 class SFX2_DLLPUBLIC SfxViewEventHint : public SfxEventHint
216 {
217 css::uno::Reference< css::frame::XController2 > xViewController;
218
219 public:
SfxViewEventHint(SfxEventHintId nId,const OUString & aName,SfxObjectShell * pObj,const css::uno::Reference<css::frame::XController> & xController)220 SfxViewEventHint( SfxEventHintId nId, const OUString& aName, SfxObjectShell *pObj, const css::uno::Reference< css::frame::XController >& xController )
221 : SfxEventHint( nId, aName, pObj )
222 , xViewController( xController, css::uno::UNO_QUERY )
223 {}
224
SfxViewEventHint(SfxEventHintId nId,const OUString & aName,SfxObjectShell * pObj,const css::uno::Reference<css::frame::XController2> & xController)225 SfxViewEventHint( SfxEventHintId nId, const OUString& aName, SfxObjectShell *pObj, const css::uno::Reference< css::frame::XController2 >& xController )
226 : SfxEventHint( nId, aName, pObj )
227 , xViewController( xController )
228 {}
229
GetController() const230 const css::uno::Reference< css::frame::XController2 >& GetController() const
231 { return xViewController; }
232 };
233
234 class SfxPrintingHint final : public SfxViewEventHint
235 {
236 css::view::PrintableState mnPrintableState;
237 css::uno::Sequence < css::beans::PropertyValue > aOpts;
238 public:
SfxPrintingHint(css::view::PrintableState nState,const css::uno::Sequence<css::beans::PropertyValue> & rOpts,SfxObjectShell * pObj,const css::uno::Reference<css::frame::XController2> & xController)239 SfxPrintingHint(
240 css::view::PrintableState nState,
241 const css::uno::Sequence < css::beans::PropertyValue >& rOpts,
242 SfxObjectShell *pObj,
243 const css::uno::Reference< css::frame::XController2 >& xController )
244 : SfxViewEventHint(
245 SfxEventHintId::PrintDoc,
246 GlobalEventConfig::GetEventName( GlobalEventId::PRINTDOC ),
247 pObj,
248 xController )
249 , mnPrintableState( nState )
250 , aOpts( rOpts )
251 {}
252
SfxPrintingHint(css::view::PrintableState nState)253 SfxPrintingHint( css::view::PrintableState nState )
254 : SfxViewEventHint(
255 SfxEventHintId::PrintDoc,
256 GlobalEventConfig::GetEventName( GlobalEventId::PRINTDOC ),
257 nullptr,
258 css::uno::Reference< css::frame::XController >() )
259 , mnPrintableState( nState )
260 {}
261
GetWhich() const262 css::view::PrintableState GetWhich() const { return mnPrintableState; }
GetOptions() const263 const css::uno::Sequence < css::beans::PropertyValue >& GetOptions() const { return aOpts; }
264 };
265
266 #endif
267
268 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
269