+++ /dev/null
-<manifest>
- <request>
- <domain name="_"/>
- </request>
-</manifest>
#define DD_SIGNAL_REMOVE_MMC "RemoveMmc"
static const struct popup_ops mount_error_ops;
+static const struct popup_ops unmount_error_ops;
static const struct popup_ops mount_read_only_ops;
static const struct popup_ops check_smack_ops;
static const struct popup_ops ode_encrypt_ops;
if (ops != &mount_error_ops)
unload_simple_popup(&mount_error_ops);
+ if (ops != &unmount_error_ops)
+ unload_simple_popup(&unmount_error_ops);
+
if (ops != &mount_read_only_ops)
unload_simple_popup(&mount_read_only_ops);
return true;
}
+static bool mmc_unmounted(void)
+{
+ int val;
+
+ if (vconf_get_int(VCONFKEY_SYSMAN_MMC_UNMOUNT, &val) == 0
+ && val == VCONFKEY_SYSMAN_MMC_UNMOUNT_FAILED)
+ return false;
+ return true;
+}
+
static void send_mount_signal(char *signal)
{
int ret;
return mmc_mounted();
}
+static bool skip_unmount_error_popup(bundle *b, const struct popup_ops *ops)
+{
+ return mmc_unmounted();
+}
+
static bool skip_ode_popup(bundle *b, const struct popup_ops *ops)
{
return !mmc_inserted();
terminate_if_no_popup();
}
+static void mmc_unmount_status_changed(keynode_t *in_key, void *data)
+{
+ const struct popup_ops *ops = data;
+
+ if (vconf_keynode_get_int(in_key) == VCONFKEY_SYSMAN_MMC_UNMOUNT_FAILED)
+ return;
+
+ unload_simple_popup(ops);
+ terminate_if_no_popup();
+}
+
static void register_mmc_mount_handler(const struct popup_ops *ops)
{
if (vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_MOUNT,
mmc_mount_status_changed);
}
+static void register_mmc_unmount_handler(const struct popup_ops *ops)
+{
+ if (vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_UNMOUNT,
+ mmc_unmount_status_changed, (void *)ops) != 0)
+ _E("Failed to register mmc mount handler");
+}
+
+static void unregister_mmc_unmount_handler(const struct popup_ops *ops)
+{
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_UNMOUNT,
+ mmc_unmount_status_changed);
+}
+
static int launch_mmc_popup(bundle *b, const struct popup_ops *ops)
{
remove_other_mmc_popups(ops);
if (ops == &mount_error_ops)
register_mmc_mount_handler(ops);
+ if (ops == &unmount_error_ops)
+ register_mmc_unmount_handler(ops);
+
if (ops == &ode_encrypt_ops ||
ops == &ode_decrypt_ops)
register_ode_handler(ops);
static void terminate_mmc_popup(const struct popup_ops *ops)
{
unregister_mmc_mount_handler(ops);
+ unregister_mmc_unmount_handler(ops);
unregister_ode_handler(ops);
}
static const struct popup_ops mount_error_ops = {
.name = "mounterr",//"mmc_mount_error",
.show = load_simple_popup,
+ .title = "IDS_DN_BODY_UNABLETO_MOUNT_SD_CARD",
.content = "IDS_DN_POP_FAILED_TO_MOUNT_SD_CARD_REINSERT_OR_FORMAT_SD_CARD",
.left_text = "IDS_COM_SK_OK",
.skip = skip_mount_error_popup,
.pre = launch_mmc_popup,
};
+static const struct popup_ops unmount_error_ops = {
+ .name = "unmounterr",//"mmc_unmount_error",
+ .show = load_simple_popup,
+ .title = "IDS_DN_BODY_UNABLETO_UNMOUNT_SD_CARD",
+ .content = "IDS_DN_POP_FAILED_TO_UNMOUNT_SD_CARD_REINSERT_OR_TRY_LATER",
+ .left_text = "IDS_COM_SK_OK",
+ .skip = skip_unmount_error_popup,
+ .pre = launch_mmc_popup,
+};
+
static const struct popup_ops mount_read_only_ops = {
.name = "mountrdonly",//"mmc_mount_read_only",
.show = load_simple_popup,
static __attribute__ ((constructor)) void register_mmc_popup(void)
{
register_popup(&mount_error_ops);
+ register_popup(&unmount_error_ops);
register_popup(&mount_read_only_ops);
register_popup(&check_smack_ops);
register_popup(&ode_encrypt_ops);
msgstr "Encrypting SD card..."
msgid "IDS_DN_POP_FAILED_TO_MOUNT_SD_CARD_REINSERT_OR_FORMAT_SD_CARD"
-msgstr "Failed to mount SD card. Reinsert or format SD card."
+msgstr "Remove and reinsert or format your SD card. And then try again."
+
+msgid "IDS_DN_POP_FAILED_TO_UNMOUNT_SD_CARD_REINSERT_OR_TRY_LATER"
+msgstr "SD card may be in use. Please try it again later."
msgid "IDS_HS_BUTTON_POWER_OFF_ABB2"
msgstr "Power off"
msgid "IDS_ST_POP_DEVICE_WILL_RESTART"
msgstr "Device will restart."
+
+msgid "IDS_DN_BODY_UNABLETO_MOUNT_SD_CARD"
+msgstr "Unable to mount SD card"
+
+msgid "IDS_DN_BODY_UNABLETO_UNMOUNT_SD_CARD"
+msgstr "Unable to unmount SD card"
\ No newline at end of file
msgstr "Encrypting SD card..."
msgid "IDS_DN_POP_FAILED_TO_MOUNT_SD_CARD_REINSERT_OR_FORMAT_SD_CARD"
-msgstr "Failed to mount SD card. Reinsert or format SD card."
+msgstr "Remove and reinsert or format your SD card. And then try again."
+
+msgid "IDS_DN_POP_FAILED_TO_UNMOUNT_SD_CARD_REINSERT_OR_TRY_LATER"
+msgstr "SD card may be in use. Please try it again later."
msgid "IDS_HS_BUTTON_POWER_OFF_ABB2"
msgstr "Power off"
msgid "IDS_ST_POP_DEVICE_WILL_RESTART"
msgstr "Device will restart."
+
+msgid "IDS_DN_BODY_UNABLETO_MOUNT_SD_CARD"
+msgstr "Unable to mount SD card"
+
+msgid "IDS_DN_BODY_UNABLETO_UNMOUNT_SD_CARD"
+msgstr "Unable to unmount SD card"
\ No newline at end of file
msgstr "Encrypting SD card..."
msgid "IDS_DN_POP_FAILED_TO_MOUNT_SD_CARD_REINSERT_OR_FORMAT_SD_CARD"
-msgstr "Failed to mount SD card. Reinsert or format SD card."
+msgstr "Remove and reinsert or format your SD card. And then try again."
+
+msgid "IDS_DN_POP_FAILED_TO_UNMOUNT_SD_CARD_REINSERT_OR_TRY_LATER"
+msgstr "SD card may be in use. Please try it again later."
msgid "IDS_HS_BUTTON_POWER_OFF_ABB2"
msgstr "Power off"
msgid "IDS_ST_POP_DEVICE_WILL_RESTART"
msgstr "Device will restart."
+
+msgid "IDS_DN_BODY_UNABLETO_MOUNT_SD_CARD"
+msgstr "Unable to mount SD card"
+
+msgid "IDS_DN_BODY_UNABLETO_UNMOUNT_SD_CARD"
+msgstr "Unable to unmount SD card"
\ No newline at end of file
+++ /dev/null
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-
-IF("${POWEROFF_POPUP}" STREQUAL "off")
- RETURN()
-ENDIF("${POWEROFF_POPUP}" STREQUAL "off")
-
-SET(POWEROFF_SRCS ${COMMON_SRCS} poweroff.c)
-
-INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
-INCLUDE_DIRECTORIES(${COMMON_DIR})
-
-SET(VENDOR "tizen")
-SET(PACKAGE "poweroff-syspopup")
-SET(EXECNAME "poweroff-popup")
-SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
-SET(POWEROFF_PREFIX "${TZ_SYS_RO_APP}/${PKGNAME}")
-SET(BINDIR "${POWEROFF_PREFIX}/bin")
-SET(RESDIR "${POWEROFF_PREFIX}/res")
-SET(MANIFESTDIR "${TZ_SYS_RO_SHARE}/packages")
-
-SET(PKG_MODULES
- appcore-efl
- elementary
- dlog
- deviced
- evas
- ecore
- edbus
- glib-2.0
- vconf
- syspopup
- syspopup-caller
- feedback
- efl-extension
-)
-
-IF("${DPMS}" STREQUAL "x")
-SET(PKG_MODULES ${PKG_MODULES}
- ecore-x
- utilX
-)
-ENDIF("${DPMS}" STREQUAL "x")
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(poweroff_pkgs REQUIRED ${PKG_MODULES})
-
-FOREACH(flag ${poweroff_pkgs_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
-
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -O2 -g -Wall -fpie")
-SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fpie")
-SET(CMAKE_C_FLAGS_RELEASE "-O2 -fpie")
-
-ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
-ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
-ADD_DEFINITIONS("-DRESDIR=\"${RESDIR}\"")
-
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
-
-ADD_EXECUTABLE(${EXECNAME} ${POWEROFF_SRCS})
-TARGET_LINK_LIBRARIES(${EXECNAME} ${poweroff_pkgs_LDFLAGS})
-
-INSTALL(TARGETS ${EXECNAME} DESTINATION ${TZ_SYS_RO_APP}/${PKGNAME}/bin)
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/src/poweroff/${PKGNAME}.xml DESTINATION ${MANIFESTDIR})
-
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/circle_btn_check.png DESTINATION ${RESDIR})
-INSTALL(FILES ${CMAKE_SOURCE_DIR}/circle_btn_delete.png DESTINATION ${RESDIR})
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="org.tizen.poweroff-syspopup" api-version="3.0" version="0.2.0" install-location="internal-only">
- <label>Power off system popup</label>
- <author email="ty317.kim@samsung.com" href="www.samsung.com">Taeyoung Kim</author>
- <description>System popup application (power off system popup)</description>
- <ui-application appid="org.tizen.poweroff-syspopup" exec="/usr/apps/org.tizen.poweroff-syspopup/bin/poweroff-popup" nodisplay="true" multiple="false" type="capp" taskmanage="false">
- <label>Power off system popup</label>
- </ui-application>
- <privileges>
- <privilege>http://tizen.org/privilege/power</privilege>
- </privileges>
-</manifest>
+++ /dev/null
-/*
- * system-popup
- *
- * Copyright (c) 2014 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 "popup-common.h"
-
-#define SYSTEMD_STOP_POWER_OFF 4
-
-#define POWER_BUS_NAME "org.tizen.system.deviced"
-#define POWER_OBJECT_PATH "/Org/Tizen/System/DeviceD/Power"
-#define POWER_INTERFACE_NAME POWER_BUS_NAME".power"
-
-#define POWER_METHOD "reboot"
-#define POWER_OPERATION_OFF "poweroff"
-
-static void remove_popup(const struct popup_ops *ops);
-static void pm_state_changed(keynode_t *key, void *data);
-static void event_back_key_up(void *data, Evas_Object *obj, void *event_info);
-static void register_handlers(const struct popup_ops *ops);
-static void unregister_handlers(const struct popup_ops *ops);
-static int poweroff_launch(bundle *b, const struct popup_ops *ops);
-static void poweroff_terminate(const struct popup_ops *ops);
-static void poweroff_clicked(const struct popup_ops *ops);
-static __attribute__ ((constructor)) void poweroff_register_popup(void);
-
-static void remove_popup(const struct popup_ops *ops)
-{
- static bool terminating = false;
-
- if (terminating)
- return;
-
- terminating = true;
-
- unload_simple_popup(ops);
- popup_terminate();
-}
-
-static void pm_state_changed(keynode_t *key, void *data)
-{
- const struct popup_ops *ops = data;
-
- if (!key)
- return;
-
- if (vconf_keynode_get_int(key) != VCONFKEY_PM_STATE_LCDOFF)
- return;
-
- remove_popup(ops);
-}
-
-static void event_back_key_up(void *data, Evas_Object *obj, void *event_info)
-{
- const struct popup_ops *ops = data;
- remove_popup(ops);
-}
-
-static void register_handlers(const struct popup_ops *ops)
-{
- Evas_Object *win;
-
- if (vconf_notify_key_changed(
- VCONFKEY_PM_STATE,
- pm_state_changed,
- (void *)ops) != 0)
- _E("Failed to register vconf");
-
- win = get_window();
- if (win)
- eext_object_event_callback_add(win, EEXT_CALLBACK_BACK, event_back_key_up, (void*)ops);
-}
-
-static void unregister_handlers(const struct popup_ops *ops)
-{
- Evas_Object *win;
-
- vconf_ignore_key_changed(VCONFKEY_PM_STATE, pm_state_changed);
-
- win = get_window();
- if (win)
- eext_object_event_callback_del(win, EEXT_CALLBACK_BACK, event_back_key_up);
-}
-
-static int poweroff_launch(bundle *b, const struct popup_ops *ops)
-{
- register_handlers(ops);
- return 0;
-}
-
-static void poweroff_terminate(const struct popup_ops *ops)
-{
- unregister_handlers(ops);
-}
-
-static void poweroff_clicked(const struct popup_ops *ops)
-{
- Evas_Object *rect, *win;
- Evas_Coord w, h, size;
- static int bPowerOff = 0;
- char *param[2];
- char data[8];
- int ret;
-
- if (bPowerOff == 1)
- return;
- bPowerOff = 1;
-
- unload_simple_popup(ops);
-
- win = get_window();
- if (!win)
- popup_terminate();
-
- rect = evas_object_rectangle_add(evas_object_evas_get(win));
- evas_object_geometry_get(win, NULL, NULL, &w, &h);
- size = max(w, h);
- evas_object_resize(rect, size, size);
- evas_object_color_set(rect, 0, 0, 0, 255);
- evas_object_show(rect);
-
- if (vconf_set_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, SYSTEMD_STOP_POWER_OFF) != 0)
- _E("Failed to request poweroff to deviced");
-
- param[0] = POWER_OPERATION_OFF;
- snprintf(data, sizeof(data), "0");
- param[1] = data;
- ret = popup_dbus_method_sync(POWER_BUS_NAME,
- POWER_OBJECT_PATH,
- POWER_INTERFACE_NAME,
- POWER_METHOD,
- "si", param);
- if (ret < 0)
- _E("Failed to request poweroff to deviced (%d)", ret);
-}
-
-static const struct popup_ops poweroff_ops = {
- .name = "poweroff",
- .show = load_simple_popup,
- .title = "IDS_ST_BODY_POWER_OFF",
- .content = "IDS_TPLATFORM_BODY_POWER_OFF_THE_DEVICE_Q",
- .left_text = "IDS_COM_SK_CANCEL",
- .right_text = "IDS_HS_BUTTON_POWER_OFF_ABB2",
- .right = poweroff_clicked,
- .pre = poweroff_launch,
- .terminate = poweroff_terminate,
-};
-
-static __attribute__ ((constructor)) void poweroff_register_popup(void)
-{
- register_popup(&poweroff_ops);
-}