const char kMetaDataKey[] = "metadata";
const char kMetaDataKeyKey[] = "@key";
const char kMetaDataValueKey[] = "@value";
+
+// category
+const char kCategoryKey[] = "category";
+const char kCategoryNameKey[] = "@name";
+
} // namespace tpk_app_keys
const utils::VersionNumber kLaunchModeRequiredVersion("2.4");
extern const char kMetaDataKey[];
extern const char kMetaDataKeyKey[];
extern const char kMetaDataValueKey[];
+
+// category
+extern const char kCategoryKey[];
+extern const char kCategoryNameKey[];
+
} // namespace tpk_app_keys
extern const utils::VersionNumber kLaunchModeRequiredVersion;
std::vector<MetaDataInfo> meta_data;
ApplicationIconsInfo app_icons;
std::vector<LabelInfo> label;
+ std::vector<std::string> categories;
};
template<typename T>
return true;
}
+template<typename T>
+bool ParseCategory(const parser::DictionaryValue& dict,
+ T* info, std::string*) {
+ std::string name;
+ dict.GetString(tpk_app_keys::kCategoryNameKey, &name);
+ if (!name.empty())
+ info->categories.push_back(name);
+ return true;
+}
+
template<typename T>
using ParsingFuncPtr =
std::function<bool(const parser::DictionaryValue&, T*, std::string*)>;
if (!InitializeParsingElement(app_dict, tpk_app_keys::kImageKey,
parsingFunc, uiapplicationinfo, error))
return false;
+ parsingFunc = ParseCategory<UIApplicationSingleEntry>;
+ if (!InitializeParsingElement(app_dict, tpk_app_keys::kCategoryKey,
+ parsingFunc, uiapplicationinfo, error))
+ return false;
parsingFunc = ParseBackgroundCategoryElement<UIApplicationSingleEntry>;
if (!InitializeParsingElement(app_dict, tpk_app_keys::kBackgroundCategoryKey,
parsingFunc, uiapplicationinfo, error))
if (!InitializeParsingElement(app_dict, tpk_app_keys::kImageKey,
parsingFunc, widgetapplicationinfo, error))
return false;
+ parsingFunc = ParseCategory<WidgetApplicationSingleEntry>;
+ if (!InitializeParsingElement(app_dict, tpk_app_keys::kCategoryKey,
+ parsingFunc, widgetapplicationinfo, error))
+ return false;
return true;
}