From ce68b94feea0728ec9cd2796385c8da0048647dd Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Tue, 20 Dec 2016 18:22:12 +0900 Subject: [PATCH 01/16] Replace gdbus APIs to klay dbus APIs Change-Id: I9b9c3d1aac7a53aa556026427afdaaf3ec42a85b Signed-off-by: Sungbae Yoo --- server/manager.cpp | 91 +++++++++++++++++++++--------------------------------- 1 file changed, 35 insertions(+), 56 deletions(-) diff --git a/server/manager.cpp b/server/manager.cpp index 93c953c..dad5a1b 100644 --- a/server/manager.cpp +++ b/server/manager.cpp @@ -66,7 +66,7 @@ const std::string KRATE_SKEL_PATH = "/etc/skel"; const std::string KRATE_CREATE_HOOK_PATH = "/etc/gumd/useradd.d"; const std::string KRATE_REMOVE_HOOK_PATH = "/etc/gumd/userdel.d"; -std::string KRATE_DEFAULT_OWNER = "owner"; +std::string KRATE_DEFAULT_OWNER; std::list createdKrateList; static std::atomic isKrateForeground(false); @@ -237,42 +237,6 @@ void initializeCreatedKrateList() #define NT_ERROR_NONE NOTIFICATION_ERROR_NONE -void krateProcessCallback(GDBusConnection *connection, - const gchar *sender, const gchar *objectPath, - const gchar *interface, const gchar *signalName, - GVariant *params, gpointer userData) -{ - static runtime::User owner(KRATE_DEFAULT_OWNER); - int pid, status; - - notification_h noti = reinterpret_cast(userData); - - g_variant_get(params, "(ii)", &status, &pid); - - if (status != 5) { - return; - } - - struct stat st; - std::string proc("/proc/" + std::to_string(pid)); - if (::stat(proc.c_str(), &st) != 0) { - return; - } - - if (st.st_uid == owner.getUid() || st.st_uid == 0) { - if (isKrateForeground) { - notification_delete_for_uid(noti, owner.getUid()); - isKrateForeground = false; - } - } else { - if (!isKrateForeground) { - notification_set_text(noti, NT_CONTENT, NT_APPINFO, NULL, NT_NONE); - notification_post_for_uid(noti, owner.getUid()); - isKrateForeground = true; - } - } -} - notification_h createNotification() { notification_h noti = notification_create(NOTIFICATION_TYPE_ONGOING); @@ -309,31 +273,46 @@ notification_h createNotification() void krateProcessMonitor() { - GError *error = NULL; - GDBusConnection* connection; - connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error); - if (connection == NULL) { - ERROR("GBus Connection failed"); - g_error_free(error); - return; - } - + dbus::Connection& systemDBus = dbus::Connection::getSystem(); notification_h noti = createNotification(); if (noti == NULL) { ERROR("Failed to created notification"); return; } - g_dbus_connection_signal_subscribe(connection, - NULL, - "org.tizen.resourced.process", - "ProcStatus", - "/Org/Tizen/ResourceD/Process", - NULL, - G_DBUS_SIGNAL_FLAGS_NONE, - krateProcessCallback, - reinterpret_cast(noti), - NULL); + systemDBus.subscribeSignal("", + "org.tizen.resourced.process", + "ProcStatus", + "/Org/Tizen/ResourceD/Process", + [noti] (dbus::Variant param) { + static runtime::User owner(KRATE_DEFAULT_OWNER); + int pid, status; + struct stat st; + + param.get("(ii)", &status, &pid); + + if (status != 5) { + return; + } + + std::string proc("/proc/" + std::to_string(pid)); + if (::stat(proc.c_str(), &st) != 0) { + return; + } + + if (st.st_uid == owner.getUid() || st.st_uid == 0) { + if (isKrateForeground) { + notification_delete_for_uid(noti, owner.getUid()); + isKrateForeground = false; + } + } else { + if (!isKrateForeground) { + notification_set_text(noti, NT_CONTENT, NT_APPINFO, NULL, NT_NONE); + notification_post_for_uid(noti, owner.getUid()); + isKrateForeground = true; + } + } + }); } void notiProxyInsert(const runtime::User& owner, const runtime::User& user, int privId, notification_h noti) -- 2.7.4 From f7713717a03dba7ac8260b0b12ab2d083b9835a3 Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Fri, 30 Dec 2016 14:55:30 +0900 Subject: [PATCH 02/16] Set turning off the krate indicator icon to default Change-Id: I1f3593f18dbf5e6a8f8817e3d0eca09cc3aaaf63 Signed-off-by: Sungbae Yoo --- server/manager.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/server/manager.cpp b/server/manager.cpp index dad5a1b..d98a688 100644 --- a/server/manager.cpp +++ b/server/manager.cpp @@ -223,6 +223,8 @@ void initializeCreatedKrateList() g_object_unref(service); } +#ifdef INDICATOR_ENABLE + #define NT_TITLE NOTIFICATION_TEXT_TYPE_TITLE #define NT_CONTENT NOTIFICATION_TEXT_TYPE_CONTENT #define NT_ICON NOTIFICATION_IMAGE_TYPE_ICON @@ -314,6 +316,7 @@ void krateProcessMonitor() } }); } +#endif void notiProxyInsert(const runtime::User& owner, const runtime::User& user, int privId, notification_h noti) { @@ -502,7 +505,9 @@ Manager::Manager(KrateControlContext& ctx) : PackageManager& packageManager = PackageManager::instance(); packageManager.setEventCallback(packageEventHandler, this); +#ifdef INDICATOR_ENABLE krateProcessMonitor(); +#endif initializeCreatedKrateList(); for (std::string& name : createdKrateList) { -- 2.7.4 From 9f6835d06eda68f54329fde7ab3d18585627b67c Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Wed, 8 Feb 2017 14:34:20 +0900 Subject: [PATCH 03/16] Change the type from long to size_t for getting size Change-Id: I2de1950a02073bc48d529b4572b37166cd6a7546 Signed-off-by: Sungbae Yoo --- tools/apps/setup-wizard/src/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apps/setup-wizard/src/util.c b/tools/apps/setup-wizard/src/util.c index e2d094a..4813f33 100644 --- a/tools/apps/setup-wizard/src/util.c +++ b/tools/apps/setup-wizard/src/util.c @@ -27,7 +27,7 @@ static char *__get_krate_metadata(void) char *res_path = NULL; char *metadata = NULL; char metadata_path[PATH_MAX] = "\0"; - long fsize = 0; + size_t fsize = 0; int ret = -1; res_path = app_get_resource_path(); -- 2.7.4 From fbb515707cf61589de618fbaa9d789ea77b5ae54 Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Mon, 13 Feb 2017 11:20:03 +0900 Subject: [PATCH 04/16] Apply the changes of pkgmgr_info internal Change-Id: I7354d1091b6382d68cd67f3528ff85e69fff13bb Signed-off-by: Sungbae Yoo --- lib/krate/app-info-internal.h | 63 +++++++++++++++++---------------- lib/krate/package-info-internal.h | 74 ++++++++++++++++++++------------------- 2 files changed, 71 insertions(+), 66 deletions(-) diff --git a/lib/krate/app-info-internal.h b/lib/krate/app-info-internal.h index 96f1a7a..8ce8798 100644 --- a/lib/krate/app-info-internal.h +++ b/lib/krate/app-info-internal.h @@ -36,68 +36,71 @@ typedef struct label_x { char *lang; } label_x; -// pkgmgr-info : include/pkgmgrinfo_basic.h typedef struct application_x { - char *appid; /*attr*/ - char *exec; /*attr*/ - char *nodisplay; /*attr, default: "false"*/ + char *appid; /*attr*/ + char *exec; /*attr*/ + char *nodisplay; /*attr, default: "false"*/ char *multiple; /*attr, default: "false"*/ - char *taskmanage; /*attr, default: "true"*/ - char *enabled; /*attr, default: "true"*/ - char *type; /*attr*/ - char *categories; /*attr*/ + char *taskmanage; /*attr, default: "true"*/ + char *type; /*attr*/ + char *categories; /*attr*/ char *extraid; /*attr*/ char *hwacceleration; /*attr, default: "default"*/ - char *screenreader; /*attr, default: "use-system-setting"*/ + char *screenreader; /*attr, default: "use-system-setting"*/ char *mainapp; /*attr, default: "false"*/ char *package; /*set from package_x*/ - char *recentimage; /*attr, default: "false"*/ + char *recentimage; /*attr, default: "false"*/ char *launchcondition; /*attr, default: "false"*/ char *indicatordisplay; /*attr, default: "true"*/ - char *portraitimg; /*attr*/ - char *landscapeimg; /*attr*/ + char *portraitimg; /*attr*/ + char *landscapeimg; /*attr*/ char *effectimage_type; /*attr, default: "image"*/ - char *guestmode_visibility; /*attr, default: "true"*/ - char *component; /*no xml part*/ + char *guestmode_visibility; /*attr, default: "true"*/ + char *component; /*no xml part*/ char *permission_type; /*attr, default: "normal"*/ char *component_type; /*attr, default: "uiapp"*/ char *preload; /*no xml part*/ char *submode; /*attr, default: "false"*/ char *submode_mainid; /*attr, default: "false"*/ - char *process_pool; /*attr, default: "false"*/ + char *process_pool; /*attr, default: "false"*/ char *installed_storage; - char *autorestart; /*attr, default: "false"*/ + char *autorestart; /*attr, default: "false"*/ char *onboot; /*attr, default: "false"*/ char *support_disable; /*set from package_x*/ - char *ui_gadget; /*attr, default: "false"*/ - char *launch_mode; /*attr, default: "single"*/ - char *ambient_support; /*attr, default: "false"*/ - char *alias_appid; /*attr*/ + char *ui_gadget; /*attr, default: "false"*/ + char *launch_mode; /*attr, default: "single"*/ + char *support_ambient; /*attr, default: "false"*/ + char *alias_appid; /*attr*/ char *effective_appid; /*attr*/ - char *package_type; /*set from package_x*/ + char *package_type; /*set from package_x*/ char *tep_name; /*set from package_x*/ char *zip_mount_file; /*set from package_x*/ - char *root_path; /*set from package_x*/ - char *api_version; /*set from package_x*/ + char *root_path; /*set from package_x*/ + char *api_version; /*set from package_x*/ char *for_all_users; /**< Flag that indicates if the package is available for everyone or for current user only, no xml part*/ char *is_disabled; /**< Flag that indicates if the application is disabled or not, no xml part*/ char *splash_screen_display; /*attr, default: "true"*/ + char *external_path; /**< external storage path if exists, no xml part*/ + char *package_system; /*set from package_x*/ + char *removable; /*set from package_x*/ + char *package_installed_time; /*installed time after finishing of installation*/ + char *support_mode; /*attr*/ GList *label; /*element*/ - GList *icon; /*element*/ + GList *icon; /*element*/ GList *image; /*element*/ GList *category; /*element*/ - GList *metadata; /*element*/ - GList *permission; /*element*/ - GList *launchconditions; /*element*/ - GList *notification; /*element*/ - GList *datashare; /*element*/ + GList *metadata; /*element*/ + GList *permission; /*element*/ + GList *launchconditions; /*element*/ + GList *notification; /*element*/ + GList *datashare; /*element*/ GList *datacontrol; /*element*/ GList *background_category; /*element*/ GList *appcontrol; /*element*/ GList *splashscreens; /*element*/ } application_x; -// pkgmgr-info : include/pkgmgrinfo_private.h +// pkgmgr-info : src/pkgmgrinfo_private.h typedef struct _pkgmgr_appinfo_x { const char *package; char *locale; diff --git a/lib/krate/package-info-internal.h b/lib/krate/package-info-internal.h index d84fa79..dcf4edf 100644 --- a/lib/krate/package-info-internal.h +++ b/lib/krate/package-info-internal.h @@ -53,44 +53,46 @@ typedef struct author_x { // pkgmgr-info : include/pkgmgrinfo_basic.h typedef struct package_x { - char *for_all_users; /**< Flag that indicates if the package is available for everyone or for current user only, no xml part*/ - char *package; /**< package name, attr*/ - char *version; /**< package version, attr*/ - char *installlocation; /**< package install location, attr, default: "internal-only"*/ - char *ns; /** Date: Thu, 13 Apr 2017 17:13:14 +0900 Subject: [PATCH 05/16] Refactor ecryptfs structures to C++ style Change-Id: I653ccee054600235117b424ab7ec66ed06ab4599 Signed-off-by: Sungbae Yoo --- volume/ecryptfs.h | 139 ++++++++++++++++++++++++------------------------- volume/key-generator.h | 1 - volume/main.cpp | 49 +++++++---------- 3 files changed, 87 insertions(+), 102 deletions(-) diff --git a/volume/ecryptfs.h b/volume/ecryptfs.h index 9962e34..3bfbb29 100755 --- a/volume/ecryptfs.h +++ b/volume/ecryptfs.h @@ -25,83 +25,80 @@ #define ECRYPTFS_MINOR_VERSION 0x04 #define ECRYPTFS_VERSION ((ECRYPTFS_MAJOR_VERSION << 8) | ECRYPTFS_MINOR_VERSION) -#define ECRYPTFS_MAX_PKI_NAME_BYTES 16 -#define ECRYPTFS_SESSION_KEY_ENCRYPTION_KEY_SET 0x02 - -#define PGP_DIGEST_ALGO_SHA512 10 - -#define ECRYPTFS_FEK_CIPHER "aes" -#define ECRYPTFS_MOUNT_DEVICE "ecryptfs" - -#define ECRYPTFS_MAX_OPTIONS 1024 - -#define ECRYPTFS_MAX_SIG_SIZE 8 -#define ECRYPTFS_MAX_SIG_HEX (ECRYPTFS_MAX_SIG_SIZE*2) -#define ECRYPTFS_PASSWORD_SIG_SIZE ECRYPTFS_MAX_SIG_HEX - -#define ECRYPTFS_MAX_KEY_SIZE 32 -#define ECRYPTFS_MAX_KEY_HEX (ECRYPTFS_MAX_KEY_SIZE * 2) - -#define ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES 512 -#define ECRYPTFS_MAX_PKI_NAME_BYTES 16 - -#define ECRYPTFS_MAX_SALT_SIZE 4 -#define ECRYPTFS_MAX_SALT_HEX 8 - -#define ECRYPTFS_PWD_PAYLOAD_TYPE 0 // password - -struct ecryptfs_session_key { -#define ECRYPTFS_USERSPACE_SHOULD_TRY_TO_DECRYPT 0x00000001 -#define ECRYPTFS_USERSPACE_SHOULD_TRY_TO_ENCRYPT 0x00000002 -#define ECRYPTFS_CONTAINS_DECRYPTED_KEY 0x00000004 -#define ECRYPTFS_CONTAINS_ENCRYPTED_KEY 0x00000008 - int32_t flags; - int32_t encrypted_key_size; - int32_t decrypted_key_size; - u_int8_t encrypted_key[ECRYPTFS_MAX_ENCRYPTED_KEY_BYTES]; - u_int8_t decrypted_key[ECRYPTFS_MAX_KEY_HEX]; +#define ECRYPTFS_SALT_SIZE 8 +#define ECRYPTFS_SIGNATURE_SIZE 16 +#define ECRYPTFS_MAX_KEY_SIZE 64 +#define ECRYPTFS_MAX_KEY_MOD_NAME_SIZE 16 +#define ECRYPTFS_MAX_ENCRYPTED_KEY_SIZE 512 + +struct EcryptfsPassword { + enum Flag { + PersistentPassword = 0x01, + SessionKeyEncryptionKeySet = 0x02 + }; + + int32_t passwordSize; + int32_t hashAlgorithm; + int32_t hashIterations; + int32_t sessionKeyEncryptionKeySize; + uint32_t flags; + uint8_t sessionKeyEncryptionKey[ECRYPTFS_MAX_KEY_SIZE]; + uint8_t signature[ECRYPTFS_SIGNATURE_SIZE + 1]; + uint8_t salt[ECRYPTFS_SALT_SIZE]; }; -struct ecryptfs_password { - int32_t password_bytes; - int32_t hash_algo; - int32_t hash_iterations; - int32_t session_key_encryption_key_bytes; -#define ECRYPTFS_PERSISTENT_PASSWORD 0x01 -#define ECRYPTFS_SESSION_KEY_ENCRYPTION_KEY_SET 0x02 - u_int32_t flags; - /* Iterated-hash concatenation of salt and passphrase */ - u_int8_t session_key_encryption_key[ECRYPTFS_MAX_KEY_HEX]; - u_int8_t signature[ECRYPTFS_PASSWORD_SIG_SIZE + 1]; - /* Always in expanded hex */ - u_int8_t salt[ECRYPTFS_MAX_SALT_SIZE]; +struct EcryptfsPrivateKey { + uint32_t keySize; + uint32_t dataSize; + uint8_t signature[ECRYPTFS_SIGNATURE_SIZE + 1]; + char keyModAlias[ECRYPTFS_MAX_KEY_MOD_NAME_SIZE + 1]; + uint8_t data[]; }; -enum ecryptfs_token_types { - ECRYPTFS_PASSWORD, - ECRYPTFS_PRIVATE_KEY -}; +struct EcryptfsSessionKey { + enum Flag { + UserspaceShouldTryToDecrypt = 0x00000001, + UserspaceShouldTryToEncrypt = 0x00000002, + ContainsDecryptedKey = 0x00000004, + ContainsEncryptedKey = 0x00000008 + }; -struct ecryptfs_private_key { - u_int32_t key_size; - u_int32_t data_len; - u_int8_t signature[ECRYPTFS_PASSWORD_SIG_SIZE + 1]; - char pki_type[ECRYPTFS_MAX_PKI_NAME_BYTES + 1]; - u_int8_t data[]; -}; - -struct ecryptfs_auth_tok { - u_int16_t version; /* 8-bit major and 8-bit minor */ - u_int16_t token_type; -#define ECRYPTFS_ENCRYPT_ONLY 0x00000001 - u_int32_t flags; - struct ecryptfs_session_key session_key; - u_int8_t reserved[32]; + int32_t flags; + int32_t encryptedKeySize; + int32_t decryptedKeySize; + uint8_t encryptedKey[ECRYPTFS_MAX_ENCRYPTED_KEY_SIZE]; + uint8_t decryptedKey[ECRYPTFS_MAX_KEY_SIZE]; + + EcryptfsSessionKey() + : flags(0), encryptedKeySize(0), decryptedKeySize(0), + encryptedKey{0, }, decryptedKey{0, } + {}; +} __attribute__((packed)); + +struct EcryptfsPayload { + enum Type { + PasswordToken, + PrivateKeyToken + }; + enum Flag { + EncryptOnly + }; + + uint16_t version; + uint16_t type; + uint32_t flags; + EcryptfsSessionKey sessionKey; + uint8_t reserved[32]; union { - struct ecryptfs_password password; - struct ecryptfs_private_key private_key; + EcryptfsPassword password; + EcryptfsPrivateKey privateKey; } token; -} __attribute__((packed)); -typedef struct ecryptfs_auth_tok ecryptfs_payload; + EcryptfsPayload(Type type) + : version(ECRYPTFS_VERSION), type(type), flags(0), reserved{0, } + { + ::memset(&token, 0, sizeof(token)); + }; +} __attribute__((packed)); + #endif diff --git a/volume/key-generator.h b/volume/key-generator.h index d6bf6f8..e9ef6cd 100755 --- a/volume/key-generator.h +++ b/volume/key-generator.h @@ -38,7 +38,6 @@ public: static std::string wrapKey(const std::string& decrypted, const std::string& salt, int len); static std::string generateKey(int len); - static void generateToken(char* key, ecryptfs_payload** outToken); private: static void sha1Init(SHA1_CTX* context); diff --git a/volume/main.cpp b/volume/main.cpp index d277009..a05625e 100755 --- a/volume/main.cpp +++ b/volume/main.cpp @@ -44,7 +44,7 @@ int generateKey(const std::string& keyName) try { std::string pass = KeyGenerator::generateKey(ECRYPTFS_MAX_KEY_SIZE); - std::string salt = KeyGenerator::generateKey(ECRYPTFS_MAX_SALT_SIZE); + std::string salt = KeyGenerator::generateKey(ECRYPTFS_SALT_SIZE); std::string wrappedKey = KeyGenerator::wrapKey(pass, salt, ECRYPTFS_MAX_KEY_SIZE); KeyManager::addKey(keyName, wrappedKey); @@ -56,38 +56,26 @@ int generateKey(const std::string& keyName) return 0; } -ecryptfs_payload* generateToken(char* key) +EcryptfsPayload* generateToken(char* key) { - struct ecryptfs_password* tokenKey; + auto *payload = new EcryptfsPayload(EcryptfsPayload::Type::PasswordToken); + payload->token.password.flags = EcryptfsPassword::Flag:: + SessionKeyEncryptionKeySet; + payload->token.password.sessionKeyEncryptionKeySize = ECRYPTFS_MAX_KEY_SIZE; + ::memcpy(payload->token.password.sessionKeyEncryptionKey, key, + payload->token.password.sessionKeyEncryptionKeySize); - unsigned char keyBuffer[ECRYPTFS_MAX_KEY_SIZE+1]; + ::memcpy((char *)payload->token.password.signature, + key, ECRYPTFS_SIGNATURE_SIZE); - ecryptfs_payload* authToken = new ecryptfs_payload(); - if (authToken == NULL) { - return NULL; - } - - ::memset(authToken, 0, sizeof(ecryptfs_payload)); - ::strncpy((char*)keyBuffer, key, ECRYPTFS_MAX_KEY_SIZE); - keyBuffer[ECRYPTFS_MAX_KEY_SIZE] = '\0'; - - tokenKey = &authToken->token.password; - - authToken->version = ECRYPTFS_VERSION; - authToken->token_type = ECRYPTFS_PWD_PAYLOAD_TYPE; - tokenKey->session_key_encryption_key_bytes = ECRYPTFS_MAX_KEY_SIZE; - tokenKey->flags = ECRYPTFS_SESSION_KEY_ENCRYPTION_KEY_SET; - ::memcpy(tokenKey->session_key_encryption_key, keyBuffer, ECRYPTFS_MAX_KEY_SIZE); - ::memcpy(tokenKey->signature, keyBuffer, ECRYPTFS_MAX_SIG_HEX); - - return authToken; + return payload; } int mountEcryptfs(const std::string& src, const std::string& keyName) { int rc; char ecryptfsOpts[1024]; - ecryptfs_payload* authTok = NULL; + EcryptfsPayload* payload = NULL; std::string key; try { @@ -102,12 +90,12 @@ int mountEcryptfs(const std::string& src, const std::string& keyName) return -1; } - if ((authTok = generateToken((char*)key.c_str())) == NULL) { + if ((payload = generateToken((char*)key.c_str())) == NULL) { ERROR("Failed to generate Token"); return -1; } - const char* signature = (const char*)authTok->token.password.signature; + const char* signature = (const char*)payload->token.password.signature; rc = KernelKeyRing::search(KEY_SPEC_USER_KEYRING, "user", signature, @@ -116,18 +104,19 @@ int mountEcryptfs(const std::string& src, const std::string& keyName) if (rc == -1) { if (errno != ENOKEY) { ERROR("Failed to find key"); - delete authTok; + delete payload; return -1; } rc = KernelKeyRing::add("user", signature, - (void*)authTok, - sizeof(ecryptfs_payload), + (void*)payload, + sizeof(*payload), KEY_SPEC_USER_KEYRING); if (rc == -1) { ERROR("Failed to add key"); + delete payload; return -1; } } @@ -140,7 +129,7 @@ int mountEcryptfs(const std::string& src, const std::string& keyName) "smackfsroot=*,smackfsdef=*", ECRYPTFS_MAX_KEY_SIZE, signature); - delete authTok; + delete payload; rc = ::mount(src.c_str(), src.c_str(), "ecryptfs", MS_NODEV, ecryptfsOpts); if (rc != 0) { -- 2.7.4 From 68da83cd9b8c7782309e1ca07c523726b3969628 Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Wed, 10 May 2017 17:01:45 +0900 Subject: [PATCH 06/16] Fix to call cleanup of keyguard after container deletion Change-Id: I910ce44d7c8ce963e1e6fd90fa2161fbba3bc503 Signed-off-by: Sungbae Yoo --- tools/apps/setup-wizard/src/main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/apps/setup-wizard/src/main.c b/tools/apps/setup-wizard/src/main.c index 9775270..afa683b 100644 --- a/tools/apps/setup-wizard/src/main.c +++ b/tools/apps/setup-wizard/src/main.c @@ -53,6 +53,13 @@ static void __krate_request_done(const char *from, const char *info, void *user_ app_control_set_app_id(app_control, KASKIT_PACKAGE); __launch_krate_app(ad->krate_manager, ad->krate_name, app_control); app_control_destroy(app_control); + } else if (!strcmp(ad->mode, "remove")) { + app_control_create(&app_control); + app_control_set_app_id(app_control, KEYGUARD_PACKAGE); + snprintf(uri, sizeof(uri), "krate://cleanup/%s", ad->krate_name); + app_control_set_uri(app_control, uri); + app_control_send_launch_request(app_control, NULL, NULL); + app_control_destroy(app_control); } ad->request_done = true; -- 2.7.4 From 5211681a2c0351304c0ee67946ee16c4d0bc4d10 Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Wed, 10 May 2017 17:24:25 +0900 Subject: [PATCH 07/16] Add CLONE_NEWCGROUP in attach of krate-admin-cli Change-Id: I29d674025f60d1fa10504da2cacab9be4458f607 Signed-off-by: Sungbae Yoo --- tools/cli/krate-admin-cli.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/cli/krate-admin-cli.cpp b/tools/cli/krate-admin-cli.cpp index bfd4790..39e65ee 100644 --- a/tools/cli/krate-admin-cli.cpp +++ b/tools/cli/krate-admin-cli.cpp @@ -60,7 +60,10 @@ std::vector namespaces = { {"uts", CLONE_NEWUTS}, {"user", CLONE_NEWUSER}, {"ipc", CLONE_NEWIPC}, - {"pid", CLONE_NEWPID} + {"pid", CLONE_NEWPID}, +#ifdef CLONE_NEWCGROUP + {"cgroup", CLONE_NEWCGROUP}, +#endif }; extern char** environ; -- 2.7.4 From 70c2f2e543221bb653dae3ab1ae409ab2dc9deee Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Wed, 10 May 2017 17:50:31 +0900 Subject: [PATCH 08/16] Add create/destroy in krate-admin-cli Change-Id: Ia088a4402b4814a9f4bc11ef65e9fb1ff2b4c181 Signed-off-by: Sungbae Yoo --- tools/cli/krate-admin-cli.cpp | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/tools/cli/krate-admin-cli.cpp b/tools/cli/krate-admin-cli.cpp index 39e65ee..65d0161 100644 --- a/tools/cli/krate-admin-cli.cpp +++ b/tools/cli/krate-admin-cli.cpp @@ -49,7 +49,7 @@ #include "session.h" - +#define DEFAULT_SETUP_WIZARD "org.tizen.krate-setup-wizard" #define DEFAULT_SHELL "/bin/bash" typedef std::pair NamespacePair; @@ -74,6 +74,8 @@ static inline void usage(const std::string name) << "Run a program in the krate" << std::endl << std::endl << "Options :" << std::endl + << " -c, --create=name create a new krate by given name" << std::endl + << " -d, --destroy=name destroy the krate" << std::endl << " -a, --attach=krate execute command in the krate" << std::endl << " -p, --pkginfo=krate show all packages in the krate" << std::endl << " -q, --appinfo=krate show all applications in the krate" << std::endl @@ -177,6 +179,21 @@ void launchProcess(runtime::User& user, char** args) ::exit(EXIT_FAILURE); } +int showDefaultSetupWizard(const std::string& mode, const std::string& name) +{ + app_control_h app_control; + app_control_create(&app_control); + app_control_set_app_id(app_control, DEFAULT_SETUP_WIZARD); + app_control_add_extra_data(app_control, "mode", mode.c_str()); + app_control_add_extra_data(app_control, "krate", name.c_str()); + app_control_send_launch_request(app_control, NULL, NULL); + app_control_destroy(app_control); + + std::cout << "Please do next steps on GUI" << std::endl; + + return 0; +} + int attachToKrate(const std::string& name, char* args[]) { try { @@ -496,10 +513,12 @@ int main(int argc, char* argv[]) int opt = 0, index, ret = 0; struct option options[] = { + {"create", required_argument, 0, 'c'}, + {"destroy", required_argument, 0, 'd'}, {"attach", required_argument, 0, 'a'}, - {"instance", no_argument, 0, 'l'}, + {"instance", no_argument, 0, 'i'}, {"list", no_argument, 0, 'l'}, - {"state", required_argument, 0, 'l'}, + {"state", required_argument, 0, 's'}, {"pkginfo", required_argument, 0, 'p'}, {"appinfo", required_argument, 0, 'q'}, {"krate-monitor", no_argument, 0, 'm'}, @@ -513,8 +532,14 @@ int main(int argc, char* argv[]) return EXIT_SUCCESS; } - while ((opt = getopt_long(argc, argv, "a:p:q:mn:s:ilh", options, &index)) != -1) { + while ((opt = getopt_long(argc, argv, "c:d:a:p:q:mn:s:ilh", options, &index)) != -1) { switch (opt) { + case 'c': + ret = showDefaultSetupWizard("create", optarg); + break; + case 'd': + ret = showDefaultSetupWizard("remove", optarg); + break; case 'a': ret = attachToKrate(optarg, optind >= argc ? NULL : argv + optind); break; -- 2.7.4 From 896f58ad576a5fd330db15fb7b835a30e578b58f Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Fri, 19 May 2017 16:59:56 +0900 Subject: [PATCH 09/16] Move a library/tools to libkrate git Change-Id: I7e50f453bbff895caee2b0b963fe30159ea27491 Signed-off-by: Sungbae Yoo --- CMakeLists.txt | 4 - lib/CMakeLists.txt | 59 --- lib/app-proxy.cpp | 105 ---- lib/client.cpp | 80 --- lib/client.h | 59 --- lib/context.h | 24 - lib/krate.pc.in | 12 - lib/krate/app-info-internal.h | 118 ----- lib/krate/app-proxy.cpp | 273 ---------- lib/krate/app-proxy.h | 235 --------- lib/krate/debug.h | 26 - lib/krate/krate.cpp | 156 ------ lib/krate/krate.h | 309 ----------- lib/krate/package-info-internal.h | 108 ---- lib/krate/package-proxy.cpp | 338 ------------ lib/krate/package-proxy.h | 254 --------- lib/manager.cpp | 94 ---- lib/package-proxy.cpp | 63 --- module/CMakeLists.txt | 2 +- module/{ => common}/session.cpp | 0 module/{ => common}/session.h | 0 module/krate.cpp | 2 +- packaging/krate.spec | 119 +---- tools/CMakeLists.txt | 21 - tools/apps/CMakeLists.txt | 34 -- tools/apps/kaskit/CMakeLists.txt | 40 -- tools/apps/kaskit/include/conf.h | 39 -- tools/apps/kaskit/include/kaskit.h | 63 --- tools/apps/kaskit/include/widget.h | 31 -- tools/apps/kaskit/org.tizen.kaskit.manifest | 5 - tools/apps/kaskit/org.tizen.kaskit.xml | 13 - tools/apps/kaskit/res/edje/app_icon.edc | 312 ----------- tools/apps/kaskit/res/edje/launcher.edc | 90 ---- tools/apps/kaskit/res/edje/org.tizen.kaskit.edc | 22 - tools/apps/kaskit/res/images/app_press_117.png | Bin 1998 -> 0 bytes tools/apps/kaskit/res/images/btn_delete_nor.png | Bin 3289 -> 0 bytes tools/apps/kaskit/res/images/btn_delete_press.png | Bin 3267 -> 0 bytes tools/apps/kaskit/res/images/core_check_bg.png | Bin 419 -> 0 bytes .../kaskit/res/images/core_check_bg_stroke.png | Bin 427 -> 0 bytes tools/apps/kaskit/res/images/core_check_icon.png | Bin 605 -> 0 bytes tools/apps/kaskit/res/images/default_app_icon.png | Bin 15273 -> 0 bytes tools/apps/kaskit/res/images/folder_appicon_bg.png | Bin 6730 -> 0 bytes .../kaskit/res/images/icon_badge_container.png | Bin 957 -> 0 bytes tools/apps/kaskit/res/images/popup_bg.png | Bin 559 -> 0 bytes tools/apps/kaskit/res/images/sub_badge.png | Bin 3761 -> 0 bytes tools/apps/kaskit/src/main.c | 278 ---------- tools/apps/kaskit/src/ui.c | 301 ----------- tools/apps/kaskit/src/widget.c | 69 --- tools/apps/keyguard/CMakeLists.txt | 40 -- tools/apps/keyguard/include/keyguard.h | 55 -- tools/apps/keyguard/include/widget.h | 33 -- tools/apps/keyguard/org.tizen.keyguard.manifest | 5 - tools/apps/keyguard/org.tizen.keyguard.xml | 11 - tools/apps/keyguard/res/edje/keyguard.edc | 170 ------ .../apps/keyguard/res/edje/org.tizen.keyguard.edc | 21 - tools/apps/keyguard/res/images/icon.png | Bin 57662 -> 0 bytes tools/apps/keyguard/src/main.c | 213 -------- tools/apps/keyguard/src/ui.c | 127 ----- tools/apps/keyguard/src/widget.c | 168 ------ tools/apps/setup-wizard/CMakeLists.txt | 42 -- tools/apps/setup-wizard/include/krate-setup.h | 92 ---- tools/apps/setup-wizard/include/widget.h | 39 -- .../org.tizen.krate-setup-wizard.manifest | 5 - .../setup-wizard/org.tizen.krate-setup-wizard.xml | 11 - tools/apps/setup-wizard/po/CMakeLists.txt | 23 - tools/apps/setup-wizard/po/ar.po | 78 --- tools/apps/setup-wizard/po/az.po | 78 --- tools/apps/setup-wizard/po/bg.po | 78 --- tools/apps/setup-wizard/po/ca.po | 78 --- tools/apps/setup-wizard/po/cs.po | 78 --- tools/apps/setup-wizard/po/da.po | 78 --- tools/apps/setup-wizard/po/de.po | 78 --- tools/apps/setup-wizard/po/el_GR.po | 78 --- tools/apps/setup-wizard/po/en.po | 78 --- tools/apps/setup-wizard/po/en_PH.po | 78 --- tools/apps/setup-wizard/po/en_US.po | 78 --- tools/apps/setup-wizard/po/es_ES.po | 78 --- tools/apps/setup-wizard/po/es_US.po | 78 --- tools/apps/setup-wizard/po/et.po | 78 --- tools/apps/setup-wizard/po/eu.po | 78 --- tools/apps/setup-wizard/po/fi.po | 78 --- tools/apps/setup-wizard/po/fr.po | 78 --- tools/apps/setup-wizard/po/fr_CA.po | 78 --- tools/apps/setup-wizard/po/ga.po | 78 --- tools/apps/setup-wizard/po/gl.po | 78 --- tools/apps/setup-wizard/po/hi.po | 78 --- tools/apps/setup-wizard/po/hr.po | 78 --- tools/apps/setup-wizard/po/hu.po | 78 --- tools/apps/setup-wizard/po/hy.po | 78 --- tools/apps/setup-wizard/po/is.po | 78 --- tools/apps/setup-wizard/po/it_IT.po | 78 --- tools/apps/setup-wizard/po/ja_JP.po | 78 --- tools/apps/setup-wizard/po/ka.po | 78 --- tools/apps/setup-wizard/po/kk.po | 78 --- tools/apps/setup-wizard/po/ko_KR.po | 78 --- tools/apps/setup-wizard/po/lt.po | 78 --- tools/apps/setup-wizard/po/lv.po | 78 --- tools/apps/setup-wizard/po/mk.po | 78 --- tools/apps/setup-wizard/po/nb.po | 78 --- tools/apps/setup-wizard/po/nl.po | 78 --- tools/apps/setup-wizard/po/pl.po | 78 --- tools/apps/setup-wizard/po/pt_BR.po | 78 --- tools/apps/setup-wizard/po/pt_PT.po | 78 --- tools/apps/setup-wizard/po/ro.po | 78 --- tools/apps/setup-wizard/po/ru_RU.po | 78 --- tools/apps/setup-wizard/po/sk.po | 78 --- tools/apps/setup-wizard/po/sl.po | 78 --- tools/apps/setup-wizard/po/sr.po | 78 --- tools/apps/setup-wizard/po/sv.po | 78 --- tools/apps/setup-wizard/po/tr_TR.po | 78 --- tools/apps/setup-wizard/po/uk.po | 78 --- tools/apps/setup-wizard/po/uz.po | 78 --- tools/apps/setup-wizard/po/zh_CN.po | 78 --- tools/apps/setup-wizard/po/zh_HK.po | 78 --- tools/apps/setup-wizard/po/zh_TW.po | 78 --- tools/apps/setup-wizard/res/data/KrateManifest.xml | 10 - tools/apps/setup-wizard/res/edje/layout.edc | 86 --- .../res/edje/org.tizen.krate-setup-wizard.edc | 24 - tools/apps/setup-wizard/res/edje/security.edc | 79 --- tools/apps/setup-wizard/res/edje/setup.edc | 178 ------- tools/apps/setup-wizard/res/edje/welcome.edc | 138 ----- tools/apps/setup-wizard/res/images/icon.png | Bin 16736 -> 0 bytes tools/apps/setup-wizard/res/images/theme_bg.png | Bin 5302 -> 0 bytes tools/apps/setup-wizard/src/main.c | 200 ------- tools/apps/setup-wizard/src/security.c | 335 ------------ tools/apps/setup-wizard/src/ui.c | 266 ---------- tools/apps/setup-wizard/src/util.c | 185 ------- tools/apps/setup-wizard/src/widget.c | 175 ------- tools/cli/CMakeLists.txt | 42 -- tools/cli/krate-admin-cli.cpp | 577 --------------------- 130 files changed, 4 insertions(+), 11004 deletions(-) delete mode 100755 lib/CMakeLists.txt delete mode 100644 lib/app-proxy.cpp delete mode 100644 lib/client.cpp delete mode 100644 lib/client.h delete mode 100644 lib/context.h delete mode 100644 lib/krate.pc.in delete mode 100644 lib/krate/app-info-internal.h delete mode 100644 lib/krate/app-proxy.cpp delete mode 100644 lib/krate/app-proxy.h delete mode 100644 lib/krate/debug.h delete mode 100644 lib/krate/krate.cpp delete mode 100644 lib/krate/krate.h delete mode 100644 lib/krate/package-info-internal.h delete mode 100644 lib/krate/package-proxy.cpp delete mode 100644 lib/krate/package-proxy.h delete mode 100644 lib/manager.cpp delete mode 100644 lib/package-proxy.cpp rename module/{ => common}/session.cpp (100%) rename module/{ => common}/session.h (100%) delete mode 100755 tools/CMakeLists.txt delete mode 100755 tools/apps/CMakeLists.txt delete mode 100644 tools/apps/kaskit/CMakeLists.txt delete mode 100644 tools/apps/kaskit/include/conf.h delete mode 100644 tools/apps/kaskit/include/kaskit.h delete mode 100644 tools/apps/kaskit/include/widget.h delete mode 100644 tools/apps/kaskit/org.tizen.kaskit.manifest delete mode 100644 tools/apps/kaskit/org.tizen.kaskit.xml delete mode 100644 tools/apps/kaskit/res/edje/app_icon.edc delete mode 100644 tools/apps/kaskit/res/edje/launcher.edc delete mode 100644 tools/apps/kaskit/res/edje/org.tizen.kaskit.edc delete mode 100644 tools/apps/kaskit/res/images/app_press_117.png delete mode 100644 tools/apps/kaskit/res/images/btn_delete_nor.png delete mode 100644 tools/apps/kaskit/res/images/btn_delete_press.png delete mode 100644 tools/apps/kaskit/res/images/core_check_bg.png delete mode 100644 tools/apps/kaskit/res/images/core_check_bg_stroke.png delete mode 100644 tools/apps/kaskit/res/images/core_check_icon.png delete mode 100644 tools/apps/kaskit/res/images/default_app_icon.png delete mode 100644 tools/apps/kaskit/res/images/folder_appicon_bg.png delete mode 100644 tools/apps/kaskit/res/images/icon_badge_container.png delete mode 100644 tools/apps/kaskit/res/images/popup_bg.png delete mode 100755 tools/apps/kaskit/res/images/sub_badge.png delete mode 100644 tools/apps/kaskit/src/main.c delete mode 100644 tools/apps/kaskit/src/ui.c delete mode 100644 tools/apps/kaskit/src/widget.c delete mode 100644 tools/apps/keyguard/CMakeLists.txt delete mode 100644 tools/apps/keyguard/include/keyguard.h delete mode 100644 tools/apps/keyguard/include/widget.h delete mode 100644 tools/apps/keyguard/org.tizen.keyguard.manifest delete mode 100644 tools/apps/keyguard/org.tizen.keyguard.xml delete mode 100644 tools/apps/keyguard/res/edje/keyguard.edc delete mode 100644 tools/apps/keyguard/res/edje/org.tizen.keyguard.edc delete mode 100644 tools/apps/keyguard/res/images/icon.png delete mode 100644 tools/apps/keyguard/src/main.c delete mode 100644 tools/apps/keyguard/src/ui.c delete mode 100644 tools/apps/keyguard/src/widget.c delete mode 100644 tools/apps/setup-wizard/CMakeLists.txt delete mode 100644 tools/apps/setup-wizard/include/krate-setup.h delete mode 100644 tools/apps/setup-wizard/include/widget.h delete mode 100644 tools/apps/setup-wizard/org.tizen.krate-setup-wizard.manifest delete mode 100644 tools/apps/setup-wizard/org.tizen.krate-setup-wizard.xml delete mode 100644 tools/apps/setup-wizard/po/CMakeLists.txt delete mode 100755 tools/apps/setup-wizard/po/ar.po delete mode 100755 tools/apps/setup-wizard/po/az.po delete mode 100755 tools/apps/setup-wizard/po/bg.po delete mode 100755 tools/apps/setup-wizard/po/ca.po delete mode 100755 tools/apps/setup-wizard/po/cs.po delete mode 100755 tools/apps/setup-wizard/po/da.po delete mode 100755 tools/apps/setup-wizard/po/de.po delete mode 100755 tools/apps/setup-wizard/po/el_GR.po delete mode 100755 tools/apps/setup-wizard/po/en.po delete mode 100755 tools/apps/setup-wizard/po/en_PH.po delete mode 100755 tools/apps/setup-wizard/po/en_US.po delete mode 100755 tools/apps/setup-wizard/po/es_ES.po delete mode 100755 tools/apps/setup-wizard/po/es_US.po delete mode 100755 tools/apps/setup-wizard/po/et.po delete mode 100755 tools/apps/setup-wizard/po/eu.po delete mode 100755 tools/apps/setup-wizard/po/fi.po delete mode 100755 tools/apps/setup-wizard/po/fr.po delete mode 100755 tools/apps/setup-wizard/po/fr_CA.po delete mode 100755 tools/apps/setup-wizard/po/ga.po delete mode 100755 tools/apps/setup-wizard/po/gl.po delete mode 100755 tools/apps/setup-wizard/po/hi.po delete mode 100755 tools/apps/setup-wizard/po/hr.po delete mode 100755 tools/apps/setup-wizard/po/hu.po delete mode 100755 tools/apps/setup-wizard/po/hy.po delete mode 100755 tools/apps/setup-wizard/po/is.po delete mode 100755 tools/apps/setup-wizard/po/it_IT.po delete mode 100755 tools/apps/setup-wizard/po/ja_JP.po delete mode 100755 tools/apps/setup-wizard/po/ka.po delete mode 100755 tools/apps/setup-wizard/po/kk.po delete mode 100755 tools/apps/setup-wizard/po/ko_KR.po delete mode 100755 tools/apps/setup-wizard/po/lt.po delete mode 100755 tools/apps/setup-wizard/po/lv.po delete mode 100755 tools/apps/setup-wizard/po/mk.po delete mode 100755 tools/apps/setup-wizard/po/nb.po delete mode 100755 tools/apps/setup-wizard/po/nl.po delete mode 100755 tools/apps/setup-wizard/po/pl.po delete mode 100755 tools/apps/setup-wizard/po/pt_BR.po delete mode 100755 tools/apps/setup-wizard/po/pt_PT.po delete mode 100755 tools/apps/setup-wizard/po/ro.po delete mode 100755 tools/apps/setup-wizard/po/ru_RU.po delete mode 100755 tools/apps/setup-wizard/po/sk.po delete mode 100755 tools/apps/setup-wizard/po/sl.po delete mode 100755 tools/apps/setup-wizard/po/sr.po delete mode 100755 tools/apps/setup-wizard/po/sv.po delete mode 100755 tools/apps/setup-wizard/po/tr_TR.po delete mode 100755 tools/apps/setup-wizard/po/uk.po delete mode 100755 tools/apps/setup-wizard/po/uz.po delete mode 100755 tools/apps/setup-wizard/po/zh_CN.po delete mode 100755 tools/apps/setup-wizard/po/zh_HK.po delete mode 100755 tools/apps/setup-wizard/po/zh_TW.po delete mode 100644 tools/apps/setup-wizard/res/data/KrateManifest.xml delete mode 100644 tools/apps/setup-wizard/res/edje/layout.edc delete mode 100644 tools/apps/setup-wizard/res/edje/org.tizen.krate-setup-wizard.edc delete mode 100644 tools/apps/setup-wizard/res/edje/security.edc delete mode 100644 tools/apps/setup-wizard/res/edje/setup.edc delete mode 100644 tools/apps/setup-wizard/res/edje/welcome.edc delete mode 100644 tools/apps/setup-wizard/res/images/icon.png delete mode 100644 tools/apps/setup-wizard/res/images/theme_bg.png delete mode 100644 tools/apps/setup-wizard/src/main.c delete mode 100644 tools/apps/setup-wizard/src/security.c delete mode 100644 tools/apps/setup-wizard/src/ui.c delete mode 100644 tools/apps/setup-wizard/src/util.c delete mode 100644 tools/apps/setup-wizard/src/widget.c delete mode 100644 tools/cli/CMakeLists.txt delete mode 100644 tools/cli/krate-admin-cli.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index bb54602..e7b2b3e 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,10 +29,8 @@ IF(NOT CMAKE_BUILD_TYPE) ENDIF(NOT CMAKE_BUILD_TYPE) SET(KRATE_API ${PROJECT_SOURCE_DIR}/api) -SET(KRATE_LIB ${PROJECT_SOURCE_DIR}/lib) SET(KRATE_SERVER ${PROJECT_SOURCE_DIR}/server) SET(KRATE_DATA ${PROJECT_SOURCE_DIR}/data) -SET(KRATE_TOOLS ${PROJECT_SOURCE_DIR}/tools) SET(KRATE_MODULE ${PROJECT_SOURCE_DIR}/module) SET(KRATE_VOLUME ${PROJECT_SOURCE_DIR}/volume) @@ -82,8 +80,6 @@ ENDIF(NOT DEFINED SYSTEMD_UNIT_DIR) ADD_DEFINITIONS(-DUG_WAYLAND) -ADD_SUBDIRECTORY(${KRATE_LIB}) ADD_SUBDIRECTORY(${KRATE_SERVER}) ADD_SUBDIRECTORY(${KRATE_MODULE}) ADD_SUBDIRECTORY(${KRATE_VOLUME}) -ADD_SUBDIRECTORY(${KRATE_TOOLS}) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt deleted file mode 100755 index f205925..0000000 --- a/lib/CMakeLists.txt +++ /dev/null @@ -1,59 +0,0 @@ -# -# Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -SET(LIB_VERSION "${VERSION}") -SET(LIB_SOVERSION "0") - -SET(PC_FILE "${PROJECT_NAME}.pc") - -SET(SOURCES client.cpp - manager.cpp - app-proxy.cpp - package-proxy.cpp - krate/krate.cpp - krate/app-proxy.cpp - krate/package-proxy.cpp -) - -SET(CAPI_INCLUDE_FILES krate/krate.h - krate/app-proxy.h - krate/package-proxy.h -) - - -SET (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack") - -PKG_CHECK_MODULES(LIBS_DEPS REQUIRED - klay - glib-2.0 - capi-appfw-package-manager - capi-appfw-app-manager - capi-appfw-app-control - libtzplatform-config -) - -ADD_LIBRARY(${PROJECT_NAME} SHARED ${SOURCES}) -SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "-fvisibility=hidden") -SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${LIB_SOVERSION}) -SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES VERSION ${LIB_VERSION}) - -INCLUDE_DIRECTORIES(SYSTEM ${LIBS_DEPS_INCLUDE_DIRS} ${DPM_POLICY} ${KRATE_LIB} ${PROJECT_SOURCE_DIR}) -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${LIBS_DEPS_LIBRARIES} pthread) - -CONFIGURE_FILE(${PC_FILE}.in ${CMAKE_BINARY_DIR}/${PC_FILE} @ONLY) - -INSTALL(FILES ${CMAKE_BINARY_DIR}/${PC_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries) -INSTALL(FILES ${CAPI_INCLUDE_FILES} DESTINATION ${INCLUDE_INSTALL_DIR}/krate) diff --git a/lib/app-proxy.cpp b/lib/app-proxy.cpp deleted file mode 100644 index 112e673..0000000 --- a/lib/app-proxy.cpp +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ -#include "rmi/app-proxy.h" - -namespace Krate { - -AppProxy::AppProxy(KrateControlContext& ctx) - : context(ctx) -{ -} - -AppProxy::~AppProxy() -{ -} - -AppProxy::AppInfo AppProxy::getAppInfo(const std::string& name, const std::string& appid) -{ - try { - return context->methodCall("AppProxy::getAppInfo", name, appid); - } catch (runtime::Exception& e) {} - return AppProxy::AppInfo(); -} - -int AppProxy::createIterator(const std::string& krate) -{ - try { - return context->methodCall("AppProxy::createIterator", krate); - } catch (runtime::Exception& e) {} - return -1; -} - -AppProxy::AppInfo AppProxy::getIteratorValue(int iterator) -{ - try { - return context->methodCall("AppProxy::getIteratorValue", iterator); - } catch (runtime::Exception& e) {} - return AppProxy::AppInfo(); -} - -bool AppProxy::nextIterator(int iterator) -{ - try { - return context->methodCall("AppProxy::nextIterator", iterator); - } catch (runtime::Exception& e) {} - return false; -} - -int AppProxy::destroyIterator(int iterator) -{ - try { - return context->methodCall("AppProxy::destroyIterator", iterator); - } catch (runtime::Exception& e) {} - return -1; -} - -int AppProxy::launch(const std::string& name, const AppProxy::Bundle& bundle) -{ - try { - return context->methodCall("AppProxy::launch", name, bundle); - } catch (runtime::Exception& e) { - return -1; - } -} - -int AppProxy::resume(const std::string& name, const std::string& appid) -{ - try { - return context->methodCall("AppProxy::resume", name, appid); - } catch (runtime::Exception& e) { - return -1; - } -} - -int AppProxy::terminate(const std::string& name, const std::string& appid) -{ - try { - return context->methodCall("AppProxy::terminate", name, appid); - } catch (runtime::Exception& e) { - return -1; - } -} - -bool AppProxy::isRunning(const std::string& name, const std::string& appid) -{ - try { - return context->methodCall("AppProxy::isRunning", name, appid); - } catch (runtime::Exception& e) { - return -1; - } -} - -} // namespace Krate diff --git a/lib/client.cpp b/lib/client.cpp deleted file mode 100644 index 3e3bc58..0000000 --- a/lib/client.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#include "client.h" - -namespace { - -const std::string SUBSCRIBER_REGISTER = "Server::registerNotificationSubscriber"; -const std::string SUBSCRIBER_UNREGISTER = "Server::unregisterNotificationSubscriber"; - -const std::string KRATE_MANAGER_ADDRESS = "/tmp/.krate.sock"; - -} // namespace - - -KrateContext::KrateContext() noexcept -{ -} - -KrateContext::~KrateContext() noexcept -{ - disconnect(); -} - -int KrateContext::connect(const std::string& address) noexcept -{ - try { - client.reset(new rmi::Client(address)); - client->connect(); - } catch (runtime::Exception& e) { - return -1; - } - - return 0; -} - -int KrateContext::connect() noexcept -{ - return connect(KRATE_MANAGER_ADDRESS); -} - -void KrateContext::disconnect() noexcept -{ - client.reset(); -} - -int KrateContext::subscribeSignal(const std::string& name, - const SignalListener& listener, - void* data) -{ - auto listenerDispatcher = [listener, data](std::string &name, std::string &from, std::string &object) { - listener(from.c_str(), object.c_str(), data); - }; - - try { - return client->subscribe(SUBSCRIBER_REGISTER, - name, listenerDispatcher); - } catch (runtime::Exception& e) { - std::cout << e.what() << std::endl; - return -1; - } -} - -int KrateContext::unsubscribeSignal(int subscriberId) -{ - return client->unsubscribe(SUBSCRIBER_UNREGISTER, subscriberId); -} diff --git a/lib/client.h b/lib/client.h deleted file mode 100644 index c64d34f..0000000 --- a/lib/client.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __POLICY_CLIENT_H__ -#define __POLICY_CLIENT_H__ - -#include -#include -#include - -#include - -typedef std::function KrateChangeListener; -typedef std::function SignalListener; - -class KrateContext final { -public: - typedef std::unique_ptr KrateControlContext; - - KrateContext() noexcept; - ~KrateContext() noexcept; - - int connect() noexcept; - int connect(const std::string& address) noexcept; - void disconnect() noexcept; - - int subscribeSignal(const std::string& name, const SignalListener& listener, void* data); - int unsubscribeSignal(int subscriberId); - - template - Krate createKrateInterface(Args&&... args) noexcept - { - return Krate(getKrateControlContext(), std::forward(args)...); - } - -private: - KrateControlContext& getKrateControlContext() - { - return client; - } - - KrateControlContext client; -}; - -KrateContext& GetKrateContext(void* handle); -#endif //__POLICY_CLIENT_H__ diff --git a/lib/context.h b/lib/context.h deleted file mode 100644 index f1908d1..0000000 --- a/lib/context.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __KRATE_CONTEXT__ -#define __KRATE_CONTEXT__ - -#include "client.h" - -using KrateControlContext = ::KrateContext::KrateControlContext; - -#endif //!__KRATE_CONTEXT__ diff --git a/lib/krate.pc.in b/lib/krate.pc.in deleted file mode 100644 index 175f23b..0000000 --- a/lib/krate.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -# Package Information for pkg-config - -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@LIB_INSTALL_DIR@ -includedir=@INCLUDE_INSTALL_DIR@ - -Name: @PROJECT_NAME@ -Description: Tizen @PROJECT_NAME@ Client library -Version: @VERSION@ -Libs: -L${libdir} -l@PROJECT_NAME@ -Cflags: -I${includedir}/@PROJECT_NAME@ diff --git a/lib/krate/app-info-internal.h b/lib/krate/app-info-internal.h deleted file mode 100644 index 8ce8798..0000000 --- a/lib/krate/app-info-internal.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __DPM_APP_INFO_INTERNAL_H__ -#define __DPM_APP_INFO_INTERNAL_H__ - -#include - -// pkgmgr-info : include/pkgmgrinfo_basic.h -typedef struct icon_x { - char *text; - char *lang; - char *section; - char *size; - char *resolution; - char *dpi; -} icon_x; - -// pkgmgr-info : include/pkgmgrinfo_basic.h -typedef struct label_x { - char *name; - char *text; - char *lang; -} label_x; - -typedef struct application_x { - char *appid; /*attr*/ - char *exec; /*attr*/ - char *nodisplay; /*attr, default: "false"*/ - char *multiple; /*attr, default: "false"*/ - char *taskmanage; /*attr, default: "true"*/ - char *type; /*attr*/ - char *categories; /*attr*/ - char *extraid; /*attr*/ - char *hwacceleration; /*attr, default: "default"*/ - char *screenreader; /*attr, default: "use-system-setting"*/ - char *mainapp; /*attr, default: "false"*/ - char *package; /*set from package_x*/ - char *recentimage; /*attr, default: "false"*/ - char *launchcondition; /*attr, default: "false"*/ - char *indicatordisplay; /*attr, default: "true"*/ - char *portraitimg; /*attr*/ - char *landscapeimg; /*attr*/ - char *effectimage_type; /*attr, default: "image"*/ - char *guestmode_visibility; /*attr, default: "true"*/ - char *component; /*no xml part*/ - char *permission_type; /*attr, default: "normal"*/ - char *component_type; /*attr, default: "uiapp"*/ - char *preload; /*no xml part*/ - char *submode; /*attr, default: "false"*/ - char *submode_mainid; /*attr, default: "false"*/ - char *process_pool; /*attr, default: "false"*/ - char *installed_storage; - char *autorestart; /*attr, default: "false"*/ - char *onboot; /*attr, default: "false"*/ - char *support_disable; /*set from package_x*/ - char *ui_gadget; /*attr, default: "false"*/ - char *launch_mode; /*attr, default: "single"*/ - char *support_ambient; /*attr, default: "false"*/ - char *alias_appid; /*attr*/ - char *effective_appid; /*attr*/ - char *package_type; /*set from package_x*/ - char *tep_name; /*set from package_x*/ - char *zip_mount_file; /*set from package_x*/ - char *root_path; /*set from package_x*/ - char *api_version; /*set from package_x*/ - char *for_all_users; /**< Flag that indicates if the package is available for everyone or for current user only, no xml part*/ - char *is_disabled; /**< Flag that indicates if the application is disabled or not, no xml part*/ - char *splash_screen_display; /*attr, default: "true"*/ - char *external_path; /**< external storage path if exists, no xml part*/ - char *package_system; /*set from package_x*/ - char *removable; /*set from package_x*/ - char *package_installed_time; /*installed time after finishing of installation*/ - char *support_mode; /*attr*/ - GList *label; /*element*/ - GList *icon; /*element*/ - GList *image; /*element*/ - GList *category; /*element*/ - GList *metadata; /*element*/ - GList *permission; /*element*/ - GList *launchconditions; /*element*/ - GList *notification; /*element*/ - GList *datashare; /*element*/ - GList *datacontrol; /*element*/ - GList *background_category; /*element*/ - GList *appcontrol; /*element*/ - GList *splashscreens; /*element*/ -} application_x; - -// pkgmgr-info : src/pkgmgrinfo_private.h -typedef struct _pkgmgr_appinfo_x { - const char *package; - char *locale; - int app_component; - application_x *app_info; -} pkgmgr_appinfo_x; - -// app-manager : src/app_info.c -typedef struct app_info_s { - char *app_id; - pkgmgr_appinfo_x *pkg_app_info; -} app_info_s; - - -#endif //__DPM_APP_INFO_INTERNAL_H__ diff --git a/lib/krate/app-proxy.cpp b/lib/krate/app-proxy.cpp deleted file mode 100644 index 137cc50..0000000 --- a/lib/krate/app-proxy.cpp +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#include -#include - -#include "debug.h" -#include "krate.h" -#include "app-proxy.h" -#include "app-info-internal.h" - -#include "client.h" -#include "rmi/app-proxy.h" - -using namespace Krate; - -struct krate_app_proxy_s { - Krate::AppProxy proxy; - std::string krateName; -}; - -static inline krate_app_proxy_s* getInstance(krate_app_proxy_h handle) -{ - return reinterpret_cast(handle); -} - -static app_info_h make_app_info_handle(const Krate::AppProxy::AppInfo& info) -{ - if (info.id.empty()) { - return NULL; - } - - application_x* app = (application_x*)::calloc(1, sizeof(application_x)); - if (app == NULL) { - return NULL; - } - - pkgmgr_appinfo_x* pkgappinfo = (pkgmgr_appinfo_x*)::calloc(1, sizeof(pkgmgr_appinfo_x)); - if (pkgappinfo == NULL) { - free(app); - return NULL; - } - - app_info_s* appinfo = (app_info_s*)::calloc(1, sizeof(struct app_info_s)); - if (appinfo == NULL) { - free(app); - free(pkgappinfo); - return NULL; - } - - appinfo->app_id = ::strdup(info.id.c_str()); - appinfo->pkg_app_info = pkgappinfo; - - pkgappinfo->package = ::strdup(info.package.c_str()); - pkgappinfo->locale = ::strdup(info.locale.c_str()); - pkgappinfo->app_component = info.componentType; - pkgappinfo->app_info = app; - - app->appid = ::strdup(info.id.c_str()); - app->nodisplay = ::strdup(info.isNoDisplayed? "true":"false"); - app->taskmanage = ::strdup(info.isTaskManaged? "true":"false"); - app->type = ::strdup(info.type.c_str()); - - icon_x* icon = (icon_x*)::calloc(1, sizeof(icon_x)); - if (icon != NULL) { - icon->text = ::strdup(info.icon.c_str()); - icon->lang = ::strdup(info.locale.c_str()); - app->icon = ::g_list_append(NULL, icon); - } - - label_x* label = (label_x*)::calloc(1, sizeof(label_x)); - if (label != NULL) { - label->text = ::strdup(info.label.c_str()); - label->lang = ::strdup(info.locale.c_str()); - app->label = ::g_list_append(NULL, label); - } - - return reinterpret_cast(appinfo); -} - -int krate_app_proxy_create(krate_manager_h manager, const char* name, krate_app_proxy_h *handle) -{ - RET_ON_FAILURE(manager, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(name, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - krate_app_proxy_s* instance = new krate_app_proxy_s { - GetKrateContext(manager).createKrateInterface(), - name - }; - - *handle = reinterpret_cast(instance); - return KRATE_ERROR_NONE; -} - -int krate_app_proxy_destroy(krate_app_proxy_h handle) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - delete reinterpret_cast(handle); - - return KRATE_ERROR_NONE; -} - -int krate_app_proxy_get_app_info(krate_app_proxy_h handle, const char* app_id, app_info_h* app_info) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(app_id, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(app_info, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - const auto info = proxy.getAppInfo(name, app_id); - app_info_h ret = make_app_info_handle(info); - if (ret == NULL) { - return KRATE_ERROR_INVALID_PARAMETER; - } - - *app_info = ret; - - return KRATE_ERROR_NONE; -} - -int krate_app_proxy_foreach_app_info(krate_app_proxy_h handle, app_manager_app_info_cb callback, void *user_data) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(callback, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - int iter = proxy.createIterator(name); - do { - app_info_h info = make_app_info_handle(proxy.getIteratorValue(iter)); - int ret = callback(info, user_data); - app_info_destroy(info); - if (!ret) { - break; - } - } while (proxy.nextIterator(iter)); - proxy.destroyIterator(iter); - - return KRATE_ERROR_NONE; -} - -static bool appExtraCallback(app_control_h app_control, const char *key, void *user_data) -{ - Krate::AppProxy::Bundle *bundle = reinterpret_cast(user_data); - Krate::AppProxy::Bundle::Extra extra; - bool isArray; - - extra.key = key; - - app_control_is_extra_data_array(app_control, key, &isArray); - if (isArray) { - char **values; - int length = 0; - app_control_get_extra_data_array(app_control, key, &values, &length); - for (int i = 0; i < length; i++) { - extra.value.push_back(values[i]); - free(values[i]); - } - free(values); - } else { - char *value; - app_control_get_extra_data(app_control, key, &value); - extra.value.push_back(value); - free(value); - } - bundle->extraData.push_back(extra); - - return true; -} - -int krate_app_proxy_send_launch_request(krate_app_proxy_h handle, app_control_h app_control) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(app_control, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - char *str; - - Krate::AppProxy::Bundle bundle; - app_control_get_operation(app_control, &str); - if (str != NULL) { - bundle.operation = str; - free(str); - str = NULL; - } - app_control_get_uri(app_control, &str); - if (str != NULL) { - bundle.uri = str; - free(str); - str = NULL; - } - app_control_get_mime(app_control, &str); - if (str != NULL) { - bundle.mime = str; - free(str); - str = NULL; - } - app_control_get_category(app_control, &str); - if (str != NULL) { - bundle.category = str; - free(str); - str = NULL; - } - app_control_get_app_id(app_control, &str); - if (str != NULL) { - bundle.appId = str; - free(str); - str = NULL; - } - app_control_foreach_extra_data(app_control, appExtraCallback, &bundle); - - return proxy.launch(name, bundle); -} - -int krate_app_proxy_terminate(krate_app_proxy_h handle, const char* app_id) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(app_id, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - return proxy.terminate(name, app_id); -} - -int krate_app_proxy_resume(krate_app_proxy_h handle, const char* app_id) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(app_id, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - return proxy.resume(name, app_id); -} - -int krate_app_proxy_is_running(krate_app_proxy_h handle, const char* app_id, int *result) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(app_id, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(result, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - *result = proxy.isRunning(name, app_id); - return KRATE_ERROR_NONE; -} diff --git a/lib/krate/app-proxy.h b/lib/krate/app-proxy.h deleted file mode 100644 index 02ec714..0000000 --- a/lib/krate/app-proxy.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __CAPI_KRATE_APP_PROXY_H__ -#define __CAPI_KRATE_APP_PROXY_H__ - -#include -#include -#include - -#include - -/** - * @file app-info.h - * @brief This file provides APIs to get the information of applications in the krate - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @addtogroup CAPI_KRATE_APPLICATION_INFO_MODULE - * @{ - */ - -/** - * @brief The krate application manager handle - * @since_tizen 3.0 - * @see krate_app_proxy_create() - * @see krate_app_proxy_destroy() - */ -typedef void* krate_app_proxy_h; - -/** - * @brief Acquires the krate application manager handle - * @details This API acquires krate application manager handle required to call - * the krate application manager APIs. - * @since_tizen 3.0 - * @param[in] manager The krate manager handle - * @param[in] name The krate name - * @param[out] handle The krate app proxy handle - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_CONNECTION_REFUSED Connection refused - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @see krate_manager_create() - * @see krate_app_proxy_create() - * @see get_last_result() - */ -KRATE_API int krate_app_proxy_create(krate_manager_h manager, const char* name, krate_app_proxy_h* handle); - -/** - * @brief Releases the krate application manager handle - * @details This API must be called if interaction with the krate application - * manager handle is no longer required. - * @since_tizen 3.0 - * @param[in] context The device policy manager context - * @param[in] handle The krate application manager handle - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The handle must be created by krate_app_proxy_create() - * @see krate_app_proxy_create() - */ -KRATE_API int krate_app_proxy_destroy(krate_app_proxy_h handle); - -/** - * @brief Gets the application information for the given application in the krate. - * @details This API gets application information handle required to get - * information of the application in the krate - * @since_tizen 3.0 - * @param[in] handle The krate application manager handle - * @param[in] appid The application ID - * @return Krate application handle on success, otherwise NULL - * @remark The specific error code can be obtained by using the - * get_last_result() method. Error codes are described in - * exception section. - * @exception #KRATE_ERROR_NONE No error - * @exception #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @exception #KRATE_ERROR_TIMED_OUT Time out - * @see krate_app_proxy_create() - * @see krate_app_proxy_create() - * @see krate_application_release() - * @see application_manager_get_application_info() - * @see get_last_result() - */ -KRATE_API int krate_app_proxy_get_app_info(krate_app_proxy_h handle, const char* appid, app_info_h* app_info); - -/** - * @brief Retrieves all the handles of the application in the krate. - * @details This API calls app_manager_app_info_cb() once for each application - * ID with traversing the installed application list in the krate. - * @since_tizen 3.0 - * @param[in] handle The krate application manager handle - * @param[in] callback The iteration callback function - * @param[in] user_data The user data passed to the callback function - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @pre The handle must be created by krate_app_proxy_create(). - * @see krate_app_proxy_create() - * @see krate_app_proxy_create() - * @see application_manager_foreach_app_info() - */ -KRATE_API int krate_app_proxy_foreach_app_info(krate_app_proxy_h handle, app_manager_app_info_cb callback, void *user_data); - -/** - * @brief Launch the application located at the given path into the krate. - * @details Administrator can use this API to launch the application in the - * krate. - * @since_tizen 3.0 - * @param[in] handle The krate application manager handle - * @param[in] app_control The app_control handle - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_NO_SUCH_FILE No such application file - * @retval #KRATE_ERROR_PERMISSION_DENIED The application does not have - * the privilege to call this API or the caller is not the owner - * of the krate - * @pre The handle must be created by krate_app_proxy_create(). - * @pre The krate corresponding to the given name must be - * created before use of this API. - * @see krate_app_proxy_create() - * @see krate_app_proxy_destroy() - * @see krate_app_proxy_resume() - * @see krate_app_proxy_terminate() - * @see krate_is_running_app() - * @see app_control_send_launch_request() - */ -KRATE_API int krate_app_proxy_send_launch_request(krate_app_proxy_h handle, app_control_h app_control); - -/** - * @brief Terminate the application located at the given path into the krate. - * @details Administrator can use this API to terminate the application in - * the krate. - * @since_tizen 3.0 - * @param[in] handle The krate application manager handle - * @param[in] appid The application ID to be terminated - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_NO_SUCH_FILE No such application file - * @retval #KRATE_ERROR_PERMISSION_DENIED The application does not have - * the privilege to call this API or the caller is not the owner - * of the krate - * @pre The handle must be created by krate_app_proxy_create(). - * @pre The krate corresponding to the given name must be - * created before use of this API. - * @see krate_app_proxy_create() - * @see krate_app_proxy_destroy() - * @see krate_app_proxy_resume() - * @see krate_app_proxy_send_launch_request() - * @see krate_is_running_app() - * @see app_control_send_terminate_request() - * @see app_manager_send_terminate_bt_app() - */ -KRATE_API int krate_app_proxy_terminate(krate_app_proxy_h handle, const char* appid); - -/** - * @brief Resume the application located at the given path into the krate. - * @details Administrator can use this API to resume the application in the - * krate. - * @since_tizen 3.0 - * @param[in] handle The krate application manager handle - * @param[in] appid The application ID to be resumed - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_NO_SUCH_FILE No such application file - * @retval #KRATE_ERROR_PERMISSION_DENIED The application does not have - * the privilege to call this API or the caller is not the owner - * of the krate - * @pre The handle must be created by krate_app_proxy_create(). - * @pre The krate corresponding to the given name must be - * created before use of this API. - * @see krate_app_proxy_create() - * @see krate_app_proxy_destroy() - * @see krate_app_proxy_send_launch_request() - * @see krate_app_proxy_terminate() - * @see app_manager_resume_app() - */ -KRATE_API int krate_app_proxy_resume(krate_app_proxy_h handle, const char* appid); - -/** - * @brief Checks whether the application in the krate is running. - * @details This API can be used to check whether the application in the krate - * is running. - * @since_tizen 3.0 - * @param[in] handle The krate application manager handle - * @param[in] appid The application ID - * @param[out] result true if the application is running, - * otherwise false if the application is not running - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_NO_DATA No such pacakge to check - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The handle must be created by krate_app_proxy_create(). - * @see krate_app_proxy_create() - * @see krate_app_proxy_destroy() - * @see krate_app_proxy_send_launch_request() - * @see krate_app_proxy_terminate() - * @see app_manager_is_running_app() - */ -KRATE_API int krate_app_proxy_is_running(krate_app_proxy_h handle, const char* appid, int* result); - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __CAPI_KRATE_APP_PROXY_H__ */ diff --git a/lib/krate/debug.h b/lib/krate/debug.h deleted file mode 100644 index 719e478..0000000 --- a/lib/krate/debug.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __CAPI_KRATE_ASSERT_H__ -#define __CAPI_KRATE_ASSERT_H__ - -#define RET_ON_FAILURE(cond, ret) \ -{ \ - if (!(cond)) \ - return (ret); \ -} - -#endif //! __CAPI_KRATE_ASSERT_H__ diff --git a/lib/krate/krate.cpp b/lib/krate/krate.cpp deleted file mode 100644 index 6f428f3..0000000 --- a/lib/krate/krate.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#include "debug.h" -#include "krate.h" - -#include "client.h" -#include "rmi/manager.h" - - -using namespace Krate; - -KrateContext& GetKrateContext(void* handle) -{ - return *reinterpret_cast(handle); -} - -int krate_manager_create(krate_manager_h* handle) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - KrateContext* client = new(std::nothrow) KrateContext(); - - RET_ON_FAILURE(handle, KRATE_ERROR_CONNECTION_REFUSED); - - if (client->connect() < 0) { - delete client; - RET_ON_FAILURE(handle, KRATE_ERROR_CONNECTION_REFUSED); - } - - *handle = reinterpret_cast(client); - - return KRATE_ERROR_NONE; -} - -int krate_manager_destroy(krate_manager_h handle) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - delete &GetKrateContext(handle); - - return KRATE_ERROR_NONE; -} - -int krate_manager_add_event_cb(krate_manager_h handle, const char* event, krate_event_cb callback, void* user_data, int *id) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(event, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(callback, KRATE_ERROR_INVALID_PARAMETER); - - KrateContext &context = GetKrateContext(handle); - int ret = context.subscribeSignal(std::string("Manager::") + event, - callback, user_data); - if (ret < 0) - return KRATE_ERROR_INVALID_PARAMETER; - - *id = ret; - return KRATE_ERROR_NONE; -} - -int krate_manager_remove_event_cb(krate_manager_h handle, int callback_id) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(callback_id >= 0, KRATE_ERROR_INVALID_PARAMETER); - - KrateContext &context = GetKrateContext(handle); - int ret = context.unsubscribeSignal(callback_id); - if (ret) - return KRATE_ERROR_INVALID_PARAMETER; - - return KRATE_ERROR_NONE; -} - -int krate_manager_create_krate(krate_manager_h handle, const char* name, const char* manifest) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(name, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(manifest, KRATE_ERROR_INVALID_PARAMETER); - - KrateContext &client = GetKrateContext(handle); - Krate::Manager krate = client.createKrateInterface(); - return krate.createKrate(name, manifest); -} - -int krate_manager_destroy_krate(krate_manager_h handle, const char* name) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(name, KRATE_ERROR_INVALID_PARAMETER); - - KrateContext &client = GetKrateContext(handle); - Krate::Manager krate = client.createKrateInterface(); - return krate.removeKrate(name); -} - -int krate_manager_get_krate_state(krate_manager_h handle, const char* name, krate_state_e *state) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(name, KRATE_ERROR_INVALID_PARAMETER); - - KrateContext &client = GetKrateContext(handle); - Krate::Manager krate = client.createKrateInterface(); - - int result = krate.getKrateState(name); - if (result == 0) { - return KRATE_ERROR_NO_DATA; - } - - *state = (krate_state_e)result; - return KRATE_ERROR_NONE; -} - -int krate_manager_foreach_name(krate_manager_h handle, krate_state_e state, - krate_manager_foreach_cb callback, void* user_data) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(callback, KRATE_ERROR_INVALID_PARAMETER); - - KrateContext &client = GetKrateContext(handle); - Krate::Manager krate = client.createKrateInterface(); - std::vector list = krate.getKrateList(state); - for (std::vector::iterator it = list.begin(); - it != list.end(); it++) { - if (!callback((*it).c_str(), user_data)) - break; - } - - return KRATE_ERROR_NONE; -} - -int krate_manager_reset_krate_password(krate_manager_h handle, const char* name, const char* new_password) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(name, KRATE_ERROR_INVALID_PARAMETER); - - if (new_password == NULL) { - new_password = ""; - } - - KrateContext &client = GetKrateContext(handle); - Krate::Manager krate = client.createKrateInterface(); - - return krate.resetKratePassword(name, new_password); -} diff --git a/lib/krate/krate.h b/lib/krate/krate.h deleted file mode 100644 index 15aa135..0000000 --- a/lib/krate/krate.h +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __KRATE_KRATE_MANAGER_H__ -#define __KRATE_KRATE_MANAGER_H__ - -#include - -/** - * @file krate.h - * @brief This file defines common data types required to krate APIs. - */ - -#ifndef KRATE_API -#define KRATE_API __attribute__((visibility("default"))) -#endif // API - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @addtogroup CAPI_KRATE_KRATE_MANAGER_MODULE - * @{ - */ - -/** - * @brief Enumeration of device policy API errors - * @since_tizen 3.0 - */ -typedef enum { - KRATE_ERROR_NONE = TIZEN_ERROR_NONE, /**< The operation was successful */ - KRATE_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */ - KRATE_ERROR_CONNECTION_REFUSED = TIZEN_ERROR_CONNECTION_REFUSED, /**< Connection refused */ - KRATE_ERROR_TIMED_OUT = TIZEN_ERROR_TIMED_OUT, /**< Time out */ - KRATE_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Access privilege is not sufficient */ - KRATE_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< Operation is not supported */ - KRATE_ERROR_NO_SUCH_FILE = TIZEN_ERROR_NO_SUCH_FILE, /**< No such file or directory */ - KRATE_ERROR_FILE_EXISTS = TIZEN_ERROR_FILE_EXISTS, /**< File exists */ - KRATE_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */ - KRATE_ERROR_NO_DATA = TIZEN_ERROR_NO_DATA /**< No Data */ -} krate_error_type_e; - -/** - * @brief The krate manager handle - * @details The krate manager handle is an abstraction of the - * logical connection between the krate manager and it's client. - * The krate manager handle must be created by using - * krate_manager_create() before attempting to use almost any of - * the krate related APIs, and it should be freed when interaction - * with the krate manager is no longer required. - * To release the handle, use krate_manager_destroy(). - * @since_tizen 3.0 - * @see krate_manager_create() - * @see krate_manager_destroy() - */ -typedef void* krate_manager_h; - -/** - * @brief Creates the krate manager handle. - * @details This API creates krate manager handle required to - * the krate related APIs. - * This API is also used to verify whether caller is authorized - * or not. - * @since_tizen 3.0 - * @param[out] handle The krate manager handle - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_CONNECTION_REFUSED Connection refused - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @see krate_manager_destroy() - * @see get_last_result() - */ -KRATE_API int krate_manager_create(krate_manager_h *handle); - -/** - * @brief Releases the krate manager handle. - * @details This API must be called if interaction with the krate manager is - * no longer required. - * @since_tizen 3.0 - * @param[in] handle The krate manager handle - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @pre The handle must be created by krate_manager_create() - * @see krate_manager_create() - */ -KRATE_API int krate_manager_destroy(krate_manager_h handle); - -/** - * @brief Called when a krate raises a event. - * @since_tizen 3.0 - * @param[in] name The krate name - * @param[in] object The object name triggered the event - * @param[in] user_data The user data passed from krate_manager_add_event_cb - * @see krate_manager_add_event_cb() - * @see krate_manager_remove_event_cb() - */ -typedef void(*krate_event_cb)(const char* name, const char* object, void* user_data); - -/** - * @brief Adds krate event callback. - * @details This API can be used to receive events sent by krate - * The callback specified to this function is automatically called when - * the krate is created or removed. - * @since_tizen 3.0 - * @param[in] context The krate_manager handle - * @param[in] event The event name to receive - * @param[in] callback The event callback - * @param[in] user_data The user data passed to the callback function - * @param[out] id Signal identifier - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The handle must be created by krate_manager_create(). - * @see krate_manager_create() - * @see krate_manager_destroy() - * @see krate_manager_remove_event_cb() - */ -KRATE_API int krate_manager_add_event_cb(krate_manager_h handle, - const char* event, - krate_event_cb callback, void* user_data, - int* id); - -/** - * @brief Removes krate event callback. - * @details This API removes krate event callback - * @since_tizen 3.0 - * @param[in] context The krate manager handle - * @param[in] id Signal identifier - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The context must be created by krate_manager_create(). - * @see krate_manager_create() - * @see krate_manager_destroy() - * @see krate_manager_add_event_cb() - */ -KRATE_API int krate_manager_remove_event_cb(krate_manager_h handle, int id); - -/** - * @brief Creates a new krate. - * @details This API creates a container. All file system objects neeeded - * will be also created. manifest XML passed by parameter will be - * used when the krate is running. - * @since_tizen 3.0 - * @param[in] handle The krate manager handle - * @param[in] name The krate name to be created - * @param[in] manifest The manifest XML to be used when the krate is runned. - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_PERMISSION_DENIED The application does not have - * the privilege to call this API - * @pre The handle must be created by krate_manager_create(). - * @see krate_manager_create() - * @see krate_manager_destroy() - * @see krate_manager_destroy_krate() - * @see krate_manager_create_krate_iterator() - */ -KRATE_API int krate_manager_create_krate(krate_manager_h handle, - const char* name, - const char* manifest); - -/** - * @brief Removes existing krate. - * @details This removes krate. All file system objects created for the krate - * will be also erased. - * @since_tizen 3.0 - * @param[in] handle The krate manager handle - * @param[in] name The krate name to be removed - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_PERMISSION_DENIED The application does not have - * the privilege to call this API or the caller is not the owner - * of the krate - * @pre The handle must be created by krate_manager_create(). - * @pre The krate corresponding to the given name must be - * created before use of this API. - * @see krate_manager_create() - * @see krate_manager_destroy() - * @see krate_manager_create_krate() - * @see krate_manager_create_krate_iterator() - */ -KRATE_API int krate_manager_destroy_krate(krate_manager_h handle, - const char* name); - -/* - * @brief Enumeration for krate state - * @since_tizen 3.0 - */ -typedef enum { - KRATE_STATE_LOCKED = 0x01, /**< Krate has been defined, but it can not start. */ - KRATE_STATE_RUNNING = 0x02, /**< Krate has been started. */ - KRATE_STATE_ALL = 0xff /**< This presents all of the state */ -} krate_state_e; - -/** - * @brief Gets the krate state. - * @details This API can be used to get the state of the krate. The krate can - * have one of the three states(running, locked). - * @since_tizen 3.0 - * @param[in] handle The krate policy handle - * @param[in] name The krate name - * @param[out] state The krate state - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_NO_DATA No such krate to get state - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The handle must be created by krate_manager_create(). - * @see krate_manager_create() - * @see krate_manager_destroy() - * @see krate_manager_create_krate() - * @see krate_manager_destroy_krate() - */ -KRATE_API int krate_manager_get_krate_state(krate_manager_h handle, - const char* name, - krate_state_e* state); - -/** - * @brief Called to get all the name of created krates. - * @since_tizen 3.0 - * @param[in] name The krate name - * @param[in] user_data The user data passed from krate_manager_foreach_name - * @return true to continue with the next iteration of the loop, otherwise false to break out out the loop - * @see krate_manager_foreach_name() - */ -typedef bool(*krate_manager_foreach_cb)(const char* name, void* user_data); - -/** - * @brief Retrieves all the name of created krates - * @details This API calls krate_manager_foreach_cb() once for each krate name - * with traversing the created krates list. - * @since_tizen 3.0 - * @param[in] handle The krate policy handle - * @param[in] state a combination of the krate state to look - * @param[in] callback The iteration callback function - * @param[in] user_data The user data passed to the callback function - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @pre The handle must be created by krate_manager_create(). - * @see krate_manager_create() - * @see krate_manager_destroy() - * @see krate_manager_create_krate() - * @see krate_manager_destroy_krate() - */ -KRATE_API int krate_manager_foreach_name(krate_manager_h handle, - krate_state_e state, - krate_manager_foreach_cb callback, - void* user_data); - -/** - * @brief Reset password for the krate. - * @details This API can be used to set password for the krate. The password - * of the krate can be used for authenticating user. - * @since_tizen 3.0 - * @param[in] handle The krate policy handle - * @param[in] name The krate name - * @param[out] new_password new password if NULL, existing password will be removed - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_NO_DATA No such krate to get state - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The handle must be created by krate_manager_create(). - * @see krate_manager_create() - * @see krate_manager_destroy() - */ -KRATE_API int krate_manager_reset_krate_password(krate_manager_h handle, - const char* name, const char* new_password); - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __KRATE_KRATE_MANAGER_H__ */ diff --git a/lib/krate/package-info-internal.h b/lib/krate/package-info-internal.h deleted file mode 100644 index dcf4edf..0000000 --- a/lib/krate/package-info-internal.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __KRATE_PACKAGE_INFO_INTERNAL_H__ -#define __KRATE_PACKAGE_INFO_INTERNAL_H__ - -#include - -// pkgmgr-info : include/pkgmgrinfo_basic.h -typedef struct icon_x { - char *text; - char *lang; - char *section; - char *size; - char *resolution; - char *dpi; -} icon_x; - -// pkgmgr-info : include/pkgmgrinfo_basic.h -typedef struct description_x { - char *name; - char *text; - char *lang; -} description_x; - -// pkgmgr-info : include/pkgmgrinfo_basic.h -typedef struct label_x { - char *name; - char *text; - char *lang; -} label_x; - -// pkgmgr-info : include/pkgmgrinfo_basic.h -typedef struct author_x { - char *email; - char *href; - char *text; - char *lang; -} author_x; - -// pkgmgr-info : include/pkgmgrinfo_basic.h -typedef struct package_x { - char *for_all_users; /**< Flag that indicates if the package is available for everyone or for current user only, no xml part*/ - char *package; /**< package name, attr*/ - char *version; /**< package version, attr*/ - char *installlocation; /**< package install location, attr, default: "internal-only"*/ - char *ns; /** -#include -#include - -#include -#include -#include -#include - -#include "debug.h" -#include "krate.h" -#include "package-proxy.h" -#include "package-info-internal.h" - -#include "client.h" -#include "rmi/package-proxy.h" - -using namespace Krate; - -struct krate_package_proxy_s { - PackageProxy proxy; - std::string krateName; - pkgmgr_client* pNativeHandle; - package_manager_event_cb pCallback; - void *pCallbackUserData; -}; - -static inline krate_package_proxy_s* getInstance(krate_package_proxy_h handle) -{ - return reinterpret_cast(handle); -} - -static int packageEventHandler(uid_t target_uid, int req_id, - const char *pkg_type, const char *pkg_name, - const char *key, const char *val, - const void *pmsg, void *data) -{ - static auto event_type = (package_manager_event_type_e)-1; - auto event_state = PACKAGE_MANAGER_EVENT_STATE_FAILED; - auto instance = getInstance(data); - std::string keystr = key; - int progress = 0; - - if (target_uid != tzplatform_getuid(TZ_SYS_GLOBALAPP_USER)) { - try { - runtime::User pkgOwner(target_uid); - if (pkgOwner.getName() != instance->krateName) { - return PACKAGE_MANAGER_ERROR_NONE; - } - } catch (runtime::Exception &e) { - return PACKAGE_MANAGER_ERROR_NONE; - } - } - - std::transform(keystr.begin(), keystr.end(), keystr.begin(), ::tolower); - - if (keystr == "start") { - if (val == NULL) { - return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER; - } - - std::string valstr = val; - std::transform(valstr.begin(), valstr.end(), valstr.begin(), ::tolower); - if (valstr == "install") { - event_type = PACKAGE_MANAGER_EVENT_TYPE_INSTALL; - } else if (valstr == "uninstall") { - event_type = PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL; - } else if (valstr == "update") { - event_type = PACKAGE_MANAGER_EVENT_TYPE_UPDATE; - } else { - return PACKAGE_MANAGER_ERROR_INVALID_PARAMETER; - } - - event_state = PACKAGE_MANAGER_EVENT_STATE_STARTED; - } else if (keystr == "install_percent" || - keystr == "progress_percent") { - event_state = PACKAGE_MANAGER_EVENT_STATE_PROCESSING; - progress = std::stoi(val); - } else if (keystr == "error") { - event_state = PACKAGE_MANAGER_EVENT_STATE_FAILED; - } else if (keystr == "end" || - keystr == "ok") { - event_state = PACKAGE_MANAGER_EVENT_STATE_COMPLETED; - progress = 100; - } - - instance->pCallback(pkg_type, pkg_name, - event_type, event_state, progress, - PACKAGE_MANAGER_ERROR_NONE, - instance->pCallbackUserData); - - - return PACKAGE_MANAGER_ERROR_NONE; -} - -static package_info_h make_package_info_handle(const PackageProxy::PackageInfo& info) -{ - uid_t krate_uid; - - if (info.id.empty()) { - return NULL; - } - - try { - runtime::User pkgOwner(info.krate); - krate_uid = pkgOwner.getUid(); - } catch (runtime::Exception &e) { - return NULL; - } - - package_x* package = (package_x*)::calloc(1, sizeof(package_x)); - if (package == NULL) { - return NULL; - } - - pkgmgr_pkginfo_x* pkginfo = (pkgmgr_pkginfo_x*)::calloc(1, sizeof(pkgmgr_pkginfo_x)); - if (pkginfo == NULL) { - free(package); - return NULL; - } - - package_info_s* packageinfo = (package_info_s*)::calloc(1, sizeof(package_info_s)); - if (packageinfo == NULL) { - free(package); - free(pkginfo); - return NULL; - } - - packageinfo->package = ::strdup(info.id.c_str()); - packageinfo->pkgmgr_pkginfo = pkginfo; - - pkginfo->uid = krate_uid; - pkginfo->locale = ::strdup(info.locale.c_str()); - pkginfo->pkg_info = package; - - package->for_all_users = ::strdup("false"); - package->package = ::strdup(info.id.c_str()); - package->version = ::strdup(info.version.c_str()); - package->removable = ::strdup(info.isRemovable? "true":"false"); - package->preload = ::strdup(info.isPreload? "true":"false"); - package->system = ::strdup(info.isSystem? "true":"false"); - package->type = ::strdup(info.type.c_str()); - package->mainapp_id = ::strdup(info.mainAppId.c_str()); - package->api_version = ::strdup(info.apiVersion.c_str()); - - icon_x* icon = (icon_x*)::calloc(1, sizeof(icon_x)); - if (icon != NULL) { - icon->text = ::strdup(info.icon.c_str()); - icon->lang = ::strdup(info.locale.c_str()); - package->icon = ::g_list_append(NULL, icon); - } - - label_x* label = (label_x*)::calloc(1, sizeof(label_x)); - if (label != NULL) { - label->text = ::strdup(info.label.c_str()); - label->lang = ::strdup(info.locale.c_str()); - package->label = ::g_list_append(NULL, label); - } - - description_x* desc = (description_x*)::calloc(1, sizeof(description_x)); - if (desc != NULL) { - desc->text = ::strdup(info.description.c_str()); - desc->lang = ::strdup(info.locale.c_str()); - package->description = ::g_list_append(NULL, desc); - } - - author_x* author = (author_x*)::calloc(1, sizeof(author_x)); - if (author != NULL) { - author->text = ::strdup(info.author.name.c_str()); - author->email = ::strdup(info.author.email.c_str()); - author->href = ::strdup(info.author.href.c_str()); - author->lang = ::strdup(info.locale.c_str()); - package->author = ::g_list_append(NULL, author); - } - - return reinterpret_cast(packageinfo); -} - -int krate_package_proxy_create(krate_manager_h manager, const char* name, krate_package_proxy_h *handle) -{ - RET_ON_FAILURE(manager, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(name, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - krate_package_proxy_s* instance = new krate_package_proxy_s { - GetKrateContext(manager). - createKrateInterface(), - name, ::pkgmgr_client_new(PC_LISTENING), NULL, NULL - }; - - *handle = reinterpret_cast(instance); - return KRATE_ERROR_NONE; -} - -int krate_package_proxy_destroy(krate_package_proxy_h handle) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - krate_package_proxy_s* instance = getInstance(handle); - - ::pkgmgr_client_free(instance->pNativeHandle); - - delete instance; - - return KRATE_ERROR_NONE; -} - -int krate_package_proxy_get_package_info(krate_package_proxy_h handle, const char* package_id, package_info_h* package_info) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(package_id, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(package_info, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - const auto& info = proxy.getPackageInfo(name, package_id); - package_info_h ret = make_package_info_handle(info); - - if (ret == NULL) { - return KRATE_ERROR_INVALID_PARAMETER; - } - - *package_info = ret; - - return KRATE_ERROR_NONE; -} - -int krate_package_proxy_foreach_package_info(krate_package_proxy_h handle, package_manager_package_info_cb callback, void *user_data) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(callback, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - for (const auto& pkgid : proxy.getPackageList(name)) { - package_info_h info_h = make_package_info_handle(proxy.getPackageInfo(name, pkgid)); - int ret = callback(info_h, user_data); - package_info_destroy(info_h); - if (!ret) { - break; - } - } - - return KRATE_ERROR_NONE; -} - -int krate_package_proxy_set_event_status(krate_package_proxy_h handle, int status_type) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - - int ret; - ret = pkgmgr_client_set_status_type(instance->pNativeHandle, status_type); - - if (ret != PACKAGE_MANAGER_ERROR_NONE) - return KRATE_ERROR_INVALID_PARAMETER; - - return KRATE_ERROR_NONE; -} - -int krate_package_proxy_set_event_cb(krate_package_proxy_h handle, package_manager_event_cb callback, void *user_data) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(callback, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - - instance->pCallback = callback; - instance->pCallbackUserData = user_data; - - int ret; - ret = pkgmgr_client_listen_status(instance->pNativeHandle, packageEventHandler, handle); - - if (ret < 0) - return KRATE_ERROR_INVALID_PARAMETER; - - return KRATE_ERROR_NONE; -} - -int krate_package_proxy_unset_event_cb(krate_package_proxy_h handle) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - - int ret; - ret = pkgmgr_client_remove_listen_status(instance->pNativeHandle); - - if (ret < 0) - return KRATE_ERROR_INVALID_PARAMETER; - - return KRATE_ERROR_NONE; -} - -int krate_package_proxy_install(krate_package_proxy_h handle, const char* package_path) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(package_path, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - return proxy.install(name, package_path); -} - -int krate_package_proxy_uninstall(krate_package_proxy_h handle, const char* package_id) -{ - RET_ON_FAILURE(handle, KRATE_ERROR_INVALID_PARAMETER); - RET_ON_FAILURE(package_id, KRATE_ERROR_INVALID_PARAMETER); - - auto instance = getInstance(handle); - auto& proxy = instance->proxy; - const std::string& name = instance->krateName; - - return proxy.uninstall(name, package_id); -} diff --git a/lib/krate/package-proxy.h b/lib/krate/package-proxy.h deleted file mode 100644 index 5dda76a..0000000 --- a/lib/krate/package-proxy.h +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __CAPI_KRATE_PACKAGE_INFO_H__ -#define __CAPI_KRATE_PACKAGE_INFO_H__ - -#include -#include - -#include - -/** - * @file package-info.h - * @brief This file provides APIs to get the information of packages in the krate - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @addtogroup CAPI_KRATE_KRATE_PACKAGE_INFO_MODULE - * @{ - */ - -/** - * @brief The krate package proxy handle - * @since_tizen 3.0 - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - */ -typedef void* krate_package_proxy_h; - -/** - * @brief Acquires the krate package proxy handle. - * @details This API acquires krate package proxy handle required to call - * the krate package_manager APIs. - * @since_tizen 3.0 - * @param[in] manager The krate manager handle - * @param[in] name The krate name - * @param[out] handle The krate package proxy handle - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_CONNECTION_REFUSED Connection refused - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @see krate_manager_create() - * @see krate_package_proxy_destroy() - * @see get_last_result() - */ -KRATE_API int krate_package_proxy_create(krate_manager_h manager, const char* name, krate_package_proxy_h *handle); - -/** - * @brief Releases the krate package proxy handle. - * @details This API must be called if interaction with the krate package - * manager handle is no longer required. - * @since_tizen 3.0 - * @param[in] handle The krate package proxy handle - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The handle must be created by krate_package_proxy_create() - * @see krate_package_proxy_create() - */ -KRATE_API int krate_package_proxy_destroy(krate_package_proxy_h handle); - -/** - * @brief Gets the package information for the given package in the krate. - * @details This API gets package information handle required to get - * information of the pacakge in the krate. - * @since_tizen 3.0 - * @param[in] handle The krate package proxy handle - * @param[in] pakcage_id The package ID - * @return Krate package information handle on success, otherwise NULL - * @remark The specific error code can be obtained by using the - * get_last_result() method. Error codes are described in - * exception section. - * @remark The handle should be destroyed using package_info_destroy(). - * @exception #KRATE_ERROR_NONE No error - * @exception #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @exception #KRATE_ERROR_TIMED_OUT Time out - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - * @see package_manager_get_package_info() - * @see package_manager_destroy() - * @see get_last_result() - */ -KRATE_API int krate_package_proxy_get_package_info(krate_package_proxy_h handle, const char* pakcage_id, package_info_h* package_info); - -/** - * @brief Retrieves all the IDs of the installed package in the krate. - * @details This API calls package_manager_package_info_cb() once for - * each package information handle with traversing the installed - * package list in the krate. - * @since_tizen 3.0 - * @param[in] handle The krate package proxy handle - * @param[in] callback The iteration callback function - * @param[in] user_data The user data passed to the callback function - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @pre The handle must be created by krate_package_proxy_create(). - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - * @see package_manager_foreach_package_info() - */ -KRATE_API int krate_package_proxy_foreach_package_info(krate_package_proxy_h handle, package_manager_package_info_cb callback, void *user_data); - -/** - * @brief Installs the package located at the given path into the krate. - * @details Administrator can use this API to install the package into the - * krate. - * @since_tizen 3.0 - * @param[in] handle The krate package proxy handle - * @param[in] name The krate name - * @param[in] package_path The absolute path to the package to be installed - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_NO_SUCH_FILE No such package file - * @retval #KRATE_ERROR_PERMISSION_DENIED The application does not have - * the privilege to call this API or the caller is not the owner - * of the krate - * @pre The handle must be created by krate_package_proxy_create(). - * @pre The krate corresponding to the given name must be - * created before use of this API. - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - * @see krate_package_proxy_uninstall() - * @see package_manager_request_install() - */ -KRATE_API int krate_package_proxy_install(krate_package_proxy_h handle, const char* package_path); - -/** - * @brief Uinstalls the package with the given ID from the krate. - * @details Administrator can use this API to uninstall the package from the - * krate. - * @since_tizen 3.0 - * @param[in] handle The krate package proxy handle - * @param[in] name The krate name - * @param[in] pakcage_id The pakcage ID - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @retval #KRATE_ERROR_NO_DATA No such pacakge to unintall - * @retval #KRATE_ERROR_PERMISSION_DENIED The application does not have - * the privilege to call this API or the caller is not the owner - * of the krate - * @pre The handle must be created by krate_package_proxy_create(). - * @pre The krate corresponding to the given name must be - * created before use of this API. - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - * @see krate_package_proxy_install() - * @see package_manager_request_uninstall() - */ -KRATE_API int krate_package_proxy_uninstall(krate_package_proxy_h handle, const char* pakcage_id); - -/** - * @brief Sets the event status that presents the package has been - * installed, uninstalled or updated in the krate. - * @details This API sets the event status of the package for monitoring - * whether the package has been installed, uninstalled or updated. - * event status can be combined multiple status using OR operation. - * @since_tizen 3.0 - * @param[in] handle The krate package proxy handle - * @param[in] status_type The status of the package - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre The handle must be created by krate_package_proxy_create(). - * @pre the krate corresponding to the given name must be - * created before use of this api. - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - * @see krate_package_proxy_uninstall() - * @see krate_package_proxy_set_event_cb() - * @see krate_package_proxy_unset_event_cb() - * @see package_manager_set_event_status() - */ -KRATE_API int krate_package_proxy_set_event_status(krate_package_proxy_h handle, int status_type); - -/** - * @brief Registers a callback function for package event. - * @details This API sets a callback function to be invoked when the package - * has been installed, uninstalled or updated. - * @since_tizen 3.0 - * @param[in] handle the krate package proxy handle - * @param[in] callback The callback function to be registered - * @param[in] user_data The user data to be passed to the callback function - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre the handle must be created by krate_package_proxy_create(). - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - * @see krate_package_proxy_uninstall() - * @see krate_package_proxy_set_event_status() - * @see krate_package_proxy_unset_event_cb() - * @see package_manager_event_cb() - * @see package_manager_set_event_cb() - */ -KRATE_API int krate_package_proxy_set_event_cb(krate_package_proxy_h handle, package_manager_event_cb callback, void *user_data); - -/** - * @brief Unregisters the callback function. - * @details This API unsets the callback funtion not to be invoked by - * package event status - * @since_tizen 3.0 - * @param[in] handle the krate package proxy handle - * @param[in] name the krate name - * @return #KRATE_ERROR_NONE on success, otherwise a negative value - * @retval #KRATE_ERROR_NONE Successful - * @retval #KRATE_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #KRATE_ERROR_TIMED_OUT Time out - * @pre the handle must be created by krate_package_proxy_create(). - * created before use of this api. - * @see krate_package_proxy_create() - * @see krate_package_proxy_destroy() - * @see krate_package_proxy_uninstall() - * @see krate_package_proxy_set_event_status() - * @see krate_package_proxy_set_event_cb() - * @see package_manager_unset_event_cb() - */ -KRATE_API int krate_package_proxy_unset_event_cb(krate_package_proxy_h handle); - - -/** - * @} - */ - -#ifdef __cplusplus -} -#endif - -#endif /* __CAPI_KRATE_PACKAGE_INFO_H__ */ diff --git a/lib/manager.cpp b/lib/manager.cpp deleted file mode 100644 index 57a5264..0000000 --- a/lib/manager.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#include "rmi/manager.h" - -namespace Krate { - -Manager::Manager(KrateControlContext& ctx) : - context(ctx) -{ -} - -Manager::~Manager() -{ -} - -int Manager::createKrate(const std::string& name, const std::string& setupWizAppid) -{ - try { - return context->methodCall("Manager::createKrate", name, setupWizAppid); - } catch (runtime::Exception& e) { - return -1; - } -} - -int Manager::removeKrate(const std::string& name) -{ - try { - return context->methodCall("Manager::removeKrate", name); - } catch (runtime::Exception& e) { - return -1; - } -} - -int Manager::lockKrate(const std::string& name) -{ - try { - return context->methodCall("Manager::lockKrate", name); - } catch (runtime::Exception& e) { - return -1; - } -} - -int Manager::unlockKrate(const std::string& name) -{ - try { - return context->methodCall("Manager::unlockKrate", name); - } catch (runtime::Exception& e) { - return -1; - } -} - -int Manager::getKrateState(const std::string& name) -{ - try { - return context->methodCall("Manager::getKrateState", name); - } catch (runtime::Exception& e) { - return -1; - } -} - -std::vector Manager::getKrateList(int state) -{ - std::vector empty; - try { - return context->methodCall>("Manager::getKrateList", state); - } catch (runtime::Exception& e) { - return empty; - } -} - -int Manager::resetKratePassword(const std::string& name, const std::string& newPassword) -{ - try { - return context->methodCall("Manager::resetKratePassword", name, newPassword); - } catch (runtime::Exception& e) { - return -1; - } -} - -} // namespace Krate diff --git a/lib/package-proxy.cpp b/lib/package-proxy.cpp deleted file mode 100644 index 0a58e34..0000000 --- a/lib/package-proxy.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ -#include "rmi/package-proxy.h" - -namespace Krate { - -PackageProxy::PackageProxy(KrateControlContext& ctx) : - context(ctx) -{ -} - -PackageProxy::~PackageProxy() -{ -} - -PackageProxy::PackageInfo PackageProxy::getPackageInfo(const std::string& name, const std::string& pkgid) -{ - try { - return context->methodCall("PackageProxy::getPackageInfo", name, pkgid); - } catch (runtime::Exception& e) {} - return PackageProxy::PackageInfo(); -} - -std::vector PackageProxy::getPackageList(const std::string& krate) -{ - try { - return context->methodCall>("PackageProxy::getPackageList", krate); - } catch (runtime::Exception& e) {} - return std::vector();; -} - -int PackageProxy::install(const std::string& name, const std::string& pkgid) -{ - try { - return context->methodCall("PackageProxy::install", name, pkgid); - } catch (runtime::Exception& e) { - return -1; - } -} - -int PackageProxy::uninstall(const std::string& name, const std::string& pkgid) -{ - try { - return context->methodCall("PackageProxy::uninstall", name, pkgid); - } catch (runtime::Exception& e) { - return -1; - } -} - -} // namespace Krate diff --git a/module/CMakeLists.txt b/module/CMakeLists.txt index 9a7295f..e0e6faa 100644 --- a/module/CMakeLists.txt +++ b/module/CMakeLists.txt @@ -14,8 +14,8 @@ # limitations under the License. # FILE(GLOB PAM_SRCS krate.cpp - session.cpp krate-builder.cpp + common/session.cpp ) SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack") diff --git a/module/session.cpp b/module/common/session.cpp similarity index 100% rename from module/session.cpp rename to module/common/session.cpp diff --git a/module/session.h b/module/common/session.h similarity index 100% rename from module/session.h rename to module/common/session.h diff --git a/module/krate.cpp b/module/krate.cpp index f057748..bb7c293 100644 --- a/module/krate.cpp +++ b/module/krate.cpp @@ -23,9 +23,9 @@ #include #include -#include "session.h" #include "krate-guard.h" #include "krate-builder.h" +#include "common/session.h" #include #include diff --git a/packaging/krate.spec b/packaging/krate.spec index fb5e983..f4848f9 100644 --- a/packaging/krate.spec +++ b/packaging/krate.spec @@ -1,10 +1,10 @@ Name: krate Version: 0.0.1 -Release: 0 +Release: 1 License: Apache-2.0 Source0: file://%{name}-%{version}.tar.gz Summary: Tizen Krate Manager -Group: Security/Other +Group: Security/Service Requires: systemd BuildRequires: pam-devel BuildRequires: gcc @@ -43,7 +43,6 @@ krates. %attr(644,root,root) %{TZ_SYS_RO_ICONS}/krate/indicator_icon.png %attr(644,root,root) %{TZ_SYS_RO_ICONS}/krate/notification_sub_icon.png %attr(755,root,root) %{_libdir}/security/pam_krate.so -%attr(700,root,root) %{_sbindir}/krate-admin-cli %config /etc/pam.d/* %prep @@ -65,8 +64,6 @@ krates. -DSYSTEMD_UNIT_DIR=%{_unitdir} \ -DPAMD_DIR=/etc/pam.d \ -DICON_DIR="%{TZ_SYS_RO_ICONS}/krate" \ - -DAPP_INSTALL_PREFIX="%{TZ_SYS_RO_APP}" \ - -DAPP_SHARE_PACKAGES_DIR="%{TZ_SYS_RO_PACKAGES}" make %{?jobs:-j%jobs} @@ -75,8 +72,6 @@ make %{?jobs:-j%jobs} mkdir -p %{buildroot}/%{_unitdir}/multi-user.target.wants ln -s ../krate.service %{buildroot}/%{_unitdir}/multi-user.target.wants/krate.service -%find_lang krate-setup-wizard - %post %clean @@ -86,113 +81,3 @@ rm -rf %{buildroot} %postun mv /etc/pam.d/systemd-user.keep /etc/pam.d/systemd-user - -## Krate Client Package ######################################################## -%package -n libkrate -Summary: Tizen Krate Client library -Group: Development/Libraries -BuildRequires: pkgconfig(capi-appfw-application) -BuildRequires: pkgconfig(capi-appfw-package-manager) -BuildRequires: pkgconfig(libtzplatform-config) -#Requires: %{name} = %{version}-%{release} -Requires(post): /sbin/ldconfig -Requires(postun): /sbin/ldconfig - -%description -n libkrate -The libkrate package contains the libraries needed to control inside of the krate. - -%post -n libkrate -p /sbin/ldconfig - -%postun -n libkrate -p /sbin/ldconfig - -%files -n libkrate -%manifest krate.manifest -%defattr(644,root,root,755) -%attr(755,root,root) %{_libdir}/libkrate.so.%{version} -%{_libdir}/libkrate.so.0 - -## Devel Package ############################################################## -%package -n libkrate-devel -Summary: Libraries and header files for krate client development -Group: Development/Libraries -Requires: libkrate = %{version}-%{release} - -%description -n libkrate-devel -The libkrate-devel package includes the libraries and header files necessary for -developing the krate client program. - -%files -n libkrate-devel -%manifest krate.manifest -%defattr(644,root,root,755) -%{_libdir}/libkrate.so -%{_includedir}/krate -%{_libdir}/pkgconfig/krate.pc - -## Krate Setup Wizard Package ################################################# -%package -n org.tizen.krate-setup-wizard -Summary: Tizen Krate setup wizard Interface -Group: Security/Other -Requires: libkrate = %{version}-%{release} -BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(capi-appfw-application) -BuildRequires: pkgconfig(evas) -BuildRequires: pkgconfig(notification) - -%description -n org.tizen.krate-setup-wizard -Tizen Krate setup wizard interface - -%define setup_home %{TZ_SYS_RO_APP}/org.tizen.krate-setup-wizard - -%files -n org.tizen.krate-setup-wizard -f krate-setup-wizard.lang -%defattr(-,root,root,-) -%manifest tools/apps/setup-wizard/org.tizen.krate-setup-wizard.manifest -%{setup_home}/bin/* -%{setup_home}/res/* -%{TZ_SYS_RO_PACKAGES}/org.tizen.krate-setup-wizard.xml - -## Kaskit package ##################################################### -%package -n org.tizen.kaskit -Summary: Tizen Krate launcher Interface -Group: Security/Other -BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(evas) -BuildRequires: pkgconfig(capi-appfw-application) -BuildRequires: pkgconfig(capi-appfw-package-manager) -BuildRequires: pkgconfig(capi-appfw-app-manager) -BuildRequires: pkgconfig(badge) - -%description -n org.tizen.kaskit -Tizen Krate launcher interface - -%define launcher_home %{TZ_SYS_RO_APP}/org.tizen.kaskit - -%files -n org.tizen.kaskit -%defattr(-,root,root,-) -%manifest tools/apps/kaskit/org.tizen.kaskit.manifest -%{launcher_home}/bin/* -%{launcher_home}/res/* -%{TZ_SYS_RO_PACKAGES}/org.tizen.kaskit.xml - -## Keyguard package ##################################################### -%package -n org.tizen.keyguard -Summary: Tizen Krate keyguard Interface -Group: Security/Other -Requires: libkrate = %{version}-%{release} -BuildRequires: pkgconfig(elementary) -BuildRequires: pkgconfig(capi-appfw-application) -BuildRequires: pkgconfig(evas) -BuildRequires: pkgconfig(capi-ui-efl-util) -BuildRequires: pkgconfig(auth-fw) -BuildRequires: pkgconfig(shortcut) - -%description -n org.tizen.keyguard -Tizen Krate keyguard interface - -%define keyguard_home %{TZ_SYS_RO_APP}/org.tizen.keyguard - -%files -n org.tizen.keyguard -%defattr(-,root,root,-) -%manifest tools/apps/keyguard/org.tizen.keyguard.manifest -%{keyguard_home}/bin/* -%{keyguard_home}/res/* -%{TZ_SYS_RO_PACKAGES}/org.tizen.keyguard.xml diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt deleted file mode 100755 index 813d2e7..0000000 --- a/tools/CMakeLists.txt +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -SET(KRATE_APPS ${KRATE_TOOLS}/apps) -SET(KRATE_CLI ${KRATE_TOOLS}/cli) - -ADD_SUBDIRECTORY(${KRATE_APPS}) -ADD_SUBDIRECTORY(${KRATE_CLI}) diff --git a/tools/apps/CMakeLists.txt b/tools/apps/CMakeLists.txt deleted file mode 100755 index cb80623..0000000 --- a/tools/apps/CMakeLists.txt +++ /dev/null @@ -1,34 +0,0 @@ -# -# Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -FIND_PACKAGE(PkgConfig REQUIRED) -PKG_CHECK_MODULES(EFL_APP REQUIRED - dlog - glib-2.0 - bundle - elementary - capi-appfw-application - capi-ui-efl-util - evas -) - -SET(KRATE_APPS_SETUP_WIZARD ${KRATE_APPS}/setup-wizard) -SET(KRATE_APPS_LAUNCHER ${KRATE_APPS}/kaskit) -SET(KRATE_APPS_KEYGUARD ${KRATE_APPS}/keyguard) - -ADD_SUBDIRECTORY(${KRATE_APPS_SETUP_WIZARD}) -ADD_SUBDIRECTORY(${KRATE_APPS_LAUNCHER}) -ADD_SUBDIRECTORY(${KRATE_APPS_KEYGUARD}) diff --git a/tools/apps/kaskit/CMakeLists.txt b/tools/apps/kaskit/CMakeLists.txt deleted file mode 100644 index d20bae0..0000000 --- a/tools/apps/kaskit/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(org.tizen.kaskit C) - -INCLUDE_DIRECTORIES(./include) - -FIND_PACKAGE(PkgConfig REQUIRED) -PKG_CHECK_MODULES(KASKIT REQUIRED - capi-appfw-application - capi-appfw-package-manager - capi-appfw-app-manager - badge -) - -INCLUDE_DIRECTORIES(${EFL_APP_INCLUDE_DIRS} ${KASKIT_INCLUDE_DIRS}) -LINK_DIRECTORIES(${EFL_APP_LIBRARY_DIRS} ${KASKIT_LIBRARY_DIRS}) - -SET(PROJECT_SRC src/main.c - src/ui.c - src/widget.c) - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") -SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") - -ADD_EXECUTABLE(${PROJECT_NAME} ${PROJECT_SRC}) -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/bin) - -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${EFL_APP_LIBRARIES} ${KASKIT_LIBRARIES}) - -ADD_CUSTOM_TARGET(${PROJECT_NAME}.edj - COMMAND edje_cc -no-save -id ${CMAKE_CURRENT_SOURCE_DIR}/res/images - ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/${PROJECT_NAME}.edc - ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.edj - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/${PROJECT_NAME}.edc) - -ADD_DEPENDENCIES(${PROJECT_NAME} ${PROJECT_NAME}.edj) -INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.edj DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/res) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/images/default_app_icon.png DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/res/images) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.xml DESTINATION ${APP_SHARE_PACKAGES_DIR}) diff --git a/tools/apps/kaskit/include/conf.h b/tools/apps/kaskit/include/conf.h deleted file mode 100644 index 661f243..0000000 --- a/tools/apps/kaskit/include/conf.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Tizen Krate launcher application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef CONF_H_ -#define CONF_H_ - -#define RESOLUTION_SCALE_W 1.0 -#define RESOLUTION_SCALE_H 1.0 - -#define ICON_IMG_SIZE ((118) * (RESOLUTION_SCALE_W)) -#define ICON_TXT_SIZE_NORMAL ((int)((28) * (RESOLUTION_SCALE_H))) -#define ICON_TXT_COLOR "000000FF" -#define ICON_TXT_SHADOW_COLOR "88888888" - -#define ICON_SIZE_W ((720) * (RESOLUTION_SCALE_W) / 4) -#define ICON_SIZE_H ((1060) * (RESOLUTION_SCALE_H) / 5) - -#define MAX_BADGE_DISPLAY_COUNT 999 - -#define ALLOWED_ICON_DRAG_DISTANCE 100 -#define LONG_PRESS_TIME 0.75 - -#endif /* CONF_H_ */ diff --git a/tools/apps/kaskit/include/kaskit.h b/tools/apps/kaskit/include/kaskit.h deleted file mode 100644 index 7aaa2a9..0000000 --- a/tools/apps/kaskit/include/kaskit.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Tizen Krate launcher application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#ifndef __KASKIT_H__ -#define __KASKIT_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "org.tizen.kaskit" - -#if !defined(PACKAGE) -#define PACKAGE "org.tizen.kaskit" -#endif - -typedef struct { - Evas_Object* win; - Evas_Object* conform; - Evas_Object* layout; - Evas_Object* panel; - Evas_Object* scroller; - Evas_Object* app_view; - Eina_List* app_icon_list; - char* edj_path; -} uidata_s; - -void _create_kaskit_window(); -void _set_kaskit_window_title(const char *title); -void _set_kaskit_window_exit_cb(); - -void _create_app_icon(const char* pkg_id, const char* app_id, const char* label, const char* icon, bool removable); -void _destroy_app_icon(const char* pkg_id); -void _update_app_icon_badge(const char* app_id, unsigned int count); - -void _icon_clicked_cb(const char *app_id); -void _icon_uninstalled_cb(const char *app_id); - -#endif /* __KASKIT_H__ */ diff --git a/tools/apps/kaskit/include/widget.h b/tools/apps/kaskit/include/widget.h deleted file mode 100644 index 96acbdc..0000000 --- a/tools/apps/kaskit/include/widget.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Tizen Krate launcher application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef WIDGET_H_ -#define WIDGET_H_ - -#include -#include -#include - -Evas_Object *_create_win(const char *package); -Evas_Object *_create_conformant(Evas_Object *parent); -Evas_Object *_create_layout(Evas_Object *parent, char *file, const char *group); - -#endif /* WIDGET_H_ */ diff --git a/tools/apps/kaskit/org.tizen.kaskit.manifest b/tools/apps/kaskit/org.tizen.kaskit.manifest deleted file mode 100644 index a76fdba..0000000 --- a/tools/apps/kaskit/org.tizen.kaskit.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/tools/apps/kaskit/org.tizen.kaskit.xml b/tools/apps/kaskit/org.tizen.kaskit.xml deleted file mode 100644 index e51ac98..0000000 --- a/tools/apps/kaskit/org.tizen.kaskit.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - http://tizen.org/privilege/appmanager.launch - http://tizen.org/privilege/packagemanager.info - http://tizen.org/privilege/packagemanager.admin - http://tizen.org/privilege/notification - - - - - diff --git a/tools/apps/kaskit/res/edje/app_icon.edc b/tools/apps/kaskit/res/edje/app_icon.edc deleted file mode 100644 index 98e5b8e..0000000 --- a/tools/apps/kaskit/res/edje/app_icon.edc +++ /dev/null @@ -1,312 +0,0 @@ -#include "../../include/conf.h" - -images { - image: "app_press_117.png" COMP; - image: "btn_delete_nor.png" COMP; - image: "btn_delete_press.png" COMP; - image: "icon_badge_container.png" COMP; - image: "folder_appicon_bg.png" COMP; - image: "sub_badge.png" COMP; -} - -styles { - style{ - name: "icon_label"; - base: "font=Tizen:style=Regular align=center color=#FFFFFFFF style=shadow,bottom shadow_color=#000000FF font_size=26 ellipsis=1.0 wrap=mixed"; - } - style{ - name: "icon_label_edit"; - base: "font=Tizen:style=Regular align=center color=#FFFFFFFF style=shadow,bottom shadow_color=#000000FF font_size=23 ellipsis=1.0 wrap=mixed"; - } -} - -group { name: "icon"; - parts { - part { name: "bg"; - type: RECT; - mouse_events: 1; - repeat_events: 1; - description { - state: "default" 0.0; - align: 0 0; - rel1{relative: 0.0 0.0; offset: 0 0;} - rel2{relative: 0.0 0.0; offset: ICON_SIZE_W ICON_SIZE_H;} - visible: 0; - } - } //"bg" - - part { name: "icon_content"; - type: SWALLOW; - description { - state: "default" 0.0; - rel1{relative: 0.16 0; to: "bg";} - rel2{relative: 0.84 0.6; to: "bg";} - align: 0.5 0.5; - } - } //"icon_content" - - part { name: "icon_touch"; - type: IMAGE; - mouse_events: 1; - repeat_events: 1; - scale: 1; - description { - state: "default" 0.0; - rel1{relative: 0.0 0.0; to: "icon_content";} - rel2{relative: 1.0 1.0; to: "icon_content";} - aspect: 1.0 1.0; - aspect_preference: BOTH; - color: 0 0 0 0; - image { - normal: "app_press_117.png"; - } - } - description{ - state: "icon_touched" 0.0; - inherit: "default" 0.0; - color: 0 0 0 250; - } - } //"icon_touch" - - part { name: "app_icon_disable"; - type: IMAGE; - mouse_events: 1; - repeat_events: 0; - scale: 1; - description { - state: "default" 0.0; - rel1{relative: 0.0 0.0; to: "icon_content";} - rel2{relative: 1.0 1.0; to: "icon_content";} - aspect: 1.0 1.0; - aspect_preference: BOTH; - color: 0 0 0 0; - image { - normal: "folder_appicon_bg.png"; - } - visible: 0; - } - description{ - state: "disable" 0.0; - inherit: "default" 0.0; - color: 0 0 0 150; - visible: 1; - } - } //"app_icon_disable" - - part { name: "icon_name"; - type: TEXTBLOCK; - mouse_events: 1; - repeat_events: 1; - description { - state: "default" 0.0; - rel1{relative: 0.04 0.6; to: "bg";} - rel2{relative: 0.95 0.98; to: "bg";} - color: 255 255 255 255; - text { - style: "icon_label"; - align: 0.5 0.0; - } - } - description { - state: "disable" 0.0; - inherit: "default" 0.0; - color: 0 0 0 50; - } - description { - state: "hide" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } //"icon_name" - - part { name: "icon_badge"; - type: IMAGE; - scale: 0; - description { - state: "default" 0.0; - rel1{relative: 0.0 0.0; offset: -10 1; to: "badge_text";} - rel2{relative: 1.0 1.0; offset: 13 3; to: "badge_text";} - visible: 0; - image - { - normal: "icon_badge_container.png"; - } - } - description { - state: "show" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } //"icon_badge" - - part { name: "badge_text"; - type: TEXT; - scale: 1; - description { - state: "default" 0.0; - visible: 0; - fixed: 1 1; - color: 255 255 255 255; - rel1{relative: 0.95 -0.05; offset: 0 2; to: "icon_content";} - rel2{relative: 0.95 -0.05; offset: 0 2; to: "icon_content";} - align: 1.0 0.0; - text { - font: "arial"; - size: 20; - text_class: "ATO002"; - min: 1 1; - max: 1 1; - ellipsis: -1; - } - } - description { - state: "show" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } //"badge_text" - - part { name: "icon_sub_badge"; - type: IMAGE; - scale: 0; - description { - state: "default" 0.0; - rel1{relative: 0.6 0.6; to: "icon_content";} - rel2{relative: 1.1 1.1; to: "icon_content";} - color: 255 255 255 255; - visible: 1; - aspect: 1.0 1.0; - aspect_preference: BOTH; - image - { - normal: "sub_badge.png"; - } - } - description { - state: "hide" 0.0; - inherit: "default" 0.0; - visible: 0; - } - } //"icon_sub_badge" - - part { name: "uninstall_btn"; - type: IMAGE; - scale: 0; - description { - state: "default" 0.0; - rel1{relative: -0.1 -0.1; to: "icon_content";} - rel2{relative: 0.4 0.4; to: "icon_content";} - color: 255 255 255 0; - visible: 0; - aspect: 1.0 1.0; - aspect_preference: BOTH; - image { - normal: "btn_delete_nor.png"; - } - } - description { - state: "show" 0.0; - inherit: "default" 0.0; - color: 255 255 255 255; - visible: 1; - } - description { - state: "press" 0.0; - inherit: "default" 0.0; - color: 255 255 255 255; - image { - normal: "btn_delete_press.png"; - } - visible: 1; - } - } //"uninstall_btn" - } - - programs { - program { name: "icon_touch_program"; - signal: "mouse,down,1"; - source: "icon_touch"; - action: STATE_SET "icon_touched" 0.0; - target: "icon_touch"; - transition: LINEAR 0.1; - } - program { name: "icon_touch_release_program"; - signal: "mouse,up,1"; - source: "icon_touch"; - action: STATE_SET "default" 0.0; - target: "icon_touch"; - transition: LINEAR 0.1; - } - program { name: "icon_sub_badge_show"; - signal: "icon_sub_badge_show"; - source: "source"; - action: STATE_SET "default" 0.0; - target: "icon_sub_badge"; - } - program { name: "icon_sub_badge_hide"; - signal: "icon_sub_badge_hide"; - source: "source"; - action: STATE_SET "hide" 0.0; - target: "icon_sub_badge"; - } - program { name: "uninstall_button_show"; - signal: "uninstall_button_show"; - source: "source"; - action: STATE_SET "show" 0.0; - target: "uninstall_btn"; - } - program { name: "uninstall_button_hide"; - signal: "uninstall_button_hide"; - source: "source"; - action: STATE_SET "default" 0.0; - target: "uninstall_btn"; - } - program { name: "uninstall_button_clicked"; - signal: "mouse,clicked,1"; - source: "uninstall_btn"; - action: SIGNAL_EMIT "uninstall_button_clicked" "source"; - } - program { name: "uninstall_button_mouse_down"; - signal: "mouse,down,1"; - source: "uninstall_btn"; - action: STATE_SET "press" 0.0; - target: "uninstall_btn"; - transition: DECELERATE 0.4; - } - program { name: "uninstall_button_mouse_up"; - signal: "mouse,up,1"; - source: "uninstall_btn"; - action: STATE_SET "show" 0.0; - target: "uninstall_btn"; - transition: DECELERATE 0.4; - } - program { name: "icon_badge_show"; - signal: "icon_badge_show"; - source: "source"; - action: STATE_SET "show" 0.0; - target: "icon_badge"; - target: "badge_text"; - } - program { name: "icon_badge_hide"; - signal: "icon_badge_hide"; - source: "source"; - action: STATE_SET "default" 0.0; - target: "icon_badge"; - target: "badge_text"; - } - program { name: "icon_disable"; - signal: "icon_disable"; - source: "source"; - action: STATE_SET "disable" 0.0; - target: "app_icon_disable"; - target: "icon_name"; - } - program { name: "icon_enable"; - signal: "icon_enable"; - source: "source"; - action: STATE_SET "default" 0.0; - target: "icon_name"; - target: "app_icon_disable"; - } - } -} diff --git a/tools/apps/kaskit/res/edje/launcher.edc b/tools/apps/kaskit/res/edje/launcher.edc deleted file mode 100644 index d155b88..0000000 --- a/tools/apps/kaskit/res/edje/launcher.edc +++ /dev/null @@ -1,90 +0,0 @@ -group { name: "main_window"; - parts { - part { name: "bg"; - type: RECT; - mouse_events: 1; - repeat_events: 0; - description { state: "default" 0.0; - color: 0 0 0 0; - rel1 {relative: 0.0 0.0;} - rel2 {relative: 1.0 1.0;} - } - } - part { name: "popup_window"; - type: SWALLOW; - description { state: "default" 0.0; - rel1 {relative: 0.0 0.2; to: "bg"; offset: 22 0;} - rel2 {relative: 1.0 0.8; to: "bg"; offset: -22 0;} - } - } - programs { - program { name: "background_clicked_cb"; - signal: "mouse,clicked,1"; - source: "bg"; - action: SIGNAL_EMIT "bg_clicked" "layout"; - } - } - } -} - -group { name: "popup_layout"; - images{ - image: "popup_bg.png" COMP; - } - parts { - part { name: "bg"; - type: IMAGE; - description { state: "default" 0.0; - rel1 {relative: 0.0 0.0;} - rel2 {relative: 1.0 1.0;} - image { - normal: "popup_bg.png"; - border: 5 5 5 5; - } - } - } - part { name: "separator"; - type: RECT; - description { state: "default" 0.0; - rel1 { relative: 0.07 62/569; to: "bg";} - rel2 {relative: 0.93 64/569; to: "bg";} - color: 7 180 211 250; - } - } - part { name: "popup_title_bg"; - type: SWALLOW; - description { state: "default" 0.0; - rel1 {relative: 0.15 0; to: "bg";} - rel2 {relative: 0.85 62/569; to: "bg";} - color: 0 0 0 0; - visible: 0; - } - description { state: "done" 0.0; - inherit: "default" 0.0; - visible: 1; - } - } - part { name: "popup_title"; - type: TEXT; - mouse_events: 1; - repeat_events: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "popup_title_bg";} - rel2 { relative: 1.0 1.0; to: "popup_title_bg";} - color: 7 180 211 250; - visible: 1; - text { - text: ""; - size: 40; - } - } - } - part { name: "popup_content"; - type: SWALLOW; - description { state: "default"; - rel1 {relative: 0.0 0.0; to_x: "bg"; to_y: "separator"; offset: 22 22;} - rel2 {relative: 1.0 1.0; to: "bg"; offset: -22 -22;} - } - } - } -} diff --git a/tools/apps/kaskit/res/edje/org.tizen.kaskit.edc b/tools/apps/kaskit/res/edje/org.tizen.kaskit.edc deleted file mode 100644 index b666153..0000000 --- a/tools/apps/kaskit/res/edje/org.tizen.kaskit.edc +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -collections { - base_scale: 1.8; - #include "launcher.edc" - #include "app_icon.edc" -} diff --git a/tools/apps/kaskit/res/images/app_press_117.png b/tools/apps/kaskit/res/images/app_press_117.png deleted file mode 100644 index 75266daf31d4d4514dd58f351ea411524fb3ef63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1998 zcmZ`)Ydq5p8~%&YhGD2Q5lTjCBi5!l%xuVESPnf-8*}Qg#F|4qC6n{?kR-z6G}Eg$ zB}Ez$VZ2f!R33$9lSjie0O4FLc^*~yXMDOKh# zY?qVrxN;a;Dstg=u66)$kE1A|f}~z1#*>5x8V0rJq-Jl3qo*qXBp3p~rBndekd7{i zqz8}yAPxoqY!LwLJXg}0FN&pG_jN_+%dzp~qs9k=>$pY;WI;i}qm7TUXT=+tj!sTPqTNHk7tZj3_Cpm1 zHET9cBQ>U{DQAc$B94F&I5SV0T;XbT;$+k2_3C}$gDEB3t~|b-beGLb7nuj!5-F_+ zZWElT@V<4U@8z3T+F-U8gEHFD28}9%CwvuKI=ve?)M^K6%7;5cb{veG`8@Aofisg= zayrFo3$*oUI{wM!CMx{$x-ms>D$Pos@a=koF8Wrzx8QrH321f2!|SZpH8u6~mx&+RBJMDB-UZ&t`&-Pu~#+GnPw4$r94U@(0F1|yu~W?I|C zm2F++GU#^O(sN%U@-n3e}0Tp zyrj}hD9aNBsaP87Pb##kSWpE;kG?gu9wHI4-}$6WkV~-hrLCssMY`Gs(}8_C(6S)~@_m-u1KUgo5b_xxYO~k}A@z z;f?i zMZo{Ca51TeYCVvsN&NjZWYY$km3cLjOI=fK+C%j{;2T`LH;0pEs8{`W@3FwH@_f$e zTBFDXv4@512dEJ4cD+;0{7YN?>uEpRcLKvZhATQI-{Xlllo2d@i?VXZIcDRBbH&=3 zI*7i?u*;QUI-0QIb`LLD(1qb|8js2Qlg(;X6`Ufg50u;Ald4BnMOrnjlhKbAwm{r-rm~Gd~d9{%Le8a+|f<$Fk!vyGiyhyVB!}=(4 z|NPypGZn_p7>1u)_z7xiigCmmh)mJIXXr^DMj5e}-#DiMp$G&UqJH#Fbr%^-&ik0c zq_PcafsSkDD%wo9#aBN|9RA`eav(y|X@g;X;l-!OlgJ*qNFO%UO-7kVC29qKCRZ5U zT;H##(?px?m8EnD(C(b5oBW^-)zpKS821q++OGG$s@^HwOCZKT<}G2|K!MgF?h?EM z71FXX(!bRGwHS_RvW0dQG^a(r%Z#a!VPYVi1?yrq^L0shU$DQg5t_B+r(o{lC#QbZ zRIz403#j~;?vJD$EsI^&tDCdTEis~B@vcnOCZxyY@GYGd+_j!^ks2!@IrXo&kVbLX zh026C$+e#@DuVcN)=!g#G^cbcY;gm5S76bT|ID!l2={%5a|hLS1b2Tljy{?#HX5oT zl-{r3cK&wUxRAbhJ4j@t+Bi6X&{R@4Y-Np%qpvsqiO-LX;8o+1$5tM-bxU^fCYQ_? z14fC^7*4Fe#Bg(AzcG@>yb*Fe z1*AaejW`Z_&vB2=hbJIK%UL!(QDZ#@cPhJvMrM>;;Ypal2R7B__cV^bv2@a-94nJg z5Etg;mcSxUge@qfZ+*!ceboo9ov7Pa8#QpH)m=vS=0e|vtsR=q5MBa%%*PtC9sj%l z%wMAuf6szw#u!uDe1txZLW5_AUE;6|_)3gyPCe=K*NsJ^GUFaN$EB$Bw=Y&UHCQDO zC{5($6Nu2i7`>1YzPth-qBlqR<&D;Azqo2Mx*l3?no$EdKuoy60xxr2(y9AG{c0u`KF&I$#&dpwag_ouP)) YJ?YfY_~>5xuU-Y59NY*E_~4X(0IFn$V*mgE diff --git a/tools/apps/kaskit/res/images/btn_delete_nor.png b/tools/apps/kaskit/res/images/btn_delete_nor.png deleted file mode 100644 index 9793604050779dadc6dbb1bd3ac6af94d0df4923..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3289 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 L`njxgN@xNAsF#Ht diff --git a/tools/apps/kaskit/res/images/core_check_bg_stroke.png b/tools/apps/kaskit/res/images/core_check_bg_stroke.png deleted file mode 100644 index 9dd3f2e59dec736353e42bfca67d2a7eb10b7b5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU0wmSG7d!(}Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR z+ueoXe|!I#{XiaPfk$L9koEv$x0Bg+Kt{c%i(`n#@we9%`C1GlTpqG}8dj^?aI&4B z=vX*Ibc;$p>r2jCYksBwS)MMC&YvG$Ty4RvXZOzU(v6dMkF)x3Pg_&=S>{ZQ#uv{= z)*8<0dNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE z?e4>+sSM@pwWh&E{-7~h@FA@FYVjn3&$-aVSz z)O${(`ga@uvu|hDweORkDZinfGcF`{`YCUv+;xwb0~Ag7G!*0gxToCll@Y?}jPIVV26@L};ZP7cGP#tiF27S*5BjV$A} zFaD;ytde=bv6MTNEc0i##Rof_`ON1q^<#znEpu(NPvvVavOH+K7^ha2H=U=b@N~g@ z&KF|OG9;>wUI>3IJnhsTmhWo1I$cwo``nj(|DX3?=?|k;S(CZ_&TqlMP*g2(jVMV; zEJ?LWE=mPb3`PcqX1WFzx<;lUhUQkrhE^t~+6I9nO2Eg!(;Qz yM4$#qkPX54X(i=}MX3yqDfvmM3ZA)%>8U}fi7AzZCsRSu%;4$j=d#Wzp$Pz;%iDAS diff --git a/tools/apps/kaskit/res/images/default_app_icon.png b/tools/apps/kaskit/res/images/default_app_icon.png deleted file mode 100644 index 521310528142741448b8f0d99307133b977df1f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15273 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 SAoRbU4nR#wTd@{w75P6@DEqwt diff --git a/tools/apps/kaskit/res/images/icon_badge_container.png b/tools/apps/kaskit/res/images/icon_badge_container.png deleted file mode 100644 index 55125d247f721732f6830234b79d643a085e230d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 957 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX3?zBp#Z3TGEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP#<4_ zPlzi}!T&Vl|HYR7%dG#GS^O$8{|`iY=Kt;O|Cd_+DY5!nYWcSmNLu{?GyZ_tzkzDX z%>R~HK%_t<&;+2G5)gu`|DS92KiA-InbqGC%l{xL>%Tx-N-Tkf0F?pF2TJ`fHv1pS z0J5db@_)Vk-%{(}B^DqBKwYIkH9(b?K<5E%|6gqWtH>H8RciIC)a-vb&@`)`#g>0d ztbxja?gyy{ItlD%kop2skflIzpuHf+TY!8DcFdnr8=zx=x_%V{{cHWJ)aoD5VgLVo z{=57U7$OlRL4LsutYX?`Ha6lc&h=}rzxnaw?K)S@nGb$GoW)!A>fft!KGEjZ=1-qm zOMjNX)?%J9o8^H^UH#g1H+0^a+x+-xYx6_r#@YvuTxQOBtzA~x`njFIxvjjS&fLcK zJ@YP2pdE}!-tI1uvo?K^0CG4BJR*yMasD5K8NYOG>I5nf@pN$v(Kz2a`DWB12cFj8 zDA}&iu8c0Lh>!wJu6H{cuCPu$8e4Mjzvq%D@0TV8dH?e#`4sUvD5x&X3cft+l*ojs zSAva?y@|PHVzlyS%9J#5vA`cr+S6qly-#b;>0Ve-cUA7vA*rs8g1rKJ?rMC}5Lt)x7$D3!r6B|j-u f!8128JvAsbF{QHbWGXNlF)(<#`njxgN@xNA&Ge)7 diff --git a/tools/apps/kaskit/res/images/popup_bg.png b/tools/apps/kaskit/res/images/popup_bg.png deleted file mode 100644 index e521dbadab9ba930fc20a4e26b10989d868a8892..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA3?vioaBc-sEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq8sKd6mGxU^Rn*LA+qju0R{0M0kKt zi0l9V|Gg?U5QBg^fXY&Ob|1a+?CX!;K#gC%|2lH{X-fC*wB9|RzWz+=+I{Halh5CN zef#lyL-xY&Kn;8)L4LsuE^9x2SmWH*;;`~f>!wQPF_l@p zoBORLrS3M+Nvb8T5hW>!C8<`)MX5lF!N|bSOxM6d*T^))(A>({*vimc+rZMwz`*l? z+*%Y3x%nxXX_dG&SnORU2-F}6vLQG>t)x7$D3!r6B|j-u!8128JvAsbF{QHbWGX1) O7(8A5T-G@yGywo~7ShT9 diff --git a/tools/apps/kaskit/res/images/sub_badge.png b/tools/apps/kaskit/res/images/sub_badge.png deleted file mode 100755 index da34bfcd6c6490f33683600d2e92e93ad9c22ea1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3761 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 bGchYLIXW;f8Ay~?00000NkvXXu0mjf2D>D> diff --git a/tools/apps/kaskit/src/main.c b/tools/apps/kaskit/src/main.c deleted file mode 100644 index 06c594c..0000000 --- a/tools/apps/kaskit/src/main.c +++ /dev/null @@ -1,278 +0,0 @@ -/* - * Tizen Krate launcher application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include -#include -#include -#include - -#include "kaskit.h" -#include "widget.h" - -static package_manager_h __pkg_mgr; - -static const char *__app_whitelist[] = { - "org.tizen.task-mgr", - NULL -}; -static const char *__app_blacklist[] = { - "org.tizen.phone", - "org.tizen.message", - "org.tizen.setting", - NULL -}; - -struct app_icon_s { - char *id; - char *label; - char *icon; - char *package; - bool removable; -}; - -static void *__create_app_icon(void *data) -{ - struct app_icon_s *app = (struct app_icon_s *)data; - unsigned int badge_show = 0, badge_count = 0; - - _create_app_icon(app->package, app->id, app->label, app->icon, app->removable); - - int ret = badge_get_display(app->id, &badge_show); - dlog_print(DLOG_ERROR, LOG_TAG, "badge_get_display err = %d", ret); - if (badge_show) { - ret = badge_get_count(app->id, &badge_count); - dlog_print(DLOG_ERROR, LOG_TAG, "badge_get_count err = %d", ret); - if (badge_count > 0) { - _update_app_icon_badge(app->id, badge_count); - } - } - - return NULL; -} - -static bool __pkg_is_removable(const char *pkg_id) -{ - bool removable = false; - - package_info_h pkg_h; - - package_info_create(pkg_id, &pkg_h); - package_info_is_removable_package(pkg_h, &removable); - package_info_destroy(pkg_h); - - return removable; -} - -static bool __app_is_in_blacklist(const char *app_id) -{ - int i; - for (i = 0; __app_blacklist[i] != NULL; i++) { - if (strcmp(app_id, __app_blacklist[i]) == 0) { - return true; - } - } - return false; -} - -static bool __app_is_in_whitelist(const char *app_id) -{ - int i; - for (i = 0; __app_whitelist[i] != NULL; i++) { - if (strcmp(app_id, __app_whitelist[i]) == 0) { - return true; - } - } - return false; -} - -static bool __get_app_info_cb(app_info_h app_h, void *user_data) -{ - struct app_icon_s app = {NULL, }; - bool nodisplay = true; - - app_info_get_app_id(app_h, &app.id); - if (__app_is_in_blacklist(app.id)) { - free(app.id); - return true; - } - - app_info_is_nodisplay(app_h, &nodisplay); - if (nodisplay && !__app_is_in_whitelist(app.id)) { - free(app.id); - return true; - } - - if (user_data == NULL || !strncmp(user_data, app.package, PATH_MAX)) { - app_info_get_label(app_h, &app.label); - app_info_get_icon(app_h, &app.icon); - app_info_get_package(app_h, &app.package); - app.removable = __pkg_is_removable(app.package); - - ecore_main_loop_thread_safe_call_sync(__create_app_icon, &app); - - free(app.package); - if (app.label != NULL) { - free(app.label); - } - if (app.icon != NULL) { - free(app.icon); - } - } - - free(app.id); - return true; -} - -static void __create_icon_thread(void *data, Ecore_Thread *thread) -{ - app_manager_foreach_app_info(__get_app_info_cb, data); - if (data != NULL) { - free(data); - } - _set_kaskit_window_exit_cb(); -} - -static void __pkg_event_cb(const char *type, - const char *pkg_id, - package_manager_event_type_e event_type, - package_manager_event_state_e event_state, int progress, - package_manager_error_e error, void *user_data) -{ - if (event_state == PACKAGE_MANAGER_EVENT_STATE_COMPLETED) { - if (event_type == PACKAGE_MANAGER_EVENT_TYPE_INSTALL) { - ecore_thread_run(__create_icon_thread, NULL, NULL, strdup(pkg_id)); - } else if (event_type == PACKAGE_MANAGER_EVENT_TYPE_UNINSTALL) { - _destroy_app_icon(pkg_id); - } - } -} - -static void __badge_changed_cb(unsigned int action, const char *app_id, unsigned int count, void *user_data) -{ - _update_app_icon_badge(app_id, count); -} - - -static char *__get_current_krate_name() -{ - struct passwd pwd, *result; - int bufsize; - - bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); - if (bufsize == -1) { - bufsize = 16384; - } - - char *ret, *buf = malloc(bufsize * sizeof(char)); - - if (buf == NULL) { - return NULL; - } - - getpwuid_r(getuid(), &pwd, buf, bufsize, &result); - if (result == NULL) { - ret = NULL; - } else { - ret = strdup(result->pw_name); - } - free(buf); - return ret; -} - -void _icon_clicked_cb(const char *app_id) -{ - app_control_h app_control; - app_control_create(&app_control); - app_control_set_app_id(app_control, app_id); - app_control_send_launch_request(app_control, NULL, NULL); - app_control_destroy(app_control); -} - -void _icon_uninstalled_cb(const char *pkg_id) -{ - package_manager_request_h pkg_mgr_req; - int id; - - package_manager_request_create(&pkg_mgr_req); - package_manager_request_uninstall(pkg_mgr_req, pkg_id, &id); - package_manager_request_destroy(pkg_mgr_req); -} - -static void __show_launcher() -{ - char *krate_name = __get_current_krate_name(); - - _set_kaskit_window_title(krate_name); - - package_manager_set_event_status(__pkg_mgr, - PACKAGE_MANAGER_STATUS_TYPE_INSTALL | - PACKAGE_MANAGER_STATUS_TYPE_UNINSTALL); - package_manager_set_event_cb(__pkg_mgr, __pkg_event_cb, NULL); - - badge_register_changed_cb(__badge_changed_cb, NULL); - - ecore_thread_run(__create_icon_thread, NULL, NULL, NULL); - - free(krate_name); -} - -static bool __app_create(void *data) -{ - package_manager_create(&__pkg_mgr); - - _create_kaskit_window(); - __show_launcher(); - - return true; -} - -static void __app_control(app_control_h app_control, void *data) -{ -} - -static void __app_pause(void *data) -{ -} - -static void __app_resume(void *data) -{ -} - -static void __app_terminate(void *data) -{ - package_manager_destroy(__pkg_mgr); -} - -int main(int argc, char *argv[]) -{ - int ret = 0; - - ui_app_lifecycle_callback_s event_callback = {0, }; - - event_callback.create = __app_create; - event_callback.terminate = __app_terminate; - event_callback.pause = __app_pause; - event_callback.resume = __app_resume; - event_callback.app_control = __app_control; - - ret = ui_app_main(argc, argv, &event_callback, NULL); - if (ret != APP_ERROR_NONE) - dlog_print(DLOG_ERROR, LOG_TAG, "ui_app_main is failed. err = %d", ret); - - return ret; -} diff --git a/tools/apps/kaskit/src/ui.c b/tools/apps/kaskit/src/ui.c deleted file mode 100644 index 70808dc..0000000 --- a/tools/apps/kaskit/src/ui.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Tizen Krate launcher application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include "kaskit.h" -#include "widget.h" -#include "conf.h" - -static uidata_s ud = {0, }; - -static int __num_of_apps = 0; -static bool __is_edit_mode = false; -static Ecore_Timer *__app_icon_long_press_timer = NULL; - -static void __block_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) -{ - ui_app_exit(); -} - -static void __app_view_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - eina_list_free(ud.app_icon_list); -} - -static void __set_kaskit_layout() -{ - ud.panel = _create_layout(ud.layout, ud.edj_path, "popup_layout"); - - elm_object_part_content_set(ud.layout, "popup_window", ud.panel); - - ud.scroller = elm_scroller_add(ud.panel); - elm_scroller_bounce_set(ud.scroller, EINA_FALSE, EINA_TRUE); - elm_scroller_policy_set(ud.scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO); - elm_object_part_content_set(ud.panel, "popup_content", ud.scroller); - - ud.app_view = elm_table_add(ud.scroller); - elm_table_homogeneous_set(ud.app_view, EINA_TRUE); - elm_object_content_set(ud.scroller, ud.app_view); - - evas_object_event_callback_add(ud.app_view, EVAS_CALLBACK_DEL, __app_view_del_cb, NULL); - - return; -} - -static char *__get_res_path(const char *file) -{ - char *res_path = NULL; - char edj_path[PATH_MAX] = "\0"; - - res_path = app_get_resource_path(); - if (res_path == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed get resource path"); - ui_app_exit(); - } - snprintf(edj_path, PATH_MAX, "%s%s", res_path, file); - - free(res_path); - - return strdup(edj_path); -} - -static Eina_Bool key_event_cb(void *data, int type, void *event) -{ - Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event; - - if (!strcmp(ev->keyname, "XF86Back")) { - Evas_Object *icon; - Eina_List *i; - - if (__is_edit_mode) { - __is_edit_mode = false; - - EINA_LIST_FOREACH(ud.app_icon_list, i, icon) { - elm_object_signal_emit(icon, "uninstall_button_hide", "source"); - elm_object_signal_emit(icon, "icon_sub_badge_show", "source"); - } - } else { - ui_app_exit(); - } - } - - return EINA_TRUE; -} - -void _create_kaskit_window() -{ - ud.edj_path = __get_res_path(PACKAGE ".edj"); - ud.win = _create_win(PACKAGE); - ud.conform = _create_conformant(ud.win); - ud.layout = _create_layout(ud.conform, ud.edj_path, "main_window"); - elm_object_content_set(ud.conform, ud.layout); - - __set_kaskit_layout(); - - evas_object_show(ud.win); - - return; -} - -void _set_kaskit_window_exit_cb() -{ - ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, key_event_cb, NULL); - - elm_object_signal_callback_add(ud.layout, "bg_clicked", "layout", __block_clicked_cb, NULL); -} - -static Eina_Bool __app_icon_long_press_cb(void *data) -{ - Evas_Object *icon; - Eina_List *i; - - EINA_LIST_FOREACH(ud.app_icon_list, i, icon) { - if (evas_object_data_get(icon, "removable")) { - elm_object_signal_emit(icon, "uninstall_button_show", "source"); - } - elm_object_signal_emit(icon, "icon_sub_badge_hide", "source"); - } - - __is_edit_mode = true; - - return ECORE_CALLBACK_CANCEL; -} - -void _set_kaskit_window_title(const char *title) -{ - elm_object_part_text_set(ud.panel, "popup_title", title); -} - -static int __icon_down_x, __icon_down_y; -static void __app_icon_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Mouse_Up *ev = event_info; - - __icon_down_x = ev->output.x; - __icon_down_y = ev->output.y; - - __app_icon_long_press_timer = ecore_timer_add(LONG_PRESS_TIME, __app_icon_long_press_cb, NULL); -} - -static void __app_icon_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Mouse_Up *ev = event_info; - - int distance_x = (ev->output.x - __icon_down_x); - int distance_y = (ev->output.y - __icon_down_y); - int distance = distance_x * distance_x + distance_y * distance_y; - - if (distance > ALLOWED_ICON_DRAG_DISTANCE) { - if (__app_icon_long_press_timer != NULL) { - ecore_timer_del(__app_icon_long_press_timer); - __app_icon_long_press_timer = NULL; - } - } -} - -static void __app_icon_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - Evas_Event_Mouse_Up *ev = event_info; - - int distance_x = (ev->output.x - __icon_down_x); - int distance_y = (ev->output.y - __icon_down_y); - int distance = distance_x * distance_x + distance_y * distance_y; - - if (distance <= ALLOWED_ICON_DRAG_DISTANCE && !__is_edit_mode) { - _icon_clicked_cb(evas_object_data_get(obj, "id")); - } - - if (__app_icon_long_press_timer != NULL) { - ecore_timer_del(__app_icon_long_press_timer); - __app_icon_long_press_timer = NULL; - } -} - -static void __app_icon_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) -{ - free(evas_object_data_get(obj, "id")); - free(evas_object_data_get(obj, "package")); -} - -static void __app_icon_uninstall_btn_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) -{ - _icon_uninstalled_cb(evas_object_data_get(obj, "package")); -} - -void _create_app_icon(const char *pkg_id, const char *app_id, const char *label, const char *icon, bool removable) -{ - char string[1024] = {0, }, *default_icon; - Evas_Object *icon_layout; - Evas_Object *icon_image; - - icon_layout = _create_layout(ud.app_view, ud.edj_path, "icon"); - evas_object_size_hint_weight_set(icon_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(icon_layout, 0.0, 0.0); - - icon_image = elm_image_add(icon_layout); - if (ecore_file_can_read(icon)) { - elm_image_file_set(icon_image, icon, NULL); - } else { - default_icon = __get_res_path("images/default_app_icon.png"); - elm_image_file_set(icon_image, default_icon, NULL); - free(default_icon); - } - evas_object_size_hint_min_set(icon_image, ICON_IMG_SIZE, ICON_IMG_SIZE); - evas_object_size_hint_max_set(icon_image, ICON_IMG_SIZE, ICON_IMG_SIZE); - - snprintf(string, sizeof(string), "%s", - ICON_TXT_SIZE_NORMAL, ICON_TXT_COLOR, ICON_TXT_SHADOW_COLOR, - label); - elm_object_part_text_set(icon_layout, "icon_name", string); - - elm_object_part_content_set(icon_layout, "icon_content", icon_image); - - evas_object_data_set(icon_layout, "id", strdup(app_id)); - evas_object_data_set(icon_layout, "package", strdup(pkg_id)); - evas_object_data_set(icon_layout, "removable", (const void *)removable); - - evas_object_event_callback_add(icon_layout, EVAS_CALLBACK_DEL, __app_icon_del_cb, NULL); - evas_object_event_callback_add(icon_layout, EVAS_CALLBACK_MOUSE_DOWN, __app_icon_down_cb, NULL); - evas_object_event_callback_add(icon_layout, EVAS_CALLBACK_MOUSE_MOVE, __app_icon_move_cb, NULL); - evas_object_event_callback_add(icon_layout, EVAS_CALLBACK_MOUSE_UP, __app_icon_up_cb, NULL); - - elm_object_signal_callback_add(icon_layout, "uninstall_button_clicked", "source", __app_icon_uninstall_btn_clicked_cb, NULL); - - elm_table_pack(ud.app_view, icon_layout, __num_of_apps % 3, __num_of_apps / 3, 1, 1); - evas_object_size_hint_min_set(ud.app_view, 0, (__num_of_apps / 3 + 1) * ICON_SIZE_H); - - ud.app_icon_list = eina_list_append(ud.app_icon_list, icon_layout); - - __num_of_apps++; - - evas_object_show(icon_image); - evas_object_show(icon_layout); - - if (__is_edit_mode && removable) { - elm_object_signal_emit(icon_layout, "uninstall_button_show", "source"); - } -} - -void _destroy_app_icon(const char *pkg_id) -{ - int index = 0; - Eina_List *i, *i_next; - Evas_Object *app_icon; - char *app_pkg_id; - - EINA_LIST_FOREACH_SAFE(ud.app_icon_list, i, i_next, app_icon) { - app_pkg_id = evas_object_data_get(app_icon, "package"); - if (strncmp(app_pkg_id, pkg_id, PATH_MAX)) { - elm_table_pack(ud.app_view, app_icon, index % 3, index / 3, 1, 1); - evas_object_size_hint_min_set(ud.app_view, 0, (__num_of_apps / 3 + 1) * ICON_SIZE_H); - index++; - continue; - } - elm_table_unpack(ud.app_view, app_icon); - evas_object_del(app_icon); - evas_object_size_hint_min_set(ud.app_view, 0, (__num_of_apps / 3 + 1) * ICON_SIZE_H); - ud.app_icon_list = eina_list_remove_list(ud.app_icon_list, i); - } - __num_of_apps--; - evas_object_size_hint_min_set(ud.app_view, 0, (__num_of_apps / 3 + 1) * ICON_SIZE_H); -} - -void _update_app_icon_badge(const char *app_id, unsigned int count) -{ - Eina_List *i, *i_next; - Evas_Object *app_icon; - char str[8], *icon_app_id; - - EINA_LIST_FOREACH_SAFE(ud.app_icon_list, i, i_next, app_icon) { - icon_app_id = evas_object_data_get(app_icon, "id"); - if (strncmp(icon_app_id, app_id, PATH_MAX) == 0) { - if (count == 0) { - elm_object_signal_emit(app_icon, "icon_badge_hide", "source"); - break; - } - - if (count > MAX_BADGE_DISPLAY_COUNT) { - snprintf(str, 8, "%d+", MAX_BADGE_DISPLAY_COUNT); - } else { - snprintf(str, 8, "%d", count); - } - elm_layout_text_set(app_icon, "badge_text", str); - elm_object_signal_emit(app_icon, "icon_badge_show", "source"); - break; - } - } -} diff --git a/tools/apps/kaskit/src/widget.c b/tools/apps/kaskit/src/widget.c deleted file mode 100644 index 5df7275..0000000 --- a/tools/apps/kaskit/src/widget.c +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include "widget.h" - -static void __win_delete_request_cb(void *data , Evas_Object *obj , void *event_info) -{ - ui_app_exit(); -} - -Evas_Object *_create_win(const char *package) -{ - Evas_Object *win; - - elm_app_base_scale_set(1.8); - - win = elm_win_add(NULL, package, ELM_WIN_BASIC); - elm_win_conformant_set(win, EINA_TRUE); - elm_win_autodel_set(win, EINA_TRUE); - elm_win_alpha_set(win, EINA_TRUE); - - evas_object_smart_callback_add(win, "delete,request", __win_delete_request_cb, NULL); - - return win; -} - -Evas_Object *_create_conformant(Evas_Object *parent) -{ - Evas_Object *conform = elm_conformant_add(parent); - - evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(parent, conform); - - evas_object_show(conform); - - return conform; -} - -Evas_Object *_create_layout(Evas_Object *parent, char *file, const char *group) -{ - Evas_Object *layout = elm_layout_add(parent); - - evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - if (file == NULL) - elm_layout_theme_set(layout, "layout", "application", "default"); - else - elm_layout_file_set(layout, file, group); - - evas_object_show(layout); - - return layout; -} diff --git a/tools/apps/keyguard/CMakeLists.txt b/tools/apps/keyguard/CMakeLists.txt deleted file mode 100644 index 0bb2d21..0000000 --- a/tools/apps/keyguard/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(org.tizen.keyguard C) - -INCLUDE_DIRECTORIES(./include) - -FIND_PACKAGE(PkgConfig REQUIRED) -PKG_CHECK_MODULES(KEYGUARD REQUIRED - auth-fw - shortcut -) - -INCLUDE_DIRECTORIES(${EFL_APP_INCLUDE_DIRS} ${KEYGUARD_INCLUDE_DIRS} ${KRATE_LIB}) -LINK_DIRECTORIES(${EFL_APP_LIBRARY_DIRS} ${KEYGUARD_LIBRARY_DIRS}) - -SET(PROJECT_SRC src/main.c - src/ui.c - src/widget.c) - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") -SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") - -ADD_EXECUTABLE(${PROJECT_NAME} ${PROJECT_SRC}) -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/bin) - -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${EFL_APP_LIBRARIES} ${KEYGUARD_LIBRARIES} krate) - -TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PRIVATE - ICON_PATH="${ICON_DIR}" -) - -ADD_CUSTOM_TARGET(${PROJECT_NAME}.edj - COMMAND edje_cc -no-save -id ${CMAKE_CURRENT_SOURCE_DIR}/res/images - ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/${PROJECT_NAME}.edc - ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.edj - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/${PROJECT_NAME}.edc) - -ADD_DEPENDENCIES(${PROJECT_NAME} ${PROJECT_NAME}.edj) -INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.edj DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/res) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.xml DESTINATION ${APP_SHARE_PACKAGES_DIR}) diff --git a/tools/apps/keyguard/include/keyguard.h b/tools/apps/keyguard/include/keyguard.h deleted file mode 100644 index ca99996..0000000 --- a/tools/apps/keyguard/include/keyguard.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Tizen Krate Keyguard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#ifndef __KRATE_KEYGUARD_H__ -#define __KRATE_KEYGUARD_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "keyguard" - -#if !defined(PACKAGE) -#define PACKAGE "org.tizen.keyguard" -#endif - -#define KEYGUARD_PACKAGE "org.tizen.keyguard" -#define KASKIT_PACKAGE "org.tizen.kaskit" - -void _create_keyguard_window(void); -void _launch_req_app(void); - -bool _has_password(void); -bool _check_password(const char* password); -unsigned int _get_left_attempts(void); - -#endif /* __KRATE_KEYGUARD_H__ */ diff --git a/tools/apps/keyguard/include/widget.h b/tools/apps/keyguard/include/widget.h deleted file mode 100644 index 603570e..0000000 --- a/tools/apps/keyguard/include/widget.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Tizen Krate Keyguard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef WIDGET_H_ -#define WIDGET_H_ - -#include -#include -#include - -Evas_Object *_create_win(const char *package); -Evas_Object *_create_conformant(Evas_Object *parent); -Evas_Object *_create_layout(Evas_Object *parent, char *file, const char *group); -Evas_Object *_create_entry(Evas_Object *parent); -Evas_Object *_create_popup(Evas_Object *parent, const char *title, const char *content, char *style); - -#endif /* WIDGET_H_ */ diff --git a/tools/apps/keyguard/org.tizen.keyguard.manifest b/tools/apps/keyguard/org.tizen.keyguard.manifest deleted file mode 100644 index a76fdba..0000000 --- a/tools/apps/keyguard/org.tizen.keyguard.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/tools/apps/keyguard/org.tizen.keyguard.xml b/tools/apps/keyguard/org.tizen.keyguard.xml deleted file mode 100644 index 45ab3f8..0000000 --- a/tools/apps/keyguard/org.tizen.keyguard.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - http://tizen.org/privilege/shortcut - http://tizen.org/privilege/appmanager.launch - - - - - diff --git a/tools/apps/keyguard/res/edje/keyguard.edc b/tools/apps/keyguard/res/edje/keyguard.edc deleted file mode 100644 index 08ae41e..0000000 --- a/tools/apps/keyguard/res/edje/keyguard.edc +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Tizen Krate Keyguard Layout - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -group { name: "keyguard_layout"; - images { - image: "../images/icon.png" COMP; - } - parts { - part { name: "bg"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 55 166 184 255; - rel1 { relative : 0.0 0.0;} - rel2 { relative : 1.0 1.0;} - } - } - part { name: "bg1"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 0 0 0 25; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 1.0;} - } - } - part { name: "top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 0.0; offset: 0 160;} - } - } - part { name: "icon_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative : 0.0 1.0; to: "top_padding";} - rel2 { relative : 1.0 1.0; to: "top_padding"; offset: 0 110;} - } - } - part { name: "icon"; - type:IMAGE; - scale: 1; - description { state: "default" 0.0; - max: 110 110; - min: 110 110; - rel1 { relative : 0.0 0.0; to: "icon_area";} - rel2 { relative : 1.0 1.0; to: "icon_area";} - align: 0.5 0.5; - image.normal: "../images/icon.png"; - } - } - part { name: "title"; - type: TEXT; - scale: 1; - effect: SHADOW; - description { state: "default" 0.0; - color: 255 255 255 255; - color3: 85 88 88 255; - rel1 { relative: 0.0 1.0; to: "icon_area"; offset: 22 0;} - rel2 { relative: 1.0 1.0; to: "icon_area"; offset: -22 150;} - text { font: "Tizen:style=Regular"; size: "40"; align: 0.5 0.5; text: "Krate";} - } - } - part { name: "title_bottom_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title";} - rel2 { relative: 1.0 1.0; to: "title"; offset: 0 20;} - } - } - part { name: "entry_info_text"; - type: TEXT; - scale: 1; - description { state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.0 1.0; to: "title_bottom_padding";} - rel2 { relative: 1.0 1.0; to: "title_bottom_padding"; offset: 0 40;} - text { font: "Tizen:style=Regular"; size: "24"; align: 0.0 0.5; text: "Enter password";} - } - } - part { name: "entry_bg"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.0 1.0; to: "entry_info_text"; offset: 0 22;} - rel2 { relative: 1.0 1.0; to: "entry_info_text"; offset: 0 82;} - } - } - part { name: "entry"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "entry_bg";} - rel2 { relative: 1.0 1.0; to: "entry_bg";} - } - } - part { name: "check_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "entry_bg";} - rel2 { relative: 1.0 1.0; to: "entry_bg"; offset: 0 22;} - } - } - part { name: "check_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "check_top_padding"; offset: 0 0;} - rel2 { relative: 1.0 1.0; to: "check_top_padding"; offset: 0 60;} - } - } - part { name: "check_box"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "check_area";} - rel2 { relative: 0.0 1.0; to: "check_area"; offset: 50 0;} - } - } - part { name: "check_text"; - type: TEXT; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 1.0 0.0; to: "check_box"; offset: 22 0;} - rel2 { relative: 1.0 1.0; to: "check_area"; offset: 0 0;} - text { font: "Tizen:style=Regular"; size: "24"; align: 0.0 0.5; text: "Show password";} - align: 0.0 0.5; - } - } - part { name: "bottom_text"; - type: TEXT; - scale: 1; - description { state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.0 1.0; to: "bg"; offset: 22 -160;} - rel2 { relative: 1.0 1.0; to: "bg"; offset: -22 0;} - text { font: "Tizen:style=Regular"; size: "24"; align: 0.0 0.5; text: "Forgot your Krate unlock method?";} - } - } - programs { - program { name: "text_clicked_cb"; - signal: "mouse,clicked,1"; - source: "bottom_text"; - action: SIGNAL_EMIT "text_clicked" "layout"; - } - } - } -} diff --git a/tools/apps/keyguard/res/edje/org.tizen.keyguard.edc b/tools/apps/keyguard/res/edje/org.tizen.keyguard.edc deleted file mode 100644 index deb2958..0000000 --- a/tools/apps/keyguard/res/edje/org.tizen.keyguard.edc +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -collections { - base_scale: 1.8; - #include "keyguard.edc" -} diff --git a/tools/apps/keyguard/res/images/icon.png b/tools/apps/keyguard/res/images/icon.png deleted file mode 100644 index 9765b1bda7e5bddf0925555ab204b887a873bf24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD -#include "widget.h" - -Ecore_Event_Handler *ecore_handler = NULL; - -static void __win_delete_request_cb(void *data, Evas_Object *obj, void *event_info) -{ - ui_app_exit(); -} - -static Eina_Bool key_event_cb(void *data, int type, void *event) -{ - Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event; - - if (!strcmp(ev->keyname, "XF86Back")) { - ui_app_exit(); - } - - return EINA_TRUE; -} - -Evas_Object *_create_win(const char *package) -{ - Evas_Object *win; - elm_app_base_scale_set(1.8); - - win = elm_win_add(NULL, package, ELM_WIN_NOTIFICATION); - efl_util_set_notification_window_level(win, EFL_UTIL_NOTIFICATION_LEVEL_DEFAULT); - - elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW); - elm_win_indicator_opacity_set(win, ELM_WIN_INDICATOR_BG_TRANSPARENT); - - elm_win_autodel_set(win, EINA_TRUE); - elm_win_alpha_set(win, EINA_TRUE); - elm_win_conformant_set(win, EINA_TRUE); - - evas_object_smart_callback_add(win, "delete,request", __win_delete_request_cb, NULL); - ecore_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, key_event_cb, NULL); - return win; -} - -Evas_Object *_create_conformant(Evas_Object *parent) -{ - Evas_Object *conform = elm_conformant_add(parent); - - evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(parent, conform); - - elm_object_signal_emit(conform, "elm,state,indicator,overlap", "elm"); - evas_object_show(conform); - - return conform; -} - -Evas_Object *_create_layout(Evas_Object *parent, char *file, const char *group) -{ - Evas_Object *layout = elm_layout_add(parent); - - evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - if (file == NULL) - elm_layout_theme_set(layout, "layout", "application", "default"); - else - elm_layout_file_set(layout, file, group); - - evas_object_show(layout); - - return layout; -} - -Evas_Object *_create_entry(Evas_Object *parent) -{ - Evas_Object *entry = elm_entry_add(parent); - static Elm_Entry_Filter_Limit_Size limit_size = { - .max_char_count = 20, - .max_byte_count = 0, - }; - - evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_entry_password_set(entry, EINA_TRUE); - elm_entry_single_line_set(entry, EINA_TRUE); - elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_size); - elm_entry_input_panel_return_key_type_set(entry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE); - - evas_object_show(entry); - return entry; -} - -Evas_Object *_create_button(Evas_Object *parent, const char *text) -{ - Evas_Object *btn = elm_button_add(parent); - elm_object_style_set(btn, "popup"); - elm_object_text_set(btn, text); - return btn; -} - -static void __popup_timeout_cb(void *data, Evas_Object *obj, void *event_info) -{ - evas_object_del(obj); -} - -static void __block_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - evas_object_del(obj); -} - -static void __popup_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) -{ - Evas_Object *popup = (Evas_Object *)data; - evas_object_del(popup); -} - -static void popup_key_event_cb(void *data, Evas *e, Evas_Object *obj, void *event) -{ - Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event; - - if (!strcmp(ev->keyname, "XF86Back")) { - ecore_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, key_event_cb, NULL); - evas_object_del(obj); - } - - return; -} - -Evas_Object *_create_popup(Evas_Object *parent, const char *title, const char *content, char *style) -{ - Evas_Object *popup = elm_popup_add(parent); - - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_style_set(popup, style); - elm_object_text_set(popup, content); - - ecore_event_handler_del(ecore_handler); - evas_object_event_callback_add(popup, EVAS_CALLBACK_KEY_UP, popup_key_event_cb, NULL); - - if (!strcmp(style, "toast")) { - elm_popup_timeout_set(popup, 3.0); - evas_object_smart_callback_add(popup, "timeout", __popup_timeout_cb, NULL); - evas_object_smart_callback_add(popup, "block,clicked", __block_clicked_cb, NULL); - } else if (!strcmp(style, "default")) { - elm_object_part_text_set(popup, "title,text", title); - elm_object_item_part_text_translatable_set(popup, "title,text", EINA_TRUE); - - Evas_Object *btn = _create_button(popup, "OK"); - elm_object_part_content_set(popup, "button1", btn); - evas_object_smart_callback_add(btn, "clicked", __popup_btn_clicked_cb, popup); - } - - return popup; -} diff --git a/tools/apps/setup-wizard/CMakeLists.txt b/tools/apps/setup-wizard/CMakeLists.txt deleted file mode 100644 index 2f322f3..0000000 --- a/tools/apps/setup-wizard/CMakeLists.txt +++ /dev/null @@ -1,42 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(org.tizen.krate-setup-wizard C) - -INCLUDE_DIRECTORIES(./include) - -FIND_PACKAGE(PkgConfig REQUIRED) -PKG_CHECK_MODULES(SETUP_WIZARD REQUIRED - notification - capi-system-system-settings -) - -INCLUDE_DIRECTORIES(${EFL_APP_INCLUDE_DIRS} ${SETUP_WIZARD_INCLUDE_DIRS} ${KRATE_LIB}) -LINK_DIRECTORIES(${EFL_APP_LIBRARY_DIRS} ${SETUP_WIZARD_LIBRARY_DIRS}) - -SET(PACKAGE_SRC src/main.c - src/ui.c - src/security.c - src/util.c - src/widget.c) - -SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIE") -SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") - -ADD_EXECUTABLE(${PROJECT_NAME} ${PACKAGE_SRC}) -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/bin) - -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${EFL_APP_LIBRARIES} ${SETUP_WIZARD_LIBRARIES} krate) - -ADD_CUSTOM_TARGET(${PROJECT_NAME}.edj - COMMAND edje_cc -no-save -id ${CMAKE_CURRENT_SOURCE_DIR}/res/images - ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/${PROJECT_NAME}.edc - ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.edj - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/res/edje/${PROJECT_NAME}.edc) - -ADD_DEPENDENCIES(${PROJECT_NAME} ${PROJECT_NAME}.edj) -INSTALL(FILES ${CMAKE_BINARY_DIR}/${PROJECT_NAME}.edj DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/res) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/data/KrateManifest.xml DESTINATION ${APP_INSTALL_PREFIX}/${PROJECT_NAME}/res/data) - -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.xml DESTINATION ${APP_SHARE_PACKAGES_DIR}) - -ADD_SUBDIRECTORY(po) diff --git a/tools/apps/setup-wizard/include/krate-setup.h b/tools/apps/setup-wizard/include/krate-setup.h deleted file mode 100644 index 69f95d6..0000000 --- a/tools/apps/setup-wizard/include/krate-setup.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#ifndef __KRATE_SETUP_H__ -#define __KRATE_SETUP_H__ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#ifdef LOG_TAG -#undef LOG_TAG -#endif -#define LOG_TAG "krate-setup-wizard" - -#if !defined(PACKAGE) -#define PACKAGE "org.tizen.krate-setup-wizard" -#endif - -#define KEYGUARD_PACKAGE "org.tizen.keyguard" -#define KASKIT_PACKAGE "org.tizen.kaskit" - -#define DPM_SYSPOPUP_ICON_PATH "/usr/share/icons/default/small/org.tizen.dpm-syspopup.png" -#define TITLE_STYLE_W "DEFAULT='font=Tizen:style=Reqular font_size=46 color=#ffffff wrap=mixed align=center'" -#define SUB_TITLE_STYLE_B "DEFAULT='font=Tizen:style=Regular font_size=50 color=#000000 wrap=mixed align=center'" -#define SUB_CONTENT_STYLE_B "DEFAULT='font=Tizen:style=Regular font_size=36 color=#000000 wrap=mixed align=center'" -#define SUB_TITLE_STYLE_W "DEFAULT='font=Tizen:style=Regular font_size=50 color=#ffffff wrap=mixed align=center'" -#define SUB_CONTENT_STYLE_W "DEFAULT='font=Tizen:style=Regular font_size=36 color=#ffffff wrap=mixed align=center'" - -#define ENTRY_TITLE_STYLE_B "DEFAULT='font=Tizen:style=Regular font_size=36 color=#000000 wrap=mixed'" -#define ENTRY_INFO_STYLE_G "DEFAULT='font=Tizen:style=Regular font_size=32 color=#A9A9A9 wrap=mixed'" - -#define BODY_KRATE_CREATE_ERROR "Failed to create the Separated Krate." -#define BODY_KRATE_REMOVE_ERROR "Failed to remove the Separated Krate." - -#define __(str) dgettext("krate-setup-wizard", str) - -typedef struct { - char *mode; - char *krate_name; - char *krate_password; - - krate_manager_h krate_manager; - int krate_event_cb_id; - bool request_done; - - app_control_h app_control; -} appdata_s; - -typedef struct { - Evas_Object *win; - Evas_Object *conform; - Evas_Object *nf; - char *edj_path; -} uidata_s; - -void _create_base_window(appdata_s *data); -void _create_security_view(appdata_s *data); -void _create_setup_view(appdata_s *data); -void _create_two_button_layout(Evas_Object *parent, Evas_Object *left_button, Evas_Object *right_button); - -int _send_krate_create_request(appdata_s *ad); -int _send_krate_remove_request(appdata_s *ad); -void _create_notification(app_control_h app_control); -void *krate_request_fail(void *ad); - -#endif /* __KRATE_SETUP_H__ */ diff --git a/tools/apps/setup-wizard/include/widget.h b/tools/apps/setup-wizard/include/widget.h deleted file mode 100644 index 0e5c61c..0000000 --- a/tools/apps/setup-wizard/include/widget.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef WIDGET_H_ -#define WIDGET_H_ - -#include -#include -#include - -Evas_Object *_create_win(const char *package); -Evas_Object *_create_conformant(Evas_Object *parent); -Evas_Object *_create_layout(Evas_Object *parent, char *file, const char *group); -Evas_Object *_create_button(Evas_Object *parent, const char *text, Evas_Smart_Cb callback, void *user_data); -Evas_Object *_create_textblock(Evas_Object *parent, const char *text, char *style); -Evas_Object *_create_progressbar(Evas_Object *parent, const char *style); -Evas_Object *_create_entry(Evas_Object *parent); -Evas_Object *_create_popup(Evas_Object *parent, const char *title, const char *body); - -Elm_Genlist_Item_Class *_create_genlist_item_class(char *style, Elm_Genlist_Item_Text_Get_Cb text_func, Elm_Genlist_Item_Content_Get_Cb content_func); -Elm_Object_Item *_append_genlist_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, Elm_Object_Select_Mode select_mode, void* data); - -#endif /* WIDGET_H_ */ diff --git a/tools/apps/setup-wizard/org.tizen.krate-setup-wizard.manifest b/tools/apps/setup-wizard/org.tizen.krate-setup-wizard.manifest deleted file mode 100644 index a76fdba..0000000 --- a/tools/apps/setup-wizard/org.tizen.krate-setup-wizard.manifest +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/tools/apps/setup-wizard/org.tizen.krate-setup-wizard.xml b/tools/apps/setup-wizard/org.tizen.krate-setup-wizard.xml deleted file mode 100644 index 75189d6..0000000 --- a/tools/apps/setup-wizard/org.tizen.krate-setup-wizard.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - http://tizen.org/privilege/notification - http://tizen.org/privilege/appmanager.launch - - - - - diff --git a/tools/apps/setup-wizard/po/CMakeLists.txt b/tools/apps/setup-wizard/po/CMakeLists.txt deleted file mode 100644 index f273b06..0000000 --- a/tools/apps/setup-wizard/po/CMakeLists.txt +++ /dev/null @@ -1,23 +0,0 @@ -# for i18n - -SET(POFILES ar.po az.po bg.po ca.po cs.po da.po de.po el_GR.po en.po en_PH.po en_US.po es_ES.po es_US.po et.po eu.po fi.po fr.po fr_CA.po ga.po gl.po hi.po hr.po hu.po hy.po is.po it_IT.po ja_JP.po ka.po kk.po ko_KR.po lt.po lv.po mk.po nb.po nl.po pl.po pt_BR.po pt_PT.po ro.po ru_RU.po sk.po sl.po sr.po sv.po tr_TR.po uk.po uz.po zh_CN.po zh_HK.po zh_TW.po) -SET(MSGFMT "/usr/bin/msgfmt") - -FOREACH(pofile ${POFILES}) - SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}) - MESSAGE("PO: ${pofile}") - GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE) - GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE) - SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo) - ADD_CUSTOM_COMMAND( - OUTPUT ${moFile} - COMMAND ${MSGFMT} -o ${moFile} ${absPofile} - DEPENDS ${absPofile} - ) - - INSTALL(FILES ${moFile} DESTINATION ${APP_INSTALL_PREFIX}/org.tizen.krate-setup-wizard/res/locale/${lang}/LC_MESSAGES RENAME krate-setup-wizard.mo) - SET(moFiles ${moFiles} ${moFile}) -ENDFOREACH(pofile) - -MESSAGE(".mo files: ${moFiles}") -ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles}) diff --git a/tools/apps/setup-wizard/po/ar.po b/tools/apps/setup-wizard/po/ar.po deleted file mode 100755 index b7bf960..0000000 --- a/tools/apps/setup-wizard/po/ar.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "إلغاء" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "حذف" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "طريقة إلغاء القفل" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "كلمات المرور غير متطابقة." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "أدخل كلمة المرور." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "كلمة المرور" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "السابق" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "التالي" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "منطقة منفصلة" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "مرحباً!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "احفظ تطبيقاتك في %1$s للحصول على إصدارات منفصلة للأغراض المختلفة.\n\nسيتم إنشاء المجلد %2$s على الشاشة الرئيسية." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "إعداد" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "جاري إنشاء مجلد..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "سيتم إنشاء المجلد على شاشتك الرئيسية. ستتم إضافة التطبيقات المحملة مسبقاً إلى هذا المجلد تلقائياً. يمكنك أيضاً إضافة تطبيقات أخرى." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "حذف %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "حذف %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "سيتم حذف المجلد وكل الملفات المخزنة فيه، كما سيتم إلغاء تثبيت كل التطبيقات الموجودة فيه." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "جارِ حذف المجلد..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "إنشاء %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "تتطلب منك سياسية الحماية استخدام %1$s. انقر فوق ”موافق“ لإنشاء مجلد %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "إنشاء" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "موافق" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "انقر هنا لإنشاء %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "حذف %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "انقر هنا لحذف %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "تمنع سياسة الحماية استخدام %1$s. سيتم حذف %2$s." - diff --git a/tools/apps/setup-wizard/po/az.po b/tools/apps/setup-wizard/po/az.po deleted file mode 100755 index 19dd6c7..0000000 --- a/tools/apps/setup-wizard/po/az.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Ləğv et" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Sil" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Kiliddən açma metodu" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Şifrələr uyğun gəlmir." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Kodu daxil et." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Şifrə" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Əvvəlki" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Növbəti" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Ayrıca Zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Xoş gəldiniz!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Fərqli məqsədlər üçün ayrıca versiyalara baxmaq üçün proqramları %1$s-da saxlayın.\n\n%2$s qovluğu əsas ekranda yaradılacaq." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Qur" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Qovluq yaradılır..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Qovluq əsas ekranda yaradılacaq. Əvvəldən yüklənmiş proqramlar avtomatik olaraq bu qovluğa əlavə ediləcək. Siz eyni zamanda başqa proqramlar əlavə edə bilərsiniz." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s-i silin" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s sil" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Qovluq və onda saxlanan bütün fayllar silinəcək və bütün proqramlar pozulacaq." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Qovluq silinir..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s yarat" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Təhlükəsizlik siyasəti üçün %1$s-dən istifadə tələb edilir. %2$s qovluğu yaratmaq üçün OK vurun." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Yarat" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "%s yaratmaq üçün bura vur." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s-i sil" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "%s silmək üçün bura vur." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Təhlükəsizlik siyasəti %1$s-dan istifadənin qarşısını alır. %2$s silinəcək." - diff --git a/tools/apps/setup-wizard/po/bg.po b/tools/apps/setup-wizard/po/bg.po deleted file mode 100755 index 108bb7b..0000000 --- a/tools/apps/setup-wizard/po/bg.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Отказ" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Изтриване" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Метод на отключване" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Паролите не съвпадат." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Въвеждане на парола" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Парола" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Предиш." - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Следващ" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Отделна зона" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Добре дошли!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Запазете приложенията в %1$s, за да имате отделни версии за различни цели.\n\nПапка на %2$s ще се създаде на началния екран." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Настройване" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Създаване на папка..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Папката ще се създаде на началния екран. Предварително заредените приложения ще се добавят към тази папка автоматично. Може да добавите също и други приложения." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Изтриване на %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Изтриване на %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Папката и всички съхранени в нея файлове ще се изтрият, а всички приложения в нея ще се деинсталират." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Изтриване на папка..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Създаване на %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Правилата на защита изискват да използвате %1$s. Докоснете ОК, за да създадете папка за %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Създаване" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Докоснете тук за създаване на %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Изтриване на %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Докос. тук за изтр. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Политиката за защита възпрепятства използването на %1$s. %2$s ще бъде изтрито." - diff --git a/tools/apps/setup-wizard/po/ca.po b/tools/apps/setup-wizard/po/ca.po deleted file mode 100755 index dc03e72..0000000 --- a/tools/apps/setup-wizard/po/ca.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancel·lar" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Esborrar" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Mètode desbloqueig" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Les contrasenyes no coincideixen" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Introduir contrasenya" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Contrasenya" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Anterior" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Seg" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separar zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Benvingut!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Desi les apps a %1$s per tenir versions separades per diferents propòsits.\n\nLa carpeta %2$s es crearà a la pantalla d'inici." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurar" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creant carpeta..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Es crearà la carpeta a la pantalla d'inici. Les apps precarregades s'afegiran a aquesta carpeta automàticament. També pot afegir altres apps." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Esborrar %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Esborrar %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "S'esborrarà la carpeta i tots els fitxers que hi hagi emmagatzemats, i es desinstal·laran totes les apps que hi hagi." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "S'està esborrant la carpeta..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Crear %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "La política de seguretat requereix que utilitzi %1$s. Toqui Acceptar per crear una carpeta de %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Crear" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Acceptar" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Toqui aquí per crear %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Esborrar %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Toqui aquí esborrar %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "La política de privadesa impedeix l'ús de %1$s. S'esborrarà %2$s." - diff --git a/tools/apps/setup-wizard/po/cs.po b/tools/apps/setup-wizard/po/cs.po deleted file mode 100755 index bdabdf6..0000000 --- a/tools/apps/setup-wizard/po/cs.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Zrušit" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Odstranit" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Metoda odemknutí" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Hesla se neshodují." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Zadejte heslo." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Heslo" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Předchozí" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Další" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Samostatná zóna" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Vítejte!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Uložte aplikace do %1$s, abyste měli samostatné verze pro různé účely.\n\nSložka %2$s bude vytvořena na domovské obrazovce." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Instalovat" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Vytváření složky..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Složka bude vytvořena na domovské obrazovce. Předinstalované aplikace budou do složky přidány automaticky. Můžete přidat také další aplikace." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Odstranit %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Odstranit %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Složka a všechny soubory uložené v ní budou odstraněny a všechny aplikace v této složce budou odinstalovány." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Odstraňování složky..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Vytvořit %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Zásady zabezpečení požadují, abyste použili %1$s. Klepnutím na tlačítko OK vytvoříte složku %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Vytvořit" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Klepněte sem a vytvořte %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Odstranit %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Klepněte sem a odstr. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Zásady zabezpečení zakazují použití %1$s. %2$s bude odstraněno." - diff --git a/tools/apps/setup-wizard/po/da.po b/tools/apps/setup-wizard/po/da.po deleted file mode 100755 index a9b81b3..0000000 --- a/tools/apps/setup-wizard/po/da.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Annuller" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Slet" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Oplåsningsmetode" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Adgangskoderne er ikke ens." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Angiv adgangskode." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Adgangskode" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Forrige" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Næste" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Adskilt zone" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Velkommen!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Gem dine apps i %1$s for at have forskellige versioner til forskellige formål.\n\n%2$s-mappen vil blive oprettet på din startskærm." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Konfigurer" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Opretter mappe..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Mappen vil blive oprettet på din startskærm. De forudindlæste apps vil automatisk blive føjet til denne mappe. Du kan også tilføje andre apps." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Slet %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Slet %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Mappen og alle dens filer vil blive slettet, og alle apps i den vil blive afinstalleret." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Sletter mappe ..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Opret %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Sikkerhedspolitikken kræver, at du bruger %1$s. Tryk på OK for at oprette en %2$s-mappe." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Opret" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Tryk her for at oprette %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Slet %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tryk her f. at slette %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Sikkerhedspolitikken forhindrer brugen af %1$s. %2$s vil blive slettet." - diff --git a/tools/apps/setup-wizard/po/de.po b/tools/apps/setup-wizard/po/de.po deleted file mode 100755 index 84d3c71..0000000 --- a/tools/apps/setup-wizard/po/de.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Abbrechen" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Löschen" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Entsperrmethode" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Kennwörter stimmen nicht überein" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Passwort eingeben" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Passwort" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Zurück" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Weiter" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separater Bereich" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Willkommen!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Speichern Sie Ihre Apps unter %1$s, um getrennte Versionen für unterschiedliche Zwecke zu erhalten.\n\nDer %2$s-Ordner wird auf Ihrem Startbildschirm erstellt." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Einrichten" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Ordner wird erstellt..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Der Ordner wird auf Ihrem Startbildschirm erstellt. Die vorinstallierten Apps werden automatisch in diesem Ordner hinzugefügt. Sie können auch andere Apps hinzufügen." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s löschen" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Löschen von %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Der Ordner und alle darin gespeicherten Dateien werden gelöscht und alle darin enthaltenen Apps werden deinstalliert." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Ordner wird gelöscht..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Erstellen von %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Die Sicherheitsrichtlinie erfordert von Ihnen die Verwendung von %1$s. Tippen Sie auf „OK“, um einen %2$s-Ordner zu erstellen." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Erstellen" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Hier tippen, um %s zu erstellen." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s löschen" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Hier tippen und %s löschen." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Die Sicherheitsrichtlinien verhindern die Verwendung von %1$s. %2$s wird gelöscht." - diff --git a/tools/apps/setup-wizard/po/el_GR.po b/tools/apps/setup-wizard/po/el_GR.po deleted file mode 100755 index aafdca2..0000000 --- a/tools/apps/setup-wizard/po/el_GR.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Ακύρωση" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Διαγραφή" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Μέθοδος ξεκλειδώματος" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Ασυμφωνία κωδικών πρόσβασης." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Εισαγωγή κωδικού." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Κωδικός πρόσβασης" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Προηγούμενο" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Επόμενο" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Διαχωρισμένη ζώνη" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Καλώς ορίσατε!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Αποθηκεύστε τις εφαρμογές σας στο %1$s για να έχετε ξεχωριστές εκδόσεις για διαφορετικούς σκοπούς.\n\nΟ φάκελος %2$s θα δημιουργηθεί στην αρχική οθόνη." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Ρύθμιση" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Δημιουργία φακέλου…" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Ο φάκελος θα δημιουργηθεί στην αρχική οθόνη σας. Οι προφορτωμένες εφαρμογές θα προστεθούν αυτόματα σε αυτόν το φάκελο. Μπορείτε επίσης να προσθέσετε άλλες εφαρμογές." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Διαγραφή %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Διαγραφή %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Ο φάκελος και όλα τα αρχεία που περιέχει θα διαγραφούν και θα καταργηθεί η εγκατάσταση όλων των εφαρμογών στο φάκελο." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Διαγραφή φακέλου..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Δημιουργία %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Η πολιτική ασφάλειας απαιτεί τη χρήση του %1$s. Πατήστε OK για να δημιουργήσετε έναν φάκελο %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Δημιουργία" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Πατήστε εδώ για να δημ. %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Διαγραφή %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Πατ. εδώ για διαγρ. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Η πολιτική ασφαλείας δεν επιτρέπει τη χρήση του %1$s. Το %2$s θα διαγραφεί." - diff --git a/tools/apps/setup-wizard/po/en.po b/tools/apps/setup-wizard/po/en.po deleted file mode 100755 index dfddcfe..0000000 --- a/tools/apps/setup-wizard/po/en.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancel" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Delete" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Unlock method" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Passwords do not match." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Enter password." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Password" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Previous" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Next" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separate Zone" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Welcome!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Save your apps in %1$s to have separate versions for different purposes.\n\nThe %2$s folder will be created on your home screen." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Set up" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creating folder..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "The folder will be created on your home screen. The preloaded apps will be added to this folder automatically. You can also add other apps." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "The folder and all the files stored in it will be deleted, and all the apps in it will be uninstalled." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Deleting folder..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Create %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "The security policy requires you to use %1$s. Tap OK to create a %2$s folder." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Create" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Tap here to create %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tap here to delete %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "The security policy prevents the use of %1$s. %2$s will be deleted." - diff --git a/tools/apps/setup-wizard/po/en_PH.po b/tools/apps/setup-wizard/po/en_PH.po deleted file mode 100755 index 602d335..0000000 --- a/tools/apps/setup-wizard/po/en_PH.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancel" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Delete" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Unlock method" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Passwords do not match." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Enter password" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Password" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Previous" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Next" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separate Zone" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Welcome!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Save your apps in %1$s to have separate versions for different purposes.\n\nThe %2$s folder will be created on your home screen." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Set up" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creating folder..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "The folder will be created on your home screen. The preloaded apps will be added to this folder automatically. You can also add other apps." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "The folder and all the files stored in it will be deleted, and all the apps in it will be uninstalled." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Deleting folder..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Create %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "The security policy requires you to use %1$s. Tap OK to create a %2$s folder." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Create" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Tap here to create %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tap here to delete %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "The security policy prevents the use of %1$s. %2$s will be deleted." - diff --git a/tools/apps/setup-wizard/po/en_US.po b/tools/apps/setup-wizard/po/en_US.po deleted file mode 100755 index a340740..0000000 --- a/tools/apps/setup-wizard/po/en_US.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancel" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Delete" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Unlock method" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Passwords do not match." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Enter password" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Password" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Previous" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Next" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separate Zone" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Welcome!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Save your apps in %1$s to have separate versions for different purposes.\n\nThe %2$s folder will be created on your Home screen." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Set up" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creating folder..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "The folder will be created on your Home screen. The preloaded apps will be added to this folder automatically. You can also add other apps." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "The folder and all the files stored in it will be deleted, and all the apps in it will be uninstalled." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Deleting folder..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Create %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "The security policy requires you to use %1$s. Tap OK to create a %2$s folder." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Create" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Tap here to create %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Delete %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tap here to delete %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "The security policy prevents the use of %1$s. %2$s will be deleted." - diff --git a/tools/apps/setup-wizard/po/es_ES.po b/tools/apps/setup-wizard/po/es_ES.po deleted file mode 100755 index e344739..0000000 --- a/tools/apps/setup-wizard/po/es_ES.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancelar" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Eliminar" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Método de desbloqueo" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Las contraseñas no coinciden." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Introducir contraseña" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Contraseña" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Anterior" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Siguiente" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separar zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "¡Bienvenido!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Guarde sus aplicaciones en %1$s para tener versiones independientes para distintos fines.\n\nSe creará la carpeta %2$s en la pantalla Inicio." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurar" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creando carpeta..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Se creará la carpeta en su pantalla Inicio. Las aplicaciones precargadas se añadirán a esta carpeta automáticamente. También puede añadir otras aplicaciones." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Se eliminarán la carpeta y todos los archivos almacenados en esta, y se desinstalarán todas las aplicaciones que incluya." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Eliminando carpeta..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Crear %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "La política de seguridad exige que use %1$s. Pulse Aceptar para crear una carpeta de %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Crear" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Aceptar" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Pulse aquí para crear %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Pulse aquí para borrar %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "La política de seguridad impide el uso de %1$s. Se eliminará %2$s." - diff --git a/tools/apps/setup-wizard/po/es_US.po b/tools/apps/setup-wizard/po/es_US.po deleted file mode 100755 index 652527a..0000000 --- a/tools/apps/setup-wizard/po/es_US.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancelar" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Eliminar" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Método de desbloqueo" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Las contraseñas no coinciden." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Introducir contraseña." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Contraseña" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Anterior" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Siguiente" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separar zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "¡Bienvenido!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Guarde sus aplicaciones en %1$s para tener versiones separadas para distintos fines.\n\nSe creará la carpeta %2$s en su pantalla de inicio." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurar" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creando carpeta…" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Se creará la carpeta en su pantalla de inicio. Las aplicaciones precargadas se añadirán a esta carpeta automáticamente. También puede añadir otras aplicaciones." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Se eliminarán la carpeta y todos los archivos guardados en ella, y se desinstalarán todas las aplicaciones que incluya." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Eliminando carpeta..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Crear %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "La política de seguridad exige que use %1$s. Pulse Aceptar para crear una carpeta de %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Crear" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Aceptar" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Pulse aquí para crear %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Pulse para eliminar %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "La política de seguridad impide el uso de %1$s. Se eliminará %2$s." - diff --git a/tools/apps/setup-wizard/po/et.po b/tools/apps/setup-wizard/po/et.po deleted file mode 100755 index 37db57c..0000000 --- a/tools/apps/setup-wizard/po/et.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Tühista" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Kustuta" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Avamismeetod" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Paroolid ei uhti." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Sisestage parool." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Parool" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Eelmine" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Järgmine" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Eraldi tsoon" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Tere tulemast!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Salvestage oma rakendused kausta %1$s, et kasutada eri juhtudel eri versioone.\n\nKaust %2$s luuakse teie avaekraanile." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Seadista" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Kausta loomine..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Kaust luuakse teie avaekraanile. Eellaaditud rakendused lisatakse sellesse kausta automaatselt. Saate ka teisi rakendusi lisada." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Kustuta %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Kustuta %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Kaust ja kõik sellesse salvestatud failid kustutatakse ja kõik rakendused selles desinstallitakse." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Kausta kustutamine..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Loo %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Turvalisuse poliis nõuab kausta %1$s kasutamist. Toksake valikut OK, et luua kaust %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Loo" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Toks. siia, et luua teavitus %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Kustuta %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Toks., et kust. teav. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Turvalisuse poliis takistab üksuse %1$s kasutamist. %2$s kustutatakse." - diff --git a/tools/apps/setup-wizard/po/eu.po b/tools/apps/setup-wizard/po/eu.po deleted file mode 100755 index d6a3871..0000000 --- a/tools/apps/setup-wizard/po/eu.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Utzi" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Ezabatu" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Desblokeatzeko metodoa" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Pasahitzak ez datoz bat" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Pasahitza idatzi" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Pasahitza" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Aurrekoa" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Hurrengoa" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Aparteko eremua" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Ongi etorri!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Gorde aplikazioak %1$s atalean hainbat bertsio izan ditzazun, helburuaren araberakoak.\n\n%2$s karpeta pantaila nagusian sortuko da." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Konfiguratu" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Karpeta sortzen..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Pantaila nagusian sortuko da karpeta. Aurrez kargatutako aplikazioak automatikoki gehituko dira karpeta horretan. Dena dela, aplikazio gehiago gehi ditzakezu." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Ezabatu %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Ezabatu %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Karpeta eta bertan gordetako fitxategi guztiak ezabatuko dira, eta bertako aplikazio guztiak desinstalatuko dira." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Karpeta ezabatzen..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Sortu %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Segurtasun politikak %1$s erabiltzeko eskatzen du. Ukitu Ados %2$s karpeta sortzeko." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Sortu" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Ados" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Ukitu hau %s sortzeko." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Ezabatu %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Ukitu hau %s ezabatzeko." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Segurtasun politikak %1$s erabiltzea saihesten du. %2$s ezabatuko da." - diff --git a/tools/apps/setup-wizard/po/fi.po b/tools/apps/setup-wizard/po/fi.po deleted file mode 100755 index d2b747a..0000000 --- a/tools/apps/setup-wizard/po/fi.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Peruuta" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Poista" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Lukituksen poistotapa" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Salasanat eivät ole samat." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Kirjoita salasana." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Salasana" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Edellinen" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Seuraava" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Erillinen vyöhyke" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Tervetuloa!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Tallenna sovellukset kohteeseen %1$s, jos tarvitset erilliset versiot eri tarkoituksiin.\n\nSovelluksen %2$s kansio luodaan alkunäyttöön." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Määritä" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Kansiota luodaan..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Kansio luodaan alkunäyttöön. Valmiiksi ladatut sovellukset lisätään automaattisesti tähän kansioon. Voit lisätä myös muita sovelluksia." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Poista %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Poista %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Kansio ja kaikki siinä olevat tiedostot poistetaan ja kaikkien kansiossa olevien sovellusten asennus poistetaan." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Poistetaan kansiota..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Luo %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Suojauskäytäntö vaatii, että käytät kansiota %1$s. Luo kansio %2$s napauttamalla OK." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Luo" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Luo %s napauttamalla tätä." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Poista %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Poista %s napautt. tätä." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Suojauskäytäntö estää kohteen %1$s käytön. %2$s poistetaan." - diff --git a/tools/apps/setup-wizard/po/fr.po b/tools/apps/setup-wizard/po/fr.po deleted file mode 100755 index f6a7bad..0000000 --- a/tools/apps/setup-wizard/po/fr.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Annuler" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Supprimer" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Méthode de déverrouillage" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Les mots de passe ne correspondent pas." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Saisir le mot de passe." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Mot de passe" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Précédent" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Suivant" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Zone séparée" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Bienvenue !" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Enregistrez vos applications dans %1$s pour disposer de plusieurs versions pour différents usages.\n\nLe dossier %2$s va être créé sur votre écran d'accueil." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurer" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Création d'un fichier..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Le dossier sera créé sur votre écran d'accueil. Les applications préchargées seront automatiquement ajoutées à ce dossier. Vous pouvez également ajouter d'autres applications." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Supprimer %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Suppression du dossier %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Le dossier ainsi que tous les fichiers qu'il contient seront supprimés et toutes les applications s'y trouvant seront désinstallées." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Suppression du dossier..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Création du dossier %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "En raison de la politique de sécurité, vous devez utiliser le dossier %1$s. Appuyez sur OK pour créer un dossier %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Créer" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Appuyez ici pour créer une %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Suppression de la %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Appuyez ici pour suppr. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "La politique de sécurité empêche l'utilisation de la %1$s. La %2$s va être supprimée." - diff --git a/tools/apps/setup-wizard/po/fr_CA.po b/tools/apps/setup-wizard/po/fr_CA.po deleted file mode 100755 index 08ac0f9..0000000 --- a/tools/apps/setup-wizard/po/fr_CA.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Annuler" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Supprimer" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Méthode de déverrouillage" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Les mots de passe ne correspondent pas." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Saisir le mot de passe." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Mot de passe" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Précédent" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Suivant" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Zone séparée" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Bienvenue !" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Enregistrez vos applications dans %1$s pour disposer de plusieurs versions pour différents usages.\n\nLe dossier %2$s va être créé sur votre écran d'accueil." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurer" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Création d'un dossier..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Le dossier sera créé sur votre écran d'accueil. Les applications préchargées seront automatiquement ajoutées à ce dossier. Vous pouvez également ajouter d'autres applications." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Supprimer %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Suppression du dossier %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Le dossier ainsi que tous les fichiers qu'il contient seront supprimés et toutes les applications s'y trouvant seront désinstallées." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Suppression du dossier..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Création du dossier %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "En raison de la politique de sécurité, vous devez utiliser le dossier %1$s. Touchez OK pour créer un dossier %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Créer" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Touchez ici pour créer une %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Suppression de la %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Touchez ici pour suppr. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "La politique de sécurité empêche l'utilisation de la %1$s. La %2$s va être supprimée." - diff --git a/tools/apps/setup-wizard/po/ga.po b/tools/apps/setup-wizard/po/ga.po deleted file mode 100755 index 0ed3281..0000000 --- a/tools/apps/setup-wizard/po/ga.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cuir ar ceal" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Scrios" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Modh díghlasála" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Ní ionann na pasfhocail" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Iontráil pasfhocal" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Pasfhocal" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Roimhe" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Ar aghaidh" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Zón ar Leith" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Fáilte!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Sábháil d'fheidhmchláir in %1$s le go mbeidh leaganacha ar leith ann chun críocha difriúla.\n\nCruthófar an fillteán %2$s ar do scáileán baile." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Socraigh" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Fillteáin á dhéanamh..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Cruthófar an fillteán ar do scáileán baile. Cuirfear na feidhmchláir réamhlódáilte leis an bhfillteán sin go huathoibríoch. Beidh tú in ann feidhmchláir eile a chur leis freisin." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Scrios %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Scrios %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Scriosfar an fillteán agus gach comhad atá stóráilte ann, agus díshuiteálfar na feidhmchláir ar fad atá ann." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Fillteán á scriosadh..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Cruthaigh %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Éilíonn an beartas slándála ort %1$s a úsáid. Tapáil OK le fillteán %2$s a chruthú." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Cruthaigh" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Tapáil anseo le %s a chruthú." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Scrios %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tapáil le %s a scriosadh." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Cuireann an beartas slándála cosc ar úsáid %1$s. Scriosfar %2$s." - diff --git a/tools/apps/setup-wizard/po/gl.po b/tools/apps/setup-wizard/po/gl.po deleted file mode 100755 index ff90484..0000000 --- a/tools/apps/setup-wizard/po/gl.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancelar" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Eliminar" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Método de desbloqueo" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Os contrasinais non coinciden" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Introduza o contrasinal" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Contrasinal" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Anterior" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Seguinte" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separar zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Benvido." - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Garda as túas aplicacións en %1$s para dispoñer de versións independentes para fins diferentes.\n\nA carpeta %2$s crearase na túa pantalla de inicio." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurar" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creando carpeta..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "A carpeta crearase na túa pantalla de inicio. As aplicacións precargadas engadiranse a esta carpeta automaticamente. Tamén podes engadir outras aplicacións." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Elimina %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Elimina %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Eliminarase a carpeta e todos os arquivos almacenados nela, e desinstalaranse todas as aplicacións dela." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Eliminando carpeta..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Crear %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "A política de seguridade require que utilices %1$s. Toca Aceptar para crear unha carpeta de %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Crear" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Aceptar" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Toca aquí para crear %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Toca aquí para eliminar %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "A política de seguridade impide o uso de %1$s. %2$s eliminarase." - diff --git a/tools/apps/setup-wizard/po/hi.po b/tools/apps/setup-wizard/po/hi.po deleted file mode 100755 index 522b296..0000000 --- a/tools/apps/setup-wizard/po/hi.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "रद्द करें" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "हटाएँ" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "अनलॉक पद्धति" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "पासवर्ड मेल\nनहीं खाते।" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "पासवर्ड प्रविष्ट करें" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "पासवर्ड" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "पिछला" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "अगला" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "अलग जोन" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "स्वागत है!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "विभिन्न उद्देश्यों के लिए पृथक संस्करण रखने हेतु अपने एप्स को %1$s में सुरक्षित करें।\n\n%2$s फोल्डर आपकी होम स्क्रीन पर बनाया जाएगा।" - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "सेट करें" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "फ़ोल्‍डर बनाया जा रहा है..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "फोल्डर आपकी होम स्क्रीन पर बनाया जाएगा। पहले से लोड की गए एप्स इस फोल्डर में स्वचालित रूप से जोड़ दिए जाएँगे। आप अन्य एप्स भी जोड़ सकते हैं।" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s हटाएँ" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s हटाएँ" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "फोल्डर और इसमें संग्रहीत सभी फाइलें हटा दी जाएँगी और इसमें मौजूद सभी एप्स की स्थापना रद्द कर दी जाएगी।" - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "फोल्डर हटा रहा है..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s बनाएँ" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "सुरक्षा नीति हेतु आपको %1$s का उपयोग करना आवश्यक है। कोई %2$s फोल्डर बनाने के लिए “ओके” पर टैप करें।" - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "बनाएँ" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "ओके" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "%s बनाने के लिए यहां टैप करें।" - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s हटाएँ" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "%s हटाने हेतु यहां टैप करें।" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "सुरक्षा नीति %1$s के उपयोग को रोकती है। %2$s हटाया जाएगा।" - diff --git a/tools/apps/setup-wizard/po/hr.po b/tools/apps/setup-wizard/po/hr.po deleted file mode 100755 index 97136f2..0000000 --- a/tools/apps/setup-wizard/po/hr.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Prekid" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Izbriši" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Način otključavanja" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Šifre ne odgovaraju." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Unesite lozinku." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Lozinka" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Nazad" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Dalje" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Odvojena zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Dobro došli!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Spremite svoje aplikacije u funkciji %1$s da biste imali odvojene verzije za različitu namjenu.\n\nMapa aplikacije %2$s bit će stvorena na početnom zaslonu." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Postavi" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Nova mapa..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Mapa će se stvoriti na početnom zaslonu. Prethodno učitane aplikacije automatski će se dodati u mapu. Također možete dodati druge aplikacije." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Izbriši %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Brisanje mape %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Izbrisat će se mapa i sve datoteke spremljene u njoj, a sve aplikacije u njoj deinstalirat će se." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Brisanje mape..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Stvaranje mape %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Zbog sigurnosnih pravila morate upotrebljavati mapu %1$s. Dodirnite U redu da biste stvorili mapu %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Novo" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "U redu" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Dodirnite za stvar. funkcije %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Brisanje funkcije %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Dodir. za bris. funk. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Sigurnosna pravila sprečavaju upotrebu funkcije %1$s. Izbrisat će se funkcija %2$s." - diff --git a/tools/apps/setup-wizard/po/hu.po b/tools/apps/setup-wizard/po/hu.po deleted file mode 100755 index 4057e5f..0000000 --- a/tools/apps/setup-wizard/po/hu.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Mégse" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Törlés" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Feloldási módszer" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "A jelszavak nem egyeznek." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Írja be a jelszót." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Jelszó" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Előző" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Következő" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Zóna szétbontása" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Üdvözöljük!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Az alkalmazásokat a(z) %1$s tárolóba mentve a különböző célokhoz különböző verziókat használhat.\n\nA kezdőképernyőn létrejön egy %2$s nevű mappa." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Beállítás" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Mappa létrehozása..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "A mappa a kezdőképernyőn jön létre. Az előre betöltött alkalmazások automatikusan ebbe a mappába kerülnek. További alkalmazásokat is hozzáadhat a mappához." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s törlése" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s törlése" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Törli a mappát és a benne tárolt fájlokat, továbbá minden alkalmazást eltávolít a rendszerből." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Mappa törlése..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s létrehozása" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "A biztonsági irányelv a(z) %1$s használatát igényli. %2$s-mappa létrehozásához érintse meg az OK gombot." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Létrehozás" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Érintse meg %s létrehozásához." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s törlése" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Ér. meg a(z) %s törl.hez." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "A biztonsági házirend tiltja a(z) %1$s használatát. A(z) %2$s törlődni fog." - diff --git a/tools/apps/setup-wizard/po/hy.po b/tools/apps/setup-wizard/po/hy.po deleted file mode 100755 index 2c8349c..0000000 --- a/tools/apps/setup-wizard/po/hy.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Դադարեցնել" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Ջնջել" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Արգելաբացման եղանակ" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Գաղտնաբառերը չեն համընկնում:" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Մուտքագրեք գաղտնաբառը:" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Գաղտնաբառ" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Նախորդ" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Հաջորդ" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Առանձնացված գոտի" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Բարի գալու՜ստ:" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Ձեր ծրագրերը պահպանեք %1$s-ում՝ տարբեր նպատակներով առանձին վարկածներ ունենալու համար:\n\n%2$s պանակը կստեղծվի հիմնական էկրանի վրա:" - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Ստեղծել" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Թղթապանակի ստեղծում..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Պանակը կստեղծվի հիմնական էկրանի վրա: Նախաբեռնված ծրագրերն ինքնաբերաբար կավելացվեն այս պանակում: Նաև կարող եք այլ ծրագրեր ավելացնել:" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Վերացնել %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Վերացնել %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Պանակը և այդտեղ պահվող բոլոր ֆայլերը կվերացվեն, և պանակում եղած բոլոր ծրագրերը կապատեղադրվեն:" - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Պանակը վերացվում է..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Ստեղծել %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Անվտանգության քաղաքականությունը պահանջում է %1$s օգտագործել: Թակեք OK՝ %2$s պանակ ստեղծելու համար:" - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Ստեղծել" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Թակեք այստեղ՝ %s ստեղծելու համար:" - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Վերացնել %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Թակեք այստեղ՝ %s վերաց.:" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Անվտանգության քաղաքականությունը թույլ չի տալիս %1$s-ի օգտագործում: %2$s-ը կվերացվի:" - diff --git a/tools/apps/setup-wizard/po/is.po b/tools/apps/setup-wizard/po/is.po deleted file mode 100755 index e9f0e5c..0000000 --- a/tools/apps/setup-wizard/po/is.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Hætta v." - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Eyða" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Opnunaraðferð" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Aðgangsorð stemma ekki." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Rita aðgangsorð." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Aðgangsorð" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Fyrri" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Næsta" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Aðskilin svæði" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Velkomin(n)!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Vistaðu forritin þín í „%1$s“ ef þú vilt vera með mismunandi útgáfur fyrir mismunandi tilgang.\n\nMappan „%2$s“ verður búin til á heimaskjánum." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Setja upp" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Verið er að búa til möppu..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Mappan verður búin til á heimaskjánum. Innbyggðu forritunum verður sjálfkrafa bætt við möppuna. Þú getur einnig bætt öðrum forritum við hana." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Eyða %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Eyða %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Möppunni og öllum skránum í henni verður eytt og öll forritin í möppunni verða fjarlægð." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Eyði möppu..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Búa til %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Öryggisstefnan krefst þess að þú notir %1$s. Pikkaðu á „Í lagi“ til að búa til möppu fyrir %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Búa til" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Í lagi" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Pikkaðu hér til að búa til %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Eyða %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Pikkaðu til að eyða %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Öryggisstefnan kemur í veg fyrir notkun %1$s. %2$s verður eytt." - diff --git a/tools/apps/setup-wizard/po/it_IT.po b/tools/apps/setup-wizard/po/it_IT.po deleted file mode 100755 index b46ad1a..0000000 --- a/tools/apps/setup-wizard/po/it_IT.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Annulla" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Elimina" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Modalità di sblocco" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Password non corrispondenti." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Inserisci password." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Password" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Precedente" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Avanti" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Area separata" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Benvenuti!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Salvate le applicazioni in %1$s per utilizzare delle versioni separate per scopi diversi.\n\nLa cartella %2$s verrà creata sulla schermata Home." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configura" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Creazione cartella..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "La cartella verrà creata sulla schermata Home. Le applicazioni precaricate verranno aggiunte automaticamente a questa cartella. Potete anche aggiungere altre applicazioni." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Elimina %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Elimina %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "La cartella e tutti i file memorizzati al suo interno verranno eliminati e tutte le applicazioni in essa contenute verranno disinstallate." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Eliminazione della cartella in corso..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Crea %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "I criteri di protezione richiedono l'uso di %1$s. Toccate OK per creare una cartella di %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Crea" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Toccate qui per creare %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Elimina %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tocc. qui per eliminare %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "I criteri di protezione non consentono l'uso di %1$s. %2$s verrà eliminata." - diff --git a/tools/apps/setup-wizard/po/ja_JP.po b/tools/apps/setup-wizard/po/ja_JP.po deleted file mode 100755 index 300d03b..0000000 --- a/tools/apps/setup-wizard/po/ja_JP.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "キャンセル" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "削除" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "ロック解除方法" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "パスワードが一致しません。" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "パスワードを入力" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "パスワード" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "編集前の画像" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "次へ" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "セパレートゾーン" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "ようこそ!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "%1$sにアプリを保存して、目的に合わせてアプリを使い分けることができます。\n\nホーム画面に%2$sフォルダが作成されます。" - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "設定" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "フォルダを作成中..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "ホーム画面にフォルダを作成します。このフォルダにはプリロードアプリが自動的に追加されます。その他のアプリを追加することもできます。" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%sを削除" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%sを削除" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "フォルダとその中に保存されている全てのファイルを削除し、全てのアプリをアンインストールします。" - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "フォルダを削除中..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%sを作成" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "セキュリティポリシーにより、%1$sを使用する必要があります。%2$sフォルダを使用するには、[OK]をタップしてください。" - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "作成" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "タップして%sを作成します。" - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%sを削除" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "タップして%sを削除します。" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "%1$sの使用は、セキュリティポリシーによって制限されています。%2$sを削除します。" - diff --git a/tools/apps/setup-wizard/po/ka.po b/tools/apps/setup-wizard/po/ka.po deleted file mode 100755 index 36254ba..0000000 --- a/tools/apps/setup-wizard/po/ka.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "გაუქმება" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "წაშლა" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "განბლოკვის მეთოდი" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "პაროლები არ ემთხვევა." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "პაროლის შეყვანა." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "პაროლი" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "წინა" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "შემდეგი" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "გამოყოფილი ზონა" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "სალამი!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "აპლიკაციების შენახვის ადგილად გამოიყენეთ %1$s, რომ გქონდეთ განსხვავებული ვერსიები სხვადასხვა მიზნებისთვის.\n\n„%2$s“ საქაღალდე შეიქმნება საწყის ეკრანზე." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "დაყენება" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "იქმნება საქაღალდე..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "საქაღალდე შეიქმნება საწყის გვერდზე. წინასწარ ჩატვირთული აპლიკაციები ავტომატურად დაემატება ამ საქაღალდეში. ასევე შეგიძლიათ, დაამატოთ სხვა აპლიკაციები." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "წაიშალოს %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "წაშალეთ %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "საქაღალდე და მასში შენახული ყველა ფაილი წაიშლება და ყველა აპლიკაციის ინსტალაცია გაუქმდება მასში." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "საქაღალდის წაშლა..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "შექმენით %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "უსაფრთხოების პოლიტიკა ითხოვს, რომ გამოიყენოთ %1$s. „%2$s“ საქაღალდის შესაქმნელად, შეეხეთ OK-ს." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "შექმნა" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "შეეხე აქ, რომ შექმნა %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "წაშალეთ %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "შეეხე აქ, რომ წაშალო %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "უსაფრთხოების პოლიტიკა კრძალავს, რომ გამოიყენოთ %1$s. %2$s წაიშლება." - diff --git a/tools/apps/setup-wizard/po/kk.po b/tools/apps/setup-wizard/po/kk.po deleted file mode 100755 index 117a646..0000000 --- a/tools/apps/setup-wizard/po/kk.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Бас тарту" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Жою" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Құлыптан шығару әдісі" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Кілтсөз жұпсыз." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Кілтсөз енгізіңіз." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Кілтсөз" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Алдыңғы" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Келесі" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Бөлек аймақ" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Қош келдіңіз!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Түрлі мақсаттарға арналған жеке-жеке нұсқаулардың болуын қамтамасыз ету үшін бағдарламаларды %1$s қалтасында сақтаңыз.\n\n%2$s қалтасы негізгі экранда пайда болады." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Орнату" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Қалта құрылуда..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Қалта бастапқы экранда жасалады. Алдын ала жүктелген қолданбалар осы қалтаға автоматты түрде қосылады. Сонымен қатар, басқа қолданбаларды да қоса аласыз." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s жою" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s аумағын жою" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Қалта және оның ішінде сақталған барлық файлдар мен барлық қолданбалар жойылады." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Қалта жойылуда..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s аумағын жасау" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Қауіпсіздік саясаты сізден %1$s қалтасын пайдалануды талап етеді. %2$s қалтасын жасау үшін, ОК түймесін түртіңіз." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Жасау" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "%s жасау үшін нұқыңыз." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Жою %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "%s жою үшін нұқыңыз." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Қауіпсіздік талаптары %1$s пайдалануға рұқсат бермейді. %2$s жойылды." - diff --git a/tools/apps/setup-wizard/po/ko_KR.po b/tools/apps/setup-wizard/po/ko_KR.po deleted file mode 100755 index a074f95..0000000 --- a/tools/apps/setup-wizard/po/ko_KR.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "취소" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "삭제" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "잠금해제 방식" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "비밀번호가 일치하지 않습니다." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "비밀번호를 입력하세요." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "비밀번호" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "이전" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "다음" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "나만의 공간" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "환영합니다!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "용도별로 버전을 분리하여 %1$s에 앱을 저장합니다.\n\n%2$s 폴더가 홈 화면에 추가됩니다." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "설정" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "새 폴더 추가 중..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "폴더를 홈 화면에 추가합니다. 기본설치 앱은 이 폴더에 자동으로 추가되며, 해당 폴더에 다른 앱을 추가할 수도 있습니다." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s 삭제" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s 삭제" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "폴더, 폴더에 저장된 파일, 폴더에 있는 앱을 모두 삭제합니다." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "폴더 삭제 중..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s 추가" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "보안정책에 따라 %1$s을 사용하세요. %2$s 폴더를 추가하려면 확인 버튼을 누르세요." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "추가" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "확인" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "%s 항목을 추가하려면 여기를 누르세요." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s 삭제" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "%s 항목을 삭제하려면 여기를 누르세요." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "보안정책에 따라 %1$s 항목을 사용할 수 없습니다. %2$s 항목을 삭제합니다." - diff --git a/tools/apps/setup-wizard/po/lt.po b/tools/apps/setup-wizard/po/lt.po deleted file mode 100755 index 3401b92..0000000 --- a/tools/apps/setup-wizard/po/lt.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Atšaukti" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Trinti" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Atrakinimo būdas" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Slaptažodžiai nesutampa." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Įvesti slaptažodį." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Slaptažodis" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Ankst." - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Kitas" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Atskira zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Sveiki!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Išsaugokite programas %1$s, kad turėtumėte skirtingas versijas įvairiems tikslams.\n\n%2$s aplankas bus sukurtas jūsų pradžios ekrane." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Nustatyti" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Kuriamas aplankas..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Aplankas bus sukurtas pradžios ekrane. Iš anksto įkeltos programos bus įtrauktos į šį aplanką automatiškai. Taip pat galėsite pridėti kitų programų." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Trinti %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Trinti %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Bus ištrintas aplankas ir visi jame saugomi failai, o visos jame esančius programos bus išdiegtos." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Aplankas ištrinamas..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Sukurti %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Pagal saugos politiką reikalaujama naudoti %1$s. Jei norite sukurti %2$s aplanką, bakstelėkite „Gerai“." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Kurti" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Gerai" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Bakstelėkite čia ir sukurkite %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Trinti %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Baks. čia ir ištrink. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Saugos politika neleidžia naudoti %1$s. Bus ištrinta: %2$s." - diff --git a/tools/apps/setup-wizard/po/lv.po b/tools/apps/setup-wizard/po/lv.po deleted file mode 100755 index c89421b..0000000 --- a/tools/apps/setup-wizard/po/lv.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Atcelt" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Dzēst" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Atbloķēšanas metode" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Paroles nav vienādas." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Ievadiet paroli." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Parole" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Iepriekš." - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Nākamais" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Atsevišķa zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Esiet sveicināts!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Saglabājiet savas programmas mapē %1$s, lai izmantotu dažādas versijas dažādiem mērķiem.\n\nSākuma ekrānā tiks izveidota mape %2$s." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Iestatīt" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Izveido mapi..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Mape tiks izveidota jūsu sākuma ekrānā. Šajā mapē automātiski tiks pievienotas sākotnēji ielādētās programmas. Varat pievienot arī citas programmas." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Dzēst %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Dzēst %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Mape un visi tajā esošie faili tiks izdzēsti un visas tajā esošās programmas tiks atinstalētas." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Dzēš mapi..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Izveidot %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Drošības politika pieprasa izmantot %1$s. Pieskarieties pie Labi, lai izveidotu %2$s mapi." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Izveidot" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Labi" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Pieskar. šeit, lai izveidotu %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s dzēšana" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Piesk. šeit, lai dz. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Drošības politika neļauj izmantot %1$s. %2$s tiks izdzēsts." - diff --git a/tools/apps/setup-wizard/po/mk.po b/tools/apps/setup-wizard/po/mk.po deleted file mode 100755 index 00a4366..0000000 --- a/tools/apps/setup-wizard/po/mk.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Откажи" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Избриши" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Начин за отклучување" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Лозинките не се совпаѓаат." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Внесете лозинка." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Лозинка" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Претход." - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Следно" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Одделна Зона" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Добредојде!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Зачувајте ги апликациите во %1$s за да имате одделни верзии за различни намени.\n\nПапката %2$s ќе биде направена на Вашиот почетен екран." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Постави" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Се прави папка..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Папката ќе се создаде на Вашиот почетен екран. Претходно вчитаните апликации ќе се додадат во оваа папка автоматски. Можете да додавате и други апликации." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Избриши %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Избриши %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Папката и сите датотеки складирани во неа ќе се избришат и сите апликации во неа ќе бидат одинсталирани." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Се брише папка..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Направи %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Политиката на безбедност бара да користите %1$s. Допрете OK за да направите папка %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Направи" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Допрете тука за да направите %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Избриши %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Доп. тука за да избр. %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Политиката за безбедност спречува користење на %1$s. %2$s ќе се избрише." - diff --git a/tools/apps/setup-wizard/po/nb.po b/tools/apps/setup-wizard/po/nb.po deleted file mode 100755 index 93a6efe..0000000 --- a/tools/apps/setup-wizard/po/nb.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Avbryt" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Slett" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Opplåsingsmetode" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Passordene stemmer ikke overens." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Angi passord." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Passord" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Forrige" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Neste" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separat sone" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Velkommen!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Lagre appene dine i %1$s for å ha ulike versjoner til ulike formål.\n\n%2$s-mappen opprettes på startskjermbildet." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Konfigurer" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Oppretter mappe..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Mappen blir opprettet på startskjermbildet. De forhåndslastede appene blir lagt til i denne mappen automatisk. Du kan også legge til andre apper." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Slett %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Slett %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Mappen og alle filene som er lagret i den, blir slettet, og alle appene i den blir avinstallert." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Sletter mappe ..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Opprett %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Sikkerhetspolicyen krever at du bruker %1$s. Trykk på OK for å opprette en %2$s-mappe." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Opprett" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Trykk her for å opprette %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Slett %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Trykk her og slett %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Sikkerhetspolicyen hindrer bruk av %1$s. %2$s blir slettet." - diff --git a/tools/apps/setup-wizard/po/nl.po b/tools/apps/setup-wizard/po/nl.po deleted file mode 100755 index 6e9ba6d..0000000 --- a/tools/apps/setup-wizard/po/nl.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Annul." - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Verwijderen" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Ontgrendelmethode" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Wachtwoorden komen niet overeen." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Wachtwoord invoeren" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Wachtwoord" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Vorige" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Volgende" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Afzonderlijke zone" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Welkom!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Sla uw apps op in %1$s om afzonderlijke versies voor verschillende doeleinden te hebben.\n\nDe %2$s-map wordt op uw startscherm gemaakt." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Instellen" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Map maken..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "De map wordt op uw startscherm gemaakt. De vooraf geladen apps worden automatisch aan deze map toegevoegd. U kunt ook andere apps toevoegen." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s verwijderen" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s verwijderen" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "De map en alle opgeslagen bestanden en apps in de map worden verwijderd." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Map verwijderen..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s maken" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Het beveiligingsbeleid vereist dat u %1$s gebruikt. Tik op OK om een %2$s-map te maken." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Maken" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Tik hier om %s te maken." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s verwijderen" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tik hier om %s te verw." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Het beveiligingsbeleid verhindert het gebruik van %1$s. %2$s wordt verwijderd." - diff --git a/tools/apps/setup-wizard/po/pl.po b/tools/apps/setup-wizard/po/pl.po deleted file mode 100755 index b10ed8c..0000000 --- a/tools/apps/setup-wizard/po/pl.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Anuluj" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Usuń" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Metoda odblokowania" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Podane hasła są różne." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Wpisz hasło." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Hasło" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Wstecz" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Dalej" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Oddzielanie strefy" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Witamy!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Zapisz aplikacje w %1$s, aby korzystać z oddzielnych wersji dla różnych celów.\n\nNa ekranie startowym zostanie utworzony katalog %2$s." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Konfiguruj" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Tworzenie katalogu..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Katalog zostanie utworzony na ekranie startowym. Wstępnie załadowane aplikacje będą automatycznie dodawane do tego katalogu. Możesz również dodawać inne aplikacje." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Usuń %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Usuwanie katalogu %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Katalog i wszystkie przechowywane w nim pliki zostaną usunięte, a wszystkie aplikacje znajdujące się w tym katalogu zostaną odinstalowane." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Usuwanie katalogu..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Tworzenie katalogu %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Zasady zabezpieczeń wymagają użycia katalogu %1$s. Dotknij przycisku OK, aby utworzyć katalog %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Utwórz" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Dotknij tutaj, aby utworzyć %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Usuwanie %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Dotknij tu, by usunąć %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Zasady zabezpieczeń uniemożliwiają korzystanie z %1$s. Nastąpi usunięcie %2$s." - diff --git a/tools/apps/setup-wizard/po/pt_BR.po b/tools/apps/setup-wizard/po/pt_BR.po deleted file mode 100755 index 62352f7..0000000 --- a/tools/apps/setup-wizard/po/pt_BR.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancelar" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Excluir" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Método de desbloqueio" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Senhas não conferem." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Insira senha." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Senha" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Anterior" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Avançar" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separar área" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Bem-vindo!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Salve seus aplicativos em %1$s para ter versões separadas para diferentes finalidades.\n\nA pasta %2$s será criada na tela inicial." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurar" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Criando pasta..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "A pasta será criada na tela inicial. Os aplicativos pré-carregados serão adicionados automaticamente a essa pasta. Você também poderá adicionar outros aplicativos." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Excluir %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Excluir %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "A pasta e todos os arquivos armazenados nela serão excluídos e todos os aplicativos contidos nela serão desinstalados." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Excluindo a pasta..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Criar %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "A política de segurança exige que você use %1$s. Toque em OK para criar uma pasta %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Criar" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Toque aqui para criar %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Excluir %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Toque aqui p/ excluir %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "A política de segurança impede o uso de %1$s. %2$s será excluído(a)." - diff --git a/tools/apps/setup-wizard/po/pt_PT.po b/tools/apps/setup-wizard/po/pt_PT.po deleted file mode 100755 index f41ef02..0000000 --- a/tools/apps/setup-wizard/po/pt_PT.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Cancelar" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Eliminar" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Método de desbloqueio" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "As palavras-passe são diferentes." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Introduzir palavra-passe." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Palavra-passe" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Anterior" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Seguinte" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separar Zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Bem-vindo!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Guarde as suas aplicações na %1$s para ter versões separadas para diferentes fins.\n\nA pasta %2$s será criada no seu ecrã principal." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurar" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "A criar pasta..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "A pasta será criada no seu ecrã principal. As aplicações pré-carregadas serão adicionadas a esta pasta automaticamente. Também pode adicionar outras aplicações." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "A pasta e todos os ficheiros nela armazenados serão eliminados, e todas as aplicações nela contidas serão desinstaladas." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "A eliminar pasta..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Criar %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "A política de segurança exige que utilize %1$s. Toque em OK para criar uma pasta %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Criar" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Toque aqui para criar %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Eliminar %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Toque aqui para eliminar %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "A política de segurança impede a utilização de %1$s. %2$s será eliminada." - diff --git a/tools/apps/setup-wizard/po/ro.po b/tools/apps/setup-wizard/po/ro.po deleted file mode 100755 index a93c323..0000000 --- a/tools/apps/setup-wizard/po/ro.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Anulare" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Ștergere" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Metodă de deblocare" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Parolele nu se potrivesc." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Introduceţi parola." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Parolă" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Anterior" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Înainte" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Zonă separată" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Bun venit!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Salvați-vă aplicațiile în %1$s pentru a dispune de versiuni separate pentru diferite scopuri.\n\nFolderul %2$s va fi creat pe ecranul Acasă." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Configurare" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Se creează folderul..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Folderul va fi creat pe ecranul Acasă. Aplicațiile preîncărcate vor fi adăugate automat în acest folder. De asemenea, puteți adăuga alte aplicații." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Ștergeți %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Ștergere %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Folderul și toate fișierele stocate în acesta vor fi șterse, iar aplicațiile din folder vor fi dezinstalate." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Se șterge folderul..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Creare %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Politica de securitate impune utilizarea %1$s. Atingeți OK pentru a crea un folder %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Creare" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Atingeți aici pentru a crea %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Ștergere %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "At. aici pt. a șterge %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Politica de securitate împiedică utilizarea funcției %1$s. %2$s se va șterge." - diff --git a/tools/apps/setup-wizard/po/ru_RU.po b/tools/apps/setup-wizard/po/ru_RU.po deleted file mode 100755 index 76114f2..0000000 --- a/tools/apps/setup-wizard/po/ru_RU.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Отмена" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Удалить" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Способ разблокировки" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Пароли не совпадают." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Введите пароль." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Пароль" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Назад" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Далее" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Изолированная зона" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Добро пожаловать!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Сохраняйте приложения в %1$s, чтобы иметь отдельные версии для различных целей.\n\nПапка %2$s будет создана на главном экране." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Настроить" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Создание папки..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Папка будет создана на главном экране. В нее будут автоматически добавлены предварительно загруженные приложения. Также вы сможете добавлять другие приложения." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Удалить %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Удаление %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Эта папка, а также все файлы и приложения, которые в ней содержатся, будут удалены." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Удаление папки..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Создание %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Политика безопасности требует использования %1$s. Коснитесь OK, чтобы создать папку %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Создать" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Коснитесь, чтобы создать %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Удаление %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Коснитесь для удаления %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Политика безопасности запрещает использование %1$s. %2$s будет удален." - diff --git a/tools/apps/setup-wizard/po/sk.po b/tools/apps/setup-wizard/po/sk.po deleted file mode 100755 index 0517e11..0000000 --- a/tools/apps/setup-wizard/po/sk.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Zrušiť" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Odstrániť" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Spôsob odomknutia" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Heslá sa nezhodujú." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Zadajte heslo." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Heslo" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Predch." - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Ďalej" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Oddelená zóna" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Vitajte!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Uložte svoje aplikácie do priečinka %1$s, aby ste mali samostatné verzie na rôzne účely.\n\nPriečinok %2$s sa vytvorí na domovskej obrazovke." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Nastaviť" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Vytvára sa priečinok..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Tento priečinok sa vytvorí na domovskej obrazovke. Predinštalované aplikácie sa automaticky pridajú do tohto priečinka. Môžete pridať aj ďalšie aplikácie." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Odstrániť %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s – odstránenie" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Priečinok a všetky súbory, ktoré sú v ňom uložené, sa odstránia a všetky aplikácie v ňom sa odinštalujú." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Odstraňuje sa priečinok..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s – vytvorenie" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Politika zabezpečenia vyžaduje používanie funkcie %1$s. Ťuknutím na tlačidlo OK vytvorte priečinok %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Vytvoriť" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Ťuknutím sem sa vytvorí %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s – odstránenie" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Ťukn. sem sa odstráni %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Politika zabezpečenia zabraňuje používaniu funkcie %1$s. %2$s sa odstráni." - diff --git a/tools/apps/setup-wizard/po/sl.po b/tools/apps/setup-wizard/po/sl.po deleted file mode 100755 index d7836ce..0000000 --- a/tools/apps/setup-wizard/po/sl.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Prekliči" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Izbrišite" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Način odklepanja" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Gesli se ne ujemata." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Vnesite geslo." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Geslo" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Nazaj" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Naprej" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Ločeno območje" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Pozdravljeni!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Shranite svoje aplikacije v mapo %1$s, da boste imeli ločene različice za različne namene.\n\nNa domačem zaslonu bo ustvarjena mapa %2$s." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Nastavi" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Ustvarjam mapo ..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Mapa bo ustvarjena na domačem zaslonu. Vnaprej naložene aplikacije bodo samodejno dodane v to mapo. Dodate lahko tudi druge aplikacije." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Izbrišite %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Izbriši %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Mapa in vse datoteke v njej bodo izbrisane, odstranjene pa bodo tudi vse aplikacije v mapi." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Brisanje mape ..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Ustvari %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Varnostni pravilnik zahteva uporabo mape %1$s. Pritisnite V redu, da ustvarite mapo %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Ustvari" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "V REDU" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Pritisnite tu, da ustvarite %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Izbriši %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Prit. tu, da izbrišete %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Varnostni pravilnik preprečuje uporabo aplikacije %1$s. Aplikacija %2$s bo izbrisana." - diff --git a/tools/apps/setup-wizard/po/sr.po b/tools/apps/setup-wizard/po/sr.po deleted file mode 100755 index fa2ae68..0000000 --- a/tools/apps/setup-wizard/po/sr.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Otkaži" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Izbriši" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Način otključavanja" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Lozinke se ne slažu." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Unesi šifru." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Lozinka" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Prethodna" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Naredno" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Posebna zona" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Dobro došli!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Sačuvajte svoje aplikacije u aplikaciji %1$s da biste imali odvojene verzije za različite svrhe.\n\nKreiraće se folder %2$s na vašem početnom ekranu." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Konfiguriši" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Kreiranje foldera..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Folder će se kreirati na vašem početnom ekranu. Unapred učitane aplikacije će se automatski dodati u ovaj folder. Možete da dodate i druge aplikacije." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Izbriši %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Izbrišite %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Izbrisaće se folder i svi fajlovi sačuvani u njemu i sve aplikacije u njemu će se deinstalirati." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Briše se folder..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Kreirajte %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Politika bezbednosti zahteva da koristite %1$s. Kucnite na OK da biste kreirali folder %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Kreiraj" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Kucnite ovde za kreiranje %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Izbriši %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Kuc. ovde za brisanje %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Politika bezbednosti sprečava da se koristi %1$s. %2$s će se obrisati." - diff --git a/tools/apps/setup-wizard/po/sv.po b/tools/apps/setup-wizard/po/sv.po deleted file mode 100755 index 72e8828..0000000 --- a/tools/apps/setup-wizard/po/sv.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Avbryt" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Ta bort" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Upplåsningsmetod" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Lösenorden matchar inte." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Ange lösenord." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Lösenord" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Åter" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Nästa" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Separat zon" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Välkommen!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Spara programmen i %1$s om du vill ha separata versioner för olika syften.\n\nMappen %2$s skapas på hemskärmen." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Ställ in" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Mapp skapas..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Mappen skapas på hemskärmen. De förinlästa programmen läggs till automatiskt i den här mappen. Du kan även lägga till andra program." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Ta bort %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Radera %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Mappen och alla filerna i den raderas. Alla program i den avinstalleras." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Tar bort mappen ..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Skapa %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Säkerhetspolicyn kräver att du använder %1$s. Tryck på OK och skapa mappen %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Skapa" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Tryck här om du vill skapa %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Ta bort %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Tryck här för ta bort %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Säkerhetsprincipen förhindrar att %1$s används. %2$s tas bort." - diff --git a/tools/apps/setup-wizard/po/tr_TR.po b/tools/apps/setup-wizard/po/tr_TR.po deleted file mode 100755 index b40a80a..0000000 --- a/tools/apps/setup-wizard/po/tr_TR.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "İptal" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Sil" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Kilit açma yöntemi" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Şifreler uyuşmuyor." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Şifreyi girin." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Şifre" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Önceki" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "İleri" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Ayrı Bölge" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Hoş geldiniz!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Farklı amaçlar için ayrı sürümler elde etmek üzere uygulamalarınızı %1$s bölümüne kaydedin.\n\nAna ekranınızda %2$s klasörü oluşturulacak." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Ayarla" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Klasör oluşturuluyor..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Klasör ana ekranınızda oluşturulacak. Önceden yüklenen uygulamalar bu klasöre otomatik olarak eklenecek. Diğer uygulamaları da ekleyebilirsiniz." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%s sil" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s öğesini sil" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Klasör ve içinde saklanan tüm dosyalar silinecek ve içindeki tüm uygulamalar kaldırılacak." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Klasör siliniyor..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s oluştur" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Güvenlik ilkesi, %1$s kullanmanızı gerektiriyor. %2$s klasörü oluşturmak için Tamam öğesine dokunun." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Oluştur" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "Tamam" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "%s oluşturmak içn buraya dokunun." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s öğesini sil" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "%s öğsni silmk içn doknn." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Güvenlik ilkesi, %1$s kullanımını engelliyor. %2$s silinecek." - diff --git a/tools/apps/setup-wizard/po/uk.po b/tools/apps/setup-wizard/po/uk.po deleted file mode 100755 index b499197..0000000 --- a/tools/apps/setup-wizard/po/uk.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Скасувати" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Видалити" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Спосіб розблокування" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Пароль не співпадає." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Введіть пароль." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Пароль" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Назад" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Далі" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Ізольована зона" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Ласкаво просимо!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Зберігайте програми у %1$s, щоб мати окремі версії для різних цілей.\n\nПапку %2$s буде створено на головному екрані." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "Налаштувати" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Створення папки..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Папку буде створено на головному екрані. До неї буде автоматично додано попередньо завантажені програми. Також ви зможете додавати інші програми." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "Видалення %s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "Видалення %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Цю папку, а також усі файли та програми, які вона містить, буде видалено." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Видалення папки..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "Створення %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Політика безпеки вимагає використання %1$s. Торкніться OK, щоб створити папку %2$s." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Створити" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "Торкніться тут, щоб створити %s." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "Видалення %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "Торкніться для видаленя %s." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Політика безпеки забороняє використовувати %1$s. %2$s буде видалено." - diff --git a/tools/apps/setup-wizard/po/uz.po b/tools/apps/setup-wizard/po/uz.po deleted file mode 100755 index 9a643b8..0000000 --- a/tools/apps/setup-wizard/po/uz.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "Bekor qilish" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "Yo‘q qilish" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "Blokdan chiqarish usuli" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "Parollar mos kelmayapti." - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "Parol kiriting." - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "Parol" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "Avvalgi" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "Keyingi" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "Alohida soha" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "Xush kelibsiz!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "Turli maqsadlar uchun alohida versiyalarga ega bo‘lish uchun ilovalarni %1$s’da saqlang.\n\n%2$s jildi asosiy ekranda yaratiladi." - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "O‘rnatish" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "Jild yaratilmoqda..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "Jild asosiy ekranda yaratiladi. Oldindan yuklangan ilovalar bu jildga avtomatik ravishda qo‘shiladi. Boshqa ilovalarni qo‘shishingiz mumkin." - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "%sni o‘chirib tashlash" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "%s’ni o‘chirib tashlash" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "Unda saqlangan jild va barcha boshqa fayllar o‘chirib tashlanadi, barcha ichidagi ilovalar olib tashlanadi." - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "Jild o‘chirib tashlanmoqda..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "%s’ni yaratish" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "Xavfsizlik siyosati %1$s’dan foydalanishni talab qiladi. %2$s jildini yaratish uchun OK'ga teging." - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "Yaratish" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "OK" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "%s yaratish u-n bu yerga teging." - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "%s’ni o‘chirish" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "%s’ni o‘chir. u-n teging." - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "Xavfsizlik siyosati %1$s ishlatilishiga yo‘l qo‘ymaydi. %2$s o‘chirib tashlanadi." - diff --git a/tools/apps/setup-wizard/po/zh_CN.po b/tools/apps/setup-wizard/po/zh_CN.po deleted file mode 100755 index 5c10f83..0000000 --- a/tools/apps/setup-wizard/po/zh_CN.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "取消" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "删除" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "解锁方式" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "密码不匹配" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "输入密码" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "密码" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "上一步" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "下一步" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "单独使用区" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "欢迎!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "将您的应用程序保存在 %1$s 中可针对不同目的保留单独的版本。\n\n将在主屏幕上创建 %2$s 文件夹。" - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "设置" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "文件夹创建中..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "将在您的主屏幕上创建文件夹,并自动将预载入的应用程序添加至此文件夹。您也可以添加其他应用程序。" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "删除%s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "删除 %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "将删除该文件夹和其中存储的所有文件,并卸载其中的所有应用程序。" - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "正在删除文件夹..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "创建 %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "安全政策要求您使用 %1$s。若要创建 %2$s 文件夹,请点击【确定】。" - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "创建" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "确定" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "点击此处创建 %s" - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "删除 %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "点击此处删除 %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "安全政策阻止 %1$s 的使用。将删除 %2$s。" - diff --git a/tools/apps/setup-wizard/po/zh_HK.po b/tools/apps/setup-wizard/po/zh_HK.po deleted file mode 100755 index 918cc1d..0000000 --- a/tools/apps/setup-wizard/po/zh_HK.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "取消" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "刪除" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "解鎖方式" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "密碼不符。" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "輸入密碼。" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "密碼" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "上一步" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "下一頁" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "獨立區域" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "歡迎!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "將您的應用程式儲存在 %1$s 中以針對不同的用途設立獨立的版本。\n\n%2$s 資料夾將建立在您的主螢幕上。" - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "設定" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "正在建立資料夾..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "資料夾將在您的主螢幕上建立。預載應用程式將自動加入至此資料夾。您也可加入其他應用程式。" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "刪除%s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "刪除 %s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "資料夾與其中儲存的所有檔案將被刪除,且其中的所有應用程式將被解除安裝。" - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "正在刪除資料夾..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "建立 %s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "安全性政策需要您使用 %1$s。請輕觸 [確定] 以建立 %2$s 資料夾。" - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "建立" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "確定" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "輕觸此處以建立 %s。" - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "刪除 %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "輕觸此處以刪除 %s。" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "安全性政策可防止 %1$s 的使用。%2$s 將被刪除。" - diff --git a/tools/apps/setup-wizard/po/zh_TW.po b/tools/apps/setup-wizard/po/zh_TW.po deleted file mode 100755 index 9c14fe8..0000000 --- a/tools/apps/setup-wizard/po/zh_TW.po +++ /dev/null @@ -1,78 +0,0 @@ -msgid "IDS_TPLATFORM_BUTTON_CANCEL_ABB2" -msgstr "取消" - -msgid "IDS_TPLATFORM_BUTTON_DELETE_ABB4" -msgstr "刪除" - -msgid "IDS_ST_MBODY_UNLOCK_METHOD" -msgstr "解鎖方式" - -msgid "IDS_ST_POP_PASSWORDS_DO_NOT_MATCH" -msgstr "密碼不符。" - -msgid "IDS_ST_BODY_ENTER_PASSWORD" -msgstr "輸入密碼。" - -msgid "IDS_ST_BODY_PASSWORD" -msgstr "密碼" - -msgid "IDS_ST_SK_PREVIOUS" -msgstr "上一步" - -msgid "IDS_ST_BUTTON_NEXT" -msgstr "下一頁" - -msgid "IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB" -msgstr "個別使用區" - -msgid "IDS_TPLATFORM_HEADER_WELCOME_E" -msgstr "歡迎!" - -msgid "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG" -msgstr "將您的應用程式儲存在%1$s中以將不同版本作為不同用途使用。\n\n%2$s資料夾將建立於主螢幕上。" - -msgid "IDS_TPLATFORM_BUTTON_SET_UP_ABB" -msgstr "設定" - -msgid "IDS_TPLATFORM_BODY_CREATING_FOLDER_ING" -msgstr "正在建立資料夾..." - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG" -msgstr "資料夾將建立於主螢幕。預載應用程式將自動新增至此資料夾。您也可以新增其他應用程式。" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS" -msgstr "刪除%s" - -msgid "IDS_TPLATFORM_HEADER_DELETE_PS_ABB2" -msgstr "刪除%s" - -msgid "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED" -msgstr "資料夾與其中儲存的所有檔案都將會刪除,且也將解除安裝其中所有的應用程式。" - -msgid "IDS_TPLATFORM_BODY_DELETING_FOLDER_ING" -msgstr "正在刪除資料夾..." - -msgid "IDS_TPLATFORM_HEADER_CREATE_PS_ABB" -msgstr "建立%s" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_REQUIRES_YOU_TO_USE_P1SS_TAP_OK_TO_CREATE_A_P2SS_FOLDER" -msgstr "安全性原則要求您使用 %1$s。請輕觸 [確定] 來建立 %2$s 資料夾。" - -msgid "IDS_TPLATFORM_BUTTON_CREATE_ABB2" -msgstr "建立" - -msgid "IDS_TPLATFORM_BUTTON_OK_ABB6" -msgstr "確定" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB" -msgstr "輕觸此處以建立%s。" - -msgid "IDS_TPLATFORM_MBODY_DELETE_PS_ABB" -msgstr "刪除 %s" - -msgid "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB" -msgstr "輕觸此處以刪除%s。" - -msgid "IDS_TPLATFORM_POP_THE_SECURITY_POLICY_PREVENTS_THE_USE_OF_P1SS_P2SS_WILL_BE_DELETED" -msgstr "安全性原則會阻擋 %1$s 的使用。將刪除 %2$s。" - diff --git a/tools/apps/setup-wizard/res/data/KrateManifest.xml b/tools/apps/setup-wizard/res/data/KrateManifest.xml deleted file mode 100644 index 7105880..0000000 --- a/tools/apps/setup-wizard/res/data/KrateManifest.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/tools/apps/setup-wizard/res/edje/layout.edc b/tools/apps/setup-wizard/res/edje/layout.edc deleted file mode 100644 index 5fb5aac..0000000 --- a/tools/apps/setup-wizard/res/edje/layout.edc +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Tizen Krate Setup-Wizard Layout - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -group { name: "base_layout"; - parts { - part { name: "base"; - type: RECT; - scale: 1; - repeat_events: 0; - description { state: "default" 0.0; - rel1 { relative : 0.0 0.0;} - rel2 { relative : 1.0 1.0;} - } - } - part { name: "content_layout"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "base";} - rel2 { relative: 1.0 0.0; to: "bottom_layout";} - } - } - part { name: "bottom_layout"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "base"; offset: 0 -172;} - rel2 { relative: 1.0 1.0; to: "base";} - } - } - } -} - -group { name: "two_button_layout"; - parts { - part { name: "base"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - color: 55 166 184 255; - } - } - part { name: "base2"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - rel1 {relative: 0.0 0.0; to: "base";} - rel2 {relative: 1.0 1.0; to: "base";} - color: 0 0 0 25; - } - } - part { name: "prev_button"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "base"; offset: 22 22;} - rel2 { relative: 0.5 1.0; to: "base"; offset: -22 -22;} - } - } - part { name: "next_button"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 1.0 0.0; to_x: "prev_button"; to_y: "base"; offset: 22 22;} - rel2 { relative: 1.0 1.0; to: "base"; offset: -22 -22;} - } - } - } -} diff --git a/tools/apps/setup-wizard/res/edje/org.tizen.krate-setup-wizard.edc b/tools/apps/setup-wizard/res/edje/org.tizen.krate-setup-wizard.edc deleted file mode 100644 index dbc5615..0000000 --- a/tools/apps/setup-wizard/res/edje/org.tizen.krate-setup-wizard.edc +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -collections { - base_scale: 1.8; - #include "layout.edc" - #include "welcome.edc" - #include "setup.edc" - #include "security.edc" -} diff --git a/tools/apps/setup-wizard/res/edje/security.edc b/tools/apps/setup-wizard/res/edje/security.edc deleted file mode 100644 index afe9d4f..0000000 --- a/tools/apps/setup-wizard/res/edje/security.edc +++ /dev/null @@ -1,79 +0,0 @@ -group { name: "security_layout"; - parts { - part { name: "bg"; - type: RECT; - scale: 1; - repeat_events: 0; - description { state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.0 0.0;} - rel2 { relative: 1.0 1.0;} - } - } - part { name: "title_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "bg"; offset: 45 0;} - rel2 { relative: 1.0 0.0; to: "bg"; offset: -45 45;} - } - } - part { name: "title"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title_top_padding";} - rel2 { relative: 1.0 1.0; to: "title_top_padding"; offset: 0 40;} - } - } - part { name: "title_bottom_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title";} - rel2 { relative: 1.0 1.0; to: "title"; offset: 0 20;} - } - } - part { name: "entry_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title_bottom_padding";} - rel2 { relative: 1.0 1.0; to: "title_bottom_padding"; offset: 0 60;} - } - } - part { name: "entry"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "entry_area";} - rel2 { relative: 1.0 1.0; to: "entry_area";} - } - } - part { name: "entry_separator"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 7 180 211 250; - rel1 { relative: 0.0 1.0; to: "entry_area";} - rel2 { relative: 1.0 1.0; to: "entry_area"; offset: 0 2;} - } - } - part { name: "entry_bottom_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "entry_area";} - rel2 { relative: 1.0 1.0; to: "entry_area"; offset: 0 24;} - } - } - part { name: "entry_info"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "entry_bottom_padding";} - rel2 { relative: 1.0 1.0; to: "entry_bottom_padding"; offset: 0 60;} - } - } - } -} diff --git a/tools/apps/setup-wizard/res/edje/setup.edc b/tools/apps/setup-wizard/res/edje/setup.edc deleted file mode 100644 index 3fb3da8..0000000 --- a/tools/apps/setup-wizard/res/edje/setup.edc +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Tizen Krate Setup-Wizard Layout - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -group { name: "setup_layout"; - images { - image: "../images/icon.png" COMP; - } - parts { - part { name: "bg1"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 55 166 184 255; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - } - } - part { name: "bg2"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 0 0 0 25; - rel1 { relative: 0.0 0.0; to: "bg1";} - rel2 { relative: 1.0 1.0; to: "bg1";} - } - } - part { name: "bg_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 {relative: 0.0 0.0; to: "bg1";} - rel2 {relative: 1.0 0.0; to: "bg1"; offset: 0 40;} - } - } - part { name: "title_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "bg_top_padding";} - rel2 { relative: 1.0 1.0; to: "bg_top_padding"; offset: 0 150;} - } - } - part { name: "title_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "title_area";} - rel2 { relative: 1.0 0.0; to: "title_area"; offset: 0 40;} - } - } - part { name: "title"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title_top_padding"; } - rel2 { relative: 1.0 1.0; to: "title_area"; } - align: 0.5 0.5; - } - } - part { name: "top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title_area";} - rel2 { relative: 1.0 1.0; to: "title_area"; offset: 0 162;} - } - } - part { name: "contents_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "top_padding";} - rel2 { relative: 1.0 1.0; to: "top_padding"; offset: 0 493;} - } - } - part { name: "app_icon_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "contents_area";} - rel2 { relative: 1.0 0.0; to: "contents_area"; offset: 0 160;} - } - } - part { name: "app_icon"; - type: IMAGE; - scale: 1; - description { state: "default" 0.0; - min: 118 118; - max: 118 118; - rel1 { relative: 0.0 0.0; to: "app_icon_area";} - rel2 { relative: 1.0 1.0; to: "app_icon_area";} - align: 0.5 0.5; - image.normal: "../images/icon.png"; - } - } - part { name: "message_title"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "app_icon_area"; offset: 32 0;} - rel2 { relative: 1.0 1.0; to: "app_icon_area"; offset: -32 67;} - } - } - part { name: "message_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "message_title";} - rel2 { relative: 1.0 1.0; to: "message_title"; offset: 0 42;} - } - } - part { name: "progress_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "message_top_padding";} - rel2 { relative: 1.0 1.0; to: "message_top_padding"; offset: 0 114;} - } - } -#if 0 - part { name: "progress_percentage"; - type: TEXT; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "progress_area";} - rel2 { relative: 1.0 0.0; to: "progress_area"; offset: 0 54;} - } - } -#endif - part { name: "progress_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "progress_area";} - rel2 { relative: 1.0 0.0; to: "progress_area"; offset: 0 66;} - } - } - part { name: "progress_indicator"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "progress_top_padding";} - rel2 { relative: 1.0 1.0; to: "progress_top_padding"; offset: 0 48;} - } - } - part { name: "progress_bottom_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "progress_area";} - rel2 { relative: 1.0 1.0; to: "progress_area"; offset: 0 49;} - } - } - part { name: "message_content"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "progress_bottom_padding";} - rel2 { relative: 1.0 1.0; to: "progress_bottom_padding"; offset: 0 208;} - } - } - } -} diff --git a/tools/apps/setup-wizard/res/edje/welcome.edc b/tools/apps/setup-wizard/res/edje/welcome.edc deleted file mode 100644 index 5d650aa..0000000 --- a/tools/apps/setup-wizard/res/edje/welcome.edc +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Tizen Krate Setup-Wizard Layout - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -group { name: "welcome_layout"; - images { - image: "../images/icon.png" COMP; - image: "../images/theme_bg.png" COMP; - } - parts { - part { name: "bg1"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 55 166 184 255; - rel1 { relative: 0.0 0.0; } - rel2 { relative: 1.0 1.0; } - } - } - part { name: "bg2"; - type: RECT; - scale: 1; - description { state: "default" 0.0; - color: 0 0 0 25; - rel1 { relative: 0.0 0.0; to: "bg1";} - rel2 { relative: 1.0 1.0; to: "bg1";} - } - } - part { name: "bg_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 {relative: 0.0 0.0; to: "bg1";} - rel2 {relative: 1.0 0.0; to: "bg1"; offset: 0 40;} - } - } - part { name: "title_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "bg_top_padding";} - rel2 { relative: 1.0 1.0; to: "bg_top_padding"; offset: 0 150;} - } - } - part { name: "title_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "title_area";} - rel2 { relative: 1.0 0.0; to: "title_area"; offset: 0 40;} - } - } - part { name: "title"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title_top_padding";} - rel2 { relative: 1.0 1.0; to: "title_area";} - align: 0.5 0.5; - } - } - part { name: "top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "title_area";} - rel2 { relative: 1.0 1.0; to: "title_area"; offset: 0 162;} - } - } - part { name: "contents_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "top_padding";} - rel2 { relative: 1.0 1.0; to: "top_padding"; offset: 0 493;} - } - } - part { name: "app_icon_area"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 0.0; to: "contents_area";} - rel2 { relative: 1.0 0.0; to: "contents_area"; offset: 0 160;} - } - } - part { name: "app_icon"; - type: IMAGE; - scale: 1; - description { state: "default" 0.0; - min: 118 118; - max: 118 118; - rel1 { relative: 0.0 0.0; to: "app_icon_area";} - rel2 { relative: 1.0 1.0; to: "app_icon_area";} - align: 0.5 0.5; - image.normal: "../images/icon.png"; - } - } - part { name: "message_title"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - color: 255 255 255 255; - rel1 { relative: 0.0 1.0; to: "app_icon_area"; offset: 32 0;} - rel2 { relative: 1.0 1.0; to: "app_icon_area"; offset: -32 67;} - } - } - part { name: "message_top_padding"; - type: SPACER; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "message_title";} - rel2 { relative: 1.0 1.0; to: "message_title"; offset: 0 58;} - } - } - part { name: "message_content"; - type: SWALLOW; - scale: 1; - description { state: "default" 0.0; - rel1 { relative: 0.0 1.0; to: "message_top_padding";} - rel2 { relative: 1.0 1.0; to: "message_top_padding"; offset: 0 208;} - } - } - } -} diff --git a/tools/apps/setup-wizard/res/images/icon.png b/tools/apps/setup-wizard/res/images/icon.png deleted file mode 100644 index ea3a791de9bbc3d7f378ab19c235f8cd2b5412b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16736 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 P5W~V&tO~AJz9s+P#*ey( diff --git a/tools/apps/setup-wizard/src/main.c b/tools/apps/setup-wizard/src/main.c deleted file mode 100644 index afa683b..0000000 --- a/tools/apps/setup-wizard/src/main.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include "krate-setup.h" -#include "widget.h" - -static void __launch_krate_app(krate_manager_h krate_mgr, const char *krate_name, app_control_h app_control) -{ - krate_app_proxy_h krate_app; - - krate_app_proxy_create(krate_mgr, krate_name, &krate_app); - krate_app_proxy_send_launch_request(krate_app, app_control); - krate_app_proxy_destroy(krate_app); -} - -static void __krate_request_done(const char *from, const char *info, void *user_data) -{ - app_control_h app_control; - char uri[PATH_MAX]; - - appdata_s *ad = (appdata_s *) user_data; - if (!strcmp(info, "Error")) { - ecore_main_loop_thread_safe_call_sync(krate_request_fail, ad); - return; - } - - if (!strcmp(ad->mode, "create")) { - krate_manager_reset_krate_password(ad->krate_manager, ad->krate_name, ad->krate_password); - - app_control_create(&app_control); - app_control_set_app_id(app_control, KEYGUARD_PACKAGE); - snprintf(uri, sizeof(uri), "krate://setup/%s", ad->krate_name); - app_control_set_uri(app_control, uri); - app_control_send_launch_request(app_control, NULL, NULL); - app_control_destroy(app_control); - - app_control_create(&app_control); - app_control_set_app_id(app_control, KASKIT_PACKAGE); - __launch_krate_app(ad->krate_manager, ad->krate_name, app_control); - app_control_destroy(app_control); - } else if (!strcmp(ad->mode, "remove")) { - app_control_create(&app_control); - app_control_set_app_id(app_control, KEYGUARD_PACKAGE); - snprintf(uri, sizeof(uri), "krate://cleanup/%s", ad->krate_name); - app_control_set_uri(app_control, uri); - app_control_send_launch_request(app_control, NULL, NULL); - app_control_destroy(app_control); - } - - ad->request_done = true; -} - -static bool __app_create(void *data) -{ - appdata_s *ad = (appdata_s *) data; - - if (krate_manager_create(&ad->krate_manager) != KRATE_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to get krate manager handle"); - ui_app_exit(); - return false; - } - - return true; -} - -static void __app_pause(void *data) -{ -} - -static void __app_resume(void *data) -{ -} - -static void __free_data(appdata_s *ad) -{ - free(ad->krate_name); - free(ad->mode); -} - -static void __app_terminate(void *data) -{ - appdata_s *ad = (appdata_s *) data; - - krate_manager_remove_event_cb(ad->krate_manager, ad->krate_event_cb_id); - krate_manager_destroy(ad->krate_manager); - - __free_data(ad); - - return ; -} - -static void __set_krate_callback(appdata_s *ad) -{ - char *cb_event_list[2] = {"created", "removed"}; - char *cb_event = NULL; - - if (!strcmp(ad->mode, "create")) - cb_event = cb_event_list[0]; - else - cb_event = cb_event_list[1]; - - if (krate_manager_add_event_cb(ad->krate_manager, cb_event, __krate_request_done, ad, &ad->krate_event_cb_id) != KRATE_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to add krate signal callback"); - ui_app_exit(); - } - - return; -} - -static void __app_control(app_control_h app_control, void *data) -{ - appdata_s *ad = (appdata_s *) data; - int ret = 0; - - ret = app_control_get_extra_data(app_control, "mode", &ad->mode); - if (ret != APP_CONTROL_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to get mode"); - ui_app_exit(); - return; - } - - if (strcmp(ad->mode, "create") && strcmp(ad->mode, "remove")) { - dlog_print(DLOG_ERROR, LOG_TAG, "Invalid mode"); - ui_app_exit(); - return; - } - - ret = app_control_get_extra_data(app_control, "krate", &ad->krate_name); - if (ret != APP_CONTROL_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to get krate name"); - ui_app_exit(); - return; - } - - __set_krate_callback(ad); - - if (app_control_clone(&ad->app_control, app_control) != APP_CONTROL_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to clone app control handler"); - ui_app_exit(); - return; - } - - _create_base_window(ad); - - return; -} - -static void __ui_app_lang_changed(app_event_info_h event_info, void *user_data) -{ - int ret = 0; - char *locale = NULL; - - ret = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale); - if (ret != SYSTEM_SETTINGS_ERROR_NONE) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to get language"); - return; - } - - elm_language_set(locale); - free(locale); - return; -} - -int main(int argc, char *argv[]) -{ - appdata_s ad = {0, }; - int ret = 0; - app_event_handler_h handlers[5] = {NULL, }; - - ui_app_lifecycle_callback_s event_callback = {0, }; - - event_callback.create = __app_create; - event_callback.terminate = __app_terminate; - event_callback.pause = __app_pause; - event_callback.resume = __app_resume; - event_callback.app_control = __app_control; - - ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, __ui_app_lang_changed, NULL); - - ret = ui_app_main(argc, argv, &event_callback, &ad); - if (ret != APP_ERROR_NONE) - dlog_print(DLOG_ERROR, LOG_TAG, "ui_app_main is failed. err = %d", ret); - - return ret; -} diff --git a/tools/apps/setup-wizard/src/security.c b/tools/apps/setup-wizard/src/security.c deleted file mode 100644 index cb200c5..0000000 --- a/tools/apps/setup-wizard/src/security.c +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#include "krate-setup.h" -#include "widget.h" - -#define PASSPHRASE_STATE_UNDEFINED 0 -#define PASSPHRASE_STATE_SETUP 1 -#define PASSPHRASE_STATE_VERIFY 2 - -#define ARRAY_SIZE(_array_) \ - (sizeof(_array_) / sizeof(_array_[0])) - -extern uidata_s ud; - -struct security_lock_type { - const char *text; - int index; -}; - -struct security_lock_type security_lock_types[] = { - { "IDS_ST_BODY_PASSWORD", 0 }, -}; - -char *security_group_text[] = { - "IDS_ST_MBODY_UNLOCK_METHOD", -}; - -static char *security_password_setup_data = NULL; -static char *security_password_verify_data = NULL; - -static unsigned int security_passphrase_mode = PASSPHRASE_STATE_UNDEFINED; -static int security_lock_type_selected = 0; - -static void create_password_setup_view(appdata_s *ad); -static void security_password_entry_changed_cb(void *data, Evas_Object *obj, void *event_info); - -static char *security_multiline_text_get(void *data, Evas_Object *obj, const char *part) -{ - char text[PATH_MAX] = "\0"; - - if (!strcmp(part, "elm.text.multiline")) { - snprintf(text, PATH_MAX, "Select a Krate unlock method and a timeout option."); - return strdup(text); - } - - return NULL; -} - -static char *security_group_text_get(void *data, Evas_Object *obj, const char *part) -{ - char *text = (char *)__(data); - - if (!strcmp(part, "elm.text")) { - return strdup(text); - } - - return NULL; -} - -#if 0 -static char *security_double_label_text_get(void *data, Evas_Object *obj, const char *part) -{ - char text[PATH_MAX] = "\0"; - int timeout = 10; /*[TBD] get value of timeout */ - - if (!strcmp(part, "elm.text")) - snprintf(text, PATH_MAX, "Security Timeout"); - else if (!strcmp(part, "elm.text.sub")) - snprintf(text, PATH_MAX, "After %d minuates of inactivity", timeout); - - return strdup(text); -} -#endif - -static char *security_lock_type_text_get(void *data, Evas_Object *obj, const char *part) -{ - struct security_lock_type *locktype = (struct security_lock_type *)data; - - if (!strcmp(part, "elm.text")) { - return strdup(__(locktype->text)); - } - - return NULL; -} - -static Evas_Object *security_lock_type_content_get(void *data, Evas_Object *obj, const char *part) -{ - static Evas_Object *group = NULL; - struct security_lock_type *locktype = (struct security_lock_type *)data; - - if (group == NULL) { - group = elm_radio_add(obj); - elm_radio_state_value_set(group, 0); - elm_radio_value_set(group, 0); - } - - if (!strcmp(part, "elm.swallow.icon")) { - Evas_Object *radio = elm_radio_add(obj); - elm_radio_state_value_set(radio, locktype->index); - - if (locktype->index == security_lock_type_selected) { - elm_radio_value_set(radio, locktype->index); - } - - elm_radio_group_add(radio, group); - evas_object_propagate_events_set(radio, EINA_FALSE); - evas_object_repeat_events_set(radio, EINA_TRUE); - - return radio; - } - - return NULL; -} - -static void security_lock_type_select_cb(void *data, Evas_Object *obj, void *event_info) -{ - struct security_lock_type *locktype = (struct security_lock_type *)data; - - elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE); - elm_radio_value_set(obj, locktype->index); - security_lock_type_selected = locktype->index; -} - -static Eina_Bool security_view_pop_cb(void *data, Elm_Object_Item *it) -{ - elm_win_indicator_opacity_set(ud.win, ELM_WIN_INDICATOR_BG_TRANSPARENT); - elm_object_signal_emit(ud.conform, "elm,state,indicator,overlap", "elm"); - - return EINA_TRUE; -} - -static Eina_Bool password_view_pop_cb(void *data, Elm_Object_Item *it) -{ - if (security_passphrase_mode != PASSPHRASE_STATE_UNDEFINED) { - Evas_Object *entry = (Evas_Object *)evas_object_data_get(ud.nf, "setup_entry"); - evas_object_smart_callback_add(entry, "changed", security_password_entry_changed_cb, NULL); - security_passphrase_mode--; - } - return EINA_TRUE; -} - -static void delete_object_data(void) -{ - evas_object_data_del(ud.nf, "setup_entry"); - evas_object_data_del(ud.nf, "setup_button"); - evas_object_data_del(ud.nf, "verify_entry"); - evas_object_data_del(ud.nf, "verify_button"); -} - -static void security_previous_view_cb(void *data, Evas_Object *obj, void *event_info) -{ - elm_naviframe_item_pop(ud.nf); -} - -static void security_password_setup_cb(void *data, Evas_Object *obj, void *event_info) -{ - appdata_s *ad = (appdata_s *)data; - Evas_Object *entry, *entry_text; - - if (security_passphrase_mode < PASSPHRASE_STATE_VERIFY) { - security_passphrase_mode++; - entry = (Evas_Object *)evas_object_data_get(ud.nf, "setup_entry"); - evas_object_smart_callback_del(entry, "changed", security_password_entry_changed_cb); - create_password_setup_view(ad); - return; - } - - if (strcmp(security_password_setup_data, security_password_verify_data) != 0) { - entry = (Evas_Object *)evas_object_data_get(ud.nf, "verify_entry"); - elm_entry_entry_set(entry, ""); - elm_entry_input_panel_hide(entry); - - Evas_Object *layout = (Evas_Object *)evas_object_data_get(ud.nf, "layout"); - entry_text = _create_textblock(layout, __("IDS_ST_POP_PASSWORD_DO_NOT_MATCH"), ENTRY_INFO_STYLE_G); - elm_object_part_content_set(layout, "entry_info", entry_text); - dlog_print(DLOG_ERROR, LOG_TAG, "Password not matched"); - return; - } - delete_object_data(); - - ad->krate_password = security_password_setup_data; - - if (_send_krate_create_request(ad) != 0) { - ui_app_exit(); - } - - elm_win_indicator_opacity_set(ud.win, ELM_WIN_INDICATOR_BG_TRANSPARENT); - elm_object_signal_emit(ud.conform, "elm,state,indicator,overlap", "elm"); - _create_setup_view(ad); -} - -static void security_password_entry_unfocused_cb(void *data, Evas_Object *obj, void *event_info) -{ - char **password = (char **)data; - *password = strdup(elm_entry_entry_get(obj)); -} - -static void security_password_entry_changed_cb(void *data, Evas_Object *obj, void *event_info) -{ - Evas_Object *button = NULL; - const char *entry_data = NULL; - - entry_data = elm_entry_entry_get(obj); - if (entry_data == NULL) - return; - - if (security_passphrase_mode < PASSPHRASE_STATE_VERIFY) - button = (Evas_Object *)evas_object_data_get(ud.nf, "setup_button"); - else - button = (Evas_Object *)evas_object_data_get(ud.nf, "verify_button"); - - if (strlen(entry_data) > 1) - elm_object_disabled_set(button, EINA_FALSE); - else - elm_object_disabled_set(button, EINA_TRUE); -} - -static void create_password_setup_view(appdata_s *ad) -{ - char **entry_data; - const char *title; - Elm_Object_Item *item; - Evas_Object *layout, *left_button, *right_button; - Evas_Object *security_layout, *entry, *entry_title; - - layout = _create_layout(ud.nf, ud.edj_path, "base_layout"); - - left_button = _create_button(layout, __("IDS_ST_SK_PREVIOUS"), security_previous_view_cb, NULL); - right_button = _create_button(layout, __("IDS_ST_BUTTON_NEXT"), security_password_setup_cb, ad); - elm_object_disabled_set(right_button, EINA_TRUE); - - _create_two_button_layout(layout, left_button, right_button); - - if (security_passphrase_mode == 1) { - entry_data = &security_password_setup_data; - title = "Setup Password"; - evas_object_data_set(ud.nf, "setup_button", right_button); - } else { - entry_data = &security_password_verify_data; - title = "Verify Password"; - evas_object_data_set(ud.nf, "verify_button", right_button); - } - - security_layout = _create_layout(layout, ud.edj_path, "security_layout"); - - entry = _create_entry(security_layout); - entry_title = _create_textblock(security_layout, __("IDS_ST_BODY_ENTER_PASSWORD"), ENTRY_TITLE_STYLE_B); - elm_object_part_content_set(security_layout, "title", entry_title); - elm_object_part_content_set(security_layout, "entry", entry); - evas_object_smart_callback_add(entry, "unfocused", security_password_entry_unfocused_cb, entry_data); - evas_object_smart_callback_add(entry, "changed", security_password_entry_changed_cb, NULL); - - elm_entry_input_panel_return_key_disabled_set(entry, EINA_TRUE); - elm_object_focus_set(entry, EINA_TRUE); - - if (security_passphrase_mode < PASSPHRASE_STATE_VERIFY) - evas_object_data_set(ud.nf, "setup_entry", entry); - else - evas_object_data_set(ud.nf, "verify_entry", entry); - - evas_object_data_set(ud.nf, "layout", security_layout); - - elm_object_part_content_set(layout, "content_layout", security_layout); - - item = elm_naviframe_item_push(ud.nf, title, NULL, NULL, layout, NULL); - elm_naviframe_item_title_enabled_set(item, EINA_TRUE, EINA_TRUE); - elm_naviframe_item_pop_cb_set(item, password_view_pop_cb, NULL); -} - -void _create_security_view(appdata_s *ad) -{ - int index; - Elm_Object_Item *item; - Elm_Genlist_Item_Class *itc; - Evas_Object *genlist, *layout, *left_button, *right_button; - - elm_win_indicator_opacity_set(ud.win, ELM_WIN_INDICATOR_OPAQUE); - elm_object_signal_emit(ud.conform, "elm,state,indicator,nooverlap", "elm"); - - layout = _create_layout(ud.nf, ud.edj_path, "base_layout"); - genlist = elm_genlist_add(layout); - elm_object_style_set(genlist, "solid/default"); - elm_layout_content_set(layout, "content_layout", genlist); - elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS); - - itc = _create_genlist_item_class("multiline", security_multiline_text_get, NULL); - _append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, NULL); - - itc = _create_genlist_item_class("group_index", security_group_text_get, NULL); - _append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, security_group_text[0]); - - itc = _create_genlist_item_class("one_icon", security_lock_type_text_get, security_lock_type_content_get); - for (index = 0; index < ARRAY_SIZE(security_lock_types); index++) { - item = elm_genlist_item_append(genlist, - itc, - &security_lock_types[index], - NULL, - ELM_GENLIST_ITEM_NONE, - security_lock_type_select_cb, - &security_lock_types[index]); - } -#if 0 - /* Timeout list group*/ - itc = _create_genlist_item_class("group_index", security_group_text_get, NULL); - _append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, security_group_text[1]); - - itc = _create_genlist_item_class("double_label", security_double_label_text_get, NULL); - item = _append_genlist_item(genlist, itc, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY, NULL); - elm_object_item_disabled_set(item, EINA_TRUE); /* [TBD] enable timeout options */ -#endif - left_button = _create_button(layout, __("IDS_ST_SK_PREVIOUS"), security_previous_view_cb, NULL); - right_button = _create_button(layout, __("IDS_ST_BUTTON_NEXT"), security_password_setup_cb, ad); - _create_two_button_layout(layout, left_button, right_button); - - item = elm_naviframe_item_push(ud.nf, "Krate Security", NULL, NULL, layout, NULL); - elm_naviframe_item_title_enabled_set(item, EINA_TRUE, EINA_TRUE); - elm_naviframe_item_pop_cb_set(item, security_view_pop_cb, NULL); -} diff --git a/tools/apps/setup-wizard/src/ui.c b/tools/apps/setup-wizard/src/ui.c deleted file mode 100644 index 2494873..0000000 --- a/tools/apps/setup-wizard/src/ui.c +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include "krate-setup.h" -#include "widget.h" - -static Ecore_Event_Handler *ecore_handler = NULL; -static void __create_welcome_view(appdata_s *ad); - -uidata_s ud = {0, }; - -static Eina_Bool __naviframe_pop_cb(void *data, Elm_Object_Item *it) -{ - app_control_h svc = (app_control_h) data; - - _create_notification(svc); - ui_app_exit(); - - return EINA_FALSE; -} - -static Eina_Bool naviframe_key_event_cb(void *data, int type, void *event) -{ - Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event; - - if (!strcmp(ev->keyname, "XF86Back")) { - elm_naviframe_item_pop(ud.nf); - } - - return EINA_TRUE; -} - -static void setup_wizard_cancel_cb(void *data, Evas_Object *obj, void *event_info) -{ - appdata_s *ad = (appdata_s *)data; - - _create_notification(ad->app_control); - ui_app_exit(); - - return; -} - -static void setup_wizard_next_cb(void *data, Evas_Object *obj, void *event_info) -{ - appdata_s *ad = (appdata_s *)data; - - if (!strcmp(ad->mode, "create")) { - _create_security_view(ad); - } else { - if (_send_krate_remove_request(ad) != 0) { - ecore_main_loop_thread_safe_call_sync(krate_request_fail, ad); - return; - } - _create_setup_view(ad); - } - - return; -} - -static Eina_Bool __home_key_cb(void *data, int type, void *event) -{ - app_control_h app_control = (app_control_h) data; - Evas_Event_Key_Down *ev = event; - - if (!strcmp(ev->keyname, "XF86Home")) { - _create_notification(app_control); - ui_app_exit(); - } - - return EINA_TRUE; -} - -void _create_two_button_layout(Evas_Object *parent, Evas_Object *left_button, Evas_Object *right_button) -{ - Evas_Object *layout; - - layout = _create_layout(parent, ud.edj_path, "two_button_layout"); - - elm_object_part_content_set(layout, "prev_button", left_button); - elm_object_part_content_set(layout, "next_button", right_button); - elm_object_part_content_set(parent, "bottom_layout", layout); - return; -} - -static Eina_Bool __progressbar_timer_cb(void *data) -{ - appdata_s *ad = (appdata_s *)data; - if (ad->request_done) { - ui_app_exit(); - return ECORE_CALLBACK_CANCEL; - } - - return ECORE_CALLBACK_RENEW; -} - -void *krate_request_fail(void *user_data) -{ - Evas_Object *popup = NULL; - appdata_s *ad = (appdata_s *)user_data; - - if (!strcmp(ad->mode, "create")) - popup = _create_popup(ud.win, __("IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB"), BODY_KRATE_CREATE_ERROR); - else - popup = _create_popup(ud.win, __("IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB"), BODY_KRATE_REMOVE_ERROR); - - Evas_Object *btn = elm_button_add(popup); - elm_object_style_set(btn, "popup"); - elm_object_text_set(btn, __("IDS_TPLATFORM_BUTTON_OK_ABB6")); - evas_object_smart_callback_add(btn, "clicked", setup_wizard_cancel_cb, ad); - elm_object_part_content_set(popup, "button1", btn); - evas_object_show(popup); - - return NULL; -} - -void _create_base_window(appdata_s *ad) -{ - Evas_Object *layout; - - char edj_path[PATH_MAX] = "\0"; - char *res_path = NULL; - - /* Initialize data */ - ad->request_done = false; - - /* Get EDJ path */ - res_path = app_get_resource_path(); - if (res_path == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed get resource path"); - ui_app_exit(); - } - snprintf(edj_path, PATH_MAX, "%s%s", res_path, "org.tizen.krate-setup-wizard.edj"); - - ud.edj_path = strdup(edj_path); - free(res_path); - - /* Create main UI widget */ - ud.win = _create_win(PACKAGE); - ud.conform = _create_conformant(ud.win); - layout = _create_layout(ud.conform, NULL, NULL); - elm_object_content_set(ud.conform, layout); - ud.nf = elm_naviframe_add(layout); - - ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __home_key_cb, ad->app_control); - - __create_welcome_view(ad); - - elm_object_part_content_set(layout, "elm.swallow.content", ud.nf); - ecore_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, naviframe_key_event_cb, NULL); - - evas_object_show(ud.win); - return; -} - -static void __create_welcome_view(appdata_s *ad) -{ - Elm_Object_Item *nf_it; - Evas_Object *layout, *welcome_layout; - Evas_Object *title, *content; - Evas_Object *left_button, *right_button; - char title_text[PATH_MAX]; - char content_text[PATH_MAX]; - - char *welcome_text[2][4] = { - {"IDS_TPLATFORM_HEADER_WELCOME_E", "IDS_TPLATFORM_BODY_SAVE_YOUR_APPS_IN_P1SS_TO_HAVE_SEPARATE_VERSIONS_FOR_DIFFERENT_PURPOSES_N_NTHE_P2SS_FOLDER_MSG", "IDS_TPLATFORM_BUTTON_CANCEL_ABB2", "IDS_ST_BUTTON_NEXT"}, - {"IDS_TPLATFORM_HEADER_DELETE_PS", "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED", "IDS_TPLATFORM_BUTTON_CANCEL_ABB2", "IDS_TPLATFORM_BUTTON_DELETE_ABB4"} - }; - char **text = NULL; - - if (!strcmp(ad->mode, "create")) { - text = welcome_text[0]; - snprintf(title_text, PATH_MAX, "%s", __(text[0])); - snprintf(content_text, PATH_MAX, __(text[1]), ad->krate_name, ad->krate_name); - } else { - text = welcome_text[1]; - snprintf(title_text, PATH_MAX, __(text[0]), ad->krate_name); - snprintf(content_text, PATH_MAX, "%s", __(text[1])); - } - - elm_object_signal_emit(ud.conform, "elm,state,indicator,overlap", "elm"); - - layout = _create_layout(ud.nf, ud.edj_path, "base_layout"); - welcome_layout = _create_layout(layout, ud.edj_path, "welcome_layout"); - - title = _create_textblock(welcome_layout, __("IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB"), TITLE_STYLE_W); - elm_object_part_content_set(welcome_layout, "title", title); - - title = _create_textblock(welcome_layout, title_text, SUB_TITLE_STYLE_W); - content = _create_textblock(welcome_layout, content_text, SUB_CONTENT_STYLE_W); - - elm_object_part_content_set(welcome_layout, "message_title", title); - elm_object_part_content_set(welcome_layout, "message_content", content); - - elm_object_part_content_set(layout, "content_layout", welcome_layout); - - left_button = _create_button(layout, __(text[2]), setup_wizard_cancel_cb, ad); - right_button = _create_button(layout, __(text[3]), setup_wizard_next_cb, ad); - - _create_two_button_layout(layout, left_button, right_button); - - nf_it = elm_naviframe_item_push(ud.nf, NULL, NULL, NULL, layout, NULL); - elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_TRUE); - elm_naviframe_item_pop_cb_set(nf_it, __naviframe_pop_cb, ad->app_control); - - return; -} - -void _create_setup_view(appdata_s *ad) -{ - Elm_Object_Item *nf_it; - Evas_Object *setup_layout; - Evas_Object *progressbar; - Evas_Object *title, *content; - - char *setup_text[2][2] = { - {"IDS_TPLATFORM_BODY_CREATING_FOLDER_ING", "IDS_TPLATFORM_BODY_THE_FOLDER_WILL_BE_CREATED_ON_YOUR_HOME_SCREEN_THE_PRELOADED_APPS_WILL_BE_ADDED_TO_THIS_FOLDER_MSG"}, - {"IDS_TPLATFORM_BODY_DELETING_FOLDER_ING", "IDS_TPLATFORM_BODY_THE_FOLDER_AND_ALL_THE_FILES_STORED_IN_IT_WILL_BE_DELETED_AND_ALL_THE_APPS_IN_IT_WILL_BE_UNINSTALLED"} - }; - char **text = NULL; - - if (!strcmp(ad->mode, "create")) - text = setup_text[0]; - else - text = setup_text[1]; - - if (ecore_handler) - ecore_event_handler_del(ecore_handler); - - setup_layout = _create_layout(ud.nf, ud.edj_path, "setup_layout"); - - title = _create_textblock(setup_layout, __("IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB"), TITLE_STYLE_W); - elm_object_part_content_set(setup_layout, "title", title); - - title = _create_textblock(setup_layout, __(text[0]), SUB_TITLE_STYLE_W); - content = _create_textblock(setup_layout, __(text[1]), SUB_CONTENT_STYLE_W); - - elm_object_part_content_set(setup_layout, "message_title", title); - - progressbar = _create_progressbar(setup_layout, "pending"); - elm_object_part_content_set(setup_layout, "progress_indicator", progressbar); - - elm_object_part_content_set(setup_layout, "message_content", content); - - nf_it = elm_naviframe_item_push(ud.nf, NULL, NULL, NULL, setup_layout, NULL); - elm_naviframe_item_title_enabled_set(nf_it, EINA_FALSE, EINA_TRUE); - - /* set progressbar timer callback */ - ecore_timer_add(0.1, __progressbar_timer_cb, ad); - - return; -} diff --git a/tools/apps/setup-wizard/src/util.c b/tools/apps/setup-wizard/src/util.c deleted file mode 100644 index 4813f33..0000000 --- a/tools/apps/setup-wizard/src/util.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include -#include "krate-setup.h" - -#define KRATE_METADATA_PATH "data/KrateManifest.xml" - -static char *__get_krate_metadata(void) -{ - FILE *fp = NULL; - char *res_path = NULL; - char *metadata = NULL; - char metadata_path[PATH_MAX] = "\0"; - size_t fsize = 0; - int ret = -1; - - res_path = app_get_resource_path(); - if (res_path == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to get resource path"); - return NULL; - } - snprintf(metadata_path, PATH_MAX, "%s%s", res_path, KRATE_METADATA_PATH); - free(res_path); - - fp = fopen(metadata_path, "r"); - if (fp != NULL) { - if (fseek(fp, 0, SEEK_END) == -1) - dlog_print(DLOG_ERROR, LOG_TAG, "failed to fseek"); - - fsize = ftell(fp); - if (fsize == -1) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to get file size"); - fclose(fp); - return NULL; - } - - metadata = malloc(fsize + 1); - if (metadata == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to allocate memory"); - fclose(fp); - return NULL; - } - memset(metadata, 0, fsize + 1); - if (fseek(fp, 0, SEEK_SET) == -1) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to fseek"); - fclose(fp); - free(metadata); - return NULL; - } - - ret = fread(metadata, fsize, 1, fp); - if (ret < 0) { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to read metadata file"); - fclose(fp); - free(metadata); - return NULL; - } - } else { - dlog_print(DLOG_ERROR, LOG_TAG, "failed to open metadata file"); - return NULL; - } - - fclose(fp); - - return metadata; -} - -int _send_krate_create_request(appdata_s *ad) -{ - int ret; - char *metadata = NULL; - - metadata = __get_krate_metadata(); - if (metadata == NULL) { - dlog_print(DLOG_ERROR, LOG_TAG, "Failed to get krate metadata"); - return -1; - } - - ret = krate_manager_create_krate(ad->krate_manager, ad->krate_name, metadata); - if (ret != KRATE_ERROR_NONE) { - free(metadata); - return -1; - } - - free(metadata); - return 0; -} - -int _send_krate_remove_request(appdata_s *ad) -{ - int ret; - - ret = krate_manager_destroy_krate(ad->krate_manager, ad->krate_name); - if (ret != KRATE_ERROR_NONE) { - return -1; - } - - return 0; -} - -static int __set_notification(notification_h noti_handle, app_control_h app_control) -{ - int ret = 0; - char *mode = NULL; - char *noti_text[2][2] = { - {"IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB", "IDS_TPLATFORM_SBODY_TAP_HERE_TO_CREATE_PS_ABB"}, - {"IDS_TPLATFORM_HEADER_SEPARATE_ZONE_ABB", "IDS_TPLATFORM_SBODY_TAP_HERE_TO_DELETE_PS_ABB"} - }; - char **text = NULL; - char noti_content_text[PATH_MAX] = ""; - char *krate_name = NULL; - - if (app_control_get_extra_data(app_control, "mode", &mode) != APP_CONTROL_ERROR_NONE) - return -1; - - if (!strcmp(mode, "create")) - text = noti_text[0]; - else - text = noti_text[1]; - - ret = notification_set_text(noti_handle, NOTIFICATION_TEXT_TYPE_TITLE, __(text[0]), NULL, NOTIFICATION_VARIABLE_TYPE_NONE); - if (ret != NOTIFICATION_ERROR_NONE) - return -1; - - ret = app_control_get_extra_data(app_control, "krate", &krate_name); - if (ret != APP_CONTROL_ERROR_NONE) - return -1; - - snprintf(noti_content_text, PATH_MAX, __(text[1]), krate_name); - - ret = notification_set_text(noti_handle, NOTIFICATION_TEXT_TYPE_CONTENT, noti_content_text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE); - if (ret != NOTIFICATION_ERROR_NONE) - return -1; - - ret = notification_set_display_applist(noti_handle, NOTIFICATION_DISPLAY_APP_ALL); - if (ret != NOTIFICATION_ERROR_NONE) - return -1; - - ret = notification_set_image(noti_handle, NOTIFICATION_IMAGE_TYPE_THUMBNAIL, DPM_SYSPOPUP_ICON_PATH); - if (ret != NOTIFICATION_ERROR_NONE) - return -1; - - ret = notification_set_launch_option(noti_handle, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, app_control); - if (ret != NOTIFICATION_ERROR_NONE) - return -1; - - return ret; -} - -void _create_notification(app_control_h app_control) -{ - notification_h noti_handle = NULL; - int ret = 0; - - noti_handle = notification_create(NOTIFICATION_TYPE_NOTI); - - ret = __set_notification(noti_handle, app_control); - if (ret != NOTIFICATION_ERROR_NONE) { - notification_free(noti_handle); - app_control_destroy(app_control); - return; - } - - notification_post(noti_handle); - notification_free(noti_handle); - app_control_destroy(app_control); - - return; -} diff --git a/tools/apps/setup-wizard/src/widget.c b/tools/apps/setup-wizard/src/widget.c deleted file mode 100644 index a8cdd76..0000000 --- a/tools/apps/setup-wizard/src/widget.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Tizen Krate Setup-Wizard application - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ -#include "widget.h" - -static void __win_delete_request_cb(void *data , Evas_Object *obj , void *event_info) -{ - ui_app_exit(); -} - -Evas_Object *_create_win(const char *package) -{ - Evas_Object *win; - - elm_app_base_scale_set(1.8); - - win = elm_win_add(NULL, package, ELM_WIN_BASIC); - elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW); - elm_win_indicator_opacity_set(win, ELM_WIN_INDICATOR_BG_TRANSPARENT); - - elm_win_conformant_set(win, EINA_TRUE); - elm_win_autodel_set(win, EINA_TRUE); - elm_win_alpha_set(win, EINA_TRUE); - - evas_object_smart_callback_add(win, "delete,request", __win_delete_request_cb, NULL); - - return win; -} - -Evas_Object *_create_conformant(Evas_Object *parent) -{ - Evas_Object *conform = elm_conformant_add(parent); - - evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(parent, conform); - - evas_object_show(conform); - - return conform; -} - -Evas_Object *_create_layout(Evas_Object *parent, char *file, const char *group) -{ - Evas_Object *layout = elm_layout_add(parent); - - evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - if (file == NULL) - elm_layout_theme_set(layout, "layout", "application", "default"); - else - elm_layout_file_set(layout, file, group); - - evas_object_show(layout); - - return layout; -} - -Evas_Object *_create_button(Evas_Object *parent, const char *text, Evas_Smart_Cb callback, void *user_data) -{ - Evas_Object *btn = elm_button_add(parent); - - evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_text_set(btn, text); - elm_object_style_set(btn, "bottom"); - evas_object_smart_callback_add(btn, "clicked", callback, user_data); - - evas_object_show(btn); - - return btn; -} - -Evas_Object *_create_textblock(Evas_Object *parent, const char *text, char *style) -{ - Evas_Object *txt = evas_object_textblock_add(parent); - Evas_Textblock_Style *text_st = NULL; - - if (style != NULL) { - text_st = evas_textblock_style_new(); - evas_textblock_style_set(text_st, style); - evas_object_textblock_style_set(txt, text_st); - } - - evas_object_textblock_text_markup_set(txt, text); - evas_object_show(txt); - - if (text_st != NULL) - evas_textblock_style_free(text_st); - - return txt; -} - -Evas_Object *_create_progressbar(Evas_Object *parent, const char *style) -{ - Evas_Object *progressbar = elm_progressbar_add(parent); - - if (style != NULL) - elm_object_style_set(progressbar, style); - - evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5); - evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_progressbar_pulse(progressbar, EINA_TRUE); - elm_progressbar_pulse_set(progressbar, EINA_TRUE); - evas_object_show(progressbar); - - return progressbar; -} - -Elm_Genlist_Item_Class *_create_genlist_item_class(char *style, Elm_Gen_Item_Text_Get_Cb text_func, Elm_Gen_Item_Content_Get_Cb content_func) -{ - Elm_Genlist_Item_Class *itc; - - itc = elm_genlist_item_class_new(); - itc->item_style = style; - itc->func.text_get = text_func; - itc->func.content_get = content_func; - - return itc; -} - -Elm_Object_Item *_append_genlist_item(Evas_Object *genlist, Elm_Genlist_Item_Class *itc, Elm_Object_Select_Mode select_mode, void *data) -{ - Elm_Object_Item *gl_item; - - gl_item = elm_genlist_item_append(genlist, itc, data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); - - elm_genlist_item_select_mode_set(gl_item, select_mode); - elm_genlist_item_class_free(itc); - - return gl_item; -} - -Evas_Object *_create_entry(Evas_Object *parent) -{ - Evas_Object *entry = elm_entry_add(parent); - static Elm_Entry_Filter_Limit_Size limit_size = { - .max_char_count = 20, - .max_byte_count = 0 - }; - - evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_entry_password_set(entry, EINA_TRUE); - elm_entry_single_line_set(entry, EINA_TRUE); - elm_entry_markup_filter_append(entry, elm_entry_filter_limit_size, &limit_size); - - evas_object_show(entry); - return entry; -} - -Evas_Object *_create_popup(Evas_Object *parent, const char *title, const char *body) -{ - Evas_Object *popup = elm_popup_add(parent); - - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_object_style_set(popup, "default"); - elm_object_part_text_set(popup, "title,text", title); - elm_object_item_part_text_translatable_set(popup, "title,text", EINA_TRUE); - elm_object_text_set(popup, body); - - return popup; -} diff --git a/tools/cli/CMakeLists.txt b/tools/cli/CMakeLists.txt deleted file mode 100644 index 75023dd..0000000 --- a/tools/cli/CMakeLists.txt +++ /dev/null @@ -1,42 +0,0 @@ -# -# Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -FILE(GLOB CLI_SRCS krate-admin-cli.cpp - ${KRATE_MODULE}/session.cpp - ${KRATE_MODULE}/krate-builder.cpp -) - -SET(CLI_NAME ${PROJECT_NAME}-admin-cli) - -ADD_EXECUTABLE(${CLI_NAME} ${CLI_SRCS}) -SET_TARGET_PROPERTIES(${CLI_NAME} PROPERTIES PREFIX "" - COMPILE_DEFINITIONS PID_FILE_PATH="${RUN_DIR}/krate" - COMPILE_FLAGS "-fPIE" - LINK_FLAGS "-pie" -) - -PKG_CHECK_MODULES(CLI_DEPS REQUIRED - klay - glib-2.0 - libxml-2.0 - capi-appfw-package-manager - capi-appfw-app-manager -) - -INCLUDE_DIRECTORIES(SYSTEM ${CLI_DEPS_INCLUDE_DIRS} ${KRATE_MODULE} ${KRATE_LIB}) -TARGET_LINK_LIBRARIES(${CLI_NAME} ${CLI_DEPS_LIBRARIES} krate) - -INSTALL(TARGETS ${CLI_NAME} DESTINATION sbin) diff --git a/tools/cli/krate-admin-cli.cpp b/tools/cli/krate-admin-cli.cpp deleted file mode 100644 index 65d0161..0000000 --- a/tools/cli/krate-admin-cli.cpp +++ /dev/null @@ -1,577 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Contact: Sungbae Yoo - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/** - * @file - * @author Sungbae Yoo (sungbae.yoo@samsung.com) - * @brief CLI tool to attach to existing namespace by pam-attach.so - */ - -#define _XOPEN_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include "session.h" - -#define DEFAULT_SETUP_WIZARD "org.tizen.krate-setup-wizard" -#define DEFAULT_SHELL "/bin/bash" - -typedef std::pair NamespacePair; - -std::vector namespaces = { - {"mnt", CLONE_NEWNS}, - {"net", CLONE_NEWNET}, - {"uts", CLONE_NEWUTS}, - {"user", CLONE_NEWUSER}, - {"ipc", CLONE_NEWIPC}, - {"pid", CLONE_NEWPID}, -#ifdef CLONE_NEWCGROUP - {"cgroup", CLONE_NEWCGROUP}, -#endif -}; - -extern char** environ; - -static inline void usage(const std::string name) -{ - std::cout << "Usage: " << name << " [Option] -- COMMAND" << std::endl - << "Run a program in the krate" << std::endl - << std::endl - << "Options :" << std::endl - << " -c, --create=name create a new krate by given name" << std::endl - << " -d, --destroy=name destroy the krate" << std::endl - << " -a, --attach=krate execute command in the krate" << std::endl - << " -p, --pkginfo=krate show all packages in the krate" << std::endl - << " -q, --appinfo=krate show all applications in the krate" << std::endl - << " -m, --krate-monitor monitor all krate events" << std::endl - << " -n, --pkg-monitor monitor all package events in the krate" << std::endl - << " -i, --instance show all running instances" << std::endl - << " -s, --state=krate show the state of krate " << std::endl - << " -l, --list show the list of krate" << std::endl - << " -h, --help show this" << std::endl - << std::endl; -} - -int showInstances() -{ - try { - runtime::DirectoryIterator iter("/var/run/krate"), end; - - while (iter != end) { - const std::string& path = (*iter).getPath(); - size_t name = path.rfind('/') + 1; - std::cout << path.substr(name) << std::endl; - ++iter; - } - } catch (runtime::Exception& e) { - std::cerr << e.what() << std::endl; - return -1; - } - - return 0; -} - -void attachNamespaces(pid_t pid) -{ - int fd; - for (const NamespacePair& ns : namespaces) { - std::string nspath = "/proc/" + std::to_string(pid) + "/ns/" + ns.first; - - do { - fd = ::open(nspath.c_str(), O_RDONLY); - } while (fd == -1 && errno == EINTR); - - if (fd == -1) { - if (errno != ENOENT) { - throw runtime::Exception("Failed to open namesapce: " + nspath); - } - } else { - if (::setns(fd, ns.second)) { - ::close(fd); - throw runtime::Exception("Failed to attach namespace: " + nspath); - } - ::close(fd); - } - } -} - -void launchProcess(runtime::User& user, char** args) -{ - int status; - - pid_t pid = ::fork(); - if (pid == -1) { - throw runtime::Exception("Failed to create child process"); - } - - if (pid != 0) { - ::waitpid(pid, &status, 0); - if (WEXITSTATUS(status) != EXIT_SUCCESS) { - throw runtime::Exception("Child process terminated abnormally"); - } - return; - } - - if (::initgroups(user.getName().c_str(), user.getGid()) == -1) { - std::cerr << "Failed to initgroups()" << std::endl; - ::exit(EXIT_FAILURE); - } - - if (::setgid(user.getGid()) == -1) { - std::cerr << "Failed to setgid()" << std::endl; - ::exit(EXIT_FAILURE); - } - - if (::setuid(user.getUid()) == -1) { - std::cerr << "Failed to setuid()" << std::endl; - ::exit(EXIT_FAILURE); - } - - char *default_args[2]; - default_args[0] = ::strdup(DEFAULT_SHELL); - default_args[1] = NULL; - - if (args == NULL) { - args = default_args; - } - - ::execve(*args, args, environ); - std::cerr << "Failed to execute " << args[0] << std::endl; - - ::free(default_args[0]); - - ::exit(EXIT_FAILURE); -} - -int showDefaultSetupWizard(const std::string& mode, const std::string& name) -{ - app_control_h app_control; - app_control_create(&app_control); - app_control_set_app_id(app_control, DEFAULT_SETUP_WIZARD); - app_control_add_extra_data(app_control, "mode", mode.c_str()); - app_control_add_extra_data(app_control, "krate", name.c_str()); - app_control_send_launch_request(app_control, NULL, NULL); - app_control_destroy(app_control); - - std::cout << "Please do next steps on GUI" << std::endl; - - return 0; -} - -int attachToKrate(const std::string& name, char* args[]) -{ - try { - runtime::User user(name); - - attachNamespaces(getSessionLeader(user)); - launchProcess(user, args); - } catch (runtime::Exception& e) { - std::cerr << e.what() << std::endl; - return -1; - } - - return 0; -} - -bool packgeListCallback(package_info_h info, void *user_data) -{ - bool checked; - char *val; - - std::cout << "Package #" << (*(int*)user_data)++ << " :" << std::endl; - - package_info_get_package(info, &val); - std::cout << val; - free(val); - - package_info_get_version(info, &val); - std::cout << " (" << val << ")" << std::endl; - free(val); - - package_info_get_type(info, &val); - std::cout << " Type : " << val << " ("; - free(val); - - package_info_is_system_package(info, &checked); - if (checked) { - std::cout <<" System "; - } - package_info_is_removable_package(info, &checked); - if (checked) { - std::cout <<" Removable "; - } - package_info_is_preload_package(info, &checked); - if (checked) { - std::cout <<" Preload "; - } - std::cout << ")" << std::endl; - - package_info_get_label(info, &val); - std::cout << " Label : " << val << std::endl; - free(val); - - package_info_get_icon(info, &val); - std::cout << " Icon : " << val << std::endl; - free(val); - - std::cout << std::endl; - - return true; -} - -int showPkgInfo(const std::string& name) -{ - int num = 0; - - krate_manager_h krateMgr; - krate_package_proxy_h pkgProxy; - - krate_manager_create(&krateMgr); - krate_package_proxy_create(krateMgr, name.c_str(), &pkgProxy); - krate_package_proxy_foreach_package_info(pkgProxy, packgeListCallback, &num); - std::cout << num << " packages are found" << std::endl; - krate_package_proxy_destroy(pkgProxy); - krate_manager_destroy(krateMgr); - - return 0; -} - -bool applicationListCallback(app_info_h info, void *user_data) -{ - bool checked; - char *val; - - std::cout << "Application #" << (*(int*)user_data)++ << " :" << std::endl; - - app_info_get_app_id(info, &val); - std::cout << val; - free(val); - - app_info_get_package(info, &val); - std::cout << " (" << val << ")" << std::endl; - free(val); - - app_info_get_type(info, &val); - std::cout << " Type : " << val << " ("; - free(val); - - app_info_is_nodisplay(info, &checked); - if (checked) { - std::cout <<" NoDisplay "; - } - std::cout << ")"<< std::endl; - - app_info_get_label(info, &val); - std::cout << " Label : " << val << std::endl; - free(val); - - if (app_info_get_icon(info, &val) == APP_MANAGER_ERROR_NONE) { - std::cout << " Icon : " << val << std::endl; - free(val); - } else { - std::cout << "App Manager error" << std::endl; - } - - std::cout << std::endl; - - return true; -} - -int showAppInfo(const std::string& name) -{ - int num = 0; - - krate_manager_h krateMgr; - krate_app_proxy_h appMgr; - - krate_manager_create(&krateMgr); - krate_app_proxy_create(krateMgr, name.c_str(), &appMgr); - krate_app_proxy_foreach_app_info(appMgr, applicationListCallback, &num); - std::cout << num << " applications are found" << std::endl; - krate_app_proxy_destroy(appMgr); - krate_manager_destroy(krateMgr); - - return 0; -} - -GMainLoop *gmainloop = NULL; - -void monitorSigHandler(int sig) -{ - g_main_loop_quit(gmainloop); -} - -void krateCallback(const char* name, const char* object, void *user_data) -{ - std::cout << "--- Krate event ---" << std::endl; - std::cout << "Type : " << (char*)user_data << std::endl; - std::cout << "Name : " << name <= argc ? NULL : argv + optind); - break; - case 'p': - ret = showPkgInfo(optarg); - break; - case 'q': - ret = showAppInfo(optarg); - break; - case 'm': - ret = monitorEvent(); - break; - case 'n': - ret = monitorPkgEvent(optarg); - break; - case 's': - ret = showState(optarg); - break; - case 'l': - ret = showList(); - break; - case 'i': - ret = showInstances(); - break; - case 'h': - usage(argv[0]); - break; - default: - usage(argv[0]); - ret = -1; - } - } - - return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; -} -- 2.7.4 From 904e93c443f0078113d65f9c3bb47fe68ad1e64e Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Thu, 8 Jun 2017 15:49:20 +0900 Subject: [PATCH 10/16] Change to that anyone can remove a krate who has no author Change-Id: I71679e8de871fc9e80d89708fadd1183383f106f Signed-off-by: Sungbae Yoo --- server/manager.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/manager.cpp b/server/manager.cpp index d98a688..2747e3b 100644 --- a/server/manager.cpp +++ b/server/manager.cpp @@ -597,10 +597,14 @@ int Manager::removeKrate(const std::string& name) manifestFile.reset(xml::Parser::parseFile(confPath + "/" + name + ".xml")); xml::Node::NodeList authors = manifestFile->evaluate("/manifest/author"); - for (const xml::Node& author : authors) { - if (author.getContent() == pkgId) { - canRemove = true; - break; + if (authors.size() == 0) { + canRemove = true; + } else { + for (const xml::Node& author : authors) { + if (author.getContent() == pkgId) { + canRemove = true; + break; + } } } -- 2.7.4 From 3b694955e18fc576d30f2964fc1a29c6a347a858 Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Thu, 1 Jun 2017 17:57:27 +0900 Subject: [PATCH 11/16] Change to use klay for managing namespace and cgroup Change-Id: I8121d1c605cf65672e080909fe0d627935538b4a Signed-off-by: Sungbae Yoo --- module/CMakeLists.txt | 1 - module/common/session.cpp | 71 ----------------------------------------------- module/common/session.h | 35 ----------------------- module/krate-builder.cpp | 13 --------- module/krate-builder.h | 1 - module/krate-guard.h | 62 ----------------------------------------- module/krate.cpp | 62 ++++++++++++++++++++++++++--------------- server/manager.cpp | 5 ++++ 8 files changed, 44 insertions(+), 206 deletions(-) delete mode 100644 module/common/session.cpp delete mode 100644 module/common/session.h delete mode 100644 module/krate-guard.h diff --git a/module/CMakeLists.txt b/module/CMakeLists.txt index e0e6faa..18f1e21 100644 --- a/module/CMakeLists.txt +++ b/module/CMakeLists.txt @@ -15,7 +15,6 @@ # FILE(GLOB PAM_SRCS krate.cpp krate-builder.cpp - common/session.cpp ) SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,noexecstack") diff --git a/module/common/session.cpp b/module/common/session.cpp deleted file mode 100644 index 4fcd9df..0000000 --- a/module/common/session.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ -#include -#include -#include -#include -#include -#include - -#include "session.h" - -#include -#include - -bool isValidSessionLeader(pid_t pid) -{ - runtime::File proc("/proc/" + std::to_string(pid)); - return proc.exists(); -} - -void createSession(const runtime::User& user, const SessionBuilder& sessionBuilder) -{ - runtime::File file("/var/run/krate/" + user.getName()); - if (file.exists()) { - if (isValidSessionLeader(getSessionLeader(user))) { - throw runtime::Exception("Session already opened"); - } - file.remove(); - } else { - file.makeBaseDirectory(); - } - - sessionBuilder(user); - - file.create(0600); - file.lock(); - file.chown(user.getUid(), user.getGid()); - pid_t pid = ::getpid(); - file.write(&pid, sizeof(pid_t)); - file.unlock(); -} - -pid_t getSessionLeader(const runtime::User& user) -{ - runtime::File file("/var/run/krate/" + user.getName(), O_RDONLY); - file.lock(); - pid_t pid = -1; - file.read(&pid, sizeof(pid_t)); - file.unlock(); - - return pid; -} - -void destroySession(const runtime::User& user) -{ - std::string path = "/var/run/krate/" + user.getName(); - ::unlink(path.c_str()); -} diff --git a/module/common/session.h b/module/common/session.h deleted file mode 100644 index ebb053e..0000000 --- a/module/common/session.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -#ifndef __KRATE_SESSION_ENV_H__ -#define __KRATE_SESSION_ENV_H__ - -#include -#include - -#include -#include - -#include - -typedef std::function SessionBuilder; - -bool isValidSessionLeader(pid_t pid); -void createSession(const runtime::User& user, const SessionBuilder& sessionBuilder); -pid_t getSessionLeader(const runtime::User& user); -void destroySession(const runtime::User& user); - -#endif //!__KRATE_SESSION_ENV_H__ diff --git a/module/krate-builder.cpp b/module/krate-builder.cpp index b50e3b6..07fee11 100644 --- a/module/krate-builder.cpp +++ b/module/krate-builder.cpp @@ -51,19 +51,6 @@ void KrateBuilder::bindFilesystemNode(const std::string& source, const std::stri runtime::Mount::mountEntry(source, target, type, options); } -void KrateBuilder::unshareNamespace() -{ - int nsFlags = CLONE_NEWIPC | CLONE_NEWNS; - - if (::unshare(nsFlags)) { - throw runtime::Exception("Failed to unshare namespace"); - } - - if (::mount(NULL, "/", NULL, MS_SLAVE | MS_REC, NULL) == -1) { - throw runtime::Exception("Failed to mount root filesystem"); - } -} - void KrateBuilder::mountOwnFilesystem() { if (manifest.get()) { diff --git a/module/krate-builder.h b/module/krate-builder.h index 5bb05d5..7947c6b 100644 --- a/module/krate-builder.h +++ b/module/krate-builder.h @@ -29,7 +29,6 @@ public: KrateBuilder(const runtime::User& user, const std::string& manifestPath); virtual ~KrateBuilder(); - void unshareNamespace(); void mountOwnFilesystem(); protected: diff --git a/module/krate-guard.h b/module/krate-guard.h deleted file mode 100644 index a19781a..0000000 --- a/module/krate-guard.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef __KRATE_GUARD_H__ -#define __KRATE_GUARD_H__ - -#include -#include -#include -#include - -#include - -#include - -class KrateGuard final { -public: - KrateGuard(const std::string& name) : - krateName(name), semaphore(nullptr) - { - semaphore = ::sem_open(krateName.c_str(), O_CREAT, 0700, 1); - if (semaphore == nullptr) { - throw runtime::Exception("Filed to create semaphore for krate guard"); - } - } - - ~KrateGuard() - { - if (semaphore == nullptr) { - return; - } - - ::sem_post(semaphore); - ::sem_close(semaphore); - ::sem_unlink(krateName.c_str()); - } - - void wait() - { - while ((::sem_wait(semaphore) == -1) && (errno == EINTR)); - } - -private: - std::string krateName; - sem_t* semaphore; -}; - -#endif //!__KRATE_GUARD_H__ diff --git a/module/krate.cpp b/module/krate.cpp index bb7c293..bc8b091 100644 --- a/module/krate.cpp +++ b/module/krate.cpp @@ -16,6 +16,7 @@ #include #include +#include #include #include @@ -23,15 +24,17 @@ #include #include -#include "krate-guard.h" #include "krate-builder.h" -#include "common/session.h" +#include +#include #include #include #include #include +#define CGROUP_SUBSYSTEM "krate" + #define KRATE_UID_MIN 60001 #define KRATE_UID_MAX 60100 @@ -54,6 +57,28 @@ std::string getKrateName(pam_handle_t* handle) return static_cast(retItem); } +void enterKrate(const std::string& name) +{ + std::string path = CGROUP_SUBSYSTEM "/" + name; + pid_t pid = 0; + + if (runtime::Cgroup::exist(CGROUP_SUBSYSTEM, path)) { + auto pids = runtime::Cgroup::getProcessList(CGROUP_SUBSYSTEM, path); + if (pids.size() > 0) { + pid = pids[0]; + } + } else { + runtime::Cgroup::create(CGROUP_SUBSYSTEM, path); + } + + if (pid == 0) { + runtime::Cgroup::addProcess(CGROUP_SUBSYSTEM, path, ::getpid()); + runtime::Namespace::unshare(CLONE_NEWNS | CLONE_NEWIPC); + } else { + runtime::Namespace::attach(pid); + } +} + static int wait_condition(void) { int r; @@ -99,14 +124,8 @@ int container_preprocess(char* id) { std::cout << "kraterize (UID " << id << ")..." << std::endl << std::flush; try { runtime::User user(std::stoi(std::string(id))); - KrateGuard krateGuard(user.getName()); - krateGuard.wait(); - auto sessionBuilder = [](const runtime::User& user) { - KrateBuilder builder(user, buildKrateManifestPath(user.getName())); - builder.unshareNamespace(); - }; - createSession(user, sessionBuilder); + enterKrate(user.getName()); if (user.getUid() >= KRATE_UID_MIN && user.getUid() <= KRATE_UID_MAX ) { wait_condition(); @@ -140,15 +159,11 @@ int pam_sm_open_session(pam_handle_t* pamh, int flags, int argc, const char* arg { try { runtime::User user(getKrateName(pamh)); - KrateGuard krateGuard(user.getName()); - krateGuard.wait(); - - auto sessionBuilder = [](const runtime::User& user) { - KrateBuilder builder(user, buildKrateManifestPath(user.getName())); - builder.unshareNamespace(); - builder.mountOwnFilesystem(); - }; - createSession(user, sessionBuilder); + + enterKrate(user.getName()); + + KrateBuilder builder(user, buildKrateManifestPath(user.getName())); + builder.mountOwnFilesystem(); } catch (runtime::Exception& e) { ::pam_syslog(pamh, LOG_ERR, "%s", e.what()); return PAM_SESSION_ERR; @@ -161,11 +176,12 @@ PAM_EXTERN __attribute__((visibility("default"))) int pam_sm_close_session(pam_handle_t* pamh, int flags, int argc, const char* argv[]) { try { - runtime::User user(getKrateName(pamh)); - KrateGuard krateGuard(user.getName()); - krateGuard.wait(); - - destroySession(user); + std::string name = getKrateName(pamh); + auto pids = runtime::Cgroup::getProcessList(CGROUP_SUBSYSTEM, name); + if (pids.size() <= 1) { + std::string path = CGROUP_SUBSYSTEM "/" + name; + runtime::Cgroup::destroy(CGROUP_SUBSYSTEM, path); + } } catch (runtime::Exception& e) { ::pam_syslog(pamh, LOG_ERR, "%s", e.what()); return PAM_SESSION_ERR; diff --git a/server/manager.cpp b/server/manager.cpp index 2747e3b..90836b4 100644 --- a/server/manager.cpp +++ b/server/manager.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -41,6 +42,7 @@ #include "rmi/manager.h" +#define CGROUP_SUBSYSTEM "krate" #define PRIVILEGE_INTERNAL_PLATFORM "http://tizen.org/privilege/internal/default/platform" #define KRATE_DELEGATOR_APP "org.tizen.keyguard" #define DEFAULT_ICON_PATH ICON_PATH "/default_icon.png" @@ -500,6 +502,9 @@ Manager::Manager(KrateControlContext& ctx) : context.createNotification("Manager::created"); context.createNotification("Manager::removed"); + runtime::Cgroup::createSubsystem(CGROUP_SUBSYSTEM); + runtime::Cgroup::create(CGROUP_SUBSYSTEM, CGROUP_SUBSYSTEM); + KRATE_DEFAULT_OWNER = ::tzplatform_getenv(TZ_SYS_DEFAULT_USER); PackageManager& packageManager = PackageManager::instance(); -- 2.7.4 From 2c60b799725ccfabdb2007e835fdd010242cc20f Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Thu, 10 Aug 2017 11:17:28 +0900 Subject: [PATCH 12/16] Apply ASLR to krate-volume-manager Signed-off-by: Sungbae Yoo Change-Id: I23c4c4c8be46379d2f5b8d07baae7af49e174090 --- volume/CMakeLists.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/volume/CMakeLists.txt b/volume/CMakeLists.txt index 0ae5e95..a005c08 100644 --- a/volume/CMakeLists.txt +++ b/volume/CMakeLists.txt @@ -30,4 +30,7 @@ ADD_EXECUTABLE(${PROJECT_NAME}-volume-manager ${VOLUME_MANAGER_SRCS}) TARGET_LINK_LIBRARIES(${PROJECT_NAME}-volume-manager ${VOLUME_MANAGER_DEPS_LIBRARIES}) +SET_TARGET_PROPERTIES(${PROJECT_NAME}-volume-manager PROPERTIES COMPILE_FLAGS "-fPIE") +SET_TARGET_PROPERTIES(${PROJECT_NAME}-volume-manager PROPERTIES LINK_FLAGS "-pie") + INSTALL(TARGETS ${PROJECT_NAME}-volume-manager DESTINATION sbin) -- 2.7.4 From aa14bcd540386de4f2c1d9d4caa2131b8148ddd4 Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Tue, 22 Aug 2017 13:56:19 +0900 Subject: [PATCH 13/16] Add ScopedGMainLoop for gmainloop Change-Id: Ie45393f7d1c7c3c99fff3835f12df14be90cbfa2 Signed-off-by: Sungbae Yoo --- server/main.cpp | 3 +++ server/server.cpp | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/server/main.cpp b/server/main.cpp index 448df58..8c15275 100644 --- a/server/main.cpp +++ b/server/main.cpp @@ -25,6 +25,8 @@ #include #include +#include + #include "server.h" void signalHandler(int signum) @@ -39,6 +41,7 @@ int main(int argc, char *argv[]) ::umask(0); try { + ScopedGMainLoop gmainloop; Server server; server.run(); } catch (std::exception &e) { diff --git a/server/server.cpp b/server/server.cpp index db3af1a..54ee475 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -58,7 +58,7 @@ Server::~Server() void Server::run() { // Prepare execution environment - service->start(true); + service->start(); } void Server::terminate() -- 2.7.4 From 59beda4dcfee88bd4969f784604cd0bfc621e834 Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Tue, 29 Aug 2017 17:31:58 +0900 Subject: [PATCH 14/16] Change to retry when user creation/deletion is failed Change-Id: Id609e80c55e28124a2bee2ade190ff2ef950e7e2 Signed-off-by: Sungbae Yoo --- server/manager.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/server/manager.cpp b/server/manager.cpp index 90836b4..6db7446 100644 --- a/server/manager.cpp +++ b/server/manager.cpp @@ -42,6 +42,7 @@ #include "rmi/manager.h" +#define GUMD_RETRY_COUNT 5 #define CGROUP_SUBSYSTEM "krate" #define PRIVILEGE_INTERNAL_PLATFORM "http://tizen.org/privilege/internal/default/platform" #define KRATE_DELEGATOR_APP "org.tizen.keyguard" @@ -534,14 +535,17 @@ int Manager::createKrate(const std::string& name, const std::string& manifest) try { //create krate user by gumd - GumUser* guser = NULL; - while (guser == NULL) { - guser = gum_user_create_sync(FALSE); + gboolean ret = false; + for (int i = 0; i < GUMD_RETRY_COUNT && !ret; i++) { + GumUser* guser = NULL; + for (int i = 0; i < GUMD_RETRY_COUNT && guser == NULL; i++) { + guser = gum_user_create_sync(FALSE); + } + g_object_set(G_OBJECT(guser), "username", name.c_str(), + "usertype", GUM_USERTYPE_SECURITY, NULL); + ret = gum_user_add_sync(guser); + g_object_unref(guser); } - g_object_set(G_OBJECT(guser), "username", name.c_str(), - "usertype", GUM_USERTYPE_SECURITY, NULL); - gboolean ret = gum_user_add_sync(guser); - g_object_unref(guser); if (!ret) { throw runtime::Exception("Failed to remove user (" + name + ") by gumd"); @@ -634,12 +638,15 @@ int Manager::removeKrate(const std::string& name) ::tzplatform_reset_user(); //remove krate user - GumUser* guser = NULL; - while (guser == NULL) { - guser = gum_user_get_sync(user.getUid(), FALSE); + gboolean ret = false; + for (int i = 0; i < GUMD_RETRY_COUNT && !ret; i++) { + GumUser* guser = NULL; + for (int i = 0; i < GUMD_RETRY_COUNT && guser == NULL; i++) { + guser = gum_user_get_sync(user.getUid(), FALSE); + } + ret = gum_user_delete_sync(guser, TRUE); + g_object_unref(guser); } - gboolean ret = gum_user_delete_sync(guser, TRUE); - g_object_unref(guser); if (!ret) { throw runtime::Exception("Failed to remove user " + name + "(" + std::to_string(user.getUid()) + ") by gumd"); -- 2.7.4 From 1577efdf8c72dc57887c88b5daefeeea9ec45fb5 Mon Sep 17 00:00:00 2001 From: yeji01kim Date: Fri, 15 Sep 2017 16:00:39 +0900 Subject: [PATCH 15/16] Fix security svace defects - Add return value check of function umount2 Change-Id: I8d4b72d3a7bb5969f638c89aeb53f21079cb2da6 Signed-off-by: yeji01kim --- server/manager.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) mode change 100644 => 100755 server/manager.cpp diff --git a/server/manager.cpp b/server/manager.cpp old mode 100644 new mode 100755 index 6db7446..8c4f22f --- a/server/manager.cpp +++ b/server/manager.cpp @@ -634,7 +634,8 @@ int Manager::removeKrate(const std::string& name) //umount TZ_USER_CONTENT ::tzplatform_set_user(user.getUid()); - ::umount2(::tzplatform_getenv(TZ_USER_CONTENT), MNT_FORCE); + if (::umount2(::tzplatform_getenv(TZ_USER_CONTENT), MNT_FORCE) != 0) + throw runtime::Exception("Failed to umount2"); ::tzplatform_reset_user(); //remove krate user -- 2.7.4 From e396f44aba5aa55700e63426381d2ee87a49a7fa Mon Sep 17 00:00:00 2001 From: Sungbae Yoo Date: Tue, 19 Dec 2017 09:46:50 +0900 Subject: [PATCH 16/16] Change krate min/max UID Change-Id: Ib3518860bddf4a28c5f7dbd5e4cce555daac2aa8 Signed-off-by: Sungbae Yoo --- module/krate.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/krate.cpp b/module/krate.cpp index bc8b091..2862042 100644 --- a/module/krate.cpp +++ b/module/krate.cpp @@ -35,8 +35,8 @@ #define CGROUP_SUBSYSTEM "krate" -#define KRATE_UID_MIN 60001 -#define KRATE_UID_MAX 60100 +#define KRATE_UID_MIN 6000 +#define KRATE_UID_MAX 6999 #define LAZYMOUNT_EXTERN extern #define LAZYMOUNT_LIB "/usr/lib/liblazymount.so.0" -- 2.7.4