2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * @file widget_location.h
18 * @author Iwanek Tomasz (t.iwanek@smasung.com)
20 #ifndef WRT_INSTALLER_SRC_MISC_WIDGET_LOCATION_H
21 #define WRT_INSTALLER_SRC_MISC_WIDGET_LOCATION_H
25 #include <dpl/shared_ptr.h>
26 #include <dpl/wrt-dao-ro/common_dao_types.h>
27 #include <dpl/wrt-dao-ro/widget_dao_read_only.h>
30 * @brief The WidgetLocation class
32 * Object that stores locations of several files/directories according
35 * Current package layout (of installed package) is following:
37 * /opt/apps/[package_name]
38 * \_____________ /data
40 * \_____________ /bin/[id_of_installed_package]
41 * \_____________ /res/wgt/
43 * \___ [widgets_archive_content]
46 * Developer provides content of res/wgt directory (package contains that directory as root).
48 * 2) For OSP Service Hybrid App is actually a bit different:
49 * Root is OSP Service directory, WebApp content is located in [root]/res/wgt
51 * Temporary directory is directory when widget is placed at the begining
52 * of installation process. After parsing process of config.xml, destination directory is created.
56 class DirectoryDeletor
61 std::string getTempPath() const;
63 std::string m_dirpath;
67 DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
68 DECLARE_EXCEPTION_TYPE(Base, NoTemporaryPath)
70 * @brief WidgetLocation
72 * Creates useless object. Needed by DPL::Optional
76 * @brief WidgetLocation Builds paths for widget location during uninstallation
78 * Uninstallation process needs only installed package directory.
80 * @param widgetname name of widget
82 WidgetLocation(const std::string & widgetname);
84 * @brief WidgetLocation Builds paths for widget location during installation
86 * @param widgetname name of widget
87 * @param browserRequest is browser Request
88 * @param sourcePath given source path
89 * @param t declaraced type of widget if type is needed
91 * In destruction removes temporary directory
93 WidgetLocation(const std::string & widgetname, std::string sourcePath,
94 bool browserRequest = false, WrtDB::PkgType t = WrtDB::PKG_TYPE_TIZEN_WEBAPP);
98 std::string getInstallationDir() const; // /opt/apps
99 std::string getPackageInstallationDir() const; // /opt/apps/[package]
100 std::string getSourceDir() const; // /opt/apps/[package]/res/wgt
101 std::string getBinaryDir() const; // /opt/apps/[package]/bin
102 std::string getBackupDir() const; // /opt/apps/[package]/backup
103 std::string getBackupSourceDir() const; // /opt/apps/[package]/backup/res/wgt
104 std::string getBackupBinaryDir() const; // /opt/apps/[package]/backup/bin
106 bool browserRequest() const;
110 * @brief getTemporaryRootDir
111 * @return value of root for developer's provide package (root of unpacked .wgt file)
113 std::string getTemporaryPackageDir() const;
115 * @brief getTemporaryRootDir
117 * Value of this will differs according to type of installed widget.
119 * @return value of root for content in temporary directory to be copied into 'res/wgt'
121 std::string getTemporaryRootDir() const;
123 * @brief getConfigurationDir Returns rott directory for configuration requirements
125 * 1) For packed widgets it is just root of unpacked sources
126 * 2) For browser installation it is directory name of widget passed to installer
128 * @return configuration directory
130 std::string getConfigurationDir() const;
134 * @brief setIconTargetFilenameForLocale set installed ion path according to locale
135 * @param icon path of application icon
137 void setIconTargetFilenameForLocale(const std::string &icon);
139 * @brief getIconTargetFilename gets icon path suffix for locale
140 * @param languageTag language tag
141 * @return value of suffix of path
143 DPL::String getIconTargetFilename(const DPL::String& languageTag) const;
145 * @brief getIconTargetFilename gets icon full path
146 * @param languageTag language tag
147 * @return value of full path
149 std::string getInstalledIconPath() const;
152 * @brief getWidgetSourcePath return widget's source path given to installer
153 * @return value of source path
155 std::string getWidgetSource() const;
159 * @brief registerExternalFile Registers file for database registration
162 * Registered file will be stored in database and removed automatically a
166 void registerExternalLocation(const std::string & file);
168 * @brief listExternalFile list all file to be registered
170 WrtDB::ExternalLocationList listExternalLocations() const;
173 std::string m_widgetSource; // Source widget zip file/widget url
174 bool m_browser; // is browser request installation
175 std::string m_pkgname; //name of package
176 std::string m_iconPath; //installed icon path
177 WrtDB::PkgType m_type;
178 DPL::SharedPtr<DirectoryDeletor> m_temp; //directory
179 WrtDB::ExternalLocationList m_externals;
182 #endif // WRT_INSTALLER_SRC_MISC_WIDGET_LOCATION_H