1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22 #include "precompiled_sfx2.hxx"
23
24 #include "AsynchronousCall.hxx"
25
26 #include <vcl/svapp.hxx>
27
28
29 namespace sfx2 { namespace sidebar {
30
AsynchronousCall(void)31 AsynchronousCall::AsynchronousCall (void)
32 : maAction(),
33 mnCallId(0)
34 {
35 }
36
37
38
39
AsynchronousCall(const Action & rAction)40 AsynchronousCall::AsynchronousCall (const Action& rAction)
41 : maAction(rAction),
42 mnCallId(0)
43 {
44 }
45
46
47
48
~AsynchronousCall(void)49 AsynchronousCall::~AsynchronousCall (void)
50 {
51 CancelRequest();
52 }
53
54
55
56
RequestCall(const Action & rAction)57 void AsynchronousCall::RequestCall (const Action& rAction)
58 {
59 CancelRequest();
60 maAction = rAction;
61 RequestCall();
62 }
63
64
65
66
RequestCall(void)67 void AsynchronousCall::RequestCall (void)
68 {
69 if (mnCallId == 0)
70 {
71 Link aLink (LINK(this, AsynchronousCall, HandleUserCall));
72 mnCallId = Application::PostUserEvent(aLink);
73 }
74 }
75
76
77
78
CancelRequest(void)79 void AsynchronousCall::CancelRequest (void)
80 {
81 if (mnCallId != 0)
82 {
83 Application::RemoveUserEvent(mnCallId);
84 mnCallId = 0;
85 }
86 }
87
88
89
90
IMPL_LINK(AsynchronousCall,HandleUserCall,void *,EMPTYARG)91 IMPL_LINK(AsynchronousCall, HandleUserCall, void*, EMPTYARG )
92 {
93 mnCallId = 0;
94 if (maAction)
95 maAction();
96
97 return sal_True;
98 }
99
100
101 } } // end of namespace sfx2::sidebar
102
103