* limitations under the License.
*/
/*
- * @file task_widget_config.cpp
+ * @file task_widget_config.h
* @author Przemyslaw Dobrowolski (p.dobrowolsk@samsung.com)
* @version 1.0
* @brief Implementation file for installer task widget config
#ifndef INSTALLER_CORE_JOS_WIDGET_INSTALL_TASK_WIDGET_CONFIG_H
#define INSTALLER_CORE_JOS_WIDGET_INSTALL_TASK_WIDGET_CONFIG_H
-#include <WidgetConfigurationManager.h>
+#include <set>
+#include <list>
+
#include <dpl/task.h>
#include <dpl/task_list.h>
#include <dpl/string.h>
-#include <dpl/event/nested_loop.h>
-#include <wrt_error.h>
+#include <dpl/optional.h>
+#include <dpl/wrt-dao-ro/config_parser_data.h>
+#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
#include <dpl/wrt-dao-ro/global_config.h>
-#include <set>
-#include <dpl/popup/popup_controller.h>
-#include <dpl/popup/popup_manager.h>
-#include <dpl/popup/popup_renderer.h>
+
#include <wrt_common_types.h>
+#include <widget_install/widget_install_popup.h>
class InstallerContext;
struct PopupData
{
DPL::String widgetInfo;
- void addWidgetInfo(const DPL::String &head,
- const DPL::String &info);
+ void addWidgetInfo(const DPL::String &info);
};
} // InstalllerTaskWidgetPopupData
class TaskWidgetConfig :
public DPL::TaskDecl<TaskWidgetConfig>,
- public DPL::Popup::PopupControllerUser
+ public WidgetInstallPopup
{
private:
- enum PowderInfoButton
+ class Exception
{
- WRT_POPUP_BUTTON_OK, WRT_POPUP_BUTTON_CANCEL
+ public:
+ DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
+ DECLARE_EXCEPTION_TYPE(Base, ConfigParseFailed)
};
+ typedef std::list<std::pair<DPL::String, DPL::String> > StringPairList;
+
InstallerContext& m_installContext;
WrtDB::LocaleSet m_localeFolders;
std::set<DPL::String> m_processedIconSet;
- bool m_installCancel;
InstallerTaskWidgetPopupData::PopupData m_popupData;
void StepProcessConfigurationFile();
void ReadLocaleFolders();
void ProcessLocalizedStartFiles();
- void ProcessStartFile(const DPL::OptionalString& path,
- const DPL::OptionalString& type,
- const DPL::OptionalString& encoding = DPL::OptionalString::Null,
- bool typeForcedInConfig = false);
+ void ProcessStartFile(
+ const DPL::OptionalString& path,
+ const DPL::OptionalString& type,
+ const DPL::OptionalString& encoding =
+ DPL::OptionalString::Null,
+ bool typeForcedInConfig = false);
+ void ProcessBackgroundPageFile();
void ProcessLocalizedIcons();
void ProcessIcon(const WrtDB::ConfigParserData::Icon& icon);
- void StepProcessPowderFile();
+ void ProcessWidgetInstalledPath();
void StepVerifyFeatures();
void StepShowWidgetInfo();
- void StepPowderCancel();
- void StepFeatureCancel();
+ void StepCheckMinVersionInfo();
+
+ template <typename Ex, const char* Msg>
+ void StepCancelInstallation();
+
+ void StepDeletePopupWin();
+ void StepCancelWidgetInstallationAfterVerifyFeatures();
void StepCancelWidgetInstallation();
- void StepShowPowderPassword();
- void StepShowPowderPasswordCancel();
- void PopupCreate();
- DPL::String createPowderInfo() const;
- void AnswerCallback(const DPL::Popup::AnswerCallbackData& answer);
+ void StepCancelWidgetInstallationAfterMinVersion();
+ void createInstallPopup(PopupType type, const std::string &label);
DPL::String createAuthorWidgetInfo() const;
- void setApplicationType();
bool isFeatureAllowed(
- WrtDB::AppType appType, DPL::String featureName);
+ WrtDB::AppType appType, DPL::String featureName);
+ bool isMinVersionCompatible(
+ WrtDB::AppType appType,
+ const DPL::OptionalString &widgetVersion) const;
+ /**
+ * @brief Parses version string in format "major.minor.micro anything"
+ * Returns false if format is invalid
+ */
+ bool isTizenWebApp() const;
+ bool parseVersionString(const std::string &version, long &majorVersion,
+ long &minorVersion, long µVersion) const;
+ /**
+ * This method is used to process the config.xml of widget, get
+ * the corresponding configuration to pWidgetConfigInfo
+ *
+ * @param[in] path Specified the widget archive file path (absolute path).
+ * @return Configuration information of widget
+ */
+ void processFile(const std::string& path,
+ WrtDB::WidgetRegisterInfo &wConfig);
+
+ bool locateAndParseConfigurationFile(
+ const std::string& currentPath,
+ WrtDB::WidgetRegisterInfo&
+ pWidgetConfigInfo,
+ const std::string& baseFolder);
+ bool parseConfigurationFileBrowser(WrtDB::ConfigParserData& configInfo,
+ const std::string& _currentPath);
+ bool parseConfigurationFileWidget(WrtDB::ConfigParserData& configInfo,
+ const std::string& _currentPath);
+ bool fillWidgetConfig(WrtDB::WidgetRegisterInfo& pWidgetConfigInfo,
+ WrtDB::ConfigParserData& configInfo);
public:
TaskWidgetConfig(InstallerContext& installTaskContext);