* limitations under the License.
*/
/**
- * @file task_desktop_file.h
+ * @file task_manifest_file.h
* @author Pawel Sikorski (p.sikorski@samgsung.com)
* @version
* @brief
#include <dpl/task.h>
#include <dpl/localization/localization_utils.h>
+#include <libxml2/libxml/xmlwriter.h>
+
+#include <libxml_utils.h>
+#include <widget_install/manifest.h>
+#include <dpl/localization/localization_utils.h>
+
+#include <dpl/wrt-dao-ro/widget_dao_read_only.h>
+
+
class InstallerContext;
namespace Jobs {
namespace WidgetInstall {
-class TaskDesktopFile :
- public DPL::TaskDecl<TaskDesktopFile>
+class TaskManifestFile :
+ public DPL::TaskDecl<TaskManifestFile>
{
public:
- TaskDesktopFile(InstallerContext &inCont);
- virtual ~TaskDesktopFile();
+
+ DECLARE_EXCEPTION_TYPE(DPL::Exception, Base)
+ DECLARE_EXCEPTION_TYPE(Base, ManifestValidationError)
+ DECLARE_EXCEPTION_TYPE(Base, ManifestParsingError)
+
+ TaskManifestFile(InstallerContext &inCont);
+ virtual ~TaskManifestFile();
private:
//context data
void stepCreateExecFile();
void stepFinalize();
void stepCopyIconFiles();
+ void stepGenerateManifest();
+ void stepParseManifest();
+ void stepParseUpgradedManifest();
+
+ //For widget update
+ void stepBackupIconFiles();
+ void stepUpdateDesktopFile();
+ void stepUpdateFinalize();
+
+ void stepAbortIconFiles();
+ void stepAbortDesktopFile();
//private data
std::ostringstream desktop_name;
std::ostringstream desktop_file;
+ std::ostringstream bp_desktop_file;
+ std::list<std::string> icon_list;
+ std::ostringstream backup_dir;
+ xmlTextWriterPtr writer;
+ DPL::String manifest_name;
+ DPL::String manifest_file;
//private methods
void moveDesktopFile();
void saveWidgetVersion(std::ofstream &file);
void saveWidgetOtherInfo(std::ofstream &file);
void saveAppServiceInfo(std::ofstream &file);
+ void updateAilInfo();
+
+ void writeManifest(const DPL::String & path);
+ void validateManifest();
+ void commitManifest();
+
+ void setWidgetExecPath(UiApplication & uiApp);
+ void setWidgetName(Manifest & manifest, UiApplication & uiApp);
+ void setWidgetIcons(UiApplication & uiApp);
+ void setWidgetManifest(Manifest & manifest);
+ void setWidgetOtherInfo(UiApplication & uiApp);
+ void setAppServiceInfo(UiApplication & uiApp);
+
+ void generateWidgetName(Manifest & manifest, UiApplication &uiApp, const DPL::OptionalString& tag, DPL::OptionalString name, bool & defaultNameSaved);
+ void generateWidgetIcon(UiApplication & uiApp, const DPL::OptionalString& tag, const DPL::String& language, int iconId, const WrtDB::WidgetDAOReadOnly::WidgetIconList & list, bool & defaultIconSaved);
+
+ //for widget update
+ void backupDesktopFile();
+ void backupIconFiles();
+ void getFileList(const char* path, std::list<std::string> &list);
static void saveLocalizedKey(std::ofstream &file,
const DPL::String& key,
const DPL::String& languageTag);
DPL::String getIconTargetFilename(const DPL::String& languageTag) const;
+
+ static const char * encoding;
+
};
} //namespace WidgetInstall
} //namespace Jobs