[Release] wrt-installer_0.1.23
[framework/web/wrt-installer.git] / src / jobs / widget_uninstall / job_widget_uninstall.h
1 /*
2  * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *    Licensed under the Apache License, Version 2.0 (the "License");
5  *    you may not use this file except in compliance with the License.
6  *    You may obtain a copy of the License at
7  *
8  *        http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *    Unless required by applicable law or agreed to in writing, software
11  *    distributed under the License is distributed on an "AS IS" BASIS,
12  *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *    See the License for the specific language governing permissions and
14  *    limitations under the License.
15  */
16 /**
17  * @file job_widet_uninstall.h
18  * @brief Uninstaller header file.
19  * @author Radoslaw Wicik r.wicik@samsung.com
20  */
21
22 #ifndef WRT_SRC_INSTALLER_CORE_JOB_WIDGET_UNINSTALL_JOB_WIDGET_UNINSTALL_H_
23 #define WRT_SRC_INSTALLER_CORE_JOB_WIDGET_UNINSTALL_JOB_WIDGET_UNINSTALL_H_
24
25 #include <string>
26 #include <job.h>
27 #include <job_base.h>
28 #include <widget_uninstall/widget_uninstaller_struct.h>
29 #include <widget_uninstall/uninstaller_context.h>
30
31 namespace Jobs {
32 namespace WidgetUninstall {
33 class JobWidgetUninstall :
34     public Job,
35     public JobProgressBase<UninstallerContext::UninstallStep,
36                            UninstallerContext::UNINSTALL_END>,
37     public JobContextBase<WidgetUninstallationStruct>   //TODO typedef
38 {
39   private:
40     UninstallerContext m_context;
41
42     //TODO move it to base class of all jobs
43     Jobs::Exceptions::Type m_exceptionCaught;
44     std::string m_exceptionMessage;
45
46   public:
47     /**
48      * @brief Uninstaller must to know which widget to uninstall.
49      *
50      * @param[in] WrtDB::TizenAppId tzAppId - widget to uninstall
51      */
52     JobWidgetUninstall(const std::string &tizenAppId,
53                        const WidgetUninstallationStruct& uninstallerStruct);
54
55     std::string getRemovedTizenId() const;
56     bool getRemoveStartedFlag() const;
57     bool getRemoveFinishedFlag() const;
58     bool getExternalWidgetFlag() const;
59
60     enum class WidgetStatus
61     {
62         Ok, NOT_INSTALLED, ABNORMAL
63     };
64
65     WidgetStatus getWidgetStatus(const std::string &appId);
66
67     void SendProgress();
68     void SendFinishedSuccess();
69     void SendFinishedFailure();
70     void SaveExceptionData(const Jobs::JobExceptionBase &e);
71 };
72 } //namespace WidgetUninstall
73 } //namespace Jobs
74
75 #endif // WRT_SRC_INSTALLER_CORE_JOB_WIDGET_UNINSTALL_JOB_WIDGET_UNINSTALL_H_