From 01053616ca88c123e67cfc88f739877c50dd357f Mon Sep 17 00:00:00 2001 From: "giwoong.kim" Date: Tue, 17 Jan 2012 14:50:18 +0900 Subject: [PATCH] [Title] add scale feature &modify menu &etc [Type] feature [Module] Emulator /gui [Priority] major [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] Change-Id: I86889851819cec040a51c6aa9c098aca39adffbf --- tizen/skins/emul_320x480/default.dbi | 420 +---------------------------- tizen/skins/emul_480x800/default.dbi | 420 +---------------------------- tizen/skins/emul_600x1024/default.dbi | 419 +---------------------------- tizen/skins/emul_720x1280/default.dbi | 420 +---------------------------- tizen/src/config_dbg_x86.ini | 1 + tizen/src/config_x86.ini | 1 + tizen/src/configuration.c | 4 +- tizen/src/dbi_parser.c | 33 +-- tizen/src/defines.h | 27 +- tizen/src/emulator.c | 28 +- tizen/src/event_handler.c | 69 ++--- tizen/src/event_handler.h | 2 +- tizen/src/menu.c | 478 +++++++++++++++++----------------- tizen/src/menu_callback.c | 84 ++++-- tizen/src/qemu_gtk_widget.c | 16 +- tizen/src/screen_shot.c | 17 +- tizen/src/tools.c | 39 ++- tizen/src/vtm.c | 1 + ui/sdl_rotate.c | 2 +- 19 files changed, 470 insertions(+), 2011 deletions(-) diff --git a/tizen/skins/emul_320x480/default.dbi b/tizen/skins/emul_320x480/default.dbi index d7b1f70..7f9e327 100644 --- a/tizen/skins/emul_320x480/default.dbi +++ b/tizen/skins/emul_320x480/default.dbi @@ -10,410 +10,6 @@ - half.png - half_p.png - half.png - half_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w90.png - half_w90_p.png - half_w90.png - half_w90_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_180.png - half_180_p.png - half_180.png - half_180_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w.png - half_w_p.png - half_w.png - half_w_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - default.png default_p.png default.png @@ -513,7 +109,7 @@ - + default_w90.png default_w90_p.png @@ -614,7 +210,7 @@ - + default_180.png default_180_p.png @@ -715,7 +311,7 @@ - + default_w.png default_w_p.png @@ -827,8 +423,10 @@ - - + + + + - - + + diff --git a/tizen/skins/emul_480x800/default.dbi b/tizen/skins/emul_480x800/default.dbi index dc7189b..cbf2687 100644 --- a/tizen/skins/emul_480x800/default.dbi +++ b/tizen/skins/emul_480x800/default.dbi @@ -10,410 +10,6 @@ - half.png - half_p.png - half.png - half_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w90.png - half_w90_p.png - half_w90.png - half_w90_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_180.png - half_180_p.png - half_180.png - half_180_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w.png - half_w_p.png - half_w.png - half_w_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - default.png default_p.png default.png @@ -513,7 +109,7 @@ - + default_w90.png default_w90_p.png @@ -614,7 +210,7 @@ - + default_180.png default_180_p.png @@ -715,7 +311,7 @@ - + default_w.png default_w_p.png @@ -827,8 +423,10 @@ - - + + + + - - + + diff --git a/tizen/skins/emul_600x1024/default.dbi b/tizen/skins/emul_600x1024/default.dbi index eb7c304..d00d1b7 100644 --- a/tizen/skins/emul_600x1024/default.dbi +++ b/tizen/skins/emul_600x1024/default.dbi @@ -10,409 +10,6 @@ - half.png - half_p.png - half.png - half_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w90.png - half_w90_p.png - half_w90.png - half_w90_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_180.png - half_180_p.png - half_180.png - half_180_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w.png - half_w_p.png - half_w.png - half_w_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - default.png default_p.png default.png @@ -512,7 +109,7 @@ - + default_w90.png default_w90_p.png @@ -613,7 +210,7 @@ - + default_180.png default_180_p.png @@ -714,7 +311,7 @@ - + default_w.png default_w_p.png @@ -826,8 +423,10 @@ - - + + + + - - + + diff --git a/tizen/skins/emul_720x1280/default.dbi b/tizen/skins/emul_720x1280/default.dbi index c63d2af..aed265c 100644 --- a/tizen/skins/emul_720x1280/default.dbi +++ b/tizen/skins/emul_720x1280/default.dbi @@ -10,410 +10,6 @@ - half.png - half_p.png - half.png - half_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w90.png - half_w90_p.png - half_w90.png - half_w90_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_180.png - half_180_p.png - half_180.png - half_180_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - - half_w.png - half_w_p.png - half_w.png - half_w_p.png - - - - - - - - - - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - - DIKS_EXT_HOME - - 101 - KEY_MENU - - GDK_Home - - Home - - - - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - - DIKS_EXT_CAMERA - - 212 - KEY_CAMERA - - GDK_Camera - - Power - - - - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - - DIKS_PAGE_UP - - 115 - KEY_SCROLLUP - - GDK_KP_Page_Up - - Volume-up - - - - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - - DIKS_PAGE_DOWN - - 114 - KEY_SCROLLDOWN - - GDK_KP_Page_Down - - Volume-down - - - - - - - default.png default_p.png default.png @@ -513,7 +109,7 @@ - + default_w90.png default_w90_p.png @@ -614,7 +210,7 @@ - + default_180.png default_180_p.png @@ -715,7 +311,7 @@ - + default_w.png default_w_p.png @@ -827,8 +423,10 @@ - - + + + + - - + + diff --git a/tizen/src/config_dbg_x86.ini b/tizen/src/config_dbg_x86.ini index 28807fa..206731b 100644 --- a/tizen/src/config_dbg_x86.ini +++ b/tizen/src/config_dbg_x86.ini @@ -5,6 +5,7 @@ ALWAYS_ON_TOP=1 ENABLE_SHELL=1 MAIN_X=0 MAIN_Y=0 +SCALE=100 [QEMU] BINARY=emulator-x86 diff --git a/tizen/src/config_x86.ini b/tizen/src/config_x86.ini index 15f361e..a1277f7 100644 --- a/tizen/src/config_x86.ini +++ b/tizen/src/config_x86.ini @@ -4,6 +4,7 @@ ALWAYS_ON_TOP=0 [EMULATOR] MAIN_X=1274 MAIN_Y=169 +SCALE=100 [QEMU] BINARY=emulator-x86 diff --git a/tizen/src/configuration.c b/tizen/src/configuration.c index 71bbdc2..d3b01f1 100644 --- a/tizen/src/configuration.c +++ b/tizen/src/configuration.c @@ -220,6 +220,7 @@ int create_config_file(gchar* filepath) g_fprintf (fp, "%s=\n", MAIN_X_KEY); g_fprintf (fp, "%s=\n", MAIN_Y_KEY); + g_fprintf (fp, "%s=\n", SCALE_KEY); g_fprintf (fp, "\n[%s]\n", QEMU_GROUP); g_fprintf (fp, "%s=\n", HTTP_PROXY_KEY); @@ -265,6 +266,7 @@ int write_config_file(gchar *filepath, CONFIGURATION *pconfiguration) set_config_type(filepath, EMULATOR_GROUP, CMD_TYPE_KEY, pconfiguration->cmd_type); set_config_type(filepath, EMULATOR_GROUP, MAIN_X_KEY, pconfiguration->main_x); set_config_type(filepath, EMULATOR_GROUP, MAIN_Y_KEY, pconfiguration->main_y); + set_config_type(filepath, EMULATOR_GROUP, SCALE_KEY, pconfiguration->scale); /* QEMU option (09.05.26)*/ @@ -312,7 +314,7 @@ int read_config_file(gchar *filepath, CONFIGURATION *pconfiguration) pconfiguration->main_x = get_config_type(filepath, EMULATOR_GROUP, MAIN_X_KEY); pconfiguration->main_y = get_config_type(filepath, EMULATOR_GROUP, MAIN_Y_KEY); - + pconfiguration->scale = get_config_type(filepath, EMULATOR_GROUP, SCALE_KEY); int telnet_port; buf = get_config_value(filepath, QEMU_GROUP, TELNET_PORT_KEY); diff --git a/tizen/src/dbi_parser.c b/tizen/src/dbi_parser.c index 774cd1d..3095ee7 100644 --- a/tizen/src/dbi_parser.c +++ b/tizen/src/dbi_parser.c @@ -481,13 +481,13 @@ int parse_dbi_file(const gchar * filename, PHONEMODELINFO * pDeviceData) event_list_cnt++; em->event_list_cnt = event_list_cnt; - } // endif - } // end for + }// endif + }// end for event_menu_cnt++; pDeviceData->event_menu_cnt = event_menu_cnt; event_list_cnt = 0; } - } // end for + }// end for } } @@ -509,23 +509,14 @@ static void free_modelist(mode_list *ml) if (ml->name) { free(ml->name); } - if (ml->image_list.main_image) { - g_free(ml->image_list.main_image); - } - if (ml->image_list.keypressed_image) { - g_free(ml->image_list.keypressed_image); - } - if (ml->image_list.led_main_image) { - g_free(ml->image_list.led_main_image); - } - if (ml->image_list.led_keypressed_image) { - g_free(ml->image_list.led_keypressed_image); - } - if (ml->image_list.splitted_area_image) { - g_free(ml->image_list.splitted_area_image); - } - for (i=0; iled_list_cnt; i++) { + g_free(ml->image_list.main_image); + g_free(ml->image_list.keypressed_image); + g_free(ml->image_list.led_main_image); + g_free(ml->image_list.led_keypressed_image); + g_free(ml->image_list.splitted_area_image); + + for (i = 0; i < ml->led_list_cnt; i++) { if (ml->led_list[i].name) { free(ml->led_list[i].name); } @@ -534,7 +525,7 @@ static void free_modelist(mode_list *ml) } } - for (i=0; ikey_map_list_cnt; i++) { + for (i = 0; i < ml->key_map_list_cnt; i++) { if (ml->key_map_list[i].tooltip) { free(ml->key_map_list[i].tooltip); } @@ -546,7 +537,7 @@ int free_dbi_file(PHONEMODELINFO *pDeviceData) { int i; - for (i=0; imode_cnt; i++) { + for (i = 0; i < pDeviceData->mode_cnt; i++) { mode_list *ml = &pDeviceData->mode[i]; free_modelist(ml); } diff --git a/tizen/src/defines.h b/tizen/src/defines.h index d2cbc52..3b4b227 100644 --- a/tizen/src/defines.h +++ b/tizen/src/defines.h @@ -110,6 +110,7 @@ extern "C" { #define CMD_TYPE_KEY "COMMAND_TYPE" #define MAIN_X_KEY "MAIN_X" #define MAIN_Y_KEY "MAIN_Y" +#define SCALE_KEY "SCALE" #define TERMINAL_TYPE_KEY "TERMINAL_TYPE" #define HTTP_PROXY_KEY "HTTP_PROXY" @@ -155,8 +156,10 @@ extern "C" { #define REVERSE_LANDSCAPE "Reverse Landscape" #define KEYBOARD_ON "keyboard_on" #define KEYBOARD_OFF "keyboard_off" -#define HALF_SIZE "1/2x" -#define ACTUAL_SIZE "1x" +#define QUATER_SIZE "0.25" +#define HALF_SIZE "0.5" +#define THREE_QUATERS_SIZE "0.75" +#define ACTUAL_SIZE "1.0" #define PLATFORM_TYPE_KEY "RELEASE" #define DEFAULT_TARGET_KEY "DEFAULT_TARGET" @@ -177,7 +180,7 @@ extern "C" { /* Tag for getting GTK OBJECT POINTER */ #define MAX_PROGRAM 5 /* program count of latest list */ -#define MODE_MAX 8 /* maximum MODE count */ +#define MODE_MAX 4 /* maximum MODE count */ #define EVENT_INFO_MAX 2 /* maximum EVENT count */ #define KEY_MAX_COUNT 256 /* maximum KEY count */ #define LED_MAX_COUNT 4 /* maximum LED count */ @@ -209,9 +212,13 @@ extern "C" { #define MAX_EMULFB 3 /* macro to find the position of skin */ -#define INSIDE(_x, _y, _r) \ +/*#define INSIDE(_x, _y, _r) \ ((_x >= (_r).x) && (_x < ((_r).x + (_r).w)) && \ - (_y >= (_r).y) && (_y < ((_r).y + (_r).h))) + (_y >= (_r).y) && (_y < ((_r).y + (_r).h)))*/ +#define INSIDE(_x, _y, _r, _s) \ + ((_x >= (_r).x * _s) && (_x < ((_r).x + (_r).w) * _s) && \ + (_y >= (_r).y * _s) && (_y < ((_r).y + (_r).h) * _s)) + /*The below macros are for dual display */ extern int intermediate_section; @@ -226,9 +233,13 @@ extern int intermediate_section; (_y >= (_r).y) && (_y < ((_r).y + intermediate_section + (_r).h/(_r).s))) /*The below macro is for single display */ -#define INSIDE_LCD(_x, _y, _r) \ +/*#define INSIDE_LCD(_x, _y, _r) \ ((_x >= (_r).x) && (_x < ((_r).x + (_r).w/(_r).s)) && \ - (_y >= (_r).y) && (_y < ((_r).y + (_r).h/(_r).s))) + (_y >= (_r).y) && (_y < ((_r).y + (_r).h/(_r).s)))*/ +#define INSIDE_LCD(_x, _y, _r, _s) \ + ((_x >= (_r).x * _s) && (_x < (((_r).x + (_r).w) * _s)) && \ + (_y >= (_r).y * _s) && (_y < (((_r).y + (_r).h) * _s))) + /* macro to insert the delimiter into menu */ #define MENU_ADD_SEPARTOR(K) {\ @@ -494,6 +505,7 @@ typedef struct _PHONEMODELINFO{ int mode_cnt; mode_list mode[MODE_MAX]; SkinImgInfo mode_SkinImg[MODE_MAX]; + SkinImgInfo default_SkinImg[MODE_MAX]; int cover_mode_cnt; mode_list cover_mode; SkinImgInfo cover_mode_SkinImg; @@ -597,6 +609,7 @@ typedef struct _CONFIGUATION int cmd_type; int main_x; int main_y; + int scale; int mount_port; gchar target_path[MAXBUF]; diff --git a/tizen/src/emulator.c b/tizen/src/emulator.c index 5837cf7..29a0583 100644 --- a/tizen/src/emulator.c +++ b/tizen/src/emulator.c @@ -107,7 +107,7 @@ UIFLAG UISTATE = { .button_press_flag = -1, .key_button_press_flag = 0, .frame_buffer_ctrl = 0, - .scale = 2.0, + .scale = 1.0, .current_mode = 0, .config_flag = 0, .PID_flag = 0, @@ -584,18 +584,20 @@ static void construct_main_window(void) } #endif - /* 6. create popup menu */ + /* 6. emulator start position */ + gtk_window_move (GTK_WINDOW (g_main_window), configuration.main_x, configuration.main_y); + //UISTATE.scale = PHONE.mode[0].lcd_list[0].lcd_region.s; + UISTATE.scale = ((float)get_config_type(SYSTEMINFO.virtual_target_info_file, EMULATOR_GROUP, SCALE_KEY)) / 100; + if (UISTATE.scale <= 0 || UISTATE.scale > 1.0) { + UISTATE.scale = 1.0; + } + TRACE("scale = %f\n", UISTATE.scale); + /* 7. create popup menu */ create_popup_menu (&popup_menu, &PHONE, &configuration); add_widget(EMULATOR_ID, POPUP_MENU, popup_menu); - /* 8. emulator start position */ - - gtk_window_move (GTK_WINDOW (g_main_window), configuration.main_x, configuration.main_y); - UISTATE.scale = PHONE.mode[0].lcd_list[0].lcd_region.s; - TRACE("scale = %f\n", UISTATE.scale); - - /* 9. Signal connect */ + /* 8. Signal connect */ g_signal_connect (G_OBJECT(g_main_window), "motion_notify_event", G_CALLBACK(motion_notify_event_handler), NULL); g_signal_connect (G_OBJECT(g_main_window), "button_press_event", G_CALLBACK(motion_notify_event_handler), NULL); @@ -612,16 +614,20 @@ static void construct_main_window(void) gtk_widget_set_events (g_main_window, GDK_EXPOSURE_MASK | GDK_POINTER_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK);// | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK); - /* 10. widget show all */ + /* 9. widget show all */ gtk_window_set_keep_above(GTK_WINDOW (g_main_window), configuration.always_on_top); gtk_widget_show_all (g_main_window); gtk_widget_queue_resize (g_main_window); + + if (UISTATE.scale != 1.0) { + scale_event_callback(&PHONE, UISTATE.current_mode); + } } static void* run_gtk_main(void* arg) { - /* 11. gtk main start */ + /* 10. gtk main start */ init_sensor_server(); gtk_main(); diff --git a/tizen/src/event_handler.c b/tizen/src/event_handler.c index bd6b16f..8c1f7f0 100644 --- a/tizen/src/event_handler.c +++ b/tizen/src/event_handler.c @@ -706,8 +706,8 @@ static void touch_shoot_for_type(GtkWidget *widget, int x, int y, int lcd_status int dx, dy, dz = 0, lcd_height, lcd_width; GtkWidget *pWidget = NULL; GtkWidget *popup_menu = get_widget(EMULATOR_ID, POPUP_MENU); - lcd_height = (int)(PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.h); - lcd_width = (int)(PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.w); + lcd_height = (int)(PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.h * UISTATE.scale); + lcd_width = (int)(PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.w * UISTATE.scale); #if 0 if (qemu_arch_is_arm()) { @@ -772,8 +772,8 @@ static void touch_shoot_for_type(GtkWidget *widget, int x, int y, int lcd_status #ifdef DEBUG_TOUCH_EVENT printf("dx %d dy %d x %d y %d lcd_width %d lcd_height %d\n",dx,dy,x,y,lcd_width,lcd_height); printf("lcd_region.x = %d, lcd_region.y = %d\n", - PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.x, - PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.y); + PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.x * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.y * UISTATE.scale); #endif /* DEBUG_TOUCH_EVENT */ /* when portrait */ @@ -862,10 +862,10 @@ static void draw_mapping(GtkWidget * widget, GdkEventButton * event, int nPressK if (nPressKey >= 0 && nPressKey < MAX_KEY_NUM) { - x = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.x; - y = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.y; - nW = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.w; - nH = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.h; + x = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.x * UISTATE.scale; + y = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.y * UISTATE.scale; + nW = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.w * UISTATE.scale; + nH = PHONE.mode[UISTATE.current_mode].key_map_list[nPressKey].key_map_region.h * UISTATE.scale; gdk_draw_pixbuf(widget->window, widget->style->fg_gc[GTK_STATE_NORMAL], PHONE.mode_SkinImg[UISTATE.current_mode].pPixImg_P, x, y, x, y, nW, nH, GDK_RGB_DITHER_MAX, 0, 0); gdk_flush(); } @@ -891,6 +891,8 @@ gint motion_notify_event_handler(GtkWidget *widget, GdkEventButton *event, gpoin old_button_status = button_status; button_status = check_region_button(x, y, &PHONE); lcd_status = check_region_lcd(x, y, &PHONE); + +#if 0 if(PHONE.dual_display == 1){ int curr_rotation = UISTATE.current_mode; extern int intermediate_section; @@ -927,8 +929,9 @@ gint motion_notify_event_handler(GtkWidget *widget, GdkEventButton *event, gpoin y = y - intermediate_section; } } - dx = (x - (PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.x)) * PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.s; - dy = (y - (PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.y)) * PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.s; +#endif + dx = (x - (PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.x * UISTATE.scale)) / UISTATE.scale; + dy = (y - (PHONE.mode[UISTATE.current_mode].lcd_list[lcd_status].lcd_region.y * UISTATE.scale)) / UISTATE.scale; /* 1. button animation */ @@ -939,19 +942,19 @@ gint motion_notify_event_handler(GtkWidget *widget, GdkEventButton *event, gpoin if (button_status != old_button_status) { for(j = 0; j < PHONE.mode[UISTATE.current_mode].key_map_list_cnt; j++) { - gtk_widget_queue_draw_area(widget, PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.x, - PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.y, - PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.w, - PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.h); + gtk_widget_queue_draw_area(widget, PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.x * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.y * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.w * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.h * UISTATE.scale); } } - gdk_draw_rectangle(widget->window, widget->style->fg_gc[GTK_STATE_NORMAL], FALSE, - PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.x, - PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.y, - PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.w-1, - PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.h-1); + gdk_draw_rectangle(widget->window, widget->style->fg_gc[GTK_STATE_NORMAL], FALSE, + PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.x * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.y * UISTATE.scale, + (PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.w - 1) * UISTATE.scale, + (PHONE.mode[UISTATE.current_mode].key_map_list[button_status].key_map_region.h - 1) * UISTATE.scale); } @@ -960,10 +963,10 @@ gint motion_notify_event_handler(GtkWidget *widget, GdkEventButton *event, gpoin gdk_gc_set_foreground(widget->style->fg_gc[GTK_STATE_NORMAL], &color); for(j = 0; j < PHONE.mode[UISTATE.current_mode].key_map_list_cnt; j++) { - gtk_widget_queue_draw_area(widget, PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.x, - PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.y, - PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.w, - PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.h); + gtk_widget_queue_draw_area(widget, PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.x * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.y * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.w * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[j].key_map_region.h * UISTATE.scale); } } @@ -1041,16 +1044,16 @@ gint motion_notify_event_handler(GtkWidget *widget, GdkEventButton *event, gpoin /* 5.1 when event is in lcd region (touch region) */ - if (lcd_status == LCD_REGION || lcd_status == DUAL_LCD_REGION) + if (lcd_status == LCD_REGION || lcd_status == DUAL_LCD_REGION) { touch_shoot_for_type(widget, dx, dy, lcd_status, TOUCH_RELEASE); - + } /* 5.2 when event is not in lcd region (keycode region) */ else { - gtk_widget_queue_draw_area(widget, PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.x, - PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.y, - PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.w, - PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.h); + gtk_widget_queue_draw_area(widget, PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.x * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.y * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.w * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.button_press_flag].key_map_region.h * UISTATE.scale); if (button_status != NON_BUTTON_REGION) { keycode = PHONE.mode[UISTATE.current_mode].key_map_list[button_status].event_info[0].event_value[0].key_code; @@ -1108,10 +1111,10 @@ gboolean query_tooltip_event(GtkWidget *widget, gint x, gint y, gboolean keyboar int left, right, top, bottom; for(index = 0; index < PHONE.mode[UISTATE.current_mode].key_map_list_cnt; index++) { - left = PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.x; - right = left + PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.w; - top = PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.y; - bottom = top + PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.h; + left = PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.x * UISTATE.scale; + right = left + PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.w * UISTATE.scale; + top = PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.y * UISTATE.scale; + bottom = top + PHONE.mode[UISTATE.current_mode].key_map_list[index].key_map_region.h * UISTATE.scale; if (x >= left && x <= right && y >= top && y <= bottom) { break; diff --git a/tizen/src/event_handler.h b/tizen/src/event_handler.h index 54bf430..b0f1f42 100644 --- a/tizen/src/event_handler.h +++ b/tizen/src/event_handler.h @@ -64,7 +64,7 @@ extern GtkWidget *xo_popup_menu; #define KEYCODE PHONE.mode[0].key_map_list[i].event_info[j].event_value[j].key_code -#define skin_scale PHONE.mode[0].lcd_list[0].lcd_region.s +//#define skin_scale PHONE.mode[0].lcd_list[0].lcd_region.s gboolean key_event_handler(GtkWidget *wid, GdkEventKey *event); gint motion_notify_event_handler(GtkWidget *widget, GdkEventButton *event, gpointer data); diff --git a/tizen/src/menu.c b/tizen/src/menu.c index c1354a8..7e45663 100644 --- a/tizen/src/menu.c +++ b/tizen/src/menu.c @@ -36,183 +36,154 @@ * */ - #include "menu.h" #include "debug_ch.h" #include "sdb.h" + //DEFAULT_DEBUG_CHANNEL(tizen); MULTI_DEBUG_CHANNEL(tizen, menu); + /** * @brief create popup advanced menu * @return void */ static void create_popup_advanced_menu(GtkWidget **pMenu, PHONEMODELINFO *device, CONFIGURATION *pconfiguration) { - GtkWidget *Item = NULL; - GtkWidget *image_widget = NULL; - GtkWidget *SubMenuItem = NULL; - GtkWidget *SubMenuItem1 = NULL; - GtkWidget *menu_item = NULL; - GSList *pGroup = NULL; - gchar icon_image[MAXPATH] = {0, }; - const gchar *skin_path; - gchar *keyboard_menu[2] = {"On", "Off"}; - int i, j = 0; - - skin_path = get_skin_path(); - if (skin_path == NULL){ - WARN("getting icon image path is failed!!\n"); - } - - /* 3. advanced */ - - Item = gtk_image_menu_item_new_with_label(_("Advanced")); - sprintf(icon_image, "%s/icons/02_ADVANCED.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); - - gtk_container_add(GTK_CONTAINER(*pMenu), Item); - - /* 3.1 sub_menu of advanced */ - - SubMenuItem = gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(Item), SubMenuItem); - - /* 3.2 event injector menu of advanced */ - if(configuration.enable_telephony_emulator){ - menu_item = gtk_image_menu_item_new_with_label(_("Telephony Emulator")); - sprintf(icon_image, "%s/icons/03_TELEPHONY-eMULATOR.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item),TRUE); - - gtk_widget_set_tooltip_text(menu_item, - "Emulate receiving and sending calls, SMSs, etc"); - gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); - if (UISTATE.is_ei_run == FALSE) - g_object_set(menu_item, "sensitive", TRUE, NULL); - - g_signal_connect(menu_item, "activate", G_CALLBACK(menu_create_eiwidget_callback), menu_item); - add_widget(EMULATOR_ID, MENU_EVENT_INJECTOR, menu_item); - gtk_widget_show(menu_item); + GtkWidget *Item = NULL; + GtkWidget *image_widget = NULL; + GtkWidget *SubMenuItem = NULL; + GtkWidget *SubMenuItem1 = NULL; + GtkWidget *menu_item = NULL; + GSList *pGroup = NULL; + gchar icon_image[MAXPATH] = {0, }; + const gchar *skin_path; + gchar *keyboard_menu[2] = {"On", "Off"}; + int i = 0; + + skin_path = get_skin_path(); + if (skin_path == NULL) { + WARN("getting icon image path is failed!!\n"); + } + + /* 5. advanced */ + Item = gtk_image_menu_item_new_with_label(_("Advanced")); + sprintf(icon_image, "%s/icons/02_ADVANCED.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + } + gtk_container_add(GTK_CONTAINER(*pMenu), Item); + + /* submenu items */ + SubMenuItem = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(Item), SubMenuItem); + + /* 5.1 event injector menu */ + if (configuration.enable_telephony_emulator) { + menu_item = gtk_image_menu_item_new_with_label(_("Telephony Emulator")); + sprintf(icon_image, "%s/icons/03_TELEPHONY-eMULATOR.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item),TRUE); } + gtk_widget_set_tooltip_text(menu_item, "Emulate receiving and sending calls, SMSs, etc"); + gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); + if (UISTATE.is_ei_run == FALSE) { + g_object_set(menu_item, "sensitive", TRUE, NULL); + } + + g_signal_connect(menu_item, "activate", G_CALLBACK(menu_create_eiwidget_callback), menu_item); + add_widget(EMULATOR_ID, MENU_EVENT_INJECTOR, menu_item); + gtk_widget_show(menu_item); + } + #ifdef ENABLE_TEST_EI - menu_create_eiwidget_callback(NULL, menu_item); + menu_create_eiwidget_callback(NULL, menu_item); #endif - /* SaveVM Menu */ - + /* SaveVM Menu */ #if 0 - GtkWidget *savevm_menu_item = gtk_image_menu_item_new_with_label(_("Save Emulator State")); - sprintf(icon_image, "%s/icons/05_GPS.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); + GtkWidget *savevm_menu_item = gtk_image_menu_item_new_with_label(_("Save Emulator State")); + sprintf(icon_image, "%s/icons/05_GPS.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(savevm_menu_item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(savevm_menu_item),TRUE); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(savevm_menu_item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(savevm_menu_item),TRUE); + } - if (UISTATE.is_gps_run == FALSE) - g_object_set(savevm_menu_item, "sensitive", TRUE, NULL); + if (UISTATE.is_gps_run == FALSE) { + g_object_set(savevm_menu_item, "sensitive", TRUE, NULL); + } - //g_signal_connect(gps_menu_item, "activate", G_CALLBACK(menu_create_gps), NULL); - g_signal_connect(savevm_menu_item, "activate", G_CALLBACK(save_emulator_state), NULL); + //g_signal_connect(gps_menu_item, "activate", G_CALLBACK(menu_create_gps), NULL); + g_signal_connect(savevm_menu_item, "activate", G_CALLBACK(save_emulator_state), NULL); - gtk_container_add(GTK_CONTAINER(SubMenuItem), savevm_menu_item); - add_widget(EMULATOR_ID, MENU_GPS, savevm_menu_item); - gtk_widget_show(savevm_menu_item); + gtk_container_add(GTK_CONTAINER(SubMenuItem), savevm_menu_item); + add_widget(EMULATOR_ID, MENU_GPS, savevm_menu_item); + gtk_widget_show(savevm_menu_item); #endif - /* 3.3 screen shot menu of advanced */ - - menu_item = gtk_image_menu_item_new_with_label(_("Screen Shot")); - sprintf(icon_image, "%s/icons/06_SCREEN-SHOT.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); - - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item),TRUE); - gtk_widget_set_tooltip_text(menu_item, - "Capture and Save the present Screen Shot "); - g_signal_connect(menu_item, "activate", G_CALLBACK(frame_buffer_handler), NULL); - gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); - gtk_widget_show(menu_item); - - /* 3.4 USB keyboard menu */ - - menu_item = gtk_image_menu_item_new_with_label(_("USB Keyboard")); - sprintf(icon_image, "%s/icons/04_KEYPAD.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); - - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item), TRUE); - gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); - gtk_widget_show(menu_item); - - SubMenuItem1 = gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), SubMenuItem1); - - for(i = 0; i < 2; i++) - { - menu_item = gtk_radio_menu_item_new_with_label(pGroup, keyboard_menu[i]); - pGroup = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menu_item)); - - gtk_container_add(GTK_CONTAINER(SubMenuItem1), menu_item); - - g_signal_connect(menu_item, "activate", G_CALLBACK(menu_keyboard_callback), keyboard_menu[i]); - gtk_widget_show(menu_item); - } - - /* 3.6 event for dbi file */ - - if (device->event_menu_cnt > 0) { - - /* 3.6.1 sub menu */ - - for (i = 0; i < device->event_menu_cnt; i++) { - - menu_item = gtk_image_menu_item_new_with_label(device->event_menu[i].name); - if(i == 0) - sprintf(icon_image, "%s/icons/09_ROTATE.png", skin_path); - else if (i == 1) - sprintf(icon_image, "%s/icons/10_PROPERTIES.png", skin_path); + /* 5.2 screen shot menu of advanced */ + menu_item = gtk_image_menu_item_new_with_label(_("Screen Shot")); + sprintf(icon_image, "%s/icons/06_SCREEN-SHOT.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); - image_widget = gtk_image_new_from_file (icon_image); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item),TRUE); + } + gtk_widget_set_tooltip_text(menu_item, "Capture and Save the present Screen Shot "); + g_signal_connect(menu_item, "activate", G_CALLBACK(frame_buffer_handler), NULL); + gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); + gtk_widget_show(menu_item); + + /* 5.3 USB keyboard menu */ + menu_item = gtk_image_menu_item_new_with_label(_("USB Keyboard")); + sprintf(icon_image, "%s/icons/04_KEYPAD.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item),TRUE); - gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); - gtk_widget_show(menu_item); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item), TRUE); + } + gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); + gtk_widget_show(menu_item); - SubMenuItem1 = gtk_menu_new(); - gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), SubMenuItem1); + SubMenuItem1 = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), SubMenuItem1); - pGroup = NULL; - for (j = 0; j < device->event_menu[i].event_list_cnt; j++) { + for(i = 0; i < 2; i++) + { + menu_item = gtk_radio_menu_item_new_with_label(pGroup, keyboard_menu[i]); + pGroup = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menu_item)); - menu_item = gtk_radio_menu_item_new_with_label(pGroup, device->event_menu[i].event_list[j].event_evalue); - pGroup = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(menu_item)); + gtk_container_add(GTK_CONTAINER(SubMenuItem1), menu_item); - gtk_container_add(GTK_CONTAINER(SubMenuItem1), menu_item); + g_signal_connect(menu_item, "activate", G_CALLBACK(menu_keyboard_callback), keyboard_menu[i]); + gtk_widget_show(menu_item); + } - g_signal_connect(menu_item, "activate", G_CALLBACK(menu_event_callback), device->event_menu[i].event_list[j].event_evalue); - gtk_widget_show(menu_item); + /* 5.4 about menu */ + menu_item = gtk_image_menu_item_new_with_label(_("About")); + sprintf(icon_image, "%s/icons/13_ABOUT.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); - g_object_set_data((GObject *) * pMenu, device->event_menu[i].event_list[j].event_evalue, (GObject *) menu_item); - g_object_set(menu_item, "name", device->event_menu[i].event_list[j].event_evalue, NULL); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(menu_item),TRUE); + } - } - } - gtk_widget_show(Item); - } + g_signal_connect(menu_item, "activate", G_CALLBACK(menu_about_callback), NULL); + gtk_widget_set_tooltip_text(menu_item, "Show license and version information"); + gtk_container_add(GTK_CONTAINER(SubMenuItem), menu_item); + gtk_widget_show(menu_item); - gtk_widget_show(Item); + gtk_widget_show(Item); } @@ -220,113 +191,150 @@ static void create_popup_advanced_menu(GtkWidget **pMenu, PHONEMODELINFO *device * @brief create popup menu * @return void */ - void create_popup_menu(GtkWidget **pMenu, PHONEMODELINFO *device, CONFIGURATION *pconfiguration) { - GtkWidget *Item = NULL; - GtkWidget *menu_item = NULL; - GtkWidget *image_widget = NULL; - gchar icon_image[MAXPATH] = {0, }; - const gchar *skin_path; - char *emul_name = NULL; - *pMenu = gtk_menu_new(); - - skin_path = get_skin_path(); - if (skin_path == NULL){ - WARN("getting icon image path is failed!!\n"); - } - - /* 1. emulator info menu */ - emul_name = g_strdup_printf("emulator-%d", get_sdb_base_port()); + GtkWidget *Item = NULL; + GtkWidget *menu_item = NULL; + GtkWidget *image_widget = NULL; + GtkWidget *SubMenuItem = NULL; + GSList *pGroup = NULL; + gchar icon_image[MAXPATH] = {0, }; + const gchar *skin_path; + char *emul_name = NULL; + int i, j = 0; + + *pMenu = gtk_menu_new(); + + skin_path = get_skin_path(); + if (skin_path == NULL) { + WARN("getting icon image path is failed!!\n"); + } + + /* 1. emulator info menu */ + emul_name = g_strdup_printf("emulator-%d", get_sdb_base_port()); Item = gtk_image_menu_item_new_with_label(_(emul_name)); - sprintf(icon_image, "%s/icons/Emulator_20x20.png", skin_path); + sprintf(icon_image, "%s/icons/Emulator_20x20.png", skin_path); image_widget = gtk_image_new_from_file (icon_image); - - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); - gtk_widget_set_tooltip_text(Item, _("Show Emulator infomation")); - g_signal_connect(Item, "activate", G_CALLBACK(show_info_window), (gpointer*)startup_option.vtm); - - gtk_container_add(GTK_CONTAINER(*pMenu), Item); - gtk_widget_show(Item); - free(emul_name); - - MENU_ADD_SEPARTOR(*pMenu); - - /* 2. shell menu */ - if(configuration.enable_shell){ - Item = gtk_image_menu_item_new_with_label(_("Shell")); - sprintf(icon_image, "%s/icons/01_SHELL.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); - - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); - gtk_widget_set_tooltip_text(Item, _("Run Command Window (ssh)")); - - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); - gtk_widget_set_tooltip_text(Item, _("Run Command Window (ssh)")); - - g_signal_connect(Item, "activate", G_CALLBACK(create_cmdwindow), NULL); - gtk_container_add(GTK_CONTAINER(*pMenu), Item); - gtk_widget_show(Item); - } - - /* 2. always on top menu */ - Item = gtk_check_menu_item_new_with_label(_("Always On Top")); - g_signal_connect(Item, "toggled", G_CALLBACK(always_on_top_cb), Item); - int always_on_top = get_config_type(SYSTEMINFO.virtual_target_info_file, COMMON_GROUP, ALWAYS_ON_TOP_KEY); - if(always_on_top == 1) - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(Item), TRUE); - else - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(Item), FALSE); - - gtk_widget_set_tooltip_text(Item,"Set keep above this window or not"); - gtk_container_add(GTK_CONTAINER(*pMenu), Item); - gtk_widget_show(Item); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + } + gtk_widget_set_tooltip_text(Item, _("Show Emulator infomation")); + g_signal_connect(Item, "activate", G_CALLBACK(show_info_window), (gpointer*)startup_option.vtm); - - /* 3. advanced menu */ - - create_popup_advanced_menu(pMenu, device, pconfiguration); + gtk_container_add(GTK_CONTAINER(*pMenu), Item); + gtk_widget_show(Item); + free(emul_name); -// create_popup_properties_menu(pMenu, pconfiguration); + MENU_ADD_SEPARTOR(*pMenu); - /* 4. about menu */ + /* 2. shell menu */ + if (configuration.enable_shell) { + Item = gtk_image_menu_item_new_with_label(_("Shell")); + sprintf(icon_image, "%s/icons/01_SHELL.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); - Item = gtk_image_menu_item_new_with_label(_("About")); - sprintf(icon_image, "%s/icons/13_ABOUT.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + } + gtk_widget_set_tooltip_text(Item, _("Run Command Window (ssh)")); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + } + gtk_widget_set_tooltip_text(Item, _("Run Command Window (ssh)")); + + g_signal_connect(Item, "activate", G_CALLBACK(create_cmdwindow), NULL); + gtk_container_add(GTK_CONTAINER(*pMenu), Item); + gtk_widget_show(Item); + } + + /* 3. always on top menu */ + Item = gtk_check_menu_item_new_with_label(_("Always On Top")); + g_signal_connect(Item, "toggled", G_CALLBACK(always_on_top_cb), Item); + int always_on_top = get_config_type(SYSTEMINFO.virtual_target_info_file, COMMON_GROUP, ALWAYS_ON_TOP_KEY); + if (always_on_top == 1) { + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(Item), TRUE); + } else { + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(Item), FALSE); + } + + gtk_widget_set_tooltip_text(Item, "Set keep above this window or not"); + gtk_container_add(GTK_CONTAINER(*pMenu), Item); + gtk_widget_show(Item); + + /* 4. event for dbi file */ + if (device->event_menu_cnt > 0) { + + /* submenu items */ + for (i = 0; i < device->event_menu_cnt; i++) { + + Item = gtk_image_menu_item_new_with_label(device->event_menu[i].name); + if (i == 0) { + sprintf(icon_image, "%s/icons/09_ROTATE.png", skin_path); + } else if (i == 1) { + sprintf(icon_image, "%s/icons/10_PROPERTIES.png", skin_path); + } + + image_widget = gtk_image_new_from_file (icon_image); + + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + } + gtk_container_add(GTK_CONTAINER(*pMenu), Item); + gtk_widget_show(Item); + + SubMenuItem = gtk_menu_new(); + gtk_menu_item_set_submenu(GTK_MENU_ITEM(Item), SubMenuItem); + + pGroup = NULL; + for (j = 0; j < device->event_menu[i].event_list_cnt; j++) { + Item = gtk_radio_menu_item_new_with_label(pGroup, device->event_menu[i].event_list[j].event_eid); + pGroup = gtk_radio_menu_item_get_group(GTK_RADIO_MENU_ITEM(Item)); + + if (g_strcmp0(device->event_menu[i].name, "Scale") == 0 && + UISTATE.scale == atof(device->event_menu[i].event_list[j].event_evalue)) + { + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(Item), TRUE); + } + + gtk_container_add(GTK_CONTAINER(SubMenuItem), Item); + + g_signal_connect(Item, "activate", G_CALLBACK(menu_event_callback), device->event_menu[i].event_list[j].event_evalue); + gtk_widget_show(Item); + + g_object_set_data((GObject *) *pMenu, device->event_menu[i].event_list[j].event_evalue, (GObject *) Item); + g_object_set(Item, "name", device->event_menu[i].event_list[j].event_evalue, NULL); + } + } + } - g_signal_connect(Item, "activate", G_CALLBACK(menu_about_callback), NULL); - gtk_widget_set_tooltip_text(Item,"Show license and version information"); - gtk_container_add(GTK_CONTAINER(*pMenu), Item); - gtk_widget_show(Item); + MENU_ADD_SEPARTOR(*pMenu); - /* 5. exit menu */ + /* 5. advanced menu */ + create_popup_advanced_menu(pMenu, device, pconfiguration); + //create_popup_properties_menu(pMenu, pconfiguration); - Item = gtk_image_menu_item_new_with_label(_("Close")); - sprintf(icon_image, "%s/icons/14_CLOSE.png", skin_path); - image_widget = gtk_image_new_from_file (icon_image); + /* 6. exit menu */ + Item = gtk_image_menu_item_new_with_label(_("Close")); + sprintf(icon_image, "%s/icons/14_CLOSE.png", skin_path); + image_widget = gtk_image_new_from_file (icon_image); -// gtk_widget_add_accelerator (Item, "activate", group, GDK_C, -// GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); + //gtk_widget_add_accelerator (Item, "activate", group, GDK_C, + // GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); - if(GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) - gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(Item), image_widget); + if (GTK_MAJOR_VERSION >=2 && GTK_MINOR_VERSION >= 16) { + gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM(Item),TRUE); + } - g_signal_connect(Item, "activate", G_CALLBACK(exit_emulator), NULL); - gtk_widget_set_tooltip_text(Item,"Exit Emulator"); - gtk_container_add(GTK_CONTAINER(*pMenu), Item); - gtk_widget_show(Item); + g_signal_connect(Item, "activate", G_CALLBACK(exit_emulator), NULL); + gtk_widget_set_tooltip_text(Item, "Exit Emulator"); + gtk_container_add(GTK_CONTAINER(*pMenu), Item); + gtk_widget_show(Item); } diff --git a/tizen/src/menu_callback.c b/tizen/src/menu_callback.c index 7331365..034fc65 100644 --- a/tizen/src/menu_callback.c +++ b/tizen/src/menu_callback.c @@ -131,17 +131,16 @@ int mask_main_lcd(GtkWidget *widget, PHONEMODELINFO *pDev, CONFIGURATION *pconfi if (strcmp(host_uname_buf.release, "2.6.35-22-generic") == 0) { // for ubuntu 10.10 resize window bug gtk_decorated_window_move_resize_window (GTK_WINDOW(widget), pconfiguration->main_x, pconfiguration->main_y, - pDev->mode_SkinImg[nMode].nImgWidth, pDev->mode_SkinImg[nMode].nImgHeight); + pDev->mode_SkinImg[nMode].nImgWidth * UISTATE.scale, pDev->mode_SkinImg[nMode].nImgHeight * UISTATE.scale); } else #endif { - hints.width_inc = hints.min_width = hints.base_width = pDev->mode_SkinImg[nMode].nImgWidth; - hints.height_inc = hints.min_height = hints.base_height = pDev->mode_SkinImg[nMode].nImgHeight; + hints.width_inc = hints.min_width = hints.base_width = pDev->mode_SkinImg[nMode].nImgWidth * UISTATE.scale; + hints.height_inc = hints.min_height = hints.base_height = pDev->mode_SkinImg[nMode].nImgHeight * UISTATE.scale; gtk_window_set_geometry_hints (GTK_WINDOW (widget), NULL, &hints, GDK_HINT_RESIZE_INC | GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE); - gtk_window_resize (GTK_WINDOW(widget), - pDev->mode_SkinImg[nMode].nImgWidth, pDev->mode_SkinImg[nMode].nImgHeight); + gtk_window_resize (GTK_WINDOW(widget),hints.base_width, hints.base_height); } /* @@ -151,6 +150,28 @@ int mask_main_lcd(GtkWidget *widget, PHONEMODELINFO *pDev, CONFIGURATION *pconfi */ gtk_widget_destroy (pixmap_widget); + g_object_unref (pixmap_widget); + + /* change current skin image */ + if (UISTATE.scale == 1.0) { + gdk_pixbuf_unref (pDev->mode_SkinImg[nMode].pPixImg); + gdk_pixbuf_unref (pDev->mode_SkinImg[nMode].pPixImg_P); + pDev->mode_SkinImg[nMode].pPixImg = gdk_pixbuf_copy(pDev->default_SkinImg[nMode].pPixImg); + pDev->mode_SkinImg[nMode].pPixImg_P = gdk_pixbuf_copy(pDev->default_SkinImg[nMode].pPixImg_P); + } else { + gdk_pixbuf_unref (pDev->mode_SkinImg[nMode].pPixImg); + gdk_pixbuf_unref (pDev->mode_SkinImg[nMode].pPixImg_P); + + pDev->mode_SkinImg[nMode].pPixImg = gdk_pixbuf_scale_simple (pDev->default_SkinImg[nMode].pPixImg, + pDev->default_SkinImg[nMode].nImgWidth * UISTATE.scale, + pDev->default_SkinImg[nMode].nImgHeight * UISTATE.scale, + GDK_INTERP_HYPER); + pDev->mode_SkinImg[nMode].pPixImg_P = gdk_pixbuf_scale_simple (pDev->default_SkinImg[nMode].pPixImg_P, + pDev->default_SkinImg[nMode].nImgWidth * UISTATE.scale, + pDev->default_SkinImg[nMode].nImgHeight * UISTATE.scale, + GDK_INTERP_HYPER); + } + pixmap_widget = gtk_image_new_from_pixbuf (pDev->mode_SkinImg[nMode].pPixImg); gdk_pixbuf_render_pixmap_and_mask (pDev->mode_SkinImg[nMode].pPixImg, &SkinPixmap, &SkinMask, 1); @@ -160,8 +181,8 @@ int mask_main_lcd(GtkWidget *widget, PHONEMODELINFO *pDev, CONFIGURATION *pconfi gtk_fixed_put (GTK_FIXED (fixed), pixmap_widget, 0, 0); qemu_widget_new(&sdl_widget); gtk_fixed_move (GTK_FIXED (fixed), sdl_widget, - PHONE.mode[UISTATE.current_mode].lcd_list[0].lcd_region.x, - PHONE.mode[UISTATE.current_mode].lcd_list[0].lcd_region.y); + PHONE.mode[UISTATE.current_mode].lcd_list[0].lcd_region.x * UISTATE.scale, + PHONE.mode[UISTATE.current_mode].lcd_list[0].lcd_region.y * UISTATE.scale); if (SkinPixmap != NULL) g_object_unref(SkinPixmap); @@ -489,24 +510,37 @@ void menu_event_callback(GtkWidget *widget, gpointer data) } /* 5. Scale menu */ - - else if (g_strcmp0(buf, HALF_SIZE) == 0) { - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(pWidget)) == TRUE) { - if(UISTATE.current_mode > 3) { - UISTATE.scale = 2.0; - scale_event_callback(&PHONE, UISTATE.current_mode - 4); - } - } - } - - else if (g_strcmp0(buf, ACTUAL_SIZE) == 0) { - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(pWidget)) == TRUE) { - if(UISTATE.current_mode <= 3) { - UISTATE.scale = 1.0; - scale_event_callback(&PHONE, UISTATE.current_mode + 4); - } - } - } + else if (g_strcmp0(buf, ACTUAL_SIZE) == 0) { + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(pWidget)) == TRUE) { + UISTATE.scale = 1.0; + set_config_type(SYSTEMINFO.virtual_target_info_file, EMULATOR_GROUP, SCALE_KEY, UISTATE.scale * 100); + scale_event_callback(&PHONE, UISTATE.current_mode); + } + } + + else if (g_strcmp0(buf, HALF_SIZE) == 0) { + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(pWidget)) == TRUE) { + UISTATE.scale = 0.5; + set_config_type(SYSTEMINFO.virtual_target_info_file, EMULATOR_GROUP, SCALE_KEY, UISTATE.scale * 100); + scale_event_callback(&PHONE, UISTATE.current_mode); + } + } + + else if (g_strcmp0(buf, THREE_QUATERS_SIZE) == 0) { + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(pWidget)) == TRUE) { + UISTATE.scale = 0.75; + set_config_type(SYSTEMINFO.virtual_target_info_file, EMULATOR_GROUP, SCALE_KEY, UISTATE.scale * 100); + scale_event_callback(&PHONE, UISTATE.current_mode); + } + } + + else if (g_strcmp0(buf, QUATER_SIZE) == 0) { + if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(pWidget)) == TRUE) { + UISTATE.scale = 0.25; + set_config_type(SYSTEMINFO.virtual_target_info_file, EMULATOR_GROUP, SCALE_KEY, UISTATE.scale * 100); + scale_event_callback(&PHONE, UISTATE.current_mode); + } + } else { // if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(pWidget)) == TRUE) diff --git a/tizen/src/qemu_gtk_widget.c b/tizen/src/qemu_gtk_widget.c index 6785a35..019054e 100644 --- a/tizen/src/qemu_gtk_widget.c +++ b/tizen/src/qemu_gtk_widget.c @@ -251,9 +251,9 @@ gint qemu_widget_new (GtkWidget **widget) if (!qemu_state) qemu_state = g_object_new(qemu_get_type(), NULL); - qemu_state->scale = lcd->lcd_region.s; - qemu_state->width = lcd->lcd_region.w / qemu_state->scale; - qemu_state->height = lcd->lcd_region.h / qemu_state->scale; + qemu_state->scale = UISTATE.scale; + qemu_state->width = lcd->lcd_region.w * qemu_state->scale; + qemu_state->height = lcd->lcd_region.h * qemu_state->scale; qemu_state->bpp = lcd->bitsperpixel; qemu_state->flags = SDL_HWSURFACE|SDL_ASYNCBLIT|SDL_HWACCEL|SDL_NOFRAME; if(PHONE.dual_display == 1){ @@ -631,7 +631,7 @@ static void qemu_update (qemu_state_t *qemu_state) surface = SDL_GetVideoSurface (); if (qemu_state->scale == 1) { - if (UISTATE.current_mode %4 != 0) { //rotation + if (UISTATE.current_mode % 4 != 0) { //rotation // work-around to remove afterimage on black color in Window and Ubuntu 11.10 if( qemu_state->surface_qemu ) { // set color key 'magenta' @@ -640,7 +640,7 @@ static void qemu_update (qemu_state_t *qemu_state) SDL_Surface *rot_screen; rot_screen = rotozoomSurface(qemu_state->surface_qemu, - (UISTATE.current_mode %4) * 90, 1, SMOOTHING_ON); + (UISTATE.current_mode % 4) * 90, 1, SMOOTHING_ON); SDL_BlitSurface(rot_screen, NULL, qemu_state->surface_screen, NULL); SDL_FreeSurface(rot_screen); @@ -665,13 +665,13 @@ static void qemu_update (qemu_state_t *qemu_state) SDL_Surface *down_screen; down_screen = rotozoomSurface(qemu_state->surface_qemu, - (UISTATE.current_mode %4) * 90, 1 / qemu_state->scale, SMOOTHING_ON); + (UISTATE.current_mode % 4) * 90, qemu_state->scale, SMOOTHING_ON); SDL_BlitSurface(down_screen, NULL, qemu_state->surface_screen, NULL); /* draw finger points (multi-touch) */ for (i = 0; i < qemu_mts.finger_cnt; i++) { - r.x = (qemu_mts.finger_slot[i].x - qemu_mts.finger_point_size) / qemu_state->scale; - r.y = (qemu_mts.finger_slot[i].y - qemu_mts.finger_point_size) / qemu_state->scale; + r.x = (qemu_mts.finger_slot[i].x * qemu_state->scale) - (qemu_mts.finger_point_size / 2); + r.y = (qemu_mts.finger_slot[i].y * qemu_state->scale) - (qemu_mts.finger_point_size / 2); r.w = r.h = qemu_mts.finger_point_size; SDL_BlitSurface(qemu_mts.finger_point, NULL, qemu_state->surface_screen, &r); diff --git a/tizen/src/screen_shot.c b/tizen/src/screen_shot.c index 722bca8..492a508 100644 --- a/tizen/src/screen_shot.c +++ b/tizen/src/screen_shot.c @@ -120,20 +120,13 @@ GtkWidget *create_frame_buffer_window(FBINFO *pBufInfo) ); /* scale size */ - - pImg = gdk_pixbuf_scale_simple(pImg, - qemu_state->surface_qemu->w / qemu_state->scale, - qemu_state->surface_qemu->h / qemu_state->scale, - GDK_INTERP_NEAREST); + pWidget->nOrgWidth = pWidget->width = qemu_state->surface_qemu->w * qemu_state->scale; + pWidget->nOrgHeight = pWidget->height = qemu_state->surface_qemu->h * qemu_state->scale; + pImg = gdk_pixbuf_scale_simple(pImg, pWidget->width, pWidget->height, GDK_INTERP_HYPER); pWidget->pPixBuf = pImg; - pWidget->width = qemu_state->surface_qemu->w / qemu_state->scale; - pWidget->height = qemu_state->surface_qemu->h / qemu_state->scale; - pWidget->nOrgWidth = qemu_state->surface_qemu->w / qemu_state->scale; - pWidget->nOrgHeight = qemu_state->surface_qemu->h / qemu_state->scale; pWidget->nCurDisplay = 1; - /* rotate */ int nMode = UISTATE.current_mode % 4; if (nMode == 1) /*90*/ @@ -186,7 +179,7 @@ GtkWidget *create_frame_buffer_window(FBINFO *pBufInfo) void frame_buffer_handler(GtkWidget *widget, gpointer data) { GtkWidget *frame_buffer_window = NULL; - int x, y; + int x; gint frame_buffer_window_w; gint frame_buffer_window_h; @@ -197,7 +190,7 @@ void frame_buffer_handler(GtkWidget *widget, gpointer data) /* positioning */ gtk_window_get_size(GTK_WINDOW(frame_buffer_window), &frame_buffer_window_w, &frame_buffer_window_h); - x = configuration.main_x + PHONE.mode_SkinImg[UISTATE.current_mode].nImgWidth + frame_buffer_window_w; + x = configuration.main_x + (PHONE.mode_SkinImg[UISTATE.current_mode].nImgWidth * UISTATE.scale) + frame_buffer_window_w; if (x < gdk_screen_width()) { //right of emulator window gtk_window_move(GTK_WINDOW(frame_buffer_window), x - frame_buffer_window_w, configuration.main_y); } else { //left of emulator window diff --git a/tizen/src/tools.c b/tizen/src/tools.c index 30bd0d2..2a526a9 100644 --- a/tizen/src/tools.c +++ b/tizen/src/tools.c @@ -169,13 +169,13 @@ int check_region_button(int x, int y, PHONEMODELINFO *device) { int i = 0; if (UISTATE.last_index != -1) { - if (INSIDE(x, y, PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.last_index].key_map_region) == TRUE) { + if (INSIDE(x, y, PHONE.mode[UISTATE.current_mode].key_map_list[UISTATE.last_index].key_map_region, UISTATE.scale) == TRUE) { return UISTATE.last_index; } } for (i = 0; i < PHONE.mode[UISTATE.current_mode].key_map_list_cnt; i++) { - if (INSIDE(x, y, PHONE.mode[UISTATE.current_mode].key_map_list[i].key_map_region) == TRUE) { + if (INSIDE(x, y, PHONE.mode[UISTATE.current_mode].key_map_list[i].key_map_region, UISTATE.scale) == TRUE) { UISTATE.last_index = i; return UISTATE.last_index; } @@ -195,14 +195,15 @@ int check_region_lcd(int x, int y, PHONEMODELINFO * device) { int i = 0; for (i = 0; i < device->mode[UISTATE.current_mode].lcd_list_cnt; i++) { +#if 0 if(device->dual_display == 1){ extern int intermediate_section; int curr_rotation = UISTATE.current_mode; /* 0 */ if(curr_rotation == 0){ - int value = device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.x + - ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.w/device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.s)/2); + int value = (device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.x * UISTATE.scale) + + ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.w * UISTATE.scale)/2); /* If its within the middle bar then its not a LCD region */ if(x >= value && x < (value + intermediate_section)){ return NON_LCD_REGION; @@ -216,8 +217,8 @@ int check_region_lcd(int x, int y, PHONEMODELINFO * device) } /* 180 */ else if(curr_rotation == 2){ - int value = device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.x + - ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.w/device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.s)/2); + int value = (device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.x * UISTATE.scale) + + ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.w * UISTATE.scale)/2); /* If its within the middle bar then its not a LCD region */ if(x > value && x <= (value + intermediate_section)){ @@ -232,8 +233,8 @@ int check_region_lcd(int x, int y, PHONEMODELINFO * device) } /* 90 */ else if(curr_rotation == 1){ - int value = device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.y + - ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.h/device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.s)/2); + int value = (device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.y * UISTATE.scale) + + ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.h * UISTATE.scale)/2); /* If its within the middle bar then its not a LCD region */ if(y > value && y <= (value + intermediate_section)){ @@ -248,8 +249,8 @@ int check_region_lcd(int x, int y, PHONEMODELINFO * device) } /* 270 */ else { - int value = device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.y + - ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.h/device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.s)/2); + int value = (device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.y * UISTATE.scale) + + ((int)(device->mode[UISTATE.current_mode].lcd_list[i].lcd_region.h * UISTATE.scale)/2); /* If its within the middle bar then its not a LCD region */ if(y > value && y <= (value + intermediate_section)){ @@ -265,12 +266,13 @@ int check_region_lcd(int x, int y, PHONEMODELINFO * device) } else { - if (INSIDE_LCD(x, y, device->mode[UISTATE.current_mode].lcd_list[i].lcd_region) == TRUE) { +#endif + if (INSIDE_LCD(x, y, device->mode[UISTATE.current_mode].lcd_list[i].lcd_region, UISTATE.scale) == TRUE) { UISTATE.last_index = i; if (i > 0) return DUAL_LCD_REGION; else return LCD_REGION; } - } + } return NON_LCD_REGION; @@ -375,7 +377,18 @@ int load_skin_image(PHONEMODELINFO * device) } } } - return 0; + + /* remember the skin image when 1.0 scale */ + for (i = 0; i < MODE_MAX; i++) { + device->default_SkinImg[i].pPixImg = gdk_pixbuf_copy(device->mode_SkinImg[i].pPixImg); + device->default_SkinImg[i].pPixImg_P = gdk_pixbuf_copy(device->mode_SkinImg[i].pPixImg_P); + device->default_SkinImg[i].pPixImgLed = gdk_pixbuf_copy(device->mode_SkinImg[i].pPixImgLed); + device->default_SkinImg[i].pPixImgLed_P = gdk_pixbuf_copy(device->mode_SkinImg[i].pPixImgLed_P); + device->default_SkinImg[i].nImgWidth = device->mode_SkinImg[i].nImgWidth; + device->default_SkinImg[i].nImgHeight = device->mode_SkinImg[i].nImgHeight; + } + + return 0; } diff --git a/tizen/src/vtm.c b/tizen/src/vtm.c index 1d80dce..0e0332d 100644 --- a/tizen/src/vtm.c +++ b/tizen/src/vtm.c @@ -1207,6 +1207,7 @@ int create_config_file(gchar* filepath) g_fprintf (fp, "\n[%s]\n", EMULATOR_GROUP); g_fprintf (fp, "%s=100\n", MAIN_X_KEY); g_fprintf (fp, "%s=100\n", MAIN_Y_KEY); + g_fprintf (fp, "%s=100\n", SCALE_KEY); g_fprintf (fp, "\n[%s]\n", QEMU_GROUP); g_fprintf (fp, "%s=\n", BINARY_KEY); diff --git a/ui/sdl_rotate.c b/ui/sdl_rotate.c index bd3b2af..e268c97 100644 --- a/ui/sdl_rotate.c +++ b/ui/sdl_rotate.c @@ -52,7 +52,7 @@ This catches any potential overflows which seem to happen with just the right src image dimensions and scale/rotation and can lead to a situation where the program can segfault. */ -#define GUARD_ROWS (2) +#define GUARD_ROWS (0) /*! \brief Lower limit of absolute zoom factor or rotation degrees. -- 2.7.4