From 49c2b9f6da652e55325c12c26f34d9d9783d41f7 Mon Sep 17 00:00:00 2001 From: "yumi82.ko" Date: Fri, 7 Dec 2012 10:13:47 +0900 Subject: [PATCH] Apply EFL migration of thread, common Change-Id: I8189c7a0a54e3d74ea6a370b5aa4e213de94594f --- common/CMakeLists.txt | 16 +- .../data/edc_image/00_MessageBubble_BG_receive.png | Bin 3930 -> 4054 bytes common/data/edc_image/00_MessageBubble_BG_send.png | Bin 4113 -> 4018 bytes common/data/edc_image/00_button.png | Bin 0 -> 4460 bytes common/data/edc_image/00_button_dim.png | Bin 0 -> 4460 bytes ...cts_button_bg_press.png => 00_button_press.png} | Bin 4211 -> 4601 bytes common/data/edc_image/M01_icon_locked.png | Bin 3560 -> 3284 bytes .../{00_index list_bg.png => M01_subject_bg.png} | Bin 2812 -> 2835 bytes .../edj_image_list/01_controlbar_icon_compose.png | Bin 0 -> 1359 bytes .../01_controllbar_icon_add_to_contact.png | Bin .../01_header_icon_cancel.png | Bin .../01_header_icon_done.png | Bin .../60_myfiles_file_etc.png | Bin .../{image => edj_image_list}/M01_btn_delete.png | Bin .../M01_btn_delete_press.png | Bin .../M01_btn_message_send.png | Bin .../M01_btn_message_send_dim.png | Bin .../M01_btn_mms_message_send.png | Bin .../M01_btn_mms_message_send_dim.png | Bin .../M01_btn_scheduled_message_send.png | Bin .../M01_btn_scheduled_message_send_dim.png | Bin .../M01_contact_default_image.png} | Bin 3131 -> 4938 bytes .../{image => edj_image_list}/M01_icon_DRM.png | Bin .../M01_icon_DRM_64x64.png | Bin .../{image => edj_image_list}/M01_icon_OTA.png | Bin .../{image => edj_image_list}/M01_icon_Push.png | Bin .../{image => edj_image_list}/M01_icon_SOS.png | Bin 3708 -> 3739 bytes .../M01_icon_Unsupported.png | Bin .../M01_icon_attach_voice.png | Bin .../{image => edj_image_list}/M01_icon_block.png | Bin .../M01_icon_broadcasting.png | Bin .../M01_icon_message_status_mms_read_n.png | Bin .../M01_icon_message_status_mms_sent_n.png | Bin .../M01_icon_message_status_mms_unread_n.png | Bin .../M01_icon_message_status_sms_read_n.png | Bin .../M01_icon_message_status_sms_sent_n.png | Bin .../M01_icon_message_status_sms_unread_n.png | Bin .../{image => edj_image_list}/M01_icon_save.png | Bin .../{image => edj_image_list}/M01_icon_unblock.png | Bin .../M01_icon_video_call.png | Bin .../M01_icon_view_contact.png | Bin .../M01_icon_voice_call.png | Bin .../M01_photo_btn_delete.png | Bin .../M01_photo_btn_delete_press.png | Bin .../data/edj_image_list/M01_title_icon_attach.png | Bin 0 -> 6398 bytes .../edj_image_list/M01_title_icon_attach_dim.png | Bin 0 -> 5765 bytes .../data/edj_image_list/M01_title_icon_compose.png | Bin 0 -> 5502 bytes .../data/edj_image_list/M01_title_icon_search.png | Bin 0 -> 5674 bytes .../M01_title_icon_search_dim.png} | Bin 3105 -> 5175 bytes common/data/edj_image_list/attach_icon.png | Bin 0 -> 1530 bytes .../{image => edj_image_list}/myfile_icon_etc.png | Bin .../myfile_icon_excel.png | Bin .../{image => edj_image_list}/myfile_icon_html.png | Bin .../myfile_icon_images.png | Bin .../{image => edj_image_list}/myfile_icon_java.png | Bin .../myfile_icon_music.png | Bin .../{image => edj_image_list}/myfile_icon_pdf.png | Bin .../{image => edj_image_list}/myfile_icon_ppt.png | Bin .../{image => edj_image_list}/myfile_icon_rss.png | Bin .../{image => edj_image_list}/myfile_icon_svg.png | Bin .../{image => edj_image_list}/myfile_icon_swf.png | Bin .../{image => edj_image_list}/myfile_icon_text.png | Bin .../myfile_icon_video.png | Bin .../{image => edj_image_list}/myfile_icon_word.png | Bin common/data/image/com.samsung.message.cb.png | Bin 2901 -> 0 bytes common/data/image/com.samsung.message.noti.png | Bin 4721 -> 0 bytes common/data/image/com.samsung.message.png | Bin 15675 -> 0 bytes common/data/image/com.samsung.message.voice.png | Bin 4650 -> 0 bytes common/data/image/org.tizen.message.cb.png | Bin common/data/image/org.tizen.message.noti.png | Bin common/data/image/org.tizen.message.png | Bin common/data/image/org.tizen.message.voice.png | Bin common/data/msg_bubble_entry.edc | 34 +- common/data/msg_button.edc | 167 ++++- common/data/msg_common.edc | 138 ++-- common/data/msg_genlist.edc | 210 ++++++ common/data/msg_image_macro.edc | 31 + common/data/msg_images.edc | 59 ++ common/msg-ui-bundle.h | 28 +- common/msg-ui-common-utility.c | 822 ++++++++++++++++++--- common/msg-ui-common-utility.h | 78 +- common/msg-ui-image-resource.h | 115 ++- common/msg-ui-util.h | 33 +- main/message.c | 149 +++- main/message.h | 2 + packaging/org.tizen.message.spec | 8 +- thread/include/msg-ui-thread-main.h | 29 +- thread/src/msg-ui-thread-callback.c | 203 +++-- thread/src/msg-ui-thread-list.c | 218 +++--- thread/src/msg-ui-thread-main.c | 542 ++++++++------ thread/src/msg-ui-thread-util.c | 221 ++++-- thread/theme/thread_genlist.edc | 71 ++ 92 files changed, 2372 insertions(+), 802 deletions(-) create mode 100755 common/data/edc_image/00_button.png create mode 100755 common/data/edc_image/00_button_dim.png rename common/data/edc_image/{00_contacts_button_bg_press.png => 00_button_press.png} (56%) rename common/data/edc_image/{00_index list_bg.png => M01_subject_bg.png} (94%) create mode 100755 common/data/edj_image_list/01_controlbar_icon_compose.png rename common/data/{image => edj_image_list}/01_controllbar_icon_add_to_contact.png (100%) rename common/data/{image => edj_image_list}/01_header_icon_cancel.png (100%) rename common/data/{image => edj_image_list}/01_header_icon_done.png (100%) rename common/data/{image => edj_image_list}/60_myfiles_file_etc.png (100%) rename common/data/{image => edj_image_list}/M01_btn_delete.png (100%) rename common/data/{image => edj_image_list}/M01_btn_delete_press.png (100%) rename common/data/{image => edj_image_list}/M01_btn_message_send.png (100%) rename common/data/{image => edj_image_list}/M01_btn_message_send_dim.png (100%) rename common/data/{image => edj_image_list}/M01_btn_mms_message_send.png (100%) rename common/data/{image => edj_image_list}/M01_btn_mms_message_send_dim.png (100%) rename common/data/{image => edj_image_list}/M01_btn_scheduled_message_send.png (100%) rename common/data/{image => edj_image_list}/M01_btn_scheduled_message_send_dim.png (100%) rename common/data/{edc_image/M01_title_btn_bg.png => edj_image_list/M01_contact_default_image.png} (54%) rename common/data/{image => edj_image_list}/M01_icon_DRM.png (100%) rename common/data/{image => edj_image_list}/M01_icon_DRM_64x64.png (100%) rename common/data/{image => edj_image_list}/M01_icon_OTA.png (100%) rename common/data/{image => edj_image_list}/M01_icon_Push.png (100%) rename common/data/{image => edj_image_list}/M01_icon_SOS.png (71%) mode change 100755 => 100644 rename common/data/{image => edj_image_list}/M01_icon_Unsupported.png (100%) rename common/data/{image => edj_image_list}/M01_icon_attach_voice.png (100%) rename common/data/{image => edj_image_list}/M01_icon_block.png (100%) rename common/data/{image => edj_image_list}/M01_icon_broadcasting.png (100%) rename common/data/{image => edj_image_list}/M01_icon_message_status_mms_read_n.png (100%) rename common/data/{image => edj_image_list}/M01_icon_message_status_mms_sent_n.png (100%) rename common/data/{image => edj_image_list}/M01_icon_message_status_mms_unread_n.png (100%) rename common/data/{image => edj_image_list}/M01_icon_message_status_sms_read_n.png (100%) rename common/data/{image => edj_image_list}/M01_icon_message_status_sms_sent_n.png (100%) rename common/data/{image => edj_image_list}/M01_icon_message_status_sms_unread_n.png (100%) rename common/data/{image => edj_image_list}/M01_icon_save.png (100%) rename common/data/{image => edj_image_list}/M01_icon_unblock.png (100%) rename common/data/{image => edj_image_list}/M01_icon_video_call.png (100%) rename common/data/{image => edj_image_list}/M01_icon_view_contact.png (100%) rename common/data/{image => edj_image_list}/M01_icon_voice_call.png (100%) rename common/data/{image => edj_image_list}/M01_photo_btn_delete.png (100%) rename common/data/{image => edj_image_list}/M01_photo_btn_delete_press.png (100%) create mode 100644 common/data/edj_image_list/M01_title_icon_attach.png create mode 100755 common/data/edj_image_list/M01_title_icon_attach_dim.png create mode 100644 common/data/edj_image_list/M01_title_icon_compose.png create mode 100644 common/data/edj_image_list/M01_title_icon_search.png rename common/data/{edc_image/M01_title_btn_bg_press.png => edj_image_list/M01_title_icon_search_dim.png} (51%) mode change 100755 => 100644 create mode 100755 common/data/edj_image_list/attach_icon.png rename common/data/{image => edj_image_list}/myfile_icon_etc.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_excel.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_html.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_images.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_java.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_music.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_pdf.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_ppt.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_rss.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_svg.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_swf.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_text.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_video.png (100%) rename common/data/{image => edj_image_list}/myfile_icon_word.png (100%) delete mode 100755 common/data/image/com.samsung.message.cb.png delete mode 100755 common/data/image/com.samsung.message.noti.png delete mode 100755 common/data/image/com.samsung.message.png delete mode 100755 common/data/image/com.samsung.message.voice.png mode change 100755 => 100644 common/data/image/org.tizen.message.cb.png mode change 100755 => 100644 common/data/image/org.tizen.message.noti.png mode change 100755 => 100644 common/data/image/org.tizen.message.png mode change 100755 => 100644 common/data/image/org.tizen.message.voice.png create mode 100644 common/data/msg_image_macro.edc create mode 100755 common/data/msg_images.edc diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 27438e3..62c8987 100755 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -18,11 +18,10 @@ INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED appsvc bundle - capi-appfw-application contacts-service + capi-appfw-application contacts-service2 dlog drm-client elementary ecore ecore-x ecore-input ecore-imf ecore-file eina glib-2.0 - heynoti icu-i18n msg-service mm-common mm-player mm-session @@ -36,8 +35,10 @@ pkg_check_modules(pkgs REQUIRED capi-media-metadata-extractor capi-media-image-util capi-media-player + capi-content-media-content status libexif + tapi ) FOREACH(flag ${pkgs_CFLAGS}) @@ -72,10 +73,21 @@ ADD_CUSTOM_TARGET(msg_custom_winset.edj DEPENDS ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edc ) +ADD_CUSTOM_TARGET(msg_images.edj + COMMAND edje_cc -id + ${CMAKE_SOURCE_COMMON_DIR}/data/edj_image_list + ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edc + ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edj + DEPENDS ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edc +) + ADD_DEPENDENCIES(${PROJECT_NAME} msg_common.edj) ADD_DEPENDENCIES(${PROJECT_NAME} msg_custom_winset.edj) +ADD_DEPENDENCIES(${PROJECT_NAME} msg_images.edj) # Install so files. INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIBDIR}) INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_common.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_custom_winset.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_SOURCE_COMMON_DIR}/data/msg_images.edj DESTINATION ${EDJDIR}) + diff --git a/common/data/edc_image/00_MessageBubble_BG_receive.png b/common/data/edc_image/00_MessageBubble_BG_receive.png index a768d912a959713e01516505c5dda4c9c4e3de9a..bf98eae95a7bf77740935b9bee1b7e8aaca0b34f 100755 GIT binary patch delta 1356 zcmV-S1+)6v9@ZZriBL{Q4GJ0x0000DNk~Le0000~0000~2nGNE032%&!LcEp3V#Iw zNkl+@&>j>IJ&1@{JX9(w zn)DPA#e+epp=z)~sG&m1HW&*zwAe;ma;S&K+CP?PH=6CbyR$R%JnVa$=a^LX&&>WN z^M3Hi?1m&SpZELz=DqiO^IH-^Ab(0DA^RD*josrt1KNr0Irv#NH#B?#L?f&^Cd8@I z&Fjz1jK5F|f6L+ulZa^B(C|m>U^Y58vTbO1oRs`Hd#LOr?R{%zr<3hJAAe)4Y&o`i zwd%vi-`P`WM6?D-t{zI3lR3Z`CIHx$c7lM~EMsU0sFfg~7JpZuq_w00ZT3A$9Zw8hrc=Dc7$pIy@laz1r~zt#8lc7u zPy=*pTi14V_8-ZA4dB^!e}3QCtnpAl?y3?|wfyJH0E$NP9m14LFKc>qZ_#rrFBzcS zS<6}g?Bj1g{cYgarw!1~VCrd$zQWw+hlLPD1GGK4BLp#;QKr8U{ybAKm3xR4g=O_j|FI&q#xT+oU}+k?z2r>Uiz^D zO@s7fKYh2=rQfULjQ=bBqyp{9L#jduArGE}p*mQ97}Wr61Al5*`i|BN&<>+)Kk?4bU!lsSefv?IKvSmN#aArVOYM z?B}9F1m(m4_5J!4?mz>t{%c}@R!ghjaR*wtwR$EgK*goS*>3>Bc!Dqd<;DET@T`Qb zhZasByS(=MwSP&j{aahPa~fX^+}pr=Gs zp2^l?y)YXBq@=(o7gH0f-FyMq@X&eKrr@LJV zRhN69Hp#iBYn4~%*9xX8b8f{XdHrc?)#_Rp5PC5Nwx3p`RoqeDXlvJTcxTv4^?X;b z5lq%VLs0eF%yHe}H(S9qUvE$*gg4L-*s#3g1R?sbYjGQBi2#};`)2?Kc{30-5{bP4 O0000DYi#iYhD;+5`rf`z0W&; zc?jnmaX|<{lIV0gNE@!}8UT&}Jbwo82>=6XBLMIhfL{Q-ux&d?@<*I=5Y@n3*F7SH zJg-)(uq+FvX(s-zRR!l9lgR|W?_)R|f-&}_(P;b>{d(@19Wd8*kIUuqkF{D2hM_vC z7NlAbpx^IfG#WkK+uM64K(RP*oO6^^ba<>jTOl(gvEw*57w^jF{aHK~N7Bw>tcX{G?io6Y8*L4Oc@r=^)<9@cC& zPX>d*Z(5qkfN=nvQu;zmGxky zrO%5j%`}T|4j?={Jp7}`(o74i@X}1Xy;FE;-e*6o(9*mwu)<37zB{gkmF6;A)PN}5Xp>vTGWlIBXzC1q%vF3nXQY!6H+UJOpD5jImLkfc+f=L2iLfr+-sWO5aG!ImE3{R08{% zQkq*}lu~rN-B))l<5U7W9S(=cW0nO$fZ=e6cDsFsx2O3G|M#s>2W)3&Ct!?y)$jLn z1uZfwy12MF9SjCj2^K?)X_3-Vve9Tf8;wR!d%Ye!&%<~;&J5IeJcj3a==FLyKR-V` zIXOAQY#ZuYYJZ^w4gl2JVeRhjmH?FN_4=b$tM#R2S)ZAv`EeG&27|#r-EQ}FyWKt$ znH6GY>M;i31E8Y)iGLX&G#WE~R-KqJw&>AWPB z0&^UP+qMn7^|F~rup;}G2v|w+3%r(IV$`BKb~93D<-H^C^K+?wlyQqY+?x8q@vf6o zWKbl-LM9nDmu2!iM+T-cyXLbjlt#udZXT9NhDp$(&P4uPDr(nVwQQkjWR{YI<2YQ5 toN`SI6(qw#43vfI$Xn-OI^yHM0RYF+$-mKn6fOV&002ovPDHLkV1jYOGrIr) diff --git a/common/data/edc_image/00_MessageBubble_BG_send.png b/common/data/edc_image/00_MessageBubble_BG_send.png index aaab0f7f8bf29cdab08b91273dfe68ba80cd6c23..799910b1cb17a270f5fb6ea83feb8451d95e1770 100755 GIT binary patch delta 1319 zcmV+?1=#wLAhI7JiBL{Q4GJ0x0000DNk~Le0000~0000~2nGNE032%&!LcEp3V#IM zNkl6vn^tt^?$9)R7F=raCE7q{yO3fa-)~DGeP}3M-1}Qbmv|m%tTQ zMQKh(Crflhr@QEEr8z+wOd=%&U4hc&vdBtdW0{B;dv|A2coxPBcY)yBeX~1H8nLE& z{>}T|%+8-@CWOGNY-eZZ9RNiDAAbUP7l4Im%m?rrfFA)o$mjFFLjz;40=m7u{aGfH z`4Yfb%zkz_=U+@sP2JZL=*Gsz$i&3NW5(DWO3n%)emFQd_-KB9zDpHo<{V+hST2{l zPYtH@?M^P2`-U;b$VaGjl5K8o-X0wt{UyR&dF9-Ca&q$C%*@R5e$f8MAb${ZgfiQ< zKPC(l0IX~_`w0L>R`N1BGXN~hvgXJqe#SnKot~j4{~$sGpf+RdmIgp?0kEadw15V= zGXM(U4Gn<4r2?fCrD}v)0J6}>veIXAl0VI#ve$JnJIJGypoVj(r4dkaFfRg{(FkaU zDp000-GHjT(|q+bHsm)YjemS+Isi3hfEu6%s4)Z705w338K6;3jxF@pK*s>wtkr6N zq>#gR`FwufMCfqru+?fUGHC|rHLcU>d^$HbcZeaa{-+wK>$;C-XJ;!I;@Ya6R+yag z!?m@wWjTHXAccGuCPJ@hySuxem&@f703!(PPhCg$sRY_=Hosq7Tz~vYg0#a@zs_lt z)B*K8?{H~p>02dl22vl&k)G56tyZgF?d|OyOMo2xbEsUlYlBS{(0aZ8bY*2_S3>jv zxUzW)R1=|>mHP7X@&f=p04GZ8NuWN4aGEbQKr5BX*ZceXZ2(;bW>-e&P++D8XuV#4 zy1KghtBl630(Brd&3~XoNb0Ep8kN*j0W?afCmv|jQcpb4sHL80pm9h&u|VUJdSZdb zCG|uCjZ^B00~)u~69+VIsV5331*s5zE1}GJ&CjuxXscR3En$)!iN=@q81EnVQ zB;?RuC^}=6dQyOrk$RFMG=Lea)RO|V7ls*kl^mUcdP*Y!Q-61$KF*&@f&u#fZ2%;d zf>=5O70O>S)x~sQ91+wUGS_MhP|bh}A$sITBhHVt0qVN0LmjB=x_@c|wApNKQU}^< zwRUs?Dyr4$6Cs38c32m}uT(0JD30(KMrf&2df_-unJQ4namuAq=>_Eo6-wg(c(GV~ z*l0AKQFFG@Xn#B_7K;yY{u&IqiM>#q^xN%rw@@hDt<`GxIOiP#qk5-StKBOU3U}M> zc9-Hid|+xJ))4@20=OyL4FIFl)6;J+EG$eEUeus2h?yr}j$=_61+W4?PDkgEHrth$PPyg@hZq+<7|6hdWrQ zYac|Tr94Mj^LSuxtjs;hY{*>-Xb7rWn>p%w$Kf}))6Z04z7%K(Y*^k=0v&j!4DwPy dja}XT9RM3PHvT^iL}&m2002ovPDHLkV1kLNSp@(9 delta 1415 zcmV;21$g?hACVv-iBL{Q4GJ0x0000DNk~Le0000)0000=2nGNE00J5E!m%Nq3V#JW zNkl9fdI%w6N}}GN`lbw!+>@ z*O%>~Z~N2HsqJ7`_OOn!C)X9~+$Jrt3u7BjiPfc*VU6n&&5beM8*}d-JSRQ5RowKR zYwo@N;E))}&GnP-_jk|l=Q)>*KYvbv#qd}{2G9xM1b|imGVBcvKor1D09RX@8nyM_ zFg%vn)CZnAdZ_GYA9vtRLP&3YZ4I7_gi%u!03pOy8irxW*}Qrrtt=dwoy&e29i8mz zXm7s8ehmQQk5h)obC4*EGqTUudvM=w>}}YINGNDK3;-a6AQB242SVAU*e0E?@1FC~EDkZ9eG7ju%Kp+^r+}d_5Ox3)D zeu=`MNB}zPYike+R1ORlp@59~+8UhfI`;;EAkAq$kx(Q6uhvDvsMM&7gb}I^9|sVk zQ2fk3q7-sCTotHTAmOS2{C{%bc>vV_ssIEy`;b#d4_OMv2SDD61p0pxEg{5D6#@V{ zfFd0deY6yaQzA%VECVReQKZ%}ya+_5F#P;wSjarYA>rc&yZlOC1|pdTQwQ-X5cbD2 z7{u$AA!|H`*A*h%m)qgQ%WmI5?2bi;x(T2gz@TG+v@|tZcC56LJAX0$SCVwJAO4A( z(3Kv2Ub4e-QOCoXf3Tp;e@-WOI)%X=;VB@AnJ36(=0AMv_>1@H%$Jn{tVZ&VLefeO z)5*VYoq470V_GP(nuu_=AwDlzWh55;20(;*eRz@B|QMmHR*5`3~i+M}xD8&Rt~;$?aB& z|MA<`U-f=6!l|K%@+Q+V2gSV#Nh>*wKbW}p{@br#=OC~|%7#W?FS=SG%qp>=?{9Ic zC;(777%HB&Axn8gaS1PBCO(QAR?^dSRkUT;z%GO zt>Q=^BCX;$Afm0}C?IxN#Zf@)u!^IAq?H_~Rdf>!%dFzWq-v~@J1nt^8-S=Bj7?j` zi9mENnQC+ttbekKQx&3fDp|G~hLeG?!T(9e!C31e>=6NM?R?Y9fBG=hDS~sti{0 z7r2tYXn$4z;~60I4lM=%BRY6HA051X1;7_r*=rxd%6@wp<;$T(?|m~&JrE5*9{*vD zm}Ls#B*?ni68Cxm+-)iZLorO{KHoCTb3nvdrf(o-(0lQ)z4R&vgKaNoKL}mq zuX4lk#?WdCVc$y8^t^zld+qs6#CG&P_=XU_He6ju{wM>&sf54I^FZuWhgl_jhpd!4 ztX9V}3gMtIAng7ecI1xra!J`{K@l)kvrOrOOgW`!GYqUU=@JTp1*zmpcPrxG0RWu? V!$l(V#ohn_002ovPDHLkV1k9tjyC`R diff --git a/common/data/edc_image/00_button.png b/common/data/edc_image/00_button.png new file mode 100755 index 0000000000000000000000000000000000000000..b1dfb75232327834b68cbdae458952fa922cd620 GIT binary patch literal 4460 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 LNkvXXu0mjfVN>lu diff --git a/common/data/edc_image/M01_icon_locked.png b/common/data/edc_image/M01_icon_locked.png index 00c46cdab9c22f2181ef37b1e8a185493eba35ee..477c6191ed4b4bb806f51451d5e479c09bd70472 100755 GIT binary patch delta 580 zcmV-K0=xa_8`K#giBL{Q4GJ0x0000DNk~Le0000c0000c2nGNE0H{6buCXDW3V#9r zNkl1}p3)QxY55*=Ve17G$AxJ7qy(p(wJm zSCm+o?4}e}V`YJ)>}29M4W^&XRjV6pEZzhE~V6{dMQs8K)uEpJjzShjUk-IIBMB{3e%MVi--{% zDsX8srF3VJ+lz>p%pi|rRUW6S+?BhrA?x>X_eV}Cr8=(SO*ZX|h=D4BZGXn{?~(Zl zZ)Wf$>wQ>LC9uAN{<)cBN@*Tn^6diZrSHm!7{phc#Y8q=z{MrF+CVR^Wlp}tQM^Sx zr8HX>`EO=2Z!6f2UY=h^R%x7*4dBV+!rfIJV+4HnvO8zpD_zwe55m`IyHKWhCP= z6YT1U7|pe@zny@M;9)DymE9$NL~of9o6XH$88TPdxw7-`q64f0>=}Op_H6+DB7g30 SS-cAX0000Ot`9JZv_|XVO2rZj^k;3k!NYUY8zdd{<2HUpuLk&W@O9{4Tw6G|GB4D^ zb%pWyl0MIs{tjLx5P8)SxHL_G>Xk+pDi7=RkjXA{?LO{3kBgMvmBSlp0#1P#TR*Zl4k9Q&}VTh&(fm{VFUX@ymOB zn!x+`t>E(?!F_cA@I79`>){GJ^m!CNDJ|_d>bcE8Ws>*I_YIiDi-RcW6~SwaSGiOD?uu zHvkt)C1+(n#4V}l+-AXG$NDV%7Zt!m__5H6SzR{(EnGh=XfJ9EpcQshTL9;xzL>q8 kG5o8+5Wo;Xz3IOJ01mOA1N3cV@SoVq?oN) zqRd(eHJ_ev&JsA?&M$wVWrlm%-E3&t;ucLK6U5 C`5mkP diff --git a/common/data/edj_image_list/01_controlbar_icon_compose.png b/common/data/edj_image_list/01_controlbar_icon_compose.png new file mode 100755 index 0000000000000000000000000000000000000000..20b71f7b8d77feaa1fe9392f6df45e26cef990b7 GIT binary patch literal 1359 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 V-N>DG95ny{002ovPDHLkV1gG?Oius+ delta 425 zcmV;a0apIXCc79RiBL{Q4GJ0x0000DNk~Le000080000;2nGNE0Lxdj=dmH43V#7+ zNklk9>4>52~04qOgMlW65YBK5;q<|H;9lI zc!cnH^ov*#m&7H(rEQ7y}2@ z3RPoBlH{>{bAD;+jpud3CWLg*Cx89vT~&}({Xff4J3e7D>|fh0#{sAw*2uHjsa+oV zAI3o87Dtw{5&$At@n(Qk_OV`sWd+eVpmFf0RM0Ajr-F$16ZQcSrlem>MM<#Aeh@^& zH4!NFLiguK%V8h?IXxE}tVsF)tNrHX7ja>|<+% ze43K>J`v~c>;|&HWizrgVeKB+g9=mv_Xu*0|el0{jjDJ&+q1 Tmuy^P00000NkvXXu0mjf6v4XN diff --git a/common/data/image/M01_icon_DRM.png b/common/data/edj_image_list/M01_icon_DRM.png similarity index 100% rename from common/data/image/M01_icon_DRM.png rename to common/data/edj_image_list/M01_icon_DRM.png diff --git a/common/data/image/M01_icon_DRM_64x64.png b/common/data/edj_image_list/M01_icon_DRM_64x64.png similarity index 100% rename from common/data/image/M01_icon_DRM_64x64.png rename to common/data/edj_image_list/M01_icon_DRM_64x64.png diff --git a/common/data/image/M01_icon_OTA.png b/common/data/edj_image_list/M01_icon_OTA.png similarity index 100% rename from common/data/image/M01_icon_OTA.png rename to common/data/edj_image_list/M01_icon_OTA.png diff --git a/common/data/image/M01_icon_Push.png b/common/data/edj_image_list/M01_icon_Push.png similarity index 100% rename from common/data/image/M01_icon_Push.png rename to common/data/edj_image_list/M01_icon_Push.png diff --git a/common/data/image/M01_icon_SOS.png b/common/data/edj_image_list/M01_icon_SOS.png old mode 100755 new mode 100644 similarity index 71% rename from common/data/image/M01_icon_SOS.png rename to common/data/edj_image_list/M01_icon_SOS.png index 21b6b45bd416cb42aada67d838b6be9cc4c5c2d6..bd2062c8d0d50e16652904325a8fc36057dc2297 GIT binary patch delta 1037 zcmV+o1oHd*9Ge{>iBL{Q4GJ0x0000DNk~Le0000c0000c2nGNE0H{6buCXDX3V+5) zL_t(|+U%G~XcSQphQHA)I8kxEs6mYzDoKpQg9ypVAc%(`22l}FF(A00M(`3hR4_(F zP|QWd1w;vg9>jQxBI1Hu6d~@ofMASd88MTjJ@_{~-@M86#AL|9f`*>y>Z-r%Rn=eb zg*?w=Aj%*HsHFKfURhZ(?+pVc0e|_xTwpRVSkJnEcfcdyDexX>4Qe=a>C)f8l8EqZ zpd2UxMgYTsOiS+<&;tAb>VO*H1<;*z!~)1XU?Z>+NKc@f35?Y>4cGu&08RoA`YOl5 zz+RvpSQ7x0OVagjy=;a5HDbeo)4;y_v(5_15D=i4He4rwQy|h9;69U^Dq-y$5!t&W;^5+7} zjo;6KR}N#Nf%$3!_kqvW^K76{_uarPpxI$(3XmtCM}P(wu&_FMhJN1w)&rj$21kl= z8i8ewvL6MU5jz|N_5)s=0)MzFpXJK8h`p3kWXP8qfeJ~_ye5bnD+S8b2?5`ML%>IM zdoPZiY{OrPFvR5897O_yi~%+QP1bc67zezRPPOr@TK~NjXNL6qti#SxYZd0Wma;&d z-UdBPWNk~gp_66kWEt;=44pA??3gT50GzXdafTr?+(czx`+&+sXdhYjGtLC-ECz;2*eb9}THfTDW0 zShf;YeKMy#4}f(VhX>R#lux=1qN1AqIJk?Ur2l8I0p<4quN?sv$UUtW00000NkvXX Hu0mjfqD|Oe delta 1006 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 literal 0 HcmV?d00001 diff --git a/common/data/edj_image_list/M01_title_icon_attach_dim.png b/common/data/edj_image_list/M01_title_icon_attach_dim.png new file mode 100755 index 0000000000000000000000000000000000000000..9b31bec6feb6ac69b7b8d57000d4486e00396b7e GIT binary patch literal 5765 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 literal 0 HcmV?d00001 diff --git a/common/data/edj_image_list/M01_title_icon_compose.png b/common/data/edj_image_list/M01_title_icon_compose.png new file mode 100644 index 0000000000000000000000000000000000000000..6c90e8c8b27de36ca2514bba1340b3ab7447345e GIT binary patch literal 5502 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 V$fx#!06*XYx|)U>Sg1|Z{{Vp8AZ!2t literal 0 HcmV?d00001 diff --git a/common/data/edj_image_list/M01_title_icon_search.png b/common/data/edj_image_list/M01_title_icon_search.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8f19779c594a5481ec6499e1ab48970852e375 GIT binary patch literal 5674 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 literal 0 HcmV?d00001 diff --git a/common/data/edc_image/M01_title_btn_bg_press.png b/common/data/edj_image_list/M01_title_icon_search_dim.png old mode 100755 new mode 100644 similarity index 51% rename from common/data/edc_image/M01_title_btn_bg_press.png rename to common/data/edj_image_list/M01_title_icon_search_dim.png index ba663997dc070906c7170b3290eee782f28e7e7e..0ae026b7df3dc209d54a7ea94842525835ac60be GIT binary patch delta 2486 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 AhX4Qo delta 399 zcmV;A0dW4eD4`f3iBL{Q4GJ0x0000DNk~Le000080000;2nGNE0Lxdj=dmH43V#7i zNklVD>KV#3u}} zQZ|$ggyHjf<8Y_?jWCDA=&8%7*MB)EN#e%>DjS=OdYz*Z83-zC%%DjY$(5XC4vtyCl)%=2t=-4jA5Ep;>$~FO1RzI~fuU9(lQMGwpZl(RH(C t)_1G=`hH~Naq>28$7WKBWr(enlhV=}nxQq8pq8SF&|#{A zSW=P-YF}DQ6iE8cS5Xb>1OEWku<_q$_#{ZIEm;AfK;cy_!_yUk*W@ds&AQ1M+ z+}zx}yu9q}Y`|w_W&Njua!>%IH*em61V|u)R&U?F-A{m&oSdANmIfvPJivZWzysvu z3SzB+|mdLP0?RlgS(!8k(M-US3}A=;#<27?_xt0CTRatP~d)FD)%K zG&J=0_m7N>3=a=)Y-~`e)K8y2b#`{Ht*v!;chAqyS5#C`D3qX}AR>`CGc&{I^SNAZ zQBe_t!I+($1(Sdw3kwUoy1IBgUS(xvYisN1=qQ;??(6FV16x{Jf@ALO?I92dA0HoZ z96Fs|UtizU)U>s=)!W53k!?L$jIpE=*GrI@UejZSS+@*wDjJ+du?rPNl8gG8m+9XY-eW&g+c`c z1Uz#Ww*war{@BXg8X|BWlWZI&c!0Xq_xh!>A5(C|TP<aMF^rvm*FJ1PDX)IRG5y)*_WyE=VFFO73G6_@V#Z>>a1T|cEC;M znm~=Y-T6C8Yme3M0{j zOeK2UbbVLn#j3tsJ0#O0(K_oW{iN?lfolJl!YXvvF*4KNmMt17%h?Jghcof2Xh&=k z*Gsb#P3dDE@q+0V&6u{_L^NA9jzGL#g~ba-E?eVVm97;ZrNWdp^wqPLr;ZyM|5iwc$frpqx9>GNGKsraBc_Z*CV&e4-zjPN|1gkK(fXd^0Z~@f*^TEm)tlP zwGtDsuPx^wq-7%wF98gt?ikJY0rZZQ&V8*-^^W+^E5XXk6QN0Y!KYrCI*5-KnW{GU zEkzS54@&6Dh1_?5voKiZBrZhIPbw;FUf%7B9980)ohIZ%tU{24oztF-GGC&#c~Kw9$L z8gLf)$xo6p6|D9i88F>D0VjXoS}r1Nm^iq5`bptHS_nCA=YrUsBb?iRa1M=~6@OyV z{g~@{BkXQ;1XHumf2_tvlc1RX03ka*<@v}Z1LzfA^pTU91sdsrd68xyKwhO%)=H9#Q5WfZdEBk>s# z3g|3l!Yxi5e^_f#*VK1>axlVXPsLLVc1wFeIA_5HHcIFc)skvD?HssXQGY^9I<`}j z8|2SluYQ!15p!}h&~_uh$HJmL?&|JNbOG<&X75w`4GY{I@QXoAVCGQLHJ6aT0jq>t A2LJ#7 literal 0 HcmV?d00001 diff --git a/common/data/image/myfile_icon_etc.png b/common/data/edj_image_list/myfile_icon_etc.png similarity index 100% rename from common/data/image/myfile_icon_etc.png rename to common/data/edj_image_list/myfile_icon_etc.png diff --git a/common/data/image/myfile_icon_excel.png b/common/data/edj_image_list/myfile_icon_excel.png similarity index 100% rename from common/data/image/myfile_icon_excel.png rename to common/data/edj_image_list/myfile_icon_excel.png diff --git a/common/data/image/myfile_icon_html.png b/common/data/edj_image_list/myfile_icon_html.png similarity index 100% rename from common/data/image/myfile_icon_html.png rename to common/data/edj_image_list/myfile_icon_html.png diff --git a/common/data/image/myfile_icon_images.png b/common/data/edj_image_list/myfile_icon_images.png similarity index 100% rename from common/data/image/myfile_icon_images.png rename to common/data/edj_image_list/myfile_icon_images.png diff --git a/common/data/image/myfile_icon_java.png b/common/data/edj_image_list/myfile_icon_java.png similarity index 100% rename from common/data/image/myfile_icon_java.png rename to common/data/edj_image_list/myfile_icon_java.png diff --git a/common/data/image/myfile_icon_music.png b/common/data/edj_image_list/myfile_icon_music.png similarity index 100% rename from common/data/image/myfile_icon_music.png rename to common/data/edj_image_list/myfile_icon_music.png diff --git a/common/data/image/myfile_icon_pdf.png b/common/data/edj_image_list/myfile_icon_pdf.png similarity index 100% rename from common/data/image/myfile_icon_pdf.png rename to common/data/edj_image_list/myfile_icon_pdf.png diff --git a/common/data/image/myfile_icon_ppt.png b/common/data/edj_image_list/myfile_icon_ppt.png similarity index 100% rename from common/data/image/myfile_icon_ppt.png rename to common/data/edj_image_list/myfile_icon_ppt.png diff --git a/common/data/image/myfile_icon_rss.png b/common/data/edj_image_list/myfile_icon_rss.png similarity index 100% rename from common/data/image/myfile_icon_rss.png rename to common/data/edj_image_list/myfile_icon_rss.png diff --git a/common/data/image/myfile_icon_svg.png b/common/data/edj_image_list/myfile_icon_svg.png similarity index 100% rename from common/data/image/myfile_icon_svg.png rename to common/data/edj_image_list/myfile_icon_svg.png diff --git a/common/data/image/myfile_icon_swf.png b/common/data/edj_image_list/myfile_icon_swf.png similarity index 100% rename from common/data/image/myfile_icon_swf.png rename to common/data/edj_image_list/myfile_icon_swf.png diff --git a/common/data/image/myfile_icon_text.png b/common/data/edj_image_list/myfile_icon_text.png similarity index 100% rename from common/data/image/myfile_icon_text.png rename to common/data/edj_image_list/myfile_icon_text.png diff --git a/common/data/image/myfile_icon_video.png b/common/data/edj_image_list/myfile_icon_video.png similarity index 100% rename from common/data/image/myfile_icon_video.png rename to common/data/edj_image_list/myfile_icon_video.png diff --git a/common/data/image/myfile_icon_word.png b/common/data/edj_image_list/myfile_icon_word.png similarity index 100% rename from common/data/image/myfile_icon_word.png rename to common/data/edj_image_list/myfile_icon_word.png diff --git a/common/data/image/com.samsung.message.cb.png b/common/data/image/com.samsung.message.cb.png deleted file mode 100755 index 3a26d57ae63567c2ebdfcc8d230cd0cdc01e4610..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2901 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 diff --git a/common/data/image/com.samsung.message.png b/common/data/image/com.samsung.message.png deleted file mode 100755 index 5ba762ced7da3dd81383f6dc3c8a47493a1b8212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15675 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 diff --git a/common/data/image/com.samsung.message.voice.png b/common/data/image/com.samsung.message.voice.png deleted file mode 100755 index 85b6d5188b9319bb966ea33cda7019dafa6bbefd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4650 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 diff --git a/common/data/image/org.tizen.message.cb.png b/common/data/image/org.tizen.message.cb.png old mode 100755 new mode 100644 diff --git a/common/data/image/org.tizen.message.noti.png b/common/data/image/org.tizen.message.noti.png old mode 100755 new mode 100644 diff --git a/common/data/image/org.tizen.message.png b/common/data/image/org.tizen.message.png old mode 100755 new mode 100644 diff --git a/common/data/image/org.tizen.message.voice.png b/common/data/image/org.tizen.message.voice.png old mode 100755 new mode 100644 diff --git a/common/data/msg_bubble_entry.edc b/common/data/msg_bubble_entry.edc index 8005f80..b156ba9 100755 --- a/common/data/msg_bubble_entry.edc +++ b/common/data/msg_bubble_entry.edc @@ -1,6 +1,4 @@ #define ENTRY_SELECTION_BG_COLOR 90 123 138 127 -#define ENTRY_TEXT_COLOR_INC "#000000" -#define ENTRY_TEXT_SIZE_INC 44 #define ENTRY_BUBBLE_EX_PAD 46 #define ENTRY_BUBBLE_EX_CALLERID_PAD 140 #define ENTRY_BUBBLE_IX_PAD 20 @@ -10,6 +8,13 @@ #define ENTRY_BUBBLE_CALLERID_WIDTH 84 #define ENTRY_BUBBLE_CALLERID_HEIGHT 84 #define ENTRY_SELECTION_BG_COLOR 90 123 138 127 +#define ENTRY_BUBBLE_SENT_TEXT_COLOR "#000000" +#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_STYLE "far_shadow,bottom" +#define ENTRY_BUBBLE_SENT_TEXT_SHADOW_COLOR "#ffffff7f" +#define ENTRY_BUBBLE_RECEV_TEXT_COLOR "#FFFFFF" +#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_STYLE "far_shadow,top" +#define ENTRY_BUBBLE_RECEV_TEXT_SHADOW_COLOR "#0000009f" +#define ENTRY_BUBBLE_TEXT_SIZE 38 images { image: "00_MessageBubble_BG_receive.png" COMP; @@ -47,8 +52,19 @@ group { styles { style { - name: "entry_textblock_style"; - base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color="ENTRY_TEXT_COLOR_INC" left_margin=1 right_margin=2 wrap=mixed text_class=entry"; + name: "entry_bubble_sent_textblock_style"; + base: "font=SLP:style=Roman style="ENTRY_BUBBLE_SENT_TEXT_SHADOW_STYLE" shadow_color="ENTRY_BUBBLE_SENT_TEXT_SHADOW_COLOR" font_size="ENTRY_BUBBLE_TEXT_SIZE" color="ENTRY_BUBBLE_SENT_TEXT_COLOR" left_margin=1 right_margin=2 wrap=mixed text_class=bubble"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + tag: "em" "+ font=SLP:style=Oblique"; + tag: "b" "+ font=SLP:style=Bold"; + tag: "link" "+ color=#800 underline=on underline_color=#8008"; + tag: "hilight" "+ font=SLP:style=Bold"; + } + style { + name: "entry_bubble_receive_textblock_style"; + base: "font=SLP:style=Roman style="ENTRY_BUBBLE_RECEV_TEXT_SHADOW_STYLE" shadow_color="ENTRY_BUBBLE_RECEV_TEXT_SHADOW_COLOR" font_size="ENTRY_BUBBLE_TEXT_SIZE" color="ENTRY_BUBBLE_RECEV_TEXT_COLOR" left_margin=1 right_margin=2 wrap=mixed text_class=bubble"; tag: "br" "\n"; tag: "ps" "ps"; tag: "tab" "\t"; @@ -59,7 +75,7 @@ styles { } style { name: "entry_textblock_disabled_style"; - base: "font=SLP:style=Roman font_size="ENTRY_TEXT_SIZE_INC" color=#00000080 left_margin=1 right_margin=2 wrap=mixed text_class=entry"; + base: "font=SLP:style=Roman font_size="ENTRY_BUBBLE_TEXT_SIZE" color=#00000080 left_margin=1 right_margin=2 wrap=mixed text_class=bubble"; tag: "br" "\n"; tag: "ps" "ps"; tag: "tab" "\t"; @@ -188,7 +204,7 @@ group { state: "default" 0.0; align: 0.0 0.0; text { - style: "entry_textblock_style"; + style: "entry_bubble_receive_textblock_style"; min: 0 1; } rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; } @@ -262,7 +278,7 @@ group { rel2 { relative: 1.0 1.0; to_y: "elm.rect.subject.line"; } min: 200 0; text { - style: "entry_textblock_style"; + style: "entry_bubble_receive_textblock_style"; min: 0 1; max: 1 0; } @@ -580,7 +596,7 @@ group { state: "default" 0.0; align: 0.0 0.0; text { - style: "entry_textblock_style"; + style: "entry_bubble_sent_textblock_style"; min: 0 1; } rel1 { relative: 1.0 1.0; to_x: "elm.rect.left.pad"; to_y: "elm.rect.top.pad"; } @@ -650,7 +666,7 @@ group { rel1 { relative: 0.0 1.0; to_y: "elm.rect.subject.line";} rel2 { relative: 0.0 1.0; to_x: "elm.rect.right.pad"; to_y: "elm.rect.subject.line"; } text { - style: "entry_textblock_style"; + style: "entry_bubble_sent_textblock_style"; min: 0 1; max: 1 0; } diff --git a/common/data/msg_button.edc b/common/data/msg_button.edc index 3fc1168..b3714a6 100755 --- a/common/data/msg_button.edc +++ b/common/data/msg_button.edc @@ -626,11 +626,8 @@ BUTTON_CIRCLE_STYLES("add_plus", "M01_btn_add_plus.png", "M01_btn_add_plus.png", 64, 64); /////////////////////////////////////////////////////////////////////////////////////// -//#define CONTACT_BUTTON_CIRCLE_BG_NORMAL "00_btn_circle_bg_normal.png" #define CONTACT_BUTTON_CIRCLE_BG_PRESS "00_btn_circle_bg_press.png" - #define CONTACT_BUTTON_CIRCLE_BG_NORMAL "00_contacts_circle_bg.png" -//#define CONTACT_BUTTON_CIRCLE_BG_PRESS "00_contacts_button_bg_press.png" #define CONTACT_BUTTON_CIRCLE_STYLES(style_name, image_normal, image_press, min_width, min_height) \ group { name: "elm/button/base/circle/"style_name; \ @@ -761,14 +758,156 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu /////////////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////////////// +//contac button +/////////////////////////////////////////////////////////////////////////////////////// +#define BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC 68 68 +#define BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC 68 68 + + group { name: "elm/button/base/msg/contact_btn"; + parts { + part { name: "button_image"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + visible: 0; + min: BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC; + max: BUTTON_NAVITFRAME_TITLE_ICON_BG_MIN_MAX_INC; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } + } + part { name: "elm.swallow.content"; + type: SWALLOW; + scale: 1; + clip_to: "elm.icon.clipper"; + description { state: "default" 0.0; + visible: 0; + rel1.to: "button_image"; + rel2.to: "button_image"; + } + description { state: "visible" 0.0; + inherit: "default" 0.0; + visible: 1; + min: BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC; + max: BUTTON_NAVIFRAME_TITLE_ICON_IMAGE_MIN_MAX_INC; + } + } + part { name: "over2"; + type: RECT; + repeat_events: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "over3"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 0 0 0 0; + } + } + part { name: "elm.icon.clipper"; + type: RECT; + description { state: "default" 0.0; + //color: 101 101 101 255; + color: 201 201 201 255; + } + description { state: "clicked" 0.0; + color: 64 147 247 255; + } + description { state: "disabled" 0.0; + color: 101 101 101 102; + } + } + part { name: "disabler"; + type: RECT; + description { state: "default" 0.0; + color: 0 0 0 0; + visible: 0; + } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { name: "button_click"; + signal: "mouse,down,1"; + source: "over2"; + action: SIGNAL_EMIT "elm,action,press" ""; + after: "button_click_anim"; + } + program { name: "button_click_anim"; + action: STATE_SET "clicked" 0.0; + target: "button_image"; + target: "elm.icon.clipper"; + } + program { name: "button_unpress"; + action: SIGNAL_EMIT "elm,action,unpress" ""; + } + program { name: "button_mouseout_clicked"; + signal: "mouse,up,1"; + source: "over3"; + action: STATE_SET "default" 0.0; + target: "elm.icon.clipper"; + after: button_unpress; + } + program { name: "touch_snd"; + signal: "mouse,clicked,1"; + source: "over2"; + //action: PLAY_SAMPLE "touch_sound" 1.0; + after: button_unclick3; + } + program { name: "button_unclick3"; + action: SIGNAL_EMIT "elm,action,click" ""; + } + program { name: "icon_show"; + signal: "elm,state,icon,visible"; + source: "elm"; + action: STATE_SET "visible" 0.0; + target: "elm.swallow.content"; + } + program { name: "icon_hide"; + signal: "elm,state,icon,hidden"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "elm.swallow.content"; + } + program { name: "disable"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "button_image"; + target: "disabler"; + target: "elm.icon.clipper"; + } + program { name: "enable"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "button_image"; + target: "elm.icon.clipper"; + target: "disabler"; + } + } + } + + /////////////////////////////////////////////////////////////////// // button for navi title /////////////////////////////////////////////////// group { name: "elm/button/base/title_button"; images { - image: "M01_title_btn_bg.png" COMP; - image: "M01_title_btn_bg_press.png" COMP; - image: "00_button_04_press.png" COMP; + image: "00_button.png" COMP; + image: "00_button_press.png" COMP; + image: "00_button_dim.png" COMP; } script { public button_state = BUTTON_STATE_ENABLED; @@ -778,22 +917,22 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu scale: 1; description { state: "default" 0.0; image { - normal: "M01_title_btn_bg.png"; - border: 1 1 1 1; - border_scale: 0; + normal: "00_button.png"; + border: 12 12 12 12; + border_scale: 1; } } description { state: "clicked" 0.0; inherit: "default" 0.0; - image.normal: "M01_title_btn_bg_press.png"; + image.normal: "00_button_press.png"; } description { state: "disabled" 0.0; inherit: "default" 0.0; - image.normal: "M01_title_btn_bg.png"; //"00_button_04_press.png"; + image.normal: "00_button_dim.png"; } description { state: "focused" 0.0; inherit: "default" 0.0; - image.normal: "M01_title_btn_bg.png"; //"00_button_04_press.png"; + image.normal: "00_button.png"; } } part { name: "padding_left_top"; @@ -983,7 +1122,7 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu to: "padding_right_bottom"; } align: 0.0 0.5; - color: BUTTON_TEXT_STYLE1_NORMAL_COLOR_INC; + color: 59 115 182 255; text { font: "SLP:style=Medium"; size: 52; @@ -999,7 +1138,7 @@ CONTACT_BUTTON_CIRCLE_STYLES("contact_button", "M01_button_contact.png", "M01_bu description { state: "clicked" 0.0; inherit: "default" 0.0; visible: 1; - color: BUTTON_TEXT_STYLE1_PRESSED_COLOR_INC; + color: 248 246 239 255; } description { state: "disabled" 0.0; inherit: "default" 0.0; diff --git a/common/data/msg_common.edc b/common/data/msg_common.edc index 5566814..f2b34c4 100755 --- a/common/data/msg_common.edc +++ b/common/data/msg_common.edc @@ -32,14 +32,49 @@ collections { description { state: "default" 0.0; fixed: 0 1; - min: 0 16; + min: 0 10; align: 0.5 1; rel1.relative: 0.0 1.0; rel2.relative: 1.0 1.0; visible: 0; } } - + part { + name: "more_btn"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + fixed: 1 1; + min: 1 1; + align: 0 0.5; + rel1.relative: 0 0; + rel2.relative: 0 1; + } + } + part { + name: "more_separator"; + type: IMAGE; + scale: 0; + description { + state: "default" 0.0; + fixed: 1 1; + min: 2 48; + max: 2 48; + align: 0 0.5; + rel1.to: "more_btn"; + rel2.to: "more_btn"; + rel1.relative: 1 0; + rel2.relative: 1 1; + image.normal: "nf_title_separator.png"; + visible: 0; + } + description { + state: "visible" 0.0; + inherit: "default"; + visible: 1; + } + } part { name: "padding1"; type: RECT; @@ -49,11 +84,15 @@ collections { fixed: 1 0; min: 16 0; align: 0 0.5; - rel1.relative: 0 0; - rel2.relative: 0 1; - visible: 0; + rel1.to: "more_separator"; + rel2.to: "more_separator"; + rel1.relative: 1 0; + rel2.relative: 1 1; + color: 255 255 255 0; + visible: 1; } } + part { name: "title_btn"; type: SWALLOW; @@ -63,7 +102,7 @@ collections { fixed: 0 0; min: 0 72; align: 0 0.5; - rel1 { relative: 0.0 1.0; to_y: "padding_top";} + rel1 { relative: 0.0 1.0; to_x: "padding1"; to_y: "padding_top";} rel2 { relative: 0.0 0.0; to_x: "padding2"; to_y: "padding_bottom";} color: 255 0 0 255; } @@ -76,12 +115,12 @@ collections { state: "default" 0.0; text { font: "SLP:style=Medium"; - size: 48; + size: 56; min: 0 0; max: 1 0; align: 0.5 0.5; } - color: 249 249 249 255; + color: 59 115 182 255; align: 0.0 0.5; min: 0 72; fixed: 1 0; @@ -98,66 +137,27 @@ collections { fixed: 1 0; min: 5 0; align: 1.0 0.5; - rel1.to: "more_separator"; - rel2.to: "more_separator"; - rel1.relative: 0 0; - rel2.relative: 0 1; - visible: 0; - } - } - part { - name: "more_separator"; - type: IMAGE; - scale: 0; - description { - state: "default" 0.0; - fixed: 1 1; - min: 2 48; - max: 2 48; - align: 1 0.5; - rel1.to: "more_btn"; - rel2.to: "more_btn"; - rel1.relative: 0 0; - rel2.relative: 0 1; - image.normal: "nf_title_separator.png"; - visible: 0; - } - description { - state: "visible" 0.0; - inherit: "default"; - visible: 1; - } - } - part { - name: "more_btn"; - type: SWALLOW; - scale: 1; - description { - state: "default" 0.0; - fixed: 0 1; - min: 1 1; - align: 1 0.5; rel1.to: "compose_separator"; rel2.to: "compose_separator"; rel1.relative: 0 0; rel2.relative: 0 1; + visible: 0; } } part { name: "compose_separator"; - type: IMAGE; + type: SWALLOW; scale: 0; description { state: "default" 0.0; fixed: 1 1; - min: 2 48; - max: 2 48; + min: 18 68; + max: 18 68; align: 1 0.5; rel1.to: "compose_btn"; rel2.to: "compose_btn"; rel1.relative: 0 0; rel2.relative: 0 1; - image.normal: "nf_title_separator.png"; visible: 0; } description { @@ -172,7 +172,7 @@ collections { scale: 1; description { state: "default" 0.0; - fixed: 0 1; + fixed: 1 1; min: 1 1; align: 1 0.5; rel1.to: "prev_separator"; @@ -183,19 +183,18 @@ collections { } part { name: "prev_separator"; - type: IMAGE; + type: SWALLOW; scale: 0; description { state: "default" 0.0; fixed: 1 0; - min: 2 48; - max: 2 48; + min: 18 68; + max: 18 68; align: 1 0.5; rel1.to_x: "prev_btn"; rel2.to_x: "prev_btn"; rel1.relative: 0 0; rel2.relative: 0 1; - image.normal: "nf_title_separator.png"; visible: 0; } description { @@ -210,11 +209,28 @@ collections { scale: 1; description { state: "default" 0.0; - fixed: 0 1; - min: 0 72; + fixed: 1 1; + min: 0 68; + align: 1 0.5; + rel1.to: "title_right_padding"; + rel2.to: "title_right_padding"; + rel1.relative: 0 0; + rel2.relative: 0 1; + } + } + part { + name: "title_right_padding"; + type: SWALLOW; + scale: 0; + description { + state: "default" 0.0; + fixed: 1 0; + min: 26 68; + max: 26 68; align: 1 0.5; rel1.relative: 1 0; rel2.relative: 1 1; + visible: 0; } } part { @@ -369,7 +385,7 @@ collections { scale: 1; description { state: "default" 0.0; - min : 16 0; + min : 36 0; fixed: 1 0; align: 0.0 0.0; rel1.relative: 0.0 0.0; @@ -428,7 +444,7 @@ collections { scale : 1; description { state: "default" 0.0; - min: 380 0; + min: 574 0; align: 0.5 0.5; fixed: 1 0; rel1 { relative: 0.5 1.0; to: "pad_top"; } @@ -451,7 +467,7 @@ collections { } color: 0 0 0 255; align: 0 0.5; - rel1 { relative: 0.07 0.5; to: "pad_bottom"; } + rel1 { relative: 0.11 0.5; to: "pad_bottom"; } rel2 { relative: 1.0 1.0; to: "pad_bottom"; } } } diff --git a/common/data/msg_genlist.edc b/common/data/msg_genlist.edc index 42a773d..f41e481 100755 --- a/common/data/msg_genlist.edc +++ b/common/data/msg_genlist.edc @@ -76,9 +76,219 @@ part { name: "elm.flip.content"; \ target: "elm.flip.content"; \ } +#define GENLIST_PROGRAM_FLIP_1TEXT \ + program { name: "flip_enabled"; \ + signal: "elm,state,flip,enabled"; \ + source: "elm"; \ + action: STATE_SET "flip_enabled" 0.0; \ + target: "elm.text"; \ + target: "elm.flip.content"; \ + } \ + program { name: "flip_disabled"; \ + signal: "elm,state,flip,disabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text"; \ + target: "elm.flip.content"; \ + } + + ////////////////////////////////////////////////////////////////////////////// +group { + name: "elm/genlist/item/1text.custom/default"; + alias: "elm/genlist/item_odd/1text.custom/default"; + alias: "elm/genlist/item_compress/1text.custom/default"; + alias: "elm/genlist/item_compress_odd/itext.custom/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "flips" "elm.flip.icon elm.flip.content"; + data.item: "treesize" 26; + data.item: "texts" "elm.text"; + data.item: "contents" "elm.icon.edit"; + parts { + part { + name: "base"; + type: RECT; + repeat_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 0 112; + color: 0 0 0 0; // 2nd depth color + //color: 153 176 195 255; // 2nd depth color + } + } + + part { + name: "bg_image"; + type: RECT; + clip_to: "disclip"; + mouse_events: 0; + description { + state: "default" 0.0; + color: 0 0 0 0; + //color: 153 176 195 255; + } + description { + state: "selected" 0.0; + color: 42 137 194 255; + } + } + + part { + name: "bottom_line"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 1; + color: 169 169 169 255; + rel1 { + relative: 0.0 1.0; + offset: 0 -1; + } + } + } + part { + name: "elm.padding.top"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 16; + fixed: 0 1; + visible: 0; + rel2.relative: 1.0 0.0; + align: 0.0 0.0; + } + } + part { + name: "elm.padding.bottom"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 1; + fixed: 0 1; + visible: 0; + rel1.relative: 0.0 1.0; + align: 0.0 1.0; + } + } + part { + name: "elm.padding.left"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 16 0; + fixed: 1 0; + visible: 0; + rel2.relative: 0.0 1.0; + align: 0.0 0.0; + } + } + part { + name: "elm.padding.right"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 0; //16 0; + fixed: 1 0; + visible: 0; + rel1.relative: 1.0 0.0; + align: 1.0 0.0; + } + } + + part { + name: "elm.text"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 61; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + color: 0 0 0 255; + text { + font: "SLP:style=Roman"; + size: 44; + min: 0 1; + align: 0.0 0.5; + text_class: "list_item"; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: 249 249 249 255; + } + description { + state: "flip_enabled" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { + name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text"; + } + program { + name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { + name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_1TEXT + } +} group { name: "elm/genlist/item/2text.1icon.2.custom/default"; alias: "elm/genlist/item_odd/2text.1icon.2.custom/default"; diff --git a/common/data/msg_image_macro.edc b/common/data/msg_image_macro.edc new file mode 100644 index 0000000..daf298e --- /dev/null +++ b/common/data/msg_image_macro.edc @@ -0,0 +1,31 @@ +#define RESOURCE_IMAGE( FILE_NAME ) \ + group { \ + name: FILE_NAME; \ + images.image: FILE_NAME COMP; \ + parts { \ + part { name: "image"; \ + description { \ + state: "default" 0.0; \ + image.normal: FILE_NAME; \ + aspect: 1 1; \ + aspect_preference: BOTH; \ + } \ + } \ + } \ + } + +#define RESOURCE_IMAGE_LOSSY( FILE_NAME ) \ + group { \ + name: FILE_NAME; \ + images.image: FILE_NAME LOSSY 85; \ + parts { \ + part { name: "image"; \ + description { \ + state: "default" 0.0; \ + image.normal: FILE_NAME; \ + aspect: 1 1; \ + aspect_preference: BOTH; \ + } \ + } \ + } \ + } diff --git a/common/data/msg_images.edc b/common/data/msg_images.edc new file mode 100755 index 0000000..0cfd9f8 --- /dev/null +++ b/common/data/msg_images.edc @@ -0,0 +1,59 @@ +#include "msg_image_macro.edc" + +collections { + RESOURCE_IMAGE("01_controllbar_icon_add_to_contact.png"); + RESOURCE_IMAGE("01_header_icon_cancel.png"); + RESOURCE_IMAGE("01_header_icon_done.png"); + RESOURCE_IMAGE("60_myfiles_file_etc.png"); + RESOURCE_IMAGE("attach_icon.png"); + RESOURCE_IMAGE("M01_btn_delete.png"); + RESOURCE_IMAGE("M01_btn_delete_press.png"); + RESOURCE_IMAGE("M01_btn_message_send.png"); + RESOURCE_IMAGE("M01_btn_message_send_dim.png"); + RESOURCE_IMAGE("M01_btn_mms_message_send.png"); + RESOURCE_IMAGE("M01_btn_mms_message_send_dim.png"); + RESOURCE_IMAGE("M01_btn_scheduled_message_send.png"); + RESOURCE_IMAGE("M01_btn_scheduled_message_send_dim.png"); + RESOURCE_IMAGE("M01_icon_attach_voice.png"); + RESOURCE_IMAGE("M01_icon_block.png"); + RESOURCE_IMAGE("M01_icon_broadcasting.png"); + RESOURCE_IMAGE("M01_icon_DRM_64x64.png"); + RESOURCE_IMAGE("M01_icon_message_status_mms_read_n.png"); + RESOURCE_IMAGE("M01_icon_message_status_mms_sent_n.png"); + RESOURCE_IMAGE("M01_icon_message_status_mms_unread_n.png"); + RESOURCE_IMAGE("M01_icon_message_status_sms_read_n.png"); + RESOURCE_IMAGE("M01_icon_message_status_sms_sent_n.png"); + RESOURCE_IMAGE("M01_icon_message_status_sms_unread_n.png"); + RESOURCE_IMAGE("M01_icon_OTA.png"); + RESOURCE_IMAGE("M01_icon_Push.png"); + RESOURCE_IMAGE("M01_icon_save.png"); + RESOURCE_IMAGE("M01_icon_SOS.png"); + RESOURCE_IMAGE("M01_icon_unblock.png"); + RESOURCE_IMAGE("M01_icon_video_call.png"); + RESOURCE_IMAGE("M01_icon_view_contact.png"); + RESOURCE_IMAGE("M01_icon_voice_call.png"); + RESOURCE_IMAGE("M01_photo_btn_delete.png"); + RESOURCE_IMAGE("M01_photo_btn_delete_press.png"); + RESOURCE_IMAGE("myfile_icon_etc.png"); + RESOURCE_IMAGE("myfile_icon_excel.png"); + RESOURCE_IMAGE("myfile_icon_html.png"); + RESOURCE_IMAGE("myfile_icon_images.png"); + RESOURCE_IMAGE("myfile_icon_java.png"); + RESOURCE_IMAGE("myfile_icon_music.png"); + RESOURCE_IMAGE("myfile_icon_pdf.png"); + RESOURCE_IMAGE("myfile_icon_ppt.png"); + RESOURCE_IMAGE("myfile_icon_rss.png"); + RESOURCE_IMAGE("myfile_icon_svg.png"); + RESOURCE_IMAGE("myfile_icon_swf.png"); + RESOURCE_IMAGE("myfile_icon_text.png"); + RESOURCE_IMAGE("myfile_icon_video.png"); + RESOURCE_IMAGE("myfile_icon_word.png"); + RESOURCE_IMAGE("M01_icon_Unsupported.png"); + RESOURCE_IMAGE("M01_icon_DRM.png"); + RESOURCE_IMAGE("M01_title_icon_compose.png"); + RESOURCE_IMAGE("M01_title_icon_search.png"); + RESOURCE_IMAGE("M01_title_icon_search_dim.png"); + RESOURCE_IMAGE("M01_title_icon_attach.png"); + RESOURCE_IMAGE("M01_title_icon_attach_dim.png"); + RESOURCE_IMAGE("M01_contact_default_image.png"); +} diff --git a/common/msg-ui-bundle.h b/common/msg-ui-bundle.h index 69e32fa..f35fb7f 100755 --- a/common/msg-ui-bundle.h +++ b/common/msg-ui-bundle.h @@ -37,12 +37,9 @@ #define MSG_BUNDLE_KEY_ATTACHFILE "ATTACHFILE" #define MSG_BUNDLE_KEY_SUBJECT "SUBJECT" #define MSG_BUNDLE_KEY_BODY "BODY" -#define MSG_BUNDLE_KEY_RESEND "RESEND" -#define MSG_BUNDLE_KEY_DELETE_MSG "delete_msg" #define MSG_BUNDLE_KEY_RECIPIENT "recipient" #define MSG_BUNDLE_KEY_NUMBER_INDEX "number/index" #define MSG_BUNDLE_KEY_INDEX "index" -#define MSG_BUNDLE_KEY_REFRESH_CONV "refresh_conv" #define MSG_BUNDLE_KEY_MESSAGE_BOX "messagebox" #define MSG_BUNDLE_KEY_INDICATOR_MODE "indicator_mode" @@ -85,6 +82,13 @@ #define MSG_BUNDLE_KEY_DRMTYPE "drm_type" #define MSG_BUNDLE_KEY_SYSPOPUP_CONTENT "_SYSPOPUP_CONTENT_" +/* contact bundle key */ +#define MSG_CT_UG_BUNDLE_TYPE "type" +#define MSG_CT_UG_BUNDLE_MAX "ct_max" +#define MSG_CT_UG_BUNDLE_EMAIL "ct_email" +#define MSG_CT_UG_BUNDLE_NUM "ct_num" +#define MSG_CT_UG_BUNDLE_ID "person_id" + /* Bundle value name */ #define MSG_BUNDLE_VALUE_COMPOSE "compose" #define MSG_BUNDLE_VALUE_SMS_URI "sms" @@ -95,6 +99,10 @@ #define MSG_BUNDLE_VALUE_INTERNAL "internal" #define MSG_BUNDLE_VALUE_EDIT "edit" #define MSG_BUNDLE_VALUE_FORWARD "forward" +#define MSG_BUNDLE_VALUE_RESEND "resend" +#define MSG_BUNDLE_VALUE_REPLY "reply" +#define MSG_BUNDLE_VALUE_DELETE_MSG "delete_msg" +#define MSG_BUNDLE_VALUE_REFRESH_CONV "refresh_conv" #define MSG_BUNDLE_VALUE_NORMAL "normal" #define MSG_BUNDLE_VALUE_IMAGE "IMAGE" @@ -150,5 +158,19 @@ #define MSG_BUNDLE_VALUE_INDICATOR "indicator" #define MSG_BUNDLE_VALUE_NO_INDICATOR "no_indicator" +/* contact bundle value */ +#define MSG_CT_UG_REQUEST_DETAIL 0 +#define MSG_CT_UG_REQUEST_SELECT_CONTACT 11 +#define MSG_CT_UG_REQUEST_SELECT_NUMBER 12 +#define MSG_CT_UG_REQUEST_UPDATE_WITH_NUM 21 +#define MSG_CT_UG_REQUEST_UPDATE_WITH_EMAIL 22 +#define MSG_CT_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL 34 + + +/* contact result */ +#define MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID "num_id" +#define MSG_CT_UG_BUNDLE_RESULT_NUMBER_ID_LIST "num_id_list" +#define MSG_CT_UG_BUNDLE_RESULT_EMAIL_ID_LIST "email_id_list" + #endif /* __MSG_BUNDLE_H__ */ diff --git a/common/msg-ui-common-utility.c b/common/msg-ui-common-utility.c index df95b24..40f8893 100755 --- a/common/msg-ui-common-utility.c +++ b/common/msg-ui-common-utility.c @@ -21,6 +21,8 @@ #include #include #include +#include +#include /* for i18n */ #include @@ -56,6 +58,18 @@ static char *icon_array[MSG_APP_FILE_TYPE_MAX] = { [MSG_APP_FILE_TYPE_ETC] = MSG_COMMON_FILE_ETC_ICON, }; +typedef struct { + int status; + time_t time; +} MSG_DETAIL_REPORT_STRUCT; + +typedef struct { + char address[MAX_ADDRESS_VAL_LEN+1]; + MSG_DETAIL_REPORT_STRUCT delivery; + MSG_DETAIL_REPORT_STRUCT read; +} MSG_DETAIL_REPORT_LIST_S; + + /*========================== * FUNCTION IMPLEMENTATIONS *========================== */ @@ -87,8 +101,9 @@ int msg_common_get_timeformat() char *msg_common_get_date_best_pattern(const char* locale, char* skeleton) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, locale == NULL || skeleton == NULL, NULL); + D_ENTER; + D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL"); + D_MSG_RETVM_IF(skeleton == NULL, NULL, "skeleton is NULL"); UErrorCode status = U_ZERO_ERROR; UDateTimePatternGenerator *generator = NULL; @@ -118,14 +133,15 @@ char *msg_common_get_date_best_pattern(const char* locale, char* skeleton) udatpg_close(generator); - MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG); + D_LEAVE; return strdup(bestPatternString); } char *msg_common_get_formatted_date(const char* locale, char* bestPattern, void *time) { - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, locale == NULL || bestPattern == NULL || time == NULL, NULL); + D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL"); + D_MSG_RETVM_IF(bestPattern == NULL, NULL, "bestPattern is NULL"); UErrorCode status = U_ZERO_ERROR; UDate date; @@ -147,8 +163,9 @@ char *msg_common_get_formatted_date(const char* locale, char* bestPattern, void if (time) { time_t msg_time = *(time_t *) time; date = (UDate) msg_time * 1000; /* Equivalent to Date = ucal_getNow() in Milliseconds */ - } else + } else { date = ucal_getNow(); + } date_format = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, uBestPattern, -1, &status); formattedCapacity = MSG_COMMON_MAX_UCHAR_PATTERN_LEN; @@ -164,9 +181,9 @@ char *msg_common_get_formatted_date(const char* locale, char* bestPattern, void char *msg_common_get_date_text(const char* locale, char* skeleton, void* time) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, locale == NULL, NULL); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, skeleton == NULL, NULL); + D_ENTER; + D_MSG_RETVM_IF(locale == NULL, NULL, "locale is NULL"); + D_MSG_RETVM_IF(skeleton == NULL, NULL, "skeleton is NULL"); UChar customSkeleton[MSG_COMMON_MAX_UCHAR_PATTERN_LEN + 1] = {0,}; int skeletonLength = 0; @@ -255,16 +272,16 @@ char *msg_common_get_display_date(const char* locale, char* bestPattern, char* y static MSG_BOOL __msg_common_make_normal_markup_text(Eina_Strbuf *markup_text, Eina_Strbuf *font_style, const char *src, int strlen) { - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, markup_text == NULL, FALSE); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, font_style == NULL, FALSE); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src == NULL, FALSE); + D_MSG_RETVM_IF(markup_text == NULL, FALSE, "markup_text is NULL"); + D_MSG_RETVM_IF(font_style == NULL, FALSE, "font_style is NULL"); + D_MSG_RETVM_IF(src == NULL, FALSE, "src is NULL"); char *tmp_body_buf = NULL; tmp_body_buf = (char *) calloc(strlen + 1, sizeof(char)); if (tmp_body_buf) { strncpy(tmp_body_buf, src, strlen); } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "calloc is failed"); + D_EMSG("calloc is failed"); return FALSE; } @@ -277,10 +294,10 @@ static MSG_BOOL __msg_common_make_normal_markup_text(Eina_Strbuf *markup_text, E return TRUE; } -Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fontcolor, char *fontstyle) +Eina_Strbuf *msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, src == NULL, NULL); + D_ENTER; + D_MSG_RETVM_IF(src == NULL, NULL, "src is NULL"); const char *src_text = src; @@ -293,16 +310,16 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon int src_text_len = 0; src_text_len = strlen(src_text); - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "src_text_len : %d", src_text_len); + D_MSG("src_text_len : %d", src_text_len); tmp_buf = (char *) calloc(src_text_len + 1, sizeof(char)); if (tmp_buf == NULL) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "tmp mem alloc is failed!"); + D_EMSG("tmp mem alloc is failed!"); return NULL; } font_buf = eina_strbuf_new(); if (font_buf == NULL) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "font_buf eina_strbuf_new is failed!"); + D_EMSG("font_buf eina_strbuf_new is failed!"); if (tmp_buf) { free(tmp_buf); tmp_buf = NULL; @@ -312,7 +329,7 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon markup_text = eina_strbuf_new(); if (markup_text == NULL) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "markup_text eina_strbuf_new is failed!"); + D_EMSG("markup_text eina_strbuf_new is failed!"); if (tmp_buf) { free(tmp_buf); tmp_buf = NULL; @@ -329,14 +346,9 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon if (fontstyle) eina_strbuf_append_printf(font_buf, "<%s>", fontstyle); -/* - * unsupport font size - * if (fontsize > 0) - * eina_strbuf_append_printf(font_buf, "", fontsize); - */ if (fontcolor) eina_strbuf_append_printf(font_buf, "", fontcolor); - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font_buf : (%s)", eina_strbuf_string_get(font_buf)); + D_MSG("font_buf : (%s)", eina_strbuf_string_get(font_buf)); snprintf(tmp_buf, src_text_len + 1, "%s\n", (char *) src_text); @@ -345,15 +357,25 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon int token_len = 0; while (token) { - token_len = strlen(token); + char *tmp_str = elm_entry_utf8_to_markup(token); - if (token[token_len - 1] == 0x0D) { /* if Enter is added via Window system, CR+LF is added. */ - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "CR length is decreased"); + if (!tmp_str) { + D_EMSG("elm_entry_utf8_to_markup() is failed, [%s]. Stop parsing entry text", token); + break; + } + + token_len = strlen(tmp_str); + + if (tmp_str[token_len - 1] == 0x0D) { /* if Enter is added via Window system, CR+LF is added. */ + D_MSG("CR length is decreased"); token_len = token_len - 1; } - if (!__msg_common_make_normal_markup_text(markup_text, font_buf, token, token_len)) - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "__msg_common_make_normal_markup_text is failed"); + if (!__msg_common_make_normal_markup_text(markup_text, font_buf, tmp_str, token_len)) + D_MSG("__msg_common_make_normal_markup_text is failed"); + + if (tmp_str) + free(tmp_str); token = strtok_r(NULL, "\n", &remained_string); if (token) @@ -378,8 +400,8 @@ Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fon MSG_BOOL msg_common_is_valid_phone_number(const char *address) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, address == NULL, FALSE, "address is NULL"); + D_ENTER; + D_MSG_RETVM_IF(address == NULL, FALSE, "address is NULL"); int addr_len = 0; addr_len = strlen(address); @@ -403,40 +425,40 @@ MSG_BOOL msg_common_is_valid_phone_number(const char *address) return TRUE; } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "invalid address length [%d]", addr_len); + D_MSG("invalid address length [%d]", addr_len); return FALSE; } } MSG_BOOL msg_common_is_valid_email_addr(const char *address) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, address == NULL, FALSE, "address is NULL"); + D_ENTER; + D_MSG_RETVM_IF(address == NULL, FALSE, "address is NULL"); char *token1 = NULL; char *token2 = NULL; - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address = %s", address); + D_MSG("address = %s", address); token1 = strchr(address, '@'); if (!token1) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address has no @"); - return FALSE; - } + D_EMSG("address has no @"); + return FALSE; + } if (strchr(&token1[1], '@')) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address cannot have two more @"); - return FALSE; - } + D_EMSG("address cannot have two more @"); + return FALSE; + } token2 = strchr(token1, '.'); if (!token2) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "there's no . character"); + D_EMSG("there's no . character"); return FALSE; - } + } if ((token2 == token1 + 1) || (*(token2 + 1) == '\0')) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "address type should be \'xxx.xxx\'"); + D_EMSG("address type should be \'xxx.xxx\'"); return FALSE; } @@ -450,7 +472,7 @@ MSG_BOOL msg_common_is_connected_call(void) if (vconf_get_int(VCONFKEY_CALL_STATE, &call_status) < 0) return FALSE; - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "call_status = %d", call_status); + D_MSG("call_status = %d", call_status); if (call_status != VCONFKEY_CALL_OFF) return TRUE; @@ -465,7 +487,7 @@ MSG_BOOL msg_common_is_sim_inserted(void) if (vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &sim_slot_status) < 0) return FALSE; - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "sim_slot_status = %d", sim_slot_status); + D_MSG("sim_slot_status = %d", sim_slot_status); if (sim_slot_status == VCONFKEY_TELEPHONY_SIM_INSERTED) return TRUE; @@ -473,39 +495,21 @@ MSG_BOOL msg_common_is_sim_inserted(void) return FALSE; } -MSG_BOOL msg_common_get_font_size(int *index, int *font_size) +MSG_BOOL msg_common_get_font_size(int *index) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, index == NULL, FALSE); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, font_size == NULL, FALSE); + D_ENTER; + D_MSG_RETVM_IF(index == NULL, FALSE, "font_size is NULL"); if (vconf_get_int(VCONFKEY_MSG_APP_FONT_SIZE, index) < 0) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_get_int(font_size) is failed !!"); + D_EMSG("vconf_get_int(font_size) is failed !!"); return FALSE; - } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", *index); } - switch (*index) { - case MSG_APP_FONT_SIZE_INDEX_GIANT : - *font_size = MSG_APP_FONT_SIZE_GIANT; - break; - case MSG_APP_FONT_SIZE_INDEX_HUGE : - *font_size = MSG_APP_FONT_SIZE_HUGE; - break; - case MSG_APP_FONT_SIZE_INDEX_LARGE : - *font_size = MSG_APP_FONT_SIZE_LARGE; - break; - case MSG_APP_FONT_SIZE_INDEX_NORMAL : - *font_size = MSG_APP_FONT_SIZE_NORMAL; - break; - case MSG_APP_FONT_SIZE_INDEX_SMALL : - *font_size = MSG_APP_FONT_SIZE_SMALL; - break; - case MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT : - default : - *font_size = MSG_APP_FONT_SIZE_NORMAL; - break; + if (*index < MSG_APP_FONT_SIZE_INDEX_SMALL || *index >= MSG_APP_FONT_SIZE_INDEX_MAX) { + D_EMSG("invalid index = %d", *index); + return FALSE; + } else { + D_MSG("index = %d", *index); } return TRUE; @@ -513,18 +517,17 @@ MSG_BOOL msg_common_get_font_size(int *index, int *font_size) MSG_BOOL msg_common_set_font_size(int index) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); + D_ENTER; - if (index < MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT || - index >= MSG_APP_FONT_SIZE_INDEX_MAX) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "invalid index = %d", index); + if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) { + D_EMSG("invalid index = %d", index); return FALSE; } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", index); + D_MSG("index = %d", index); } if (vconf_set_int(VCONFKEY_MSG_APP_FONT_SIZE, index) < 0) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_set_int(font_size) is failed !!"); + D_EMSG("vconf_set_int(font_size) is failed !!"); return FALSE; } @@ -533,15 +536,15 @@ MSG_BOOL msg_common_set_font_size(int index) MSG_BOOL msg_common_increase_font_size() { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); + D_ENTER; int index = -1; int increase = -1; if (vconf_get_int(VCONFKEY_MSG_APP_FONT_SIZE, &index) < 0) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_get_int(font_size) is failed !!"); + D_EMSG("vconf_get_int(font_size) is failed !!"); return FALSE; } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size = %d", index); + D_MSG("index = %d", index); } switch (index) { @@ -560,26 +563,30 @@ MSG_BOOL msg_common_increase_font_size() increase = MSG_APP_FONT_SIZE_INDEX_NORMAL; break; default : - increase = MSG_APP_FONT_SIZE_NORMAL; + increase = MSG_APP_FONT_SIZE_INDEX_NORMAL; break; } - if (increase != -1) - msg_common_set_font_size(increase); + if (increase != -1) { + if (msg_common_set_font_size(increase) == FALSE) { + D_EMSG("msg_common_set_font_size is failed"); + return FALSE; + } + } return TRUE; } MSG_BOOL msg_common_decrease_font_size() { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); + D_ENTER; int index = -1; int decrease = -1; if (vconf_get_int(VCONFKEY_MSG_APP_FONT_SIZE, &index) < 0) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "vconf_get_int(font_size) is failed !!"); + D_EMSG("vconf_get_int(font_size) is failed !!"); return FALSE; } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font size = %d", index); + D_MSG("index = %d", index); } switch (index) { @@ -598,53 +605,171 @@ MSG_BOOL msg_common_decrease_font_size() case MSG_APP_FONT_SIZE_INDEX_SMALL : break; default : - decrease = MSG_APP_FONT_SIZE_NORMAL; + decrease = MSG_APP_FONT_SIZE_INDEX_NORMAL; break; } - if (decrease != -1) - msg_common_set_font_size(decrease); + if (decrease != -1) { + if (msg_common_set_font_size(decrease) == FALSE) { + D_EMSG("msg_common_set_font_size is failed"); + return FALSE; + } + } return TRUE; } +int msg_common_get_font_size_from_index(int index) +{ + D_ENTER; + + if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) { + D_EMSG("invalid index = %d", index); + return -1; + } else { + D_MSG("index = %d", index); + } + int font_size = 0; + + switch (index) { + case MSG_APP_FONT_SIZE_INDEX_SMALL : + font_size = MSG_APP_FONT_SIZE_SMALL; + break; + case MSG_APP_FONT_SIZE_INDEX_NORMAL : + font_size = MSG_APP_FONT_SIZE_NORMAL; + break; + case MSG_APP_FONT_SIZE_INDEX_LARGE : + font_size = MSG_APP_FONT_SIZE_LARGE; + break; + case MSG_APP_FONT_SIZE_INDEX_HUGE : + font_size = MSG_APP_FONT_SIZE_HUGE; + break; + case MSG_APP_FONT_SIZE_INDEX_GIANT : + font_size = MSG_APP_FONT_SIZE_GIANT; + break; + default : + font_size = MSG_APP_FONT_SIZE_NORMAL; + break; + } + + return font_size; +} + + +int msg_common_get_index_from_font_size(int font_size) +{ + D_ENTER; + + if (font_size < MSG_APP_FONT_SIZE_SMALL || font_size >= MSG_APP_FONT_SIZE_MAX) { + D_EMSG("invalid font_size = %d", font_size); + return -1; + } else { + D_MSG("font_size = %d", font_size); + } + int index = 0; + + switch (font_size) { + case MSG_APP_FONT_SIZE_SMALL : + index = MSG_APP_FONT_SIZE_INDEX_SMALL; + break; + case MSG_APP_FONT_SIZE_NORMAL : + index = MSG_APP_FONT_SIZE_INDEX_NORMAL; + break; + case MSG_APP_FONT_SIZE_LARGE : + index = MSG_APP_FONT_SIZE_INDEX_LARGE; + break; + case MSG_APP_FONT_SIZE_HUGE : + index = MSG_APP_FONT_SIZE_INDEX_HUGE; + break; + case MSG_APP_FONT_SIZE_GIANT : + index = MSG_APP_FONT_SIZE_INDEX_GIANT; + break; + default : + index = MSG_APP_FONT_SIZE_INDEX_NORMAL; + break; + } + + return index; +} + +MSG_BOOL msg_common_get_access_font_size(int *index) +{ + D_ENTER; + D_MSG_RETVM_IF(index == NULL, FALSE, "index is NULL"); + + if (vconf_get_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE, index) < 0) { + D_EMSG("vconf_get_int(font_size) is failed !!"); + return FALSE; + } + + if (*index < MSG_APP_FONT_SIZE_INDEX_SMALL || *index >= MSG_APP_FONT_SIZE_INDEX_MAX) { + D_EMSG("invalid index = %d", *index); + return FALSE; + } else { + D_MSG("index = %d", *index); + } + + return TRUE; +} + +MSG_BOOL msg_common_set_access_font_size(int index) +{ + D_ENTER; + + if (index < MSG_APP_FONT_SIZE_INDEX_SMALL || index >= MSG_APP_FONT_SIZE_INDEX_MAX) { + D_EMSG("invalid index = %d", index); + return FALSE; + } else { + D_MSG("index = %d", index); + } + + if (vconf_set_int(VCONFKEY_MSG_APP_ACCESS_FONT_SIZE, index) < 0) { + D_EMSG("vconf_set_int(font_size) is failed !!"); + return FALSE; + } + + return TRUE; +} + MSG_BOOL msg_common_apply_font_size(const char *widget_name, Evas_Object *obj) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, widget_name == NULL, FALSE); - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, obj == NULL, FALSE); + D_ENTER; + D_MSG_RETVM_IF(widget_name == NULL, FALSE, "widget_name is NULL"); + D_MSG_RETVM_IF(obj == NULL, FALSE, "obj is NULL"); int index = 0; int font_size = 0; Evas_Font_Size font_size_scale = 0; - if (msg_common_get_font_size(&index, &font_size) != TRUE) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_common_get_font_size() is failed !!"); + if (msg_common_get_font_size(&index) != TRUE) { + D_EMSG("msg_common_get_font_size() is failed !!"); return FALSE; } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "selected index = %d", index); + D_MSG("selected index = %d", index); } - if (index == MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT) { - edje_text_class_del(widget_name); - } else { - /* Calculate the scale factor */ - font_size_scale -= (font_size * 100) / MSG_APP_FONT_SIZE_NORMAL; + font_size = msg_common_get_font_size_from_index(index); + if (font_size == -1) { + D_EMSG("msg_common_get_font_size_from_index() is failed !!"); + return FALSE; + } - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "font_size = %d, font_size_scale = %d", font_size, font_size_scale); + /* Calculate the scale factor */ + font_size_scale -= (font_size * 100) / MSG_APP_FONT_SIZE_NORMAL; - edje_text_class_del(widget_name); - edje_text_class_set(widget_name, NULL, font_size_scale); - elm_widget_theme_specific(obj, NULL, EINA_TRUE); - } + D_MSG("font_size = %d, font_size_scale = %d", font_size, font_size_scale); + + edje_text_class_del(widget_name); + edje_text_class_set(widget_name, NULL, font_size_scale); + elm_widget_theme_specific(obj, NULL, EINA_TRUE); return TRUE; } void msg_common_reset_font_size(const char *widget_name) { - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, widget_name == NULL); + D_ENTER; + D_MSG_RETM_IF(widget_name == NULL, "widget_name is NULL"); edje_text_class_del(widget_name); @@ -969,7 +1094,7 @@ static MSG_APP_FILE_TYPE_E __msg_common_get_file_type_by_file_ext(const char *fi const char *__msg_common_get_file_icon_by_file_type(MSG_APP_FILE_TYPE_E file_type) { const char *icon_path = MSG_COMMON_FILE_ETC_ICON; - if (file_type < MSG_APP_FILE_TYPE_NONE || file_type > MSG_APP_FILE_TYPE_MAX) { + if (file_type <= MSG_APP_FILE_TYPE_NONE || file_type >= MSG_APP_FILE_TYPE_MAX) { D_EMSG("Invalid file_type!! file_type = %d", file_type); return NULL; } @@ -1026,8 +1151,8 @@ int msg_common_add_block_number(msg_handle_t msgHandle, const char *address) int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address) { D_ENTER; - - MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !msgHandle || !address, false); + D_MSG_RETVM_IF(!msgHandle, FALSE, "msgHandle is NULL"); + D_MSG_RETVM_IF(!address, FALSE, "address is NULL"); msg_struct_list_s filter_list = {0,}; msg_error_t err = MSG_SUCCESS; @@ -1071,7 +1196,8 @@ int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address) int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, bool *result) { D_ENTER; - MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, !msgHandle || !address, FALSE, "NULL_POINTER"); + D_MSG_RETVM_IF(!msgHandle, FALSE, "msgHandle is NULL"); + D_MSG_RETVM_IF(!address, FALSE, "address is NULL"); msg_struct_list_s filter_list = {0,}; msg_error_t err = MSG_SUCCESS; @@ -1108,3 +1234,471 @@ int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, b return err; } +/********************* +* [SMS] +* [sent / outbox] +* 1. Type: +* 2. To: +* 3. sent time: +* 4. delivery report +* 5. Status: +* +* [inbox] +* 1. Type: +* 2. From +* 3. Received time: +* +* [MMS notification] +* 1. Type: +* 2. From: +* 3: Expire: +* 4. Subject: +* 5. Message size: KB +* +* [MMS] +* [ For sent/outbox msg] +* 1. Type: +* 2. To: +* 3. Sent time: +* 4. Subject: +* 5. Message size: +* 6. Delivery report: +* 7. Read report: +* +* [For inbox msg] +* 1. Type: +* 2. From: +* 3. Received time: +* 4. Subject: +* 5. Message size: KB +**********************/ + +char *msg_common_make_message_detail_text(msg_handle_t msgHandle, int msgId) +{ + msg_error_t err = MSG_SUCCESS; + int msg_type = MSG_TYPE_INVALID; + int folder_id = MSG_MAX_FOLDER_ID; + int thread_id = 0; + int contact_id = 0; + int timeformat = 0; + bool delivery_flag = false; + bool read_flag = false; + char addr_value[MAX_ADDRESS_VAL_LEN+1] = {0,}; + char name[MAX_DISPLAY_NAME_LEN]= {0,}; + + msg_struct_list_s addrList = {0,}; + msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO); + msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT); + + /** Get message **/ + err = msg_get_message(msgHandle, msgId, msgInfo, sendOpt); + if (err != MSG_SUCCESS) { + D_EMSG("msg_get_message has failed"); + msg_release_struct(&msgInfo); + msg_release_struct(&sendOpt); + return NULL; + } + + msg_get_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, &msg_type); + msg_get_int_value(msgInfo, MSG_MESSAGE_FOLDER_ID_INT, &folder_id); + msg_get_int_value(msgInfo, MSG_MESSAGE_THREAD_ID_INT, &thread_id); + + /** Get address list **/ + err = msg_get_address_list(msgHandle, thread_id, &addrList); + if (err != MSG_SUCCESS) { + D_EMSG("msg_get_message has failed"); + msg_release_struct(&msgInfo); + msg_release_struct(&sendOpt); + return NULL; + } + + /* create str buf */ + Eina_Strbuf *text_data = eina_strbuf_new(); + + /* set font size */ + eina_strbuf_append(text_data, ""); + + + /*** Type ***/ + eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_DETAILS_TYPE")); + eina_strbuf_append(text_data, ": "); + + if (msg_type == MSG_TYPE_MMS) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE")); + } else if (msg_type == MSG_TYPE_MMS_NOTI) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MULTIMEDIA_MESSAGE_NOTIFICATION")); + } else if (msg_type == MSG_TYPE_SMS) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_TEXT_MESSAGE")); + } else { + D_EMSG("invalid msg type!"); + msg_release_struct(&msgInfo); + msg_release_struct(&sendOpt); + + eina_strbuf_free(text_data); + return NULL; + } + eina_strbuf_append(text_data, "
"); + + /*** From / To ***/ + if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_OPT_CHANGE_RECIPIENTS_TO")); + eina_strbuf_append(text_data, ": "); + } else if (folder_id == MSG_INBOX_ID) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_FROM")); + eina_strbuf_append(text_data, ": "); + } else { + D_EMSG("invalid msg type!"); + msg_release_struct(&msgInfo); + msg_release_struct(&sendOpt); + + eina_strbuf_free(text_data); + return NULL; + } + + int index = 0; + for (index = 0; index < addrList.nCount; index ++) { + bzero(name, sizeof(name)); + bzero(addr_value, sizeof(addr_value)); + + msg_get_int_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_CONTACT_ID_INT, &contact_id); + msg_get_str_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_DISPLAYNAME_STR, name, MAX_DISPLAY_NAME_LEN); + msg_get_str_value(addrList.msg_struct_info[index], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN); + + if (name[0] != '\0') { + eina_strbuf_append(text_data, name); + eina_strbuf_append(text_data, "("); + eina_strbuf_append(text_data, addr_value); + eina_strbuf_append(text_data, ")"); + } else { + eina_strbuf_append(text_data, addr_value); + } + if (index != addrList.nCount-1) + eina_strbuf_append(text_data, ", "); + } + eina_strbuf_append(text_data, "
"); + + /*** Sent / Received / Expire Time ***/ + timeformat = msg_common_get_timeformat(); + + if (msg_type == MSG_TYPE_MMS_NOTI) { + msg_struct_t mmsSendOpt = NULL; + int expiry_time; + char *str_time = NULL; + + char msg[DEF_BUF_LEN] = {0,}; + const char *expire_str = dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_EXPIRES_C_PS"); + + msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mmsSendOpt); + msg_get_int_value(mmsSendOpt, MSG_MMS_SENDOPTION_EXPIRY_TIME_INT, &expiry_time); + + if (timeformat == MSG_TIME_FORMAT_24H) + str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM y", &expiry_time); + else + str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM y", &expiry_time); + + snprintf(msg, sizeof(msg), expire_str, str_time); + eina_strbuf_append(text_data, msg); + } else { + if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MMSNOTIMSGSTATUSSENT")); + } else if (folder_id == MSG_INBOX_ID) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_RECEIVED")); + } + eina_strbuf_append(text_data, ": "); + + int dptime = 0; + msg_get_int_value(msgInfo, MSG_MESSAGE_DISPLAY_TIME_INT, &dptime); + + char *str_time = NULL; + if (timeformat == MSG_TIME_FORMAT_24H) + str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM y", &dptime); + else + str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM y", &dptime); + eina_strbuf_append(text_data, str_time); + } + + /*line change*/ + eina_strbuf_append(text_data, "
"); + + if (msg_type == MSG_TYPE_SMS) { /*** SMS ***/ + int status; + + switch (folder_id) { + case MSG_SENTBOX_ID: + case MSG_OUTBOX_ID: + /** delivery report */ + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_DELIVERY_REPORT")); + eina_strbuf_append(text_data, ": "); + // get delivery report setting value + msg_get_bool_value(sendOpt, MSG_SEND_OPT_DELIVER_REQ_BOOL, &delivery_flag); + + if (delivery_flag) { + eina_strbuf_append(text_data, "
"); + // report status + msg_struct_list_s report_list = {0,}; + err = msg_get_report_status(msgHandle, msgId, &report_list); + + int i = 0; + int j = 0; + + if (report_list.nCount != 0) { + msg_struct_t report = NULL; + int type; + int status; + time_t time; + char address[MAX_ADDRESS_VAL_LEN+1] = {0,}; + + + for (i=0; i < addrList.nCount; i++) { + bool report_found = false; + + bzero(addr_value, sizeof(addr_value)); + bzero(address, sizeof(address)); + msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN); + + eina_strbuf_append(text_data, addr_value); + eina_strbuf_append(text_data, " - "); + + for (j=0; j"); + } + } else { + for (i=0; i < addrList.nCount; i++) { + bzero(addr_value, sizeof(addr_value)); + msg_get_str_value(addrList.msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, addr_value, MAX_ADDRESS_VAL_LEN); + eina_strbuf_append(text_data, addr_value); + eina_strbuf_append(text_data, " - "); + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED")); + eina_strbuf_append(text_data, "
"); + } + } + + msg_release_list_struct(&report_list); + } else { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED")); + } + + eina_strbuf_append(text_data, "
"); + + /** status **/ + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_STATUS")); + eina_strbuf_append(text_data, ": "); + msg_get_int_value(msgInfo, MSG_MESSAGE_NETWORK_STATUS_INT, &status); + if (status == MSG_NETWORK_SENDING) + eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENDING")); + else if (status == MSG_NETWORK_SEND_SUCCESS) + eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENT")); + else if (status == MSG_NETWORK_SEND_FAIL) + eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_SENDING_FAILED")); + + eina_strbuf_append(text_data, "
"); + break; + default: + break; + } + } else if (msg_type == MSG_TYPE_MMS || msg_type == MSG_TYPE_MMS_NOTI) { /*** MMS ***/ + /** subject **/ + char subject[DEF_BUF_LEN_S] = {0,}; + eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_BODY_SUBJECT")); + eina_strbuf_append(text_data, ": "); + msg_get_str_value(msgInfo, MSG_MESSAGE_SUBJECT_STR, subject, sizeof(subject)); + if (subject[0] != '\0') + eina_strbuf_append(text_data, subject); + else + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_UNTITLED_M_MMS")); + eina_strbuf_append(text_data, "
"); + + /** messae size **/ + int msgSize = 0; + int sizeKB = 0; + char strSize[DEF_BUF_LEN_D] = {0,}; + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MESSAGE_SIZE")); + eina_strbuf_append(text_data, ": "); + msg_get_int_value(msgInfo, MSG_MESSAGE_DATA_SIZE_INT, &msgSize); + + sizeKB = msgSize/1024; + if (msgSize%1024 > 512) + sizeKB++; + snprintf(strSize, sizeof(strSize), "%d%s", sizeKB, dgettext(MESSAGE_PKGNAME, "KB")); + eina_strbuf_append(text_data, strSize); + eina_strbuf_append(text_data, "
"); + + if (folder_id == MSG_SENTBOX_ID || folder_id == MSG_OUTBOX_ID) { + msg_struct_list_s report_list = {0,}; + MSG_DETAIL_REPORT_LIST_S *report_data_list = NULL; + msg_struct_t mms_send_opt = NULL; + msg_get_struct_handle(sendOpt, MSG_SEND_OPT_MMS_OPT_HND, &mms_send_opt); + + msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_DELIVERY_REPORT_BOOL, &delivery_flag); + msg_get_bool_value(mms_send_opt, MSG_MMS_SENDOPT_READ_REPLY_BOOL, &read_flag); + + // getting delivery & read report information + if (delivery_flag || read_flag) { + int i; + report_data_list = (MSG_DETAIL_REPORT_LIST_S *)calloc(addrList.nCount, sizeof(MSG_DETAIL_REPORT_LIST_S)); + if (report_data_list == NULL) + D_EMSG("report_list is null"); + + // get report status from FW + msg_get_report_status(msgHandle, msgId, &report_list); + + for (i=0; i"); + } + + } + eina_strbuf_append(text_data, "
"); + + /** read report **/ + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_READ_REPORT")); + eina_strbuf_append(text_data, ": "); + // + if (!read_flag) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGC_BODY_NOT_REQUESTED")); + } else { + int i = 0; + for (i = 0; i < addrList.nCount; i++) { + eina_strbuf_append(text_data, report_data_list[i].address); + eina_strbuf_append(text_data, " - "); + if (report_data_list[i].read.status == MSG_READ_REPORT_NONE) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_REQUESTED")); + } else if (report_data_list[i].read.status == MSG_READ_REPORT_IS_READ) { + eina_strbuf_append(text_data, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_MMSREADREPLYMSGREAD")); + eina_strbuf_append(text_data, " ("); + + char *str_time = NULL; + if (timeformat == MSG_TIME_FORMAT_24H) + str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "HH:mm, d MMM", &(report_data_list[i].read.time)); + else + str_time = msg_common_get_formatted_date(msg_common_get_default_locale(), "hh:mm a, d MMM", &(report_data_list[i].read.time)); + eina_strbuf_append(text_data, str_time); + eina_strbuf_append(text_data, ")"); + } else if (report_data_list[i].read.status == MSG_READ_REPORT_IS_DELETED) { + eina_strbuf_append(text_data, dgettext("sys_string", "IDS_COM_POP_DELETED")); + } + + if (i != addrList.nCount-1) + eina_strbuf_append(text_data, "
"); + } + } + eina_strbuf_append(text_data, "
"); + } + } + + char *str = strdup(eina_strbuf_string_get(text_data)); + + msg_release_list_struct(&addrList); + eina_strbuf_free(text_data); + + msg_release_struct(&msgInfo); + msg_release_struct(&sendOpt); + + return str; +} + diff --git a/common/msg-ui-common-utility.h b/common/msg-ui-common-utility.h index 22ce6b2..54ebf36 100755 --- a/common/msg-ui-common-utility.h +++ b/common/msg-ui-common-utility.h @@ -39,9 +39,12 @@ /* Define vconf key */ #define VCONFKEY_MSG_APP_FONT_SIZE "db/private/org.tizen.message/font_size" +#define VCONFKEY_MSG_APP_ACCESS_FONT_SIZE "db/private/org.tizen.message/accessibility_font_size" #define VCONFKEY_MSG_APP_USE_VOLUME_KEY "db/private/org.tizen.message/use_volume_key" #define MSG_COMMON_EDJ EDJDIR"/msg_common.edj" #define MSG_CUSTOM_WINSET_EDJ EDJDIR"/msg_custom_winset.edj" +#define MSG_IMAGES_EDJ EDJDIR"/msg_images.edj" + /*================================================================================================== ENUMERATIONS @@ -53,19 +56,16 @@ typedef enum { MSG_APP_FONT_SIZE_LARGE = 64, MSG_APP_FONT_SIZE_HUGE = 81, MSG_APP_FONT_SIZE_GIANT = 106, - MSG_APP_FONT_SIZE_MAX } MSG_APP_FONT_SIZE_E; typedef enum { - MSG_APP_FONT_SIZE_INDEX_SYSTEM_FONT, - MSG_APP_FONT_SIZE_INDEX_GIANT, - MSG_APP_FONT_SIZE_INDEX_HUGE, - MSG_APP_FONT_SIZE_INDEX_LARGE, - MSG_APP_FONT_SIZE_INDEX_NORMAL, MSG_APP_FONT_SIZE_INDEX_SMALL, - + MSG_APP_FONT_SIZE_INDEX_NORMAL, + MSG_APP_FONT_SIZE_INDEX_LARGE, + MSG_APP_FONT_SIZE_INDEX_HUGE, + MSG_APP_FONT_SIZE_INDEX_GIANT, MSG_APP_FONT_SIZE_INDEX_MAX } MSG_APP_FONT_SIZE_INDEX_E; @@ -146,17 +146,15 @@ char *msg_common_get_date_text(const char *locale, char *skeleton, void *time); char *msg_common_get_display_date(const char *locale, char *bestPattern, char* yearPattern, time_t *msg_t); /* - *@fn msg_common_get_markup_text(const char *src, int fontsize, char *fontcolor, char *fontstyle); + *@fn msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle); *@brief This function is used to get marked up string from src text. * Caller must free returned string by using eina_strbuf_free(), else memory will be leaked *@return Eina_Strbuf* marked up string on success, else NULL pointer on failure *@param[in] src original text to be displayed - *@param[in] fontsize fontsize to be displayed. If 0 is passed, it is not set *@param[in] fontcolor fontcolor to be displayed. It must be "#ffffff" style. If NULL is passed, it is not set *@param[in] fontstyle fontstyle to be displayed. It must be passed font style like "hilight". If NULL is passed, it is not set */ -Eina_Strbuf *msg_common_get_markup_text(const char *src, int fontsize, char *fontcolor, char *fontstyle); - +Eina_Strbuf *msg_common_get_markup_text(const char *src, char *fontcolor, char *fontstyle); /* *@fn msg_common_is_valid_phone_number(const char *address); *@brief This function is used to check address is valid number or not @@ -207,22 +205,65 @@ char *msg_common_get_formatted_date(const char *locale, char *bestPattern, void MSG_BOOL msg_common_is_sim_inserted(void); /* - *@fn msg_common_get_font_size(int *index, int *font_size); - *@brief This function is used to get the font size. + *@fn msg_common_get_font_size(int *index); + *@brief This function is used to get the index of font size. *@param[in] index index of font size. It is used in message setting. - *@param[in] font_size font size which is used in message app. *@return return TRUE if vconf API is success, else FALSE */ -MSG_BOOL msg_common_get_font_size(int *index, int *font_size); +MSG_BOOL msg_common_get_font_size(int *index); /* - *@fn msg_common_set_font_size(void); - *@brief This function is used to set the font size. + *@fn msg_common_set_font_size(int index); + *@brief This function is used to set the index of font size. *@return return TRUE if vconf API is success, else FALSE */ MSG_BOOL msg_common_set_font_size(int index); /* + *@fn msg_common_increase_font_size(void); + *@brief This function is used to set the increased index of font size. + *@return return TRUE if vconf API is success, else FALSE + */ +MSG_BOOL msg_common_increase_font_size(); + +/* + *@fn msg_common_decrease_font_size(void); + *@brief This function is used to set the decreased index of font size. + *@return return TRUE if vconf API is success, else FALSE + */ +MSG_BOOL msg_common_decrease_font_size(); + +/* + *@fn msg_common_get_index_from_font_size(int font_size); + *@brief This function is used to get index from font size. + *@return return font size, else -1 + */ +int msg_common_get_index_from_font_size(int font_size); + +/* + *@fn msg_common_get_font_size_from_index(int index); + *@brief This function is used to get font size from index. + *@return return index of font size, else -1 + */ +int msg_common_get_font_size_from_index(int index); + +/* + *@fn msg_common_get_access_font_size(int *index); + *@brief This function is used to get the index of accessibility font size. + *@param[in] index index of font size. It is used in message setting. + *@return return TRUE if vconf API is success, else FALSE + */ +MSG_BOOL msg_common_get_access_font_size(int *index); + +/* + *@fn msg_common_set_access_font_size(int index); + *@brief This function is used to set the index of accessibility font size. + *@return return TRUE if vconf API is success, else FALSE + */ +MSG_BOOL msg_common_set_access_font_size(int index); + + +/* *@fn msg_common_apply_font_size(void); *@brief This function is used to change the font size. *@param[in] widget_name The widget name which font size is changed. @@ -282,5 +323,8 @@ int msg_common_delete_block_number(msg_handle_t msgHandle, const char *address); */ int msg_common_check_block_number(msg_handle_t msgHandle, const char *address, bool *result); +char *msg_common_make_message_detail_text(msg_handle_t msgHandle, int msgId); + + #endif diff --git a/common/msg-ui-image-resource.h b/common/msg-ui-image-resource.h index 08f0700..882e584 100755 --- a/common/msg-ui-image-resource.h +++ b/common/msg-ui-image-resource.h @@ -19,74 +19,71 @@ #define __MSG_UI_IMAGE_RESOURCE__ /* viewer image resources */ -#define MSG_VIEWER_IMAGE_PATH IMGDIR - -#define MSG_VIEWER_IMAGE_ATTACH_ICON MSG_VIEWER_IMAGE_PATH"/attach_icon.png" -#define MSG_VIEWER_IMAGE_DRM_ICON MSG_VIEWER_IMAGE_PATH"/M01_icon_DRM.png" -#define MSG_VIEWER_IMAGE_DRM_SMALL_ICON MSG_VIEWER_IMAGE_PATH"/M01_icon_DRM_64x64.png" -#define MSG_VIEWER_IMAGE_UNSUPPORT_ICON MSG_VIEWER_IMAGE_PATH"/M01_icon_Unsupported.png" -#define MSG_VIEWER_IMAGE_SAVE_ICON MSG_VIEWER_IMAGE_PATH"/M01_icon_save.png" +#define MSG_VIEWER_IMAGE_ATTACH_ICON "attach_icon.png" +#define MSG_VIEWER_IMAGE_DRM_SMALL_ICON "M01_icon_DRM_64x64.png" +#define MSG_VIEWER_IMAGE_SAVE_ICON "M01_icon_save.png" +#define MSG_VIEWER_IMAGE_UNSUPPORT_ICON "M01_icon_Unsupported.png" +#define MSG_VIEWER_IMAGE_DRM_ICON "M01_icon_DRM.png" +#define MSG_VIEWER_IMAGE_ATTACH_LIST_ICON "M01_title_icon_attach.png" +#define MSG_VIEWER_IMAGE_ATTACH_LIST_DIM_ICON "M01_title_icon_attach_dim.png" /* composer image resources */ -#define MSGC_UI_IMG_PATH IMGDIR - -#define MSGC_IMG_ATTACHMENT_ICON MSGC_UI_IMG_PATH"/60_myfiles_file_etc.png" -#define MSGC_IMG_ATTACHMENT_DEL_ICON MSGC_UI_IMG_PATH"/M01_btn_delete.png" - -#define MSGC_SMS_SEND_ICON MSGC_UI_IMG_PATH"/M01_btn_message_send.png" -#define MSGC_SMS_SEND_DIM_ICON MSGC_UI_IMG_PATH"/M01_btn_message_send_dim.png" -#define MSGC_MMS_SEND_ICON MSGC_UI_IMG_PATH"/M01_btn_mms_message_send.png" -#define MSGC_MMS_SEND_DIM_ICON MSGC_UI_IMG_PATH"/M01_btn_mms_message_send_dim.png" -#define MSGC_IMG_INSERT_VOICE_ICON MSGC_UI_IMG_PATH"/M01_icon_attach_voice.png" -#define MSGC_IMG_INSERT_ETC_ICON MSGC_UI_IMG_PATH"/60_myfiles_file_etc.png" -#define MSGC_IMG_INSERT_DEL_ICON MSGC_UI_IMG_PATH"/M01_photo_btn_delete.png" -#define MSGC_IMG_INSERT_DEL_PRESS_ICON MSGC_UI_IMG_PATH"/M01_photo_btn_delete_press.png" -#define MSGC_SOUND_INSERT_DEL_ICON MSGC_UI_IMG_PATH"/M01_btn_delete.png" -#define MSGC_IMG_PAGE_DEL_ICON MSGC_UI_IMG_PATH"/M01_btn_delete.png" -#define MSGC_IMG_SUBJECT_DEL_ICON MSGC_UI_IMG_PATH"/M01_btn_delete.png" - -#define MSGC_IMG_DEL_BTN_PRESS_ICON MSGC_UI_IMG_PATH"/M01_btn_delete_press.png" - - -#define MSGC_IMG_CONTACT_BUTTON_ICON MSGC_UI_IMG_PATH"/M01_button_contact.png" +#define MSGC_IMG_ATTACHMENT_ICON "60_myfiles_file_etc.png" +#define MSGC_IMG_ATTACHMENT_DEL_ICON "M01_btn_delete.png" + +#define MSGC_SMS_SEND_ICON "M01_btn_message_send.png" +#define MSGC_SMS_SEND_DIM_ICON "M01_btn_message_send_dim.png" +#define MSGC_MMS_SEND_ICON "M01_btn_mms_message_send.png" +#define MSGC_MMS_SEND_DIM_ICON "M01_btn_mms_message_send_dim.png" +#define MSGC_IMG_INSERT_VOICE_ICON "M01_icon_attach_voice.png" +#define MSGC_IMG_INSERT_ETC_ICON "60_myfiles_file_etc.png" +#define MSGC_IMG_INSERT_DEL_ICON "M01_photo_btn_delete.png" +#define MSGC_IMG_INSERT_DEL_PRESS_ICON "M01_photo_btn_delete_press.png" +#define MSGC_SOUND_INSERT_DEL_ICON "M01_btn_delete.png" +#define MSGC_IMG_PAGE_DEL_ICON "M01_btn_delete.png" +#define MSGC_IMG_SUBJECT_DEL_ICON "M01_btn_delete.png" + +#define MSGC_IMG_DEL_BTN_PRESS_ICON "M01_btn_delete_press.png" +#define MSGC_IMG_CONTACT_BUTTON_ICON "M01_contact_default_image.png" /* thread list image resources */ -#define MSG_UI_THREAD_LIST_PATH IMGDIR - -#define MSG_UI_THREAD_LIST_SOS_ICON MSG_UI_THREAD_LIST_PATH"/M01_icon_SOS.png" -#define MSG_UI_THREAD_LIST_PUSH_ICON MSG_UI_THREAD_LIST_PATH"/M01_icon_Push.png" -#define MSG_UI_THREAD_LIST_OTA_ICON MSG_UI_THREAD_LIST_PATH"/M01_icon_OTA.png" -#define MSG_UI_THREAD_LIST_CB_ICON MSG_UI_THREAD_LIST_PATH"/M01_icon_broadcasting.png" +#define MSG_UI_THREAD_LIST_SOS_ICON "M01_icon_SOS.png" +#define MSG_UI_THREAD_LIST_PUSH_ICON "M01_icon_Push.png" +#define MSG_UI_THREAD_LIST_OTA_ICON "M01_icon_OTA.png" +#define MSG_UI_THREAD_LIST_CB_ICON "M01_icon_broadcasting.png" /* thread list message status icon*/ -#define MSG_UI_THREAD_LIST_STATUS_MMS_READ MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_mms_read_n.png" -#define MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_mms_unread_n.png" -#define MSG_UI_THREAD_LIST_STATUS_MMS_SENT MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_mms_sent_n.png" -#define MSG_UI_THREAD_LIST_STATUS_SMS_READ MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_sms_read_n.png" -#define MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_sms_unread_n.png" -#define MSG_UI_THREAD_LIST_STATUS_SMS_SENT MSG_UI_THREAD_LIST_PATH"/M01_icon_message_status_sms_sent_n.png" +#define MSG_UI_THREAD_LIST_STATUS_MMS_READ "M01_icon_message_status_mms_read_n.png" +#define MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD "M01_icon_message_status_mms_unread_n.png" +#define MSG_UI_THREAD_LIST_STATUS_MMS_SENT "M01_icon_message_status_mms_sent_n.png" +#define MSG_UI_THREAD_LIST_STATUS_SMS_READ "M01_icon_message_status_sms_read_n.png" +#define MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD "M01_icon_message_status_sms_unread_n.png" +#define MSG_UI_THREAD_LIST_STATUS_SMS_SENT "M01_icon_message_status_sms_sent_n.png" +#define MSG_UI_THREAD_LIST_TITLE_ICON_COMPOSE "M01_title_icon_compose.png" +#define MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH "M01_title_icon_search.png" +#define MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM "M01_title_icon_search_dim.png" /* common image resources */ -#define MSG_COMMON_FILE_ETC_ICON IMGDIR"/myfile_icon_etc.png" - -#define MSG_COMMON_FILE_IMAGE_ICON IMGDIR"/myfile_icon_images.png" -#define MSG_COMMON_FILE_VIDEO_ICON IMGDIR"/myfile_icon_video.png" -#define MSG_COMMON_FILE_MUSIC_ICON IMGDIR"/myfile_icon_music.png" -#define MSG_COMMON_FILE_SOUND_ICON IMGDIR"/myfile_icon_music.png" -#define MSG_COMMON_FILE_PDF_ICON IMGDIR"/myfile_icon_pdf.png" -#define MSG_COMMON_FILE_DOC_ICON IMGDIR"/myfile_icon_word.png" -#define MSG_COMMON_FILE_PPT_ICON IMGDIR"/myfile_icon_ppt.png" -#define MSG_COMMON_FILE_EXCEL_ICON IMGDIR"/myfile_icon_excel.png" -#define MSG_COMMON_FILE_VOICE_ICON IMGDIR"/myfile_icon_music.png" -#define MSG_COMMON_FILE_HTML_ICON IMGDIR"/myfile_icon_html.png" -#define MSG_COMMON_FILE_FLASH_ICON IMGDIR"/myfile_icon_swf.png" -#define MSG_COMMON_FILE_TXT_ICON IMGDIR"/myfile_icon_text.png" -#define MSG_COMMON_FILE_VCONTACT_ICON IMGDIR"/myfile_icon_svg.png" -#define MSG_COMMON_FILE_VCALENDAR_ICON IMGDIR"/myfile_icon_svg.png" -#define MSG_COMMON_FILE_VNOTE_ICON IMGDIR"/myfile_icon_text.png" -#define MSG_COMMON_FILE_RSS_ICON IMGDIR"/myfile_icon_rss.png" -#define MSG_COMMON_FILE_JAVA_ICON IMGDIR"/myfile_icon_java.png" +#define MSG_COMMON_FILE_ETC_ICON "myfile_icon_etc.png" + +#define MSG_COMMON_FILE_IMAGE_ICON "myfile_icon_images.png" +#define MSG_COMMON_FILE_VIDEO_ICON "myfile_icon_video.png" +#define MSG_COMMON_FILE_MUSIC_ICON "myfile_icon_music.png" +#define MSG_COMMON_FILE_SOUND_ICON "myfile_icon_music.png" +#define MSG_COMMON_FILE_PDF_ICON "myfile_icon_pdf.png" +#define MSG_COMMON_FILE_DOC_ICON "myfile_icon_word.png" +#define MSG_COMMON_FILE_PPT_ICON "myfile_icon_ppt.png" +#define MSG_COMMON_FILE_EXCEL_ICON "myfile_icon_excel.png" +#define MSG_COMMON_FILE_VOICE_ICON "myfile_icon_music.png" +#define MSG_COMMON_FILE_HTML_ICON "myfile_icon_html.png" +#define MSG_COMMON_FILE_FLASH_ICON "myfile_icon_swf.png" +#define MSG_COMMON_FILE_TXT_ICON "myfile_icon_text.png" +#define MSG_COMMON_FILE_VCONTACT_ICON "myfile_icon_svg.png" +#define MSG_COMMON_FILE_VCALENDAR_ICON "myfile_icon_svg.png" +#define MSG_COMMON_FILE_VNOTE_ICON "myfile_icon_text.png" +#define MSG_COMMON_FILE_RSS_ICON "myfile_icon_rss.png" +#define MSG_COMMON_FILE_JAVA_ICON "myfile_icon_java.png" #endif /*__MSG_UI_IMAGE_RESOURCE__*/ diff --git a/common/msg-ui-util.h b/common/msg-ui-util.h index ef80a88..4c52584 100755 --- a/common/msg-ui-util.h +++ b/common/msg-ui-util.h @@ -22,7 +22,6 @@ #include #include "dlog.h" #include -#include #include "msg-ui-bundle.h" #include @@ -57,7 +56,7 @@ #define DEF_PATH_MAX (4096) #define DEF_IMG_PATH_LEN (1024) -#define DEF_MAX_MSG_TEXT_LEN (1530) +#define DEF_MAX_MSG_TEXT_LEN (153*15) #define MSG_UI_URL_MAX_LEN (1024) #define DEF_MAX_EMAIL_LEN (255) #define DEF_MAX_FILTER_LEN (40) @@ -84,7 +83,7 @@ enum { LOG(LOG_DEBUG, TAG_MSG_UI, "\n[%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, ##args); #define D_EMSG(fmt, args...) \ - LOG(LOG_DEBUG, TAG_MSG_UI, "\n[ERROR][%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, ##args); + LOG(LOG_ERROR, TAG_MSG_UI, "\n[ERROR][%s %s() #%d ]" fmt "\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __LINE__, ##args); #define D_ENTER\ LOG(LOG_DEBUG, TAG_MSG_UI, "\n[ENTER][%s %s(%p) #%d ]>>>>>\n", (rindex(__FILE__, '/') ? (rindex(__FILE__, '/')+1) : __FILE__), __FUNCTION__, __FUNCTION__, __LINE__); @@ -161,15 +160,15 @@ enum { #define MSG_UI_NOTI_ALREADY_BLOCKED "Already blocked for this address" /* Navigation icon*/ -#define MSG_HEADER_ICON_CANCEL IMGDIR"/01_header_icon_cancel.png" -#define MSG_HEADER_ICON_DONE IMGDIR"/01_header_icon_done.png" +#define MSG_HEADER_ICON_CANCEL "01_header_icon_cancel.png" +#define MSG_HEADER_ICON_DONE "01_header_icon_done.png" -#define MSG_TITLE_ICON_VOICECALL IMGDIR"/M01_icon_voice_call.png" -#define MSG_TITLE_ICON_VIDEOCALL IMGDIR"/M01_icon_video_call.png" -#define MSG_TITLE_ICON_ADD_TO_CONTACT IMGDIR"/01_controllbar_icon_add_to_contact.png" -#define MSG_TITLE_ICON_BLOCK IMGDIR"/M01_icon_block.png" -#define MSG_TITLE_ICON_UNBLOCK IMGDIR"/M01_icon_unblock.png" -#define MSG_CONTROLBAR_ICON_VIEW_CONTACT IMGDIR"/M01_icon_view_contact.png" +#define MSG_TITLE_ICON_VOICECALL "M01_icon_voice_call.png" +#define MSG_TITLE_ICON_VIDEOCALL "M01_icon_video_call.png" +#define MSG_TITLE_ICON_ADD_TO_CONTACT "01_controllbar_icon_add_to_contact.png" +#define MSG_TITLE_ICON_BLOCK "M01_icon_block.png" +#define MSG_TITLE_ICON_UNBLOCK "M01_icon_unblock.png" +#define MSG_CONTROLBAR_ICON_VIEW_CONTACT "M01_icon_view_contact.png" /* Controlbar Icon */ #define MSG_CONTROLBAR_IMG_PATH IMGDIR"/controlbar/" @@ -178,19 +177,19 @@ enum { #define MSG_CONTROLBAR_ICON_CANCEL MSG_CONTROLBAR_IMG_PATH"01_controllbar_icon_close.png" #define MSG_CONTROLBAR_ICON_DELETE MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_delete.png" #define MSG_CONTROLBAR_ICON_FORWARD MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_forward.png" -#define MSG_CONTROLBAR_ICON_MORE MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_more.png" +#define MSG_CONTROLBAR_ICON_MORE MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_more.png" #define MSG_CONTROLBAR_ICON_SETTINGS MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_settings.png" -#define MSG_CONTROLBAR_ICON_EDIT MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_edit.png" +#define MSG_CONTROLBAR_ICON_EDIT MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_edit.png" #define MSG_CONTROLBAR_ICON_MESSAGEBOX MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_message_boxes.png" -#define MSG_CONTROLBAR_ICON_PROTECTION_OFF MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_protection_off.png" +#define MSG_CONTROLBAR_ICON_PROTECTION_OFF MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_protection_off.png" #define MSG_CONTROLBAR_ICON_CANCEL_MSG MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_cancel_message.png" #define MSG_CONTROLBAR_ICON_COPY_PHONE MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_copy_to_phone.png" -#define MSG_CONTROLBAR_ICON_RESTORE MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_restore.png" +#define MSG_CONTROLBAR_ICON_RESTORE MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_restore.png" /* viewer */ -#define MSG_CONTROLBAR_ICON_PLAY MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_Play.png" +#define MSG_CONTROLBAR_ICON_PLAY MSG_CONTROLBAR_IMG_PATH"01_controlbar_icon_Play.png" #define MSG_CONTROLBAR_ICON_ATTACH MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_attach.png" -#define MSG_CONTROLBAR_ICON_REPLY MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_reply.png" +#define MSG_CONTROLBAR_ICON_REPLY MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_reply.png" #define MSG_CONTROLBAR_ICON_RESEND MSG_CONTROLBAR_IMG_PATH"M01_controlbar_icon_resend.png" /* setting */ diff --git a/main/message.c b/main/message.c index 0812a24..116ba09 100755 --- a/main/message.c +++ b/main/message.c @@ -51,8 +51,11 @@ static void main_quit_cb(void *data, Evas_Object *obj, void *event_info) static void lang_changed(void *data) { D_ENTER; + struct appdata *ad = data; ug_send_event(UG_EVENT_LANG_CHANGE); + + msg_ui_thread_lang_changed(ad->thread_data); } static void low_battery_cb(void *data) @@ -419,6 +422,27 @@ static service_h __get_service_app_svc_op(const char *operation, service_h servi } service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_TYPE, MSG_BUNDLE_VALUE_COMPOSE); + } else if (g_strcmp0(operation, SERVICE_OPERATION_DEFAULT) == 0) { + char *key_type = NULL; + + service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type); + if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) { + msg_error_t err = MSG_SUCCESS; + msg_struct_t count_info = msg_create_struct(MSG_STRUCT_COUNT_INFO); + int unread_cnt = 0; + + err = msg_count_message(gAppData->msgHandle, MSG_INBOX_ID, count_info); + if (err != MSG_SUCCESS) { + msg_release_struct(&count_info); + return NULL; + } + + msg_get_int_value(count_info, MSG_COUNT_INFO_UNREAD_INT, &unread_cnt); + if (unread_cnt == 1) + svc_handle = __get_service_with_msg_id(gAppData, service); + + msg_release_struct(&count_info); + } } D_LEAVE; @@ -596,6 +620,7 @@ static Evas_Object* create_win(const char *name) evas_object_smart_callback_add(eo, "delete,request", win_del, NULL); ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); evas_object_resize(eo, w, h); + elm_win_conformant_set(eo, EINA_TRUE); } D_LEAVE; @@ -624,13 +649,13 @@ void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) win = ug_get_window(); switch (mode) { - case UG_MODE_FULLVIEW: + case UG_MODE_FULLVIEW: evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, base); evas_object_show(base); break; case UG_MODE_FRAMEVIEW: - default: + default: break; } @@ -712,6 +737,7 @@ void result_cb(ui_gadget_h ug, service_h result, void *priv) if (buf) { update_id = atoi(buf); msg_ui_thread_list_item_update(pListData, update_id); + pListData->sel_thread_id = update_id; } } } @@ -739,24 +765,26 @@ void destroy_cb(ui_gadget_h ug, void *priv) PMSG_THREAD_LIST_DATA pListData = NULL; pListData = msg_ui_thread_get_current_list(); - if (pListData == NULL) { elm_exit(); return; } - if (pData->isRotate == true) { - if (!pData->split_data) { - msg_ui_thread_create_split_data(); - msg_ui_thread_splitview_launch(pData, pData->split_data); + if (pData) { + if (pData->isRotate == true) { + if (!pData->split_data) { + msg_ui_thread_create_split_data(); + msg_ui_thread_splitview_launch(pData, pData->split_data); + } + if (ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) { + msg_ui_thread_cancel_search_mode(pListData); + elm_win_lower(pData->win_main); + } + } else { + elm_object_part_content_set(pData->panes, "left", pData->layout_main); + elm_object_part_content_unset(pData->panes, "right"); + elm_panes_content_left_size_set(pData->panes, 1.0); } - - if (ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) - elm_win_lower(pData->win_main); - } else { - elm_object_part_content_set(pData->panes, "left", pData->layout_main); - elm_object_part_content_unset(pData->panes, "right"); - elm_panes_content_left_size_set(pData->panes, 1.0); } if (pListData->sel_thread_id > 0) @@ -789,13 +817,19 @@ int msg_ui_load_composer_ug(service_h svc_handle, MessageComposerUgType ug_type) gAppData->ug_type = MSG_COMPOSER_UG_TYPE_NONE; service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL); - gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs); + if (ug_type == MSG_COMPOSER_UG_TYPE_COMPOSER) + gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs); + else + gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FRAMEVIEW, svc_handle, &gAppData->cbs); } else { ug_send_message(gAppData->composer_ug, svc_handle); } } else { service_add_extra_data(svc_handle, MSG_BUNDLE_KEY_FROM, MSG_BUNDLE_VALUE_INTERNAL); - gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs); + if (ug_type == MSG_COMPOSER_UG_TYPE_COMPOSER) + gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &gAppData->cbs); + else + gAppData->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FRAMEVIEW, svc_handle, &gAppData->cbs); } if (!gAppData->composer_ug) @@ -815,7 +849,6 @@ int msg_ui_load_composer_ug(service_h svc_handle, MessageComposerUgType ug_type) evas_object_hide(pData->layout_main); } } - D_LEAVE; return MSG_UI_RET_SUCCESS; } @@ -882,6 +915,18 @@ static bool app_create(void *data) ad->win_main = win; + ad->bg = elm_bg_add(ad->win_main); + evas_object_size_hint_weight_set(ad->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(ad->win_main, ad->bg); + + ad->conform = elm_conformant_add(win); + if (ad->conform == NULL) + return FALSE; + + evas_object_size_hint_weight_set(ad->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, ad->conform); + evas_object_show(ad->conform); + err = sound_manager_set_session_type(SOUND_SESSION_TYPE_SHARE); if (err != SOUND_MANAGER_ERROR_NONE) D_MSG("sound_manager_set_session_type is failed, ret = [%d]", err); @@ -1032,6 +1077,7 @@ static void app_service(service_h service, void *data) } if (isDefaultView) { + MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "show DefaultView"); if (ad->composer_ug) { ug_destroy(ad->composer_ug); ad->composer_ug = NULL; @@ -1044,7 +1090,7 @@ static void app_service(service_h service, void *data) if (!ad->layout_main) { ad->layout_main = msg_ui_thread_create_layout_main(ad->thread_data); evas_object_size_hint_weight_set(ad->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(ad->win_main, ad->layout_main); + elm_object_content_set(ad->conform, ad->layout_main); msg_ui_thread_load_thread_view(ad->thread_data, service); } else { @@ -1052,37 +1098,72 @@ static void app_service(service_h service, void *data) } __rotate(app_get_device_orientation(), ad); } else { + MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "show app-service view"); /* If message app is called by app-service to display composer view, * list view should be destroyed because previous screen should be displayed * when user tap back button. */ + MessageComposerUgType ug_type = MSG_COMPOSER_UG_TYPE_NONE; + if (operation != NULL) { + int i = 0; + PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data; + if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0 || g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) == 0) { if (ad->layout_main) { + /* content unset composer */ + if (ad->ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) { + if (pData) + elm_object_part_content_unset(pData->panes, "right"); + } + + if (pData) { + for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) { + if (pData->list_data[i] != NULL) { + msg_ui_thread_destroy_thread_list_data(pData->list_data[i]); + } + } + } evas_object_del(ad->layout_main); ad->layout_main = NULL; } + ug_type = MSG_COMPOSER_UG_TYPE_COMPOSER; + } else if (g_strcmp0(operation, SERVICE_OPERATION_DEFAULT) == 0) { + char *key_type = NULL; + + service_get_extra_data(service, MSG_BUNDLE_KEY_TYPE, &key_type); + if (g_strcmp0(key_type, MSG_BUNDLE_VALUE_MSG_ID) == 0) { + if (ad->layout_main) { + /* content unset composer */ + if (ad->ug_type == MSG_COMPOSER_UG_TYPE_VIEWER) { + if (pData) + elm_object_part_content_unset(pData->panes, "right"); + } + + if (pData) { + for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) { + if (pData->list_data[i] != NULL) { + msg_ui_thread_destroy_thread_list_data(pData->list_data[i]); + } + } + } + evas_object_del(ad->layout_main); + ad->layout_main = NULL; + } + ug_type = MSG_COMPOSER_UG_TYPE_VIEWER; + } } } - if (!ad->composer_ug) - ad->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &ad->cbs); - else - ug_send_message(ad->composer_ug, svc_handle); - - PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)ad->thread_data; - char *thread_id_s = NULL; - - service_get_extra_data(svc_handle, MSG_BUNDLE_KEY_THREAD_ID, &thread_id_s); - - if (pData) { - PMSG_THREAD_LIST_DATA pListData = NULL; - pListData = msg_ui_thread_get_current_list(); - - if (pListData && thread_id_s) - pListData->sel_thread_id = atoi(thread_id_s); + if (ad->composer_ug) { + ug_destroy(ad->composer_ug); + ad->composer_ug = NULL; + ad->ug_type = MSG_COMPOSER_UG_TYPE_NONE; } + + ad->composer_ug = ug_create(NULL, MSG_COMPOSER_UG_NAME, UG_MODE_FULLVIEW, svc_handle, &ad->cbs); + ad->ug_type = ug_type; } if (svc_handle) diff --git a/main/message.h b/main/message.h index 1be1e32..65b8fc4 100755 --- a/main/message.h +++ b/main/message.h @@ -46,6 +46,8 @@ typedef enum { struct appdata { Evas_Object *win_main; + Evas_Object *conform; + Evas_Object *bg; Evas_Object *layout_main; struct ug_cbs cbs; diff --git a/packaging/org.tizen.message.spec b/packaging/org.tizen.message.spec index e9bf14d..6f22854 100755 --- a/packaging/org.tizen.message.spec +++ b/packaging/org.tizen.message.spec @@ -11,6 +11,7 @@ Requires: pkgmgr BuildRequires: pkgconfig(appsvc) BuildRequires: pkgconfig(bundle) BuildRequires: pkgconfig(capi-appfw-application) +BuildRequires: pkgconfig(capi-appfw-app-manager) BuildRequires: pkgconfig(capi-media-metadata-extractor) BuildRequires: pkgconfig(capi-media-sound-manager) BuildRequires: pkgconfig(capi-system-info) @@ -18,7 +19,8 @@ BuildRequires: pkgconfig(capi-system-system-settings) BuildRequires: pkgconfig(capi-media-metadata-extractor) BuildRequires: pkgconfig(capi-media-image-util) BuildRequires: pkgconfig(capi-media-player) -BuildRequires: pkgconfig(contacts-service) +BuildRequires: pkgconfig(capi-content-media-content) +BuildRequires: pkgconfig(contacts-service2) BuildRequires: pkgconfig(dlog) BuildRequires: pkgconfig(drm-client) BuildRequires: pkgconfig(elementary) @@ -27,16 +29,20 @@ BuildRequires: pkgconfig(ecore-x) BuildRequires: pkgconfig(ecore-input) BuildRequires: pkgconfig(ecore-imf) BuildRequires: pkgconfig(ecore-file) +BuildRequires: pkgconfig(ecore-evas) BuildRequires: pkgconfig(eina) +BuildRequires: pkgconfig(evas) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(heynoti) BuildRequires: pkgconfig(icu-i18n) +BuildRequires: pkgconfig(libexif) BuildRequires: pkgconfig(msg-service) BuildRequires: pkgconfig(mm-common) BuildRequires: pkgconfig(mm-player) BuildRequires: pkgconfig(mm-session) BuildRequires: pkgconfig(syspopup-caller) BuildRequires: pkgconfig(status) +BuildRequires: pkgconfig(tapi) BuildRequires: pkgconfig(ui-gadget-1) BuildRequires: pkgconfig(utilX) BuildRequires: pkgconfig(libexif) diff --git a/thread/include/msg-ui-thread-main.h b/thread/include/msg-ui-thread-main.h index c9dd10f..02f792a 100755 --- a/thread/include/msg-ui-thread-main.h +++ b/thread/include/msg-ui-thread-main.h @@ -30,14 +30,14 @@ #include #include #include -#include +#include #include "message.h" #include "msg-ui-util.h" +#include "msg-ui-image-resource.h" #include "msg-ui-common-utility.h" #define MSG_THREAD_THEME EDJDIR"/thread_genlist.edj" -#define MSG_THREAD_CONTROLBAR_ITEM_NUM (4) #define MSG_THREAD_DELETE_NOTI_TIME 1.5 #define MSG_THREAD_LIST_MAX_COUNT 10 #define MSG_THREAD_LIST_LAUNCH_LOAD_MAX_CNT 20 @@ -109,6 +109,7 @@ typedef struct _MSG_THREAD_DATA { Elm_Theme *th; Evas_Object *win_main; + Evas_Object *conform; Evas_Object *panes; Evas_Object *layout_main; Evas_Object *navi_frame; @@ -128,7 +129,6 @@ typedef struct _MSG_THREAD_DATA { char *date_ptn_year; msg_time_format time_fmt; char locale[DEF_BUF_LEN]; - int noti_fd; bool isRotate; /* Rotation state */ bool isIncomingMsg; /* Check there is new incoming message when it back from edit mode to normal. */ @@ -140,13 +140,12 @@ typedef struct _MSG_THREAD_DATA { typedef struct _MSG_THREAD_LIST_DATA { Evas_Object *genlist; - Evas_Object *conform; Evas_Object *content_ly; Evas_Object *noc_ly; Elm_Object_Item *nf_it; //title, control bar naviframe item - Evas_Object *toolbar; - Elm_Object_Item *toolbar_item[MSG_THREAD_CONTROLBAR_ITEM_NUM]; + Evas_Object *toolbar_btn[CONTROLBAR_ITEM_MAX]; Evas_Object *back_btn; + Evas_Object *search_btn; Evas_Object *searchbar; Ecore_Timer *search_timer; @@ -266,7 +265,6 @@ void msg_ui_thread_reset_thread_view(void *data, service_h service); void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA pListData); void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DATA pSplitData); -void msg_ui_thread_splitview_set_title(PMSG_THREAD_SPLIT_DATA pSplitData); Evas_Object *msg_ui_thread_create_content_layout(Evas_Object *parent); Evas_Object *msg_ui_thread_create_nocontent_layout(Evas_Object *parent); Evas_Object *msg_ui_thread_create_layout_main(PMSG_THREAD_DATA pData); @@ -274,10 +272,12 @@ Evas_Object *msg_ui_thread_create_genlist(Evas_Object *parent, PMSG_THREAD_LIST_ Evas_Object *msg_ui_thread_create_searchbar_layout(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData); void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData); -Evas_Object *msg_ui_thread_create_toolbar(Evas_Object *parent); -void msg_ui_thread_set_navi_controlbar_item(PMSG_THREAD_LIST_DATA pListData); +void msg_ui_thread_set_navi_toolbar_item(PMSG_THREAD_LIST_DATA pListData); +void msg_ui_thread_show_toolbar(PMSG_THREAD_LIST_DATA pListData); +void msg_ui_thread_hide_toolbar(PMSG_THREAD_LIST_DATA pListData, bool bDeleteBtn); void msg_ui_thread_rotation_set(void *data, int rot); bool msg_ui_thread_rotation_get(void); +void msg_ui_thread_lang_changed(void *data); void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData); void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData); @@ -297,13 +297,13 @@ void msg_ui_thread_date_gl_del(void *data, Evas_Object *obj); PMSG_APP_THREAD_DATELINE_DATA_S msg_ui_thread_list_insert_dateline(PMSG_THREAD_LIST_DATA pListData, time_t* cur_time, time_t* prev_time); void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch); void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData); -void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id); +Eina_Bool msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id); void msg_ui_thread_list_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id); void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType); void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData); void msg_ui_thread_list_msg_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id); -void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id); +Eina_Bool msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id); Eina_Bool msg_ui_thread_search_msg_list_load(void *data); void msg_ui_thread_common_style_set(PMSG_THREAD_DATA pData); @@ -317,12 +317,12 @@ void msg_ui_thread_multi_action_thread_feedback_fn(void *data, Ecore_Thread *thr void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_ctlbar_spam_setting_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_ctlbar_compose_cb(void *data, Evas_Object *obj, void *event_info); -void msg_ui_thread_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_ctlbar_message_box_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_list_checked_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info); +void msg_ui_thread_search_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_searchbar_entry_change_cb(void *data, Evas_Object *obj, void *event_info); @@ -330,7 +330,7 @@ void msg_ui_thread_searchbar_entry_click_cb(void *data, Evas_Object *obj, void * void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_searchbar_eraser_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); void msg_ui_thread_sweep_btn_cb(void *data, Evas_Object *obj, void *event_info); -void msg_ui_thread_timezone_change_cb(void *data); +void msg_ui_thread_timezone_change_cb(keynode_t *key, void *data); void msg_ui_thread_gl_mode_right(void *data, Evas_Object *obj, void *event_info); void msg_ui_thread_gl_mode_left(void *data, Evas_Object *obj, void *event_info); @@ -360,6 +360,9 @@ void msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char void msg_ui_thread_set_app_state(int app_state); int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData); +void msg_ui_thread_cancel_search_mode(PMSG_THREAD_LIST_DATA pListData); +void msg_ui_thread_button_disabled_set(PMSG_THREAD_LIST_DATA pListData, Eina_Bool disabled, int controlbar_btn); +void msg_ui_thread_get_title_text(PMSG_THREAD_LIST_DATA pListData, char *label, int label_len); const char *msg_ui_thread_make_search_result_string(const char *string, char *searchword, bool *result); void msg_ui_thread_make_time_string(time_t *msg_t, char *buf, int buf_len); diff --git a/thread/src/msg-ui-thread-callback.c b/thread/src/msg-ui-thread-callback.c index f332268..121d6e7 100755 --- a/thread/src/msg-ui-thread-callback.c +++ b/thread/src/msg-ui-thread-callback.c @@ -71,6 +71,41 @@ void msg_ui_thread_storage_change_cb(msg_handle_t handle, msg_storage_change_typ for (idx = 0; idx < pMsgIdList->nCount; idx++) { msg_ui_thread_list_msg_item_delete(pListData, pMsgIdList->msgIdList[idx]); } + } else { + Elm_Object_Item *gen_item = NULL; + PMSG_APP_THREAD_DATA_S item_data = NULL; + msg_struct_t threadInfo = msg_create_struct(MSG_STRUCT_THREAD_INFO); + int smsCnt = 0; + int mmsCnt = 0; + msg_error_t err = MSG_SUCCESS; + + gen_item = elm_genlist_first_item_get(pListData->genlist); + while (gen_item) { + if (elm_genlist_item_parent_get(gen_item) == NULL) { + gen_item = elm_genlist_item_next_get(gen_item); + continue; + } + + item_data = (PMSG_APP_THREAD_DATA_S) elm_object_item_data_get(gen_item); + + err = msg_get_thread(msg_ui_thread_get_data_handle(), item_data->thread_id, threadInfo); + if (err != MSG_SUCCESS) { + MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_get_thread() is failed : err = %d", err); + msg_ui_thread_list_item_delete(pListData, item_data->thread_id); + break; + } + + msg_get_int_value(threadInfo, MSG_THREAD_MMS_COUNT_INT, &mmsCnt); + msg_get_int_value(threadInfo, MSG_THREAD_SMS_COUNT_INT, &smsCnt); + + if (smsCnt+mmsCnt == 0) + msg_ui_thread_list_item_delete(pListData, item_data->thread_id); + else if ((item_data->sms_cnt + item_data->mms_cnt) != (smsCnt+mmsCnt)) + msg_ui_thread_list_item_update(pListData, item_data->thread_id); + + gen_item = elm_genlist_item_next_get(gen_item); + } + msg_release_struct(&threadInfo); } } else if (type == MSG_STORAGE_CHANGE_UPDATE) { int idx = 0; @@ -96,9 +131,11 @@ void msg_ui_thread_storage_change_cb(msg_handle_t handle, msg_storage_change_typ msg_release_struct(&msgInfo); msg_release_struct(&sendOpt); - msg_ui_thread_list_item_update(pListData, thread_id); + if (msg_ui_thread_list_item_update(pListData, thread_id) == EINA_FALSE) + __msg_ui_thread_insert_and_select_gen_item(pListData); } else { - msg_ui_thread_list_msg_item_update(pListData, pMsgIdList->msgIdList[idx]); + if (msg_ui_thread_list_msg_item_update(pListData, pMsgIdList->msgIdList[idx]) == EINA_FALSE) + __msg_ui_thread_insert_and_select_gen_item(pListData); } } } @@ -139,12 +176,9 @@ static void __msg_ui_thread_insert_and_select_gen_item(PMSG_THREAD_LIST_DATA pLi void msg_ui_thread_ctlbar_multi_action_cb(void *data, Evas_Object *obj, void *event_info) { D_ENTER; - MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj); PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data; - const char *label = elm_object_item_text_get((Elm_Object_Item *)event_info); - MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, pListData->multi_action_thread); if (pListData->popup) { @@ -152,14 +186,16 @@ void msg_ui_thread_ctlbar_multi_action_cb(void *data, Evas_Object *obj, void *ev pListData->popup = NULL; } - if (strcmp(label, dgettext("sys_string", "IDS_COM_SK_DELETE")) == 0) { + if (obj == pListData->toolbar_btn[CONTROLBAR_ITEM_1]) { pListData->action_type = THREAD_ACTION_DELETE; msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_DELETE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_OPT_DELETE_Q")); - } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE")) == 0) { - pListData->action_type = THREAD_ACTION_RESTORE; - msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED")); - } else if (strcmp(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE")) == 0) { - pListData->action_type = THREAD_ACTION_COPY_TO_PHONE; + } else if (obj == pListData->toolbar_btn[CONTROLBAR_ITEM_2]) { + if (pListData->list_type == THREAD_SPAM_LIST_TYPE) { + pListData->action_type = THREAD_ACTION_RESTORE; + msg_ui_thread_show_action_popup(pListData, THREAD_ACTION_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSG_BODY_MESSAGE_WILL_BE_RESTORED")); + } else if (pListData->list_type == THREAD_SIM_LIST_TYPE) { + pListData->action_type = THREAD_ACTION_COPY_TO_PHONE; + } } if (pListData->popup == NULL) { @@ -343,14 +379,12 @@ void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_ pListData->check_cnt = 0; pListData->sel_index = 0; - elm_object_item_part_content_unset(pListData->nf_it, "prev_btn"); - if (pListData->back_btn) { - evas_object_del(pListData->back_btn); - pListData->back_btn = NULL; + if (pListData->popup) { + evas_object_del(pListData->popup); + pListData->popup = NULL; } it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist); - if (it_sweep) { elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE); elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT); @@ -367,23 +401,24 @@ void msg_ui_thread_ctlbar_checkbox_cb(void *data, Evas_Object *obj, void *event_ elm_object_item_text_set(pListData->nf_it, buf); - msg_ui_thread_set_navi_controlbar_item(pListData); __msg_ui_thread_add_navi_select_all_ly(pListData); + msg_ui_thread_set_navi_toolbar_item(pListData); + + evas_object_hide(pListData->search_btn); + elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn"); MSG_UI_LEAVE(); } static void __msg_ui_thread_add_navi_select_all_ly(PMSG_THREAD_LIST_DATA pListData) { - PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); - if (!pListData) { MSG_UI_DEBUG(MSG_UI_LEVEL_ASSERT,"[ASSERT] pListData is NULL"); return; } if (!pListData->sel_all_ly) { - pListData->sel_all_ly = elm_layout_add(pData->navi_frame); + pListData->sel_all_ly = elm_layout_add(pListData->content_ly); elm_layout_theme_set(pListData->sel_all_ly, "genlist", "item", "select_all/default"); evas_object_size_hint_weight_set(pListData->sel_all_ly, EVAS_HINT_EXPAND, EVAS_HINT_FILL); evas_object_size_hint_align_set(pListData->sel_all_ly, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -399,9 +434,13 @@ static void __msg_ui_thread_add_navi_select_all_ly(PMSG_THREAD_LIST_DATA pListDa elm_object_part_text_set(pListData->sel_all_ly, "elm.text", dgettext("sys_string", "IDS_COM_BODY_SELECT_ALL")); } + if (msg_ui_thread_rotation_get() == true) { + elm_object_part_content_unset(pListData->content_ly, "sel_all"); + evas_object_hide(pListData->searchbar); + } else { + edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all"); + } evas_object_show(pListData->sel_all_ly); - elm_object_part_content_unset(pListData->content_ly, "sel_all"); - evas_object_hide(pListData->searchbar); elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->sel_all_ly); } @@ -487,16 +526,20 @@ void msg_ui_thread_ctlbar_message_box_cb(void *data, Evas_Object *obj, void *eve ctx_popup = elm_ctxpopup_add(pData->navi_frame); evas_object_smart_callback_add(ctx_popup, "dismissed", __msg_ui_thread_ctxpopup_dismissed_cb, pListData); + if (pListData->item_cnt > 0) + elm_ctxpopup_item_append(ctx_popup, dgettext("sys_string", "IDS_COM_SK_DELETE"), NULL, msg_ui_thread_ctlbar_checkbox_cb, pListData); + + elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData); elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData); elm_ctxpopup_item_append(ctx_popup, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), NULL, __msg_ui_thread_ctxpopup_clicked_cb, pListData); // move ctx popup Evas_Coord x, y, w, h; - evas_object_geometry_get(pListData->toolbar, &x, &y, &w, &h); - evas_object_move(ctx_popup, ((w-x)*5)/6 , y); - evas_object_show(ctx_popup); + evas_object_geometry_get(obj, &x, &y, &w, &h); + evas_object_move(ctx_popup, x , y); + evas_object_show(ctx_popup); pListData->popup = ctx_popup; MSG_UI_LEAVE(); @@ -544,26 +587,6 @@ static void __msg_ui_thread_ctxpopup_clicked_cb(void *data, Evas_Object *obj, vo MSG_UI_LEAVE(); } -void msg_ui_thread_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_info) -{ - MSG_UI_ENTER(); - MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !data || !obj); - - PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data; - PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); - - if (pData->isIncomingMsg == true) { - if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) - msg_ui_thread_msg_list_load(pListData, pListData->list_type); - else - msg_ui_thread_list_load(pListData, FALSE); - pData->isIncomingMsg = false; - } - - msg_ui_thread_show_normal_mode(pListData); - MSG_UI_LEAVE(); -} - void msg_ui_thread_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info) { MSG_UI_ENTER(); @@ -675,26 +698,67 @@ void msg_ui_thread_back_btn_clicked_cb(void *data, Evas_Object *obj, void *event return; } - if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) { - elm_win_lower(pData->win_main); + if (pListData->search_mode == THREAD_SEARCH_ON) { + msg_ui_thread_cancel_search_mode(pListData); + return; + } + + if (pListData->view_mode == THREAD_EDIT_VIEW) { + if (pData->isIncomingMsg == true) { + if (pListData->app_data_type == THREAD_LIST_APP_DATA_MSG) + msg_ui_thread_msg_list_load(pListData, pListData->list_type); + else + msg_ui_thread_list_load(pListData, FALSE); + pData->isIncomingMsg = false; + } + + msg_ui_thread_show_normal_mode(pListData); } else { - PMSG_THREAD_LIST_DATA pPrevList = msg_ui_thread_get_prev_list(pListData); - msg_ui_thread_set_navi_controlbar_item(pPrevList); + if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) { + elm_win_lower(pData->win_main); + } else { + PMSG_THREAD_LIST_DATA pPrevList = msg_ui_thread_get_prev_list(pListData); + msg_ui_thread_set_navi_toolbar_item(pPrevList); - evas_object_del(pListData->toolbar); - elm_naviframe_item_pop(pData->navi_frame); - elm_genlist_clear(pListData->genlist); - msg_ui_thread_destroy_thread_list_data(pListData); + elm_naviframe_item_pop(pData->navi_frame); + elm_genlist_clear(pListData->genlist); + msg_ui_thread_destroy_thread_list_data(pListData); - if (pData->isRotate == true) { - msg_ui_thread_destroy_split_data(pData->split_data); - msg_ui_thread_split_view_show(pData); + if (pData->isRotate == true) { + msg_ui_thread_destroy_split_data(pData->split_data); + msg_ui_thread_split_view_show(pData); + } } } MSG_UI_LEAVE(); } +void msg_ui_thread_search_btn_clicked_cb(void *data, Evas_Object *obj, void *event_info) +{ + MSG_UI_ENTER(); + + if (!data) + return; + + PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data; + Evas_Object *entry = NULL; + + if (pListData->item_cnt <= 0) + return; + + edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all"); + elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar); + + entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content"); + elm_object_focus_set(entry, EINA_TRUE); + + evas_object_hide(pListData->search_btn); + elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn"); + + MSG_UI_LEAVE(); +} + void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void *event_info) { D_ENTER; @@ -721,6 +785,7 @@ void msg_ui_thread_searchbar_entry_focus_cb(void *data, Evas_Object *obj, void * evas_object_smart_callback_add(obj, "changed", msg_ui_thread_searchbar_entry_change_cb, pListData); evas_object_smart_callback_add(obj, "preedit,changed", msg_ui_thread_searchbar_entry_change_cb, pListData); + D_LEAVE; } @@ -736,12 +801,13 @@ void msg_ui_thread_searchbar_entry_unfocus_cb(void *data, Evas_Object *obj, void PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data; elm_object_signal_emit(pListData->searchbar, "elm,state,eraser,hide", "elm"); + msg_ui_thread_set_navi_toolbar_item(pListData); if (elm_entry_is_empty(obj)) { elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm"); - pListData->search_mode = THREAD_SEARCH_OFF; elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL); } + D_LEAVE; } @@ -795,9 +861,6 @@ void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void PMSG_THREAD_LIST_DATA pListData = (PMSG_THREAD_LIST_DATA)data; Evas_Object *entry = NULL; - pListData->search_mode = THREAD_SEARCH_OFF; - elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL); - if (pListData->search_timer) { ecore_timer_del(pListData->search_timer); pListData->search_timer = NULL; @@ -805,9 +868,13 @@ void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content"); elm_object_text_set(entry, ""); - + elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm"); evas_object_hide(obj); elm_object_signal_emit(pListData->searchbar, "cancel,out", ""); + elm_object_focus_set(entry, EINA_FALSE); + + pListData->search_mode = THREAD_SEARCH_OFF; + elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL); if (pListData->list_type== THREAD_NORMAL_LIST_TYPE) msg_ui_thread_list_load(pListData, FALSE); @@ -815,10 +882,14 @@ void msg_ui_thread_searchbar_cancel_click_cb(void *data, Evas_Object *obj, void msg_ui_thread_msg_list_load(pListData, pListData->list_type); if (msg_ui_thread_rotation_get() == false) { - elm_object_focus_set(pListData->back_btn, EINA_TRUE); - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", ""); - } else { - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", ""); + evas_object_show(pListData->search_btn); + elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn); + + edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); + elm_object_part_content_unset(pListData->content_ly, "sel_all"); + evas_object_hide(pListData->searchbar); + + msg_ui_thread_show_toolbar(pListData); } D_LEAVE; @@ -964,7 +1035,7 @@ void msg_ui_thread_sweep_btn_cb(void *data, Evas_Object *obj, void *event_info) } } -void msg_ui_thread_timezone_change_cb(void *data) +void msg_ui_thread_timezone_change_cb(keynode_t *key, void *data) { D_ENTER; diff --git a/thread/src/msg-ui-thread-list.c b/thread/src/msg-ui-thread-list.c index fa3918f..333d54e 100755 --- a/thread/src/msg-ui-thread-list.c +++ b/thread/src/msg-ui-thread-list.c @@ -14,7 +14,6 @@ * limitations under the License. */ -#include "msg-ui-image-resource.h" #include "msg-ui-thread-main.h" static int __msg_ui_thread_init_genlist(PMSG_THREAD_LIST_DATA pListData); @@ -266,13 +265,13 @@ static Evas_Object *__msg_ui_thread_gl_content_get(void *data, Evas_Object *obj, if (g_strcmp0(part, "elm.icon.1") == 0) { if (item_data->msg_type == MSG_TYPE_SMS_CB) { ic = elm_icon_add(obj); - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_CB_ICON, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_CB_ICON); } else if (item_data->msg_type == MSG_TYPE_SMS_WAPPUSH) { ic = elm_icon_add(obj); - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_PUSH_ICON, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_PUSH_ICON); } else if (item_data->msg_type == MSG_TYPE_SMS_SYNCML) { ic = elm_icon_add(obj); - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_OTA_ICON, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_OTA_ICON); } if (ic) { @@ -368,6 +367,9 @@ static void __msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_inf elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT); } + if (pListData->search_mode == THREAD_SEARCH_ON) + msg_ui_thread_show_toolbar(pListData); + switch (pListData->view_mode) { case THREAD_NORMAL_VIEW: case THREAD_UNLOAD_VIEW: @@ -393,9 +395,13 @@ static void __msg_ui_thread_gl_sel(void *data, Evas_Object *obj, void *event_inf msg_release_list_struct(&draft_list); - if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) + if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) { D_MSG("Failed to load composer ug"); + pListData->sel_gen_item = NULL; + pListData->sel_thread_id = 0; + } + service_destroy(svc_handle); } @@ -498,10 +504,13 @@ char *msg_ui_thread_search_msg_gl_text_get(void *data, Evas_Object *obj, const c if (search == true) { Evas_Object *entry = elm_object_part_content_get( pListData->searchbar, "elm.swallow.content"); char *search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry)); - if (strlen(search_str) > 0) { - const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result); + if (search_str) { + if (strlen(search_str) > 0) { + const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result); + free(search_str); + return strdup(str); + } free(search_str); - return strdup(str); } } } else if (g_strcmp0(part, "elm.text.2") == 0) { @@ -522,10 +531,13 @@ char *msg_ui_thread_search_msg_gl_text_get(void *data, Evas_Object *obj, const c Evas_Object *entry = elm_object_part_content_get( pListData->searchbar, "elm.swallow.content"); char *search_str = elm_entry_markup_to_utf8(elm_entry_entry_get(entry)); - if (strlen(search_str) > 0) { - const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result); + if (search_str) { + if (strlen(search_str) > 0) { + const char *str = msg_ui_thread_make_search_result_string(buf, search_str, &result); + free(search_str); + return strdup(str); + } free(search_str); - return strdup(str); } } else if (g_strcmp0(part, "elm.text.3") == 0) { msg_ui_thread_make_time_string(item_data->msg_time, buf, sizeof(buf)); @@ -544,27 +556,26 @@ Evas_Object *msg_ui_thread_msg_gl_content_get(void *data, Evas_Object *obj, cons MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !item_data, NULL); Evas_Object *ic = NULL; - bool bNumExist = false; - if (g_strcmp0(part, "elm.icon.2") == 0) { + if (g_strcmp0(part, "elm.icon") == 0) { if (item_data->msg_type >= MSG_TYPE_MMS && item_data->msg_type <= MSG_TYPE_MMS_NOTI) { ic = elm_icon_add(obj); if (item_data->direction == MSG_DIRECTION_TYPE_MO) - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_MMS_SENT, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_SENT); else if (item_data->is_read == 0) - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_UNREAD); else - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_MMS_READ, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_MMS_READ); } else { ic = elm_icon_add(obj); if (item_data->direction == MSG_DIRECTION_TYPE_MO) - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_SMS_SENT, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_SENT); else if (item_data->is_read == 0) - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_UNREAD); else - elm_icon_file_set(ic, MSG_UI_THREAD_LIST_STATUS_SMS_READ, NULL); + elm_image_file_set(ic, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_STATUS_SMS_READ); } if (ic) { @@ -661,6 +672,9 @@ void msg_ui_thread_msg_gl_sel(void *data, Evas_Object *obj, void *event_info) elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT); } + if (pListData->search_mode == THREAD_SEARCH_ON) + msg_ui_thread_show_toolbar(pListData); + switch (pListData->view_mode) { case THREAD_NORMAL_VIEW: case THREAD_UNLOAD_VIEW: @@ -690,10 +704,10 @@ void msg_ui_thread_msg_gl_sel(void *data, Evas_Object *obj, void *event_info) /** update read status */ msg_update_read_status(msg_ui_thread_get_data_handle(), item_data->msg_id, true); } else { - __msg_ui_thread_create_bubble_by_msgid(pListData, item_data); - pListData->sel_gen_item = item; pListData->sel_msg_id = item_data->msg_id; + + __msg_ui_thread_create_bubble_by_msgid(pListData, item_data); } item_data->is_read = true; @@ -753,9 +767,13 @@ void __msg_ui_thread_create_bubble_by_msgid(PMSG_THREAD_LIST_DATA pListData, PMS msg_ui_thread_get_bubble_data(thread_data, svc_handle); ug_type = MSG_COMPOSER_UG_TYPE_VIEWER; - if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) + if (msg_ui_load_composer_ug(svc_handle, ug_type) == MSG_UI_RET_ERR) { D_MSG("Failed to load composer ug"); + pListData->sel_gen_item = NULL; + pListData->sel_msg_id = 0; + } + service_destroy(svc_handle); } @@ -808,7 +826,7 @@ char *msg_ui_thread_date_gl_text_get(void *data, Evas_Object *obj, const char *p date_str = msg_common_get_display_date(pData->locale, pData->date_ptn_default, pData->date_ptn_year, item_data->thread_time); if (date_str) { - snprintf(buf, sizeof(buf), " %s ", date_str); + snprintf(buf, sizeof(buf), "%s", date_str); free(date_str); } return strdup(buf); @@ -857,9 +875,9 @@ PMSG_APP_THREAD_DATELINE_DATA_S msg_ui_thread_list_insert_dateline(PMSG_THREAD_L } if (!prev_time ||g_strcmp0(cur_date_buf, prev_date_buf) != 0) { - dateline_data = (PMSG_APP_THREAD_DATELINE_DATA_S) calloc(1, sizeof(PMSG_APP_THREAD_DATELINE_DATA_S)); + dateline_data = (PMSG_APP_THREAD_DATELINE_DATA_S) calloc(1, sizeof(MSG_APP_THREAD_DATELINE_DATA_S)); MSG_UI_RETV_IF(MSG_UI_LEVEL_ERR, !dateline_data, NULL); - bzero(dateline_data, sizeof(dateline_data)); + bzero(dateline_data, sizeof(MSG_APP_THREAD_DATELINE_DATA_S)); dateline_data->thread_time = (time_t *) calloc(1, sizeof(time_t)); bzero(dateline_data->thread_time, sizeof(time_t)); @@ -914,8 +932,7 @@ void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch) elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly); } - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); - + msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2); } else { if (swl_ly != pListData->genlist) { evas_object_hide(swl_ly); @@ -923,7 +940,7 @@ void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch) elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist); } - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE); + msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2); PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL; PMSG_APP_THREAD_DATA_S cur_thread = NULL; @@ -956,7 +973,8 @@ void msg_ui_thread_list_load(PMSG_THREAD_LIST_DATA pListData, Eina_Bool bLaunch) if (tmp_date_line != NULL) dateline_data = tmp_date_line; - item = dateline_data->date_it; + if (dateline_data != NULL) + item = dateline_data->date_it; if (cur_thread->unread_cnt > 0) elm_genlist_item_append(pListData->genlist, &pListData->itc_unread, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData); @@ -1004,7 +1022,7 @@ void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData) pListData->item_cnt = peerList.nCount; if (peerList.nCount <= 0 || err != MSG_SUCCESS) { - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); + msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2); if (!pListData->noc_ly) pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame); @@ -1016,14 +1034,14 @@ void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData) } } else { + msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2); + if (swl_ly != pListData->genlist) { evas_object_hide(swl_ly); elm_object_part_content_unset(pListData->content_ly, "thread_list"); elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist); } - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE); - gen_item = elm_genlist_first_item_get(pListData->genlist); while (gen_item) { @@ -1050,7 +1068,7 @@ void msg_ui_thread_list_update(PMSG_THREAD_LIST_DATA pListData) MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG); } -void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id) +Eina_Bool msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id) { MSG_UI_ENTER(); @@ -1067,7 +1085,7 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_ err = msg_get_thread_view_list(msg_ui_thread_get_data_handle(), sort_rule_t, &peerList); msg_release_struct(&sort_rule_t); - MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS); + MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE); gen_item = elm_genlist_first_item_get(pListData->genlist); @@ -1088,7 +1106,12 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_ if (!gen_item) { D_EMSG("gen_item is NULL"); msg_release_list_struct(&peerList); - return; + return EINA_FALSE; + } + + if (!old_data) { + D_EMSG("old_data is NULL"); + return EINA_FALSE; } for (row = 0; row < peerList.nCount; row++) { @@ -1108,20 +1131,17 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_ if (!new_data) { D_EMSG("new_data is NULL"); - return; + return EINA_FALSE; } - if (*new_data->thread_time != *old_data->thread_time){ + if (new_data->thread_time && (*new_data->thread_time != *old_data->thread_time)){ msg_ui_thread_list_load(pListData, FALSE); msg_ui_thread_select_item_by_thread_id(pListData, thread_id); - if (new_data) { - if (new_data->thread_time) { - free(new_data->thread_time); - new_data->thread_time = NULL; - } - free(new_data); - } + free(new_data->thread_time); + new_data->thread_time = NULL; + + free(new_data); } else { new_data->chk = old_data->chk; new_data->is_check = old_data->is_check; @@ -1141,16 +1161,15 @@ void msg_ui_thread_list_item_update(PMSG_THREAD_LIST_DATA pListData, msg_thread_ } } - if (old_data) { - if (old_data->thread_time) { - free(old_data->thread_time); - old_data->thread_time = NULL; - } - free(old_data); + if (old_data->thread_time) { + free(old_data->thread_time); + old_data->thread_time = NULL; } + free(old_data); } MSG_UI_LEAVE(); + return EINA_TRUE; } void msg_ui_thread_list_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_thread_id_t thread_id) @@ -1245,7 +1264,8 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType) Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list"); if (pListData->item_cnt == 0) { - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); + msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1); + // show non cotent if (!pListData->noc_ly) pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame); @@ -1257,7 +1277,7 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType) } } else { // fill the genlist - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_FALSE); + msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_1); pListData->app_data_type = THREAD_LIST_APP_DATA_MSG; msg_ui_thread_genlist_style_set(pListData); @@ -1288,7 +1308,8 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType) if (tmp_date_line != NULL) dateline_data = tmp_date_line; - item = dateline_data->date_it; + if (dateline_data != NULL) + item = dateline_data->date_it; elm_genlist_item_append(pListData->genlist, &pListData->itc_default, cur_item, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, (void *)pListData); if (dateline_data != NULL) @@ -1298,11 +1319,14 @@ void msg_ui_thread_msg_list_load(PMSG_THREAD_LIST_DATA pListData, int listType) } if (pListData->item_cnt == 0) { - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); + msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1); + // show non cotent if (!pListData->noc_ly) pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame); + Evas_Object *swl_ly = elm_object_part_content_get(pListData->content_ly, "thread_list"); + if (swl_ly != pListData->noc_ly) { evas_object_hide(swl_ly); elm_object_part_content_unset(pListData->content_ly, "thread_list"); @@ -1346,11 +1370,11 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData) if (!search_str || strlen(search_str) == 0) { MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str"); - if (pData->isRotate == false) - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", ""); - if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) { msg_ui_thread_list_update(pListData); + if (search_str) + free(search_str); + msg_release_struct(&search_s); return; } } @@ -1378,6 +1402,9 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData) msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, search_str, strlen(search_str)); err = msg_search_message(pData->msgHandle, search_s, 0, 0, &msg_list); + free(search_str); + msg_release_struct(&search_s); + MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS); } else { switch (pListData->list_type) { @@ -1399,7 +1426,10 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData) pListData->item_cnt = msg_list.nCount; if (msg_list.nCount <= 0 || err != MSG_SUCCESS) { - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); + if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) + msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_2); + else + msg_ui_thread_button_disabled_set(pListData, EINA_TRUE, CONTROLBAR_ITEM_1); if (!pListData->noc_ly) pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame); @@ -1410,14 +1440,17 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData) elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->noc_ly); } } else { + if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) + msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_2); + else + msg_ui_thread_button_disabled_set(pListData, EINA_FALSE, CONTROLBAR_ITEM_1); + if (swl_ly != pListData->genlist) { evas_object_hide(swl_ly); elm_object_part_content_unset(pListData->content_ly, "thread_list"); elm_object_part_content_set(pListData->content_ly, "thread_list", pListData->genlist); } - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE); - gen_item = elm_genlist_first_item_get(pListData->genlist); while (gen_item) { @@ -1441,7 +1474,7 @@ void msg_ui_thread_list_msg_list_update(PMSG_THREAD_LIST_DATA pListData) MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG); } -void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id) +Eina_Bool msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id) { MSG_UI_ENTER(); @@ -1468,9 +1501,6 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes if (!search_str || strlen(search_str) == 0) { MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str"); - if (pData->isRotate == false) - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", ""); - if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) { msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO); msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT); @@ -1482,7 +1512,10 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes msg_release_struct(&sendOpt); msg_ui_thread_list_item_update(pListData, thread_id); - return; + if (search_str) + free(search_str); + msg_release_struct(&search_s); + return EINA_TRUE; } } @@ -1504,12 +1537,15 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes break; default: D_MSG("[WARNING] invalid view mode"); - return; + return EINA_FALSE; } msg_set_str_value(search_s, MSG_SEARCH_CONDITION_SEARCH_VALUE_STR, search_str, strlen(search_str)); err = msg_search_message(pData->msgHandle, search_s, 0, 0, &msg_list); - MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS); + free(search_str); + msg_release_struct(&search_s); + + MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE); } else { switch (pListData->list_type) { case THREAD_SPAM_LIST_TYPE: @@ -1523,9 +1559,9 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes break; default: D_MSG("[WARNING] invalid view mode"); - return; + return EINA_FALSE; } - MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS); + MSG_UI_RETV_IF(MSG_UI_LEVEL_DEBUG, err != MSG_SUCCESS, EINA_FALSE); } gen_item = elm_genlist_first_item_get(pListData->genlist); @@ -1548,7 +1584,12 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes if (!gen_item) { D_EMSG("gen_item is NULL"); msg_release_list_struct(&msg_list); - return; + return EINA_FALSE; + } + + if (!old_data) { + D_EMSG("old_data is NULL"); + return EINA_FALSE; } for (row = 0; row chk = old_data->chk; @@ -1585,15 +1626,14 @@ void msg_ui_thread_list_msg_item_update(PMSG_THREAD_LIST_DATA pListData, msg_mes } } - if (old_data) { - if (old_data->msg_time) { - free(old_data->msg_time); - old_data->msg_time = NULL; - } - free(old_data); + if (old_data->msg_time) { + free(old_data->msg_time); + old_data->msg_time = NULL; } + free(old_data); MSG_UI_LEAVE(); + return EINA_TRUE; } void msg_ui_thread_list_msg_item_delete(PMSG_THREAD_LIST_DATA pListData, msg_message_id_t msg_id) @@ -1682,14 +1722,13 @@ Eina_Bool msg_ui_thread_search_msg_list_load(void *data) if (!search_str || strlen(search_str) == 0) { MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "empty search_str"); - if (msg_ui_thread_rotation_get() == false) - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", ""); - if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) msg_ui_thread_list_load(pListData, FALSE); else msg_ui_thread_msg_list_load(pListData, pListData->list_type); msg_release_struct(&search_s); + if (search_str) + free(search_str); return EINA_FALSE; } @@ -1718,20 +1757,17 @@ Eina_Bool msg_ui_thread_search_msg_list_load(void *data) err = msg_search_message(msg_ui_thread_get_data_handle(), search_s, 0, 0, &search_msg_list); pListData->item_cnt = search_msg_list.nCount; - if (search_str) - free(search_str); + free(search_str); + msg_release_struct(&search_s); if (err != MSG_SUCCESS) { MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msg_search_message failed!! [%d]", err); - if (msg_ui_thread_rotation_get() == false) - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", ""); if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) msg_ui_thread_list_load(pListData, FALSE); else msg_ui_thread_msg_list_load(pListData, pListData->list_type); - msg_release_struct(&search_s); return EINA_FALSE; } @@ -1747,7 +1783,6 @@ Eina_Bool msg_ui_thread_search_msg_list_load(void *data) /** hide control bar */ elm_genlist_clear(pListData->genlist); - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", ""); if (search_msg_list.nCount > 0) { PMSG_APP_THREAD_DATELINE_DATA_S dateline_data = NULL; @@ -1783,7 +1818,8 @@ Eina_Bool msg_ui_thread_search_msg_list_load(void *data) if (tmp_date_line != NULL) dateline_data = tmp_date_line; - item = dateline_data->date_it; + if (dateline_data != NULL) + item = dateline_data->date_it; elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_SEARCH), item_data, item, ELM_GENLIST_ITEM_NONE, msg_ui_thread_msg_gl_sel, pListData); if (dateline_data != NULL) @@ -1799,7 +1835,6 @@ Eina_Bool msg_ui_thread_search_msg_list_load(void *data) elm_genlist_item_append(pListData->genlist, msg_ui_thread_get_itc_type(THREAD_ITC_EMPTY), NULL, NULL, ELM_GENLIST_ITEM_NONE, msg_ui_thread_gl_empty_sel, NULL); } - msg_release_struct(&search_s); msg_release_list_struct(&search_msg_list); return EINA_TRUE; @@ -1856,7 +1891,8 @@ Eina_Bool __msg_ui_thread_list_load_remain_item(void *data) if (tmp_date_line != NULL) dateline_data = tmp_date_line; - item = dateline_data->date_it; + if (dateline_data != NULL) + item = dateline_data->date_it; if (cur_thread->unread_cnt > 0) elm_genlist_item_append(pListData->genlist, &pListData->itc_unread, cur_thread, item, ELM_GENLIST_ITEM_NONE, __msg_ui_thread_gl_sel, pListData); @@ -1905,7 +1941,7 @@ void msg_ui_thread_common_style_set(PMSG_THREAD_DATA pData) pData->itc_date.func.state_get = NULL; pData->itc_date.func.del = msg_ui_thread_date_gl_del; - pData->itc_search.item_style = "3text.2icon.tb"; + pData->itc_search.item_style = "3text.1icon.tb"; pData->itc_search.func.text_get = msg_ui_thread_search_msg_gl_text_get; pData->itc_search.func.content_get = msg_ui_thread_msg_gl_content_get; pData->itc_search.func.state_get = NULL; @@ -1936,7 +1972,7 @@ void msg_ui_thread_genlist_style_set(PMSG_THREAD_LIST_DATA pListData) pListData->itc_unread.func.del = __msg_ui_thread_gl_del; pListData->itc_unread.decorate_all_item_style = "edit_default"; } else { - pListData->itc_default.item_style = "3text.2icon"; + pListData->itc_default.item_style = "3text.1icon"; pListData->itc_default.func.text_get = msg_ui_thread_msg_gl_text_get; pListData->itc_default.func.content_get = msg_ui_thread_msg_gl_content_get; pListData->itc_default.func.state_get = NULL; diff --git a/thread/src/msg-ui-thread-main.c b/thread/src/msg-ui-thread-main.c index 97bf779..6dba635 100755 --- a/thread/src/msg-ui-thread-main.c +++ b/thread/src/msg-ui-thread-main.c @@ -71,12 +71,13 @@ void *msg_ui_thread_init_thread_data(struct appdata *ad) D_MSG("calloc error"); return NULL; } - bzero(pData, sizeof(PMSG_THREAD_DATA)); + bzero(pData, sizeof(MSG_THREAD_DATA)); g_data = pData; pData->msgHandle = ad->msgHandle; pData->win_main = ad->win_main; + pData->conform = ad->conform; pData->th = elm_theme_new(); elm_theme_ref_set(pData->th, NULL); elm_theme_extension_add(pData->th, MSG_THREAD_THEME); @@ -91,24 +92,10 @@ void *msg_ui_thread_init_thread_data(struct appdata *ad) pData->date_ptn_year = msg_common_get_date_best_pattern(pData->locale, MSG_UI_DATE_PATTERN_YEAR); /* Register callback to apply time change. */ - pData->noti_fd = heynoti_init(); - if (pData->noti_fd == -1) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_init() is failed!!"); - } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_init() is success : fd = %d\n", pData->noti_fd); - - if (heynoti_subscribe(pData->noti_fd, "setting_time_changed", msg_ui_thread_timezone_change_cb, (void *)pData) == -1) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_subscribe(setting_time_changed) is failed!!"); - } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_subscribe(setting_time_changed) is success !!"); - } - - if (heynoti_attach_handler(pData->noti_fd) == -1) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_attach_handler() is failed !!"); - } else { - MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "heynoti_attach_handler() is success."); - } + if (vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_thread_timezone_change_cb, (void *)pData) < 0) { + D_EMSG("Fail to register vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED); } + return (void *)pData; } @@ -156,11 +143,8 @@ void msg_ui_thread_deinit_thread_data(void *data) pData->th = NULL; } - if (pData->noti_fd) { - if (heynoti_unsubscribe(pData->noti_fd, "setting_time_changed", msg_ui_thread_timezone_change_cb) == -1) { - MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "heynoti_unsubscribe() is failed !!"); - } - heynoti_close(pData->noti_fd); + if (vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED, msg_ui_thread_timezone_change_cb) < 0) { + D_EMSG("Fail to remove vconf CB with [%s]", VCONFKEY_SYSTEM_TIME_CHANGED); } } @@ -210,6 +194,7 @@ PMSG_THREAD_SPLIT_DATA msg_ui_thread_create_split_data(void) void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData) { + D_ENTER; int i = 0, j = 0; PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); @@ -232,6 +217,16 @@ void msg_ui_thread_destroy_thread_list_data(PMSG_THREAD_LIST_DATA pListData) pListData->job_popup_end = NULL; } + for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) { + if (pListData->toolbar_btn[i]) { + evas_object_del(pListData->toolbar_btn[i]); + pListData->toolbar_btn[i] = NULL; + } + } + + evas_object_del(pListData->back_btn); + pListData->back_btn = NULL; + for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) { if (pData->list_data[i] != NULL && pData->list_data[i] == pListData) { free(pListData); @@ -328,7 +323,7 @@ Evas_Object *msg_ui_thread_create_layout_main(PMSG_THREAD_DATA pData) evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_show(bg); - layout = elm_layout_add(pData->win_main); + layout = elm_layout_add(pData->conform); MSG_UI_RETVM_IF(MSG_UI_LEVEL_ERR, layout == NULL, NULL, "Failed elm_layout_add.\n"); elm_layout_theme_set(layout, "layout", "application", "default"); @@ -408,6 +403,10 @@ void msg_ui_thread_load_message_box(int list_type) msg_ui_thread_destroy_split_data(pData->split_data); pSplitData = msg_ui_thread_create_split_data(); msg_ui_thread_splitview_launch(pData, pSplitData); + } else { + edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); + elm_object_part_content_unset(pListData->content_ly, "sel_all"); + evas_object_hide(pListData->searchbar); } D_LEAVE; @@ -420,14 +419,11 @@ void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !pData || !pListData, "pData or pListData is NULL"); - pListData->toolbar = msg_ui_thread_create_toolbar(pData->navi_frame); - msg_ui_thread_set_navi_controlbar_item(pListData); - pListData->content_ly = msg_ui_thread_create_content_layout(pData->navi_frame); pListData->noc_ly = msg_ui_thread_create_nocontent_layout(pData->navi_frame); pListData->searchbar = msg_ui_thread_create_searchbar_layout(pListData->content_ly, pListData); - if (pData->isRotate == false) + if (pData->isRotate == true) elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar); pListData->genlist = msg_ui_thread_create_genlist(pListData->content_ly, pListData); @@ -436,37 +432,14 @@ void msg_ui_thread_fullview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_LIST_DATA if (msg_ui_thread_get_prev_list(pListData) == NULL) elm_win_conformant_set(pData->win_main, 1); - pListData->conform = elm_conformant_add(pData->navi_frame); - elm_object_style_set(pListData->conform, "internal_layout"); - evas_object_size_hint_weight_set(pListData->conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_show(pListData->conform); - elm_object_content_set(pListData->conform, pListData->content_ly); pListData->back_btn = elm_button_add(pData->navi_frame); elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default"); evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData); - switch (pListData->list_type) { - case THREAD_NORMAL_LIST_TYPE: - strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(label)); - break; - case THREAD_SPAM_LIST_TYPE: - strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), sizeof(label)); - break; - case THREAD_SIM_LIST_TYPE: - strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), sizeof(label)); - break; - case THREAD_CBMSG_LIST_TYPE: - strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), sizeof(label)); - break; - default: - D_MSG("[ERROR] invalid viewmode"); - return; - } - - pListData->nf_it = elm_naviframe_item_push(pData->navi_frame, label, pListData->back_btn, NULL, pListData->conform, NULL); - elm_object_item_part_content_set(pListData->nf_it, "controlbar", pListData->toolbar); - evas_object_show(pListData->toolbar); + msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S); + pListData->nf_it = elm_naviframe_item_push(pData->navi_frame, label, pListData->back_btn, NULL, pListData->content_ly, NULL); + msg_ui_thread_set_navi_toolbar_item(pListData); MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG); } @@ -477,6 +450,7 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !pData || !pSplitData, "pData or pSplitData is NULL"); PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list(); + char label[DEF_BUF_LEN_S+1] = {0,}; if (!pSplitData->content_ly) pSplitData->content_ly= elm_layout_add(pData->panes); @@ -511,18 +485,19 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA evas_object_size_hint_align_set(pSplitData->title_layout, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(pSplitData->title_layout); - msg_ui_thread_splitview_set_title(pData->split_data); + msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S); + elm_object_part_text_set(pSplitData->title_layout, "title_text", label); elm_object_item_part_content_set(pSplitData->nf_it, "title", pSplitData->title_layout); /*Create composer button*/ if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) { if (!pSplitData->composer_btn) pSplitData->composer_btn = elm_button_add(pSplitData->navi_frame); - elm_object_style_set(pSplitData->composer_btn, "naviframe/title/default"); + elm_object_style_set(pSplitData->composer_btn, "naviframe/title_icon"); Evas_Object *icon = elm_icon_add(pSplitData->composer_btn); - elm_icon_file_set(icon, MSG_CONTROLBAR_ICON_COMPOSE, NULL); - elm_icon_resizable_set(icon, 1, 1); + elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_COMPOSE); + elm_image_resizable_set(icon, 1, 1); evas_object_image_smooth_scale_set(icon, 0); elm_object_content_set(pSplitData->composer_btn, icon); @@ -530,10 +505,8 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA evas_object_show(pSplitData->composer_btn); elm_object_part_content_set(pSplitData->title_layout, "compose_btn", pSplitData->composer_btn); - elm_object_signal_emit(pSplitData->title_layout, "elm,state,compose_btn,show", ""); } elm_object_part_content_set(pSplitData->title_layout, "prev_btn", pSplitData->back_btn); - elm_object_signal_emit(pSplitData->title_layout, "elm,state,prev_btn,show", ""); elm_object_part_content_set(pData->panes, "right", pSplitData->content_ly); evas_object_show(pSplitData->content_ly); @@ -541,38 +514,6 @@ void msg_ui_thread_splitview_launch(PMSG_THREAD_DATA pData, PMSG_THREAD_SPLIT_DA D_LEAVE; } -void msg_ui_thread_splitview_set_title(PMSG_THREAD_SPLIT_DATA pSplitData) -{ - MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !pSplitData, "pData or pSplitData is NULL"); - - PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list(); - char label[DEF_BUF_LEN_S+1] = {0,}; - - if (pListData) { - switch (pListData->list_type) { - case THREAD_NORMAL_LIST_TYPE: - strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(label)); - break; - case THREAD_SPAM_LIST_TYPE: - strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), sizeof(label)); - break; - case THREAD_SIM_LIST_TYPE: - strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), sizeof(label)); - break; - case THREAD_CBMSG_LIST_TYPE: - strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), sizeof(label)); - break; - default: - D_MSG("[ERROR] invalid viewmode"); - return; - } - } else { - strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(label)); - } - - elm_object_part_text_set(pSplitData->title_layout, "title_text", label); -} - Evas_Object *msg_ui_thread_create_searchbar_layout(Evas_Object *parent, PMSG_THREAD_LIST_DATA pListData) { MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); @@ -675,18 +616,6 @@ Evas_Object *msg_ui_thread_create_nocontent_layout(Evas_Object *parent) return noc_layout; } -Evas_Object *msg_ui_thread_create_toolbar(Evas_Object *parent) -{ - MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); - - Evas_Object *toolbar = NULL; - - toolbar = elm_toolbar_add(parent); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - - return toolbar; -} - void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData) { MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); @@ -699,136 +628,263 @@ void msg_ui_thread_reg_msg_cb_func(PMSG_THREAD_DATA pData) void msg_ui_thread_reset_thread_view(void *data, service_h service) { + D_ENTER; + if (!data) return; PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data; + int i = 0; + + if (pData->detail_layout) { + if (pData->isRotate == true) + elm_naviframe_item_pop(pData->split_data->navi_frame); + else + elm_naviframe_item_pop(pData->navi_frame); + pData->detail_layout = NULL; + } + + for (i = MSG_THREAD_LIST_MAX_COUNT-1; i >= 0; i--) { + if (pData->list_data[i] != NULL && pData->list_data[i]->list_type != THREAD_NORMAL_LIST_TYPE) { + if (pData->list_data[i]->loaded_ug) { + ug_destroy(pData->list_data[i]->loaded_ug); + pData->list_data[i]->loaded_ug = NULL; + } + elm_naviframe_item_pop(pData->navi_frame); + elm_genlist_clear(pData->list_data[i]->genlist); + msg_ui_thread_destroy_thread_list_data(pData->list_data[i]); + } + } + PMSG_THREAD_LIST_DATA pListData = NULL; - pListData = msg_ui_thread_get_current_list(); + pListData = msg_ui_thread_get_default_list(); if (pListData == NULL) return; - if (pListData->search_mode == THREAD_SEARCH_ON) - elm_object_focus_set(pListData->searchbar, EINA_TRUE); - - if (pListData->sel_thread_id > 0) - msg_ui_thread_list_item_update(pListData, pListData->sel_thread_id); + if (pListData->view_mode == THREAD_EDIT_VIEW) + msg_ui_thread_show_normal_mode(pListData); - if (pListData->sel_msg_id > 0) - msg_ui_thread_list_msg_item_update(pListData, pListData->sel_msg_id); + msg_ui_thread_cancel_search_mode(pListData); if (pData->isRotate == true) { - PMSG_THREAD_SPLIT_DATA pSplitData = NULL; msg_ui_thread_destroy_split_data(pData->split_data); - pSplitData = msg_ui_thread_create_split_data(); - msg_ui_thread_splitview_launch(pData, pSplitData); + msg_ui_thread_split_view_show(pData); + } else { + msg_ui_thread_split_view_hide(pData); } pListData->sel_gen_item = NULL; pListData->sel_thread_id = 0; pListData->sel_msg_id = 0; - pListData->view_mode = THREAD_NORMAL_VIEW; + + msg_ui_thread_list_load(pListData, FALSE); + + D_LEAVE; } -void msg_ui_thread_set_navi_controlbar_item(PMSG_THREAD_LIST_DATA pListData) +void msg_ui_thread_set_navi_toolbar_item(PMSG_THREAD_LIST_DATA pListData) { MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); if (!pListData) return; - Evas_Object *toolbar = pListData->toolbar; + PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); + + Evas_Object *btn = NULL; + Evas_Object *btn2 = NULL; int i = 0; - for (i = 0; i < MSG_THREAD_CONTROLBAR_ITEM_NUM; i++) { - if (pListData->toolbar_item[i]) - elm_object_item_del(pListData->toolbar_item[i]); + for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) { + if (pListData->toolbar_btn[i]) + evas_object_del(pListData->toolbar_btn[i]); + } + elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button1"); + elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button2"); + elm_object_item_part_content_unset(pListData->nf_it, "toolbar_more_btn"); + + if (pListData->search_mode == THREAD_SEARCH_ON) + return; + + if (!pListData->search_btn) { + pListData->search_btn = elm_button_add(pData->navi_frame); + elm_object_style_set(pListData->search_btn, "naviframe/title_icon"); + + Evas_Object *icon = elm_icon_add(pListData->search_btn); + elm_image_file_set(icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH); + elm_image_resizable_set(icon, 1, 1); + evas_object_image_smooth_scale_set(icon, 0); + elm_object_content_set(pListData->search_btn, icon); + evas_object_smart_callback_add(pListData->search_btn, "clicked", msg_ui_thread_search_btn_clicked_cb, (void *)pListData); } if (pListData->view_mode == THREAD_EDIT_VIEW) { - pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), \ - msg_ui_thread_ctlbar_multi_action_cb, (void *)pListData); - if (pListData->list_type == THREAD_SIM_LIST_TYPE) - pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_COPY_PHONE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE"), \ - msg_ui_thread_ctlbar_multi_action_cb, (void *)pListData); - else if (pListData->list_type == THREAD_SPAM_LIST_TYPE) - pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_RESTORE, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE"), \ - msg_ui_thread_ctlbar_multi_action_cb, (void *)pListData); - else - pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_CANCEL, dgettext("sys_string", "IDS_COM_SK_CANCEL"), \ - msg_ui_thread_ctlbar_cancel_cb, (void *)pListData); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); + btn = elm_button_add(pData->navi_frame); + elm_object_style_set(btn, "naviframe/toolbar/default"); + elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_DELETE")); + evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_multi_action_cb, pListData); + elm_object_item_part_content_set(pListData->nf_it, "toolbar_button1", btn); + pListData->toolbar_btn[CONTROLBAR_ITEM_1] = btn; + + switch (pListData->list_type) { + case THREAD_SIM_LIST_TYPE: + case THREAD_SPAM_LIST_TYPE: + btn2 = elm_button_add(pData->navi_frame); + elm_object_style_set(btn, "naviframe/toolbar/left"); + elm_object_style_set(btn2, "naviframe/toolbar/right"); + evas_object_smart_callback_add(btn2, "clicked", msg_ui_thread_ctlbar_multi_action_cb, pListData); + elm_object_item_part_content_set(pListData->nf_it, "toolbar_button2", btn2); + + pListData->toolbar_btn[CONTROLBAR_ITEM_2] = btn2; + + if (pListData->list_type == THREAD_SIM_LIST_TYPE) + elm_object_text_set(btn2, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_COPY_TO_PHONE")); + else if (pListData->list_type == THREAD_SPAM_LIST_TYPE) + elm_object_text_set(btn2, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_SK_RESTORE")); + break; + + case THREAD_CBMSG_LIST_TYPE: + default: + break; + } + + if (pListData->check_cnt <= 0) { + elm_object_disabled_set(btn, EINA_TRUE); + if (btn2 != NULL) + elm_object_disabled_set(btn2, EINA_TRUE); + } + + evas_object_hide(pListData->search_btn); + elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn"); } else { + btn = elm_button_add(pData->navi_frame); + elm_object_style_set(btn, "naviframe/toolbar/default"); + elm_object_item_part_content_set(pListData->nf_it, "toolbar_button1", btn); + pListData->toolbar_btn[CONTROLBAR_ITEM_1] = btn; + switch (pListData->list_type) { - case THREAD_NORMAL_LIST_TYPE: - pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_COMPOSE, dgettext("sys_string", "IDS_COM_SK3_COMPOSE"), \ - msg_ui_thread_ctlbar_compose_cb, (void *)pListData); - pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), \ - msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData); - pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_MESSAGEBOX, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_HEADER_MESSAGE_BOXES"), \ - msg_ui_thread_ctlbar_message_box_cb, pListData); + case THREAD_CBMSG_LIST_TYPE: + elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_DELETE")); + evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData); if (pListData->item_cnt <= 0) - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); + elm_object_disabled_set(btn, EINA_TRUE); break; - case THREAD_SPAM_LIST_TYPE: - pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_EDIT, dgettext("sys_string", "IDS_COM_SK_EDIT"), \ - msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData); - pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_SETTINGS, dgettext("sys_string", "IDS_COM_BODY_SETTINGS"), \ - msg_ui_thread_ctlbar_spam_setting_cb, (void *)pListData); - pListData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - - if (pListData->item_cnt <=0) - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); + case THREAD_SIM_LIST_TYPE: + elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_EDIT")); + evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_4], EINA_TRUE); + if (pListData->item_cnt <= 0) + elm_object_disabled_set(btn, EINA_TRUE); break; - case THREAD_CBMSG_LIST_TYPE: - pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), \ - msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData); - pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - pListData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); + case THREAD_NORMAL_LIST_TYPE: + elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK3_COMPOSE")); + evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_compose_cb, pListData); - if (pListData->item_cnt <=0) - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); + Evas_Object *btn3 = elm_button_add(pData->navi_frame); + elm_object_style_set(btn3, "naviframe/more/default"); + evas_object_smart_callback_add(btn3, "clicked", msg_ui_thread_ctlbar_message_box_cb, pListData); + elm_object_item_part_content_set(pListData->nf_it, "toolbar_more_btn", btn3); + pListData->toolbar_btn[CONTROLBAR_ITEM_3] = btn3; - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_4], EINA_TRUE); break; - case THREAD_SIM_LIST_TYPE: - pListData->toolbar_item[CONTROLBAR_ITEM_1] = elm_toolbar_item_append(toolbar, MSG_CONTROLBAR_ICON_EDIT, dgettext("sys_string", "IDS_COM_SK_EDIT"), \ - msg_ui_thread_ctlbar_checkbox_cb, (void *)pListData); - pListData->toolbar_item[CONTROLBAR_ITEM_2] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - pListData->toolbar_item[CONTROLBAR_ITEM_3] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); - pListData->toolbar_item[CONTROLBAR_ITEM_4] = elm_toolbar_item_append(toolbar, NULL, NULL, NULL, NULL); + case THREAD_SPAM_LIST_TYPE: + elm_object_text_set(btn, dgettext("sys_string", "IDS_COM_SK_EDIT")); + evas_object_smart_callback_add(btn, "clicked", msg_ui_thread_ctlbar_checkbox_cb, pListData); - if (pListData->item_cnt <=0) - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); + btn2 = elm_button_add(pData->navi_frame); + elm_object_style_set(btn, "naviframe/toolbar/left"); + elm_object_style_set(btn2, "naviframe/toolbar/right"); + elm_object_text_set(btn2, dgettext("sys_string", "IDS_COM_BODY_SETTINGS")); + evas_object_smart_callback_add(btn2, "clicked", msg_ui_thread_ctlbar_spam_setting_cb, pListData); + elm_object_item_part_content_set(pListData->nf_it, "toolbar_button2", btn2); + pListData->toolbar_btn[CONTROLBAR_ITEM_2] = btn2; - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_3], EINA_TRUE); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_4], EINA_TRUE); + if (pListData->item_cnt <=0) + elm_object_disabled_set(btn, EINA_TRUE); break; + default: D_MSG("[ERROR] invalid viewmode"); return; } + + Evas_Object *search_icon = elm_object_content_get(pListData->search_btn); + if (pListData->item_cnt > 0) + elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH); + else + elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM); + + if (pListData->search_mode == THREAD_SEARCH_OFF && msg_ui_thread_rotation_get() == false) { + elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn); + } else { + evas_object_hide(pListData->search_btn); + elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn"); + } } MSG_UI_LEAVE(MSG_UI_LEVEL_DEBUG); } +void msg_ui_thread_show_toolbar(PMSG_THREAD_LIST_DATA pListData) +{ + D_ENTER; + + if (!pListData) + return; + + PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); + + if (!pListData->back_btn) { + pListData->back_btn = elm_button_add(pData->navi_frame); + evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData); + elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default"); + elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn); + } + elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn); + + msg_ui_thread_set_navi_toolbar_item(pListData); + elm_object_item_signal_emit(pListData->nf_it, "elm,state,toolbar,open", ""); + + D_LEAVE; +} + +void msg_ui_thread_hide_toolbar(PMSG_THREAD_LIST_DATA pListData, bool bDeleteBtn) +{ + D_ENTER; + + if (!pListData) + return; + + if (bDeleteBtn) { + int i = 0; + + if (pListData->back_btn) { + evas_object_del(pListData->back_btn); + pListData->back_btn = NULL; + } + + for (i = 0; i < CONTROLBAR_ITEM_MAX; i++) { + if (pListData->toolbar_btn[i]) { + evas_object_del(pListData->toolbar_btn[i]); + pListData->toolbar_btn[i] = NULL; + } + } + } + elm_object_item_part_content_unset(pListData->nf_it, "prev_btn"); + elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button1"); + elm_object_item_part_content_unset(pListData->nf_it, "toolbar_button2"); + elm_object_item_part_content_unset(pListData->nf_it, "toolbar_more_btn"); + + elm_object_item_signal_emit(pListData->nf_it, "elm,state,toolbar,close", ""); + D_LEAVE; +} + void msg_ui_thread_rotation_set(void *data, int rot) { PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data; @@ -855,63 +911,76 @@ bool msg_ui_thread_rotation_get(void) return pData->isRotate; } -void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData) +void msg_ui_thread_lang_changed(void *data) { - D_ENTER; + PMSG_THREAD_DATA pData = (PMSG_THREAD_DATA)data; + PMSG_THREAD_LIST_DATA pListData = NULL; + int i = 0; - PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list(); + if (!pData) + return; - elm_panes_content_left_size_set(pData->panes, 0.4); - if (pListData) { - if (pListData->search_mode == THREAD_SEARCH_ON) { - Evas_Object *entry = NULL; + for (i = 0; i < MSG_THREAD_LIST_MAX_COUNT; i++) { + if (pData->list_data[i] != NULL) { + char label[DEF_BUF_LEN_S+1] = {0,}; - pListData->search_mode = THREAD_SEARCH_OFF; - elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL); + pListData = pData->list_data[i]; - if (pListData->search_timer) { - ecore_timer_del(pListData->search_timer); - pListData->search_timer = NULL; - } + elm_genlist_realized_items_update(pListData->genlist); + elm_object_part_text_set(pListData->noc_ly, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NOMESSAGES")); + elm_object_part_text_set(pListData->searchbar, "elm.guidetext", dgettext("sys_string", "IDS_COM_BODY_SEARCH")); - entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content"); - elm_object_text_set(entry, ""); - elm_object_signal_emit(pListData->searchbar, "cancel,out", ""); + if (pListData->popup) { + evas_object_del(pListData->popup); + pListData->popup = NULL; + } - if (pListData->list_type== THREAD_NORMAL_LIST_TYPE) - msg_ui_thread_list_load(pListData, FALSE); - else - msg_ui_thread_msg_list_load(pListData, pListData->list_type); + msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S); + elm_object_item_text_set(pListData->nf_it, label); + msg_ui_thread_set_navi_toolbar_item(pListData); } + } - if (pListData->view_mode == THREAD_NORMAL_VIEW) { - edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); - elm_object_part_content_unset(pListData->content_ly, "sel_all"); - evas_object_hide(pListData->searchbar); - } + if (pData->split_data) { + char label[DEF_BUF_LEN_S+1] = {0,}; + pListData = msg_ui_thread_get_current_list(); - elm_object_item_part_content_unset(pListData->nf_it, "prev_btn"); - if (pListData->back_btn) { - evas_object_del(pListData->back_btn); - pListData->back_btn = NULL; + msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S); + elm_object_part_text_set(pData->split_data->title_layout, "title_text", label); + elm_object_part_text_set(pData->split_data->noc_ly, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_NOMESSAGES")); + } +} + +void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData) +{ + D_ENTER; + + PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list(); + + elm_panes_content_left_size_set(pData->panes, 0.4); + + if (pListData) { + if (pListData->view_mode == THREAD_NORMAL_VIEW && pListData->item_cnt > 0) { + edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all"); + evas_object_show(pListData->searchbar); + elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar); } + elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE); - evas_object_hide(pListData->toolbar); - elm_object_item_part_content_unset(pListData->nf_it, "controlbar"); - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", ""); + msg_ui_thread_hide_toolbar(pListData, true); + if (pListData->search_btn) { + evas_object_hide(pListData->search_btn); + elm_object_item_part_content_unset(pListData->nf_it, "title_right_btn"); + } elm_object_part_content_set(pData->panes, "left", pData->layout_main); evas_object_show(pData->layout_main); - Evas_Object * layout = msg_ui_get_composer_ug_viewer_layout(); if (layout) { elm_object_part_content_set(pData->panes, "right", layout); evas_object_show(layout); - msg_ui_thread_destroy_split_data(pData->split_data); - } else if (pListData->loaded_ug) { - elm_object_part_content_set(pData->panes, "right", (Evas_Object *)ug_get_layout(pListData->loaded_ug)); - evas_object_show(layout); - msg_ui_thread_destroy_split_data(pData->split_data); + if (pData->split_data) + msg_ui_thread_destroy_split_data(pData->split_data); } else { if (!pData->split_data) { msg_ui_thread_create_split_data(); @@ -925,10 +994,9 @@ void msg_ui_thread_split_view_show(PMSG_THREAD_DATA pData) msg_ui_thread_launch_msg_detail_view(pListData, elm_object_item_data_get(pListData->sel_gen_item)); } } - - if (pListData->selectioninfo_layout) - elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "horizontal/bottom_12"); } + + elm_object_signal_emit(pData->panes, "elm,panes,pair", ""); } void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData) @@ -937,32 +1005,24 @@ void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData) PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list(); + elm_object_part_content_set(pData->panes, "left", pData->layout_main); elm_panes_content_left_size_set(pData->panes, 1.0); + if (pData->split_data) { + elm_object_part_content_unset(pData->panes, "right"); + msg_ui_thread_destroy_split_data(pData->split_data); + } + if (pListData) { - if (pListData->view_mode == THREAD_NORMAL_VIEW) { - edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all"); - evas_object_show(pListData->searchbar); - elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar); + if (pListData->search_mode == THREAD_SEARCH_OFF) { + msg_ui_thread_show_toolbar(pListData); - if (!pListData->back_btn) { - pListData->back_btn = elm_button_add(pData->navi_frame); - evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData); - elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default"); + if (pListData->view_mode == THREAD_NORMAL_VIEW) { + edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); + elm_object_part_content_unset(pListData->content_ly, "sel_all"); + evas_object_hide(pListData->searchbar); } - elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn); } - elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_TRUE); - msg_ui_thread_set_navi_controlbar_item(pListData); - elm_object_item_part_content_set(pListData->nf_it, "controlbar", pListData->toolbar); - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,open", ""); - evas_object_show(pListData->toolbar); - - elm_object_part_content_unset(pData->panes, "right"); - msg_ui_thread_destroy_split_data(pData->split_data); - - if (pListData->selectioninfo_layout) - elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_12"); Evas_Object * layout = msg_ui_get_composer_ug_viewer_layout(); if (layout) { @@ -970,15 +1030,11 @@ void msg_ui_thread_split_view_hide(PMSG_THREAD_DATA pData) elm_object_part_content_unset(pData->panes, "left"); elm_panes_content_left_size_set(pData->panes, 0.0); evas_object_hide(pData->layout_main); - } else if (pListData->loaded_ug) { - elm_object_part_content_set(pData->panes, "right", (Evas_Object *)ug_get_layout(pListData->loaded_ug)); - elm_object_part_content_unset(pData->panes, "left"); - elm_panes_content_left_size_set(pData->panes, 0.0); - evas_object_hide(pData->layout_main); } else if (pData->detail_layout) { pData->detail_layout = NULL; if (pListData->sel_gen_item > 0) msg_ui_thread_launch_msg_detail_view(pListData, elm_object_item_data_get(pListData->sel_gen_item)); } } + elm_object_signal_emit(pData->panes, "elm,panes,unpair", ""); } diff --git a/thread/src/msg-ui-thread-util.c b/thread/src/msg-ui-thread-util.c index 9eb6432..a3202c8 100755 --- a/thread/src/msg-ui-thread-util.c +++ b/thread/src/msg-ui-thread-util.c @@ -138,17 +138,6 @@ void msg_ui_thread_launch_viewer_ug(PMSG_THREAD_LIST_DATA pListData, int nMsgId) return; } - PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); - Evas_Object * layout = (Evas_Object *)ug_get_layout(pListData->loaded_ug); - elm_object_part_content_set(pData->panes, "right", layout); - msg_ui_thread_destroy_split_data(pData->split_data); - - if (pData->isRotate == false) { - elm_object_part_content_unset(pData->panes, "left"); - elm_panes_content_left_size_set(pData->panes, 0.0); - evas_object_hide(pData->layout_main); - } - D_LEAVE; return; } @@ -171,13 +160,13 @@ static void __msg_ui_thread_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void win = ug_get_window(); switch (mode) { - case UG_MODE_FULLVIEW: + case UG_MODE_FULLVIEW: evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); elm_win_resize_object_add(win, base); evas_object_show(base); break; case UG_MODE_FRAMEVIEW: - default: + default: break; } } @@ -198,6 +187,17 @@ static void __msg_ui_thread_ug_destroy_cb(ui_gadget_h ug, void *priv) elm_object_part_content_set(pData->panes, "left", pData->layout_main); elm_object_part_content_unset(pData->panes, "right"); elm_panes_content_left_size_set(pData->panes, 1.0); + } else { + char label[DEF_BUF_LEN_S+1] = {0,}; + + if (!pData->split_data) { + msg_ui_thread_create_split_data(); + msg_ui_thread_splitview_launch(pData, pData->split_data); + } + msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S); + + if (pData->split_data) + elm_object_part_text_set(pData->split_data->title_layout, "title_text", label); } } @@ -306,21 +306,15 @@ void msg_ui_thread_launch_msg_detail_view(PMSG_THREAD_LIST_DATA pListData, PMSG_ elm_object_part_content_set(title_layout, "prev_btn", back_btn); elm_object_item_part_content_unset(nf_it, "prev_btn"); - elm_object_item_part_content_unset(nf_it, "controlbar"); - elm_object_item_signal_emit(nf_it, "elm,state,controlbar,close", ""); + elm_object_item_signal_emit(nf_it, "elm,state,toolbar,close", ""); } else { - Evas_Object *toolbar = NULL; Evas_Object *back_btn = NULL; - toolbar = elm_toolbar_add(navi_frame); - elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND); - back_btn = elm_button_add(navi_frame); elm_object_style_set(back_btn, "naviframe/back_btn/default"); evas_object_smart_callback_add(back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData); nf_it = elm_naviframe_item_push(navi_frame, title, back_btn, NULL, detail_layout, NULL); - elm_object_item_part_content_set(nf_it, "controlbar", toolbar); } pData->detail_layout = detail_layout; pData->detail_nf_it = nf_it; @@ -387,7 +381,9 @@ static Evas_Object *__msg_ui_thread_create_msg_detail_layout(Evas_Object* parent layout = elm_layout_add(parent); elm_layout_theme_set(layout, "layout", "application", "noindicator"); + elm_layout_file_set(layout, MSG_THREAD_THEME, "thread_detail_layout"); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); return layout; } @@ -562,6 +558,10 @@ void msg_ui_thread_cancel_edit_mode(PMSG_THREAD_LIST_DATA pListData) elm_object_part_content_unset(pListData->content_ly, "sel_all"); evas_object_hide(pListData->sel_all_ly); elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar); + if (msg_ui_thread_rotation_get() == false) + edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); + else + edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all"); elm_genlist_decorate_mode_set(pListData->genlist, EINA_FALSE); elm_genlist_select_mode_set(pListData->genlist, ELM_OBJECT_SELECT_MODE_DEFAULT); @@ -576,12 +576,17 @@ void msg_ui_thread_show_normal_mode(PMSG_THREAD_LIST_DATA pListData) if (pListData->view_mode == THREAD_EDIT_VIEW) msg_ui_thread_cancel_edit_mode(pListData); + if (pListData->selectioninfo_layout) { + evas_object_del(pListData->selectioninfo_layout); + pListData->selectioninfo_layout = NULL; + } + if (pListData->select_info) { evas_object_del(pListData->select_info); pListData->select_info = NULL; } - msg_ui_thread_set_navi_controlbar_item(pListData); + msg_ui_thread_set_navi_toolbar_item(pListData); if (pListData->list_type == THREAD_NORMAL_LIST_TYPE) elm_object_item_text_set(pListData->nf_it, dgettext("sys_string", "IDS_COM_BODY_MESSAGES")); @@ -592,23 +597,16 @@ void msg_ui_thread_show_normal_mode(PMSG_THREAD_LIST_DATA pListData) else if (pListData->list_type == THREAD_CBMSG_LIST_TYPE) elm_object_item_text_set(pListData->nf_it, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES")); - if (msg_ui_thread_rotation_get() == true) { + if (msg_ui_thread_rotation_get() == false) { edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); elm_object_part_content_unset(pListData->content_ly, "sel_all"); evas_object_hide(pListData->searchbar); - elm_object_item_signal_emit(pListData->nf_it, "elm,state,controlbar,close", ""); - elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE); - } else { - if (!pListData->back_btn) { - PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); - - pListData->back_btn = elm_button_add(pData->navi_frame); - evas_object_smart_callback_add(pListData->back_btn, "clicked", msg_ui_thread_back_btn_clicked_cb, (void *)pListData); - elm_object_style_set(pListData->back_btn, "naviframe/back_btn/default"); - } - elm_object_item_part_content_set(pListData->nf_it, "prev_btn", pListData->back_btn); elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_TRUE); + msg_ui_thread_show_toolbar(pListData); + } else { + elm_naviframe_item_title_visible_set(pListData->nf_it, EINA_FALSE); + msg_ui_thread_hide_toolbar(pListData, true); } D_LEAVE; @@ -796,10 +794,9 @@ void msg_ui_thread_show_action_popup(PMSG_THREAD_LIST_DATA pListData, int action Evas_Object *layout; label_text = elm_label_add(popup); - elm_object_style_set(label_text, "popup/default"); - elm_label_line_wrap_set(label_text, ELM_WRAP_MIXED); + elm_layout_file_set(label_text, MSG_COMMON_EDJ, "popup_with_checkbox"); elm_object_text_set(label_text, msg); - evas_object_size_hint_weight_set(label_text, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_weight_set(label_text, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(label_text, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(label_text); @@ -813,7 +810,7 @@ void msg_ui_thread_show_action_popup(PMSG_THREAD_LIST_DATA pListData, int action evas_object_smart_callback_add(check, "changed", __msg_ui_thread_action_popup_checked_cb, pListData); evas_object_show(check); - elm_object_part_text_set(layout, "elm.text", "Include protected messages"); + elm_object_part_text_set(layout, "elm.text", dgettext(MESSAGE_PKGNAME, "IDS_MSGF_POP_INCLUDE_PROTECTED_MESSAGE")); elm_object_part_content_set(layout, "elm.swallow.check", check); elm_object_part_content_set(layout, "elm.swallow.content", label_text); evas_object_show(layout); @@ -976,7 +973,12 @@ static void __msg_ui_thread_action_popup_ok_clicked_cb(void *data, Evas_Object * msg_ui_thread_create_split_data(); msg_ui_thread_splitview_launch(pData, pData->split_data); } - msg_ui_thread_splitview_set_title(pData->split_data); + if (pData->split_data) { + char label[DEF_BUF_LEN_S+1] = {0,}; + + msg_ui_thread_get_title_text(pListData, label, DEF_BUF_LEN_S); + elm_object_part_text_set(pData->split_data->title_layout, "title_text", label); + } } Elm_Object_Item *it_dateline = NULL; @@ -1146,25 +1148,19 @@ void msg_ui_thread_show_select_info(PMSG_THREAD_LIST_DATA pListData) MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG); MSG_UI_RET_IF(MSG_UI_LEVEL_DEBUG, !pListData); - PMSG_THREAD_DATA pData = msg_ui_thread_get_data(); - if (!pListData->select_info) { pListData->select_info = elm_notify_add(pListData->content_ly); - elm_notify_orient_set(pListData->select_info, ELM_NOTIFY_ORIENT_BOTTOM); + elm_notify_align_set(pListData->select_info, ELM_NOTIFY_ALIGN_FILL, 1.0); pListData->selectioninfo_layout = elm_layout_add(pListData->content_ly); + elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "center_text"); elm_object_content_set(pListData->select_info, pListData->selectioninfo_layout); } - if (pData->isRotate) - elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "horizontal/bottom_12"); - else - elm_layout_theme_set(pListData->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_12"); - if (pListData->check_cnt == 0) { evas_object_hide(pListData->select_info); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_TRUE); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_TRUE); + elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_1], EINA_TRUE); + elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_2], EINA_TRUE); } else { char text[DEF_BUF_LEN_S] = {'0',}; @@ -1172,9 +1168,9 @@ void msg_ui_thread_show_select_info(PMSG_THREAD_LIST_DATA pListData) edje_object_part_text_set(_EDJ(pListData->selectioninfo_layout), "elm.text", text); evas_object_show(pListData->select_info); - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_1], EINA_FALSE); - if (elm_toolbar_item_icon_get(pListData->toolbar_item[CONTROLBAR_ITEM_2]) != NULL) - elm_object_item_disabled_set(pListData->toolbar_item[CONTROLBAR_ITEM_2], EINA_FALSE); + elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_1], EINA_FALSE); + if (pListData->toolbar_btn[CONTROLBAR_ITEM_2] != NULL) + elm_object_disabled_set(pListData->toolbar_btn[CONTROLBAR_ITEM_2], EINA_FALSE); } } @@ -1255,9 +1251,8 @@ void msg_ui_thread_addr_select_popup(PMSG_THREAD_LIST_DATA pListData, const char evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); popup_title = (char *) calloc(1, strlen(title) + 1); - bzero(popup_title, sizeof(popup_title)); if (strlen(title) > 0) - strncpy(popup_title, title, sizeof(popup_title)); + strncpy(popup_title, title, sizeof(char)* strlen(title)); evas_object_data_set(genlist, "title", popup_title); memset(&pData->itc_popup, 0x00, sizeof(Elm_Genlist_Item_Class)); @@ -1415,6 +1410,8 @@ static void __msg_ui_thread_addr_select_popup_destroy(void *data) void msg_ui_thread_set_app_state(int app_state) { + D_ENTER; + if (app_state <= MSG_UI_STATE_NONE || app_state >= MSG_UI_STATE_MAX) return; @@ -1424,17 +1421,21 @@ void msg_ui_thread_set_app_state(int app_state) return; if (app_state == MSG_UI_STATE_PAUSE) { - Elm_Object_Item* it_sweep = NULL; PMSG_THREAD_LIST_DATA pListData = msg_ui_thread_get_current_list(); - it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist); - if (it_sweep) { - elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE); - elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT); + if (pListData) { + Elm_Object_Item* it_sweep = NULL; + + it_sweep = (Elm_Object_Item *)elm_genlist_decorated_item_get(pListData->genlist); + if (it_sweep) { + elm_genlist_item_decorate_mode_set(it_sweep, "slide", EINA_FALSE); + elm_genlist_item_select_mode_set(it_sweep, ELM_OBJECT_SELECT_MODE_DEFAULT); + } } } pData->app_state = app_state; + D_LEAVE; } int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData) @@ -1445,6 +1446,110 @@ int msg_ui_thread_get_app_state(PMSG_THREAD_DATA pData) return pData->app_state; } +void msg_ui_thread_cancel_search_mode(PMSG_THREAD_LIST_DATA pListData) +{ + if (pListData == NULL || pListData->search_mode == THREAD_SEARCH_OFF) + return; + + pListData->search_mode = THREAD_SEARCH_OFF; + elm_genlist_mode_set(pListData->genlist, ELM_LIST_SCROLL); + + if (pListData->search_timer) { + ecore_timer_del(pListData->search_timer); + pListData->search_timer = NULL; + } + + Evas_Object *entry = NULL; + + elm_object_signal_emit(pListData->searchbar, "elm,state,guidetext,show", "elm"); + entry = elm_object_part_content_get(pListData->searchbar, "elm.swallow.content"); + elm_object_text_set(entry, ""); + elm_object_signal_emit(pListData->searchbar, "cancel,out", ""); + + if (msg_ui_thread_rotation_get() == false) { + evas_object_show(pListData->search_btn); + elm_object_item_part_content_set(pListData->nf_it, "title_right_btn", pListData->search_btn); + + edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); + elm_object_part_content_unset(pListData->content_ly, "sel_all"); + evas_object_hide(pListData->searchbar); + + msg_ui_thread_show_toolbar(pListData); + } + + if (pListData->list_type== THREAD_NORMAL_LIST_TYPE) + msg_ui_thread_list_load(pListData, FALSE); + else + msg_ui_thread_msg_list_load(pListData, pListData->list_type); +} + +void msg_ui_thread_button_disabled_set(PMSG_THREAD_LIST_DATA pListData, Eina_Bool disabled, int controlbar_btn) +{ + MSG_UI_RET_IF(MSG_UI_LEVEL_ERR, !pListData); + + if (disabled == EINA_TRUE) { + if (pListData->view_mode == THREAD_NORMAL_VIEW) { + if (pListData->toolbar_btn[controlbar_btn]) + elm_object_disabled_set(pListData->toolbar_btn[controlbar_btn], EINA_TRUE); + + if (msg_ui_thread_rotation_get() == true) { + edje_object_signal_emit(_EDJ(pListData->content_ly), "hide_searchbar", "sel_all"); + elm_object_part_content_unset(pListData->content_ly, "sel_all"); + evas_object_hide(pListData->searchbar); + } else { + if (pListData->search_btn) { + Evas_Object *search_icon = elm_object_content_get(pListData->search_btn); + elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH_DIM); + } + } + } + } else { + if (pListData->view_mode == THREAD_NORMAL_VIEW) { + if (pListData->toolbar_btn[controlbar_btn]) + elm_object_disabled_set(pListData->toolbar_btn[controlbar_btn], EINA_FALSE); + + if (msg_ui_thread_rotation_get() == true) { + edje_object_signal_emit(_EDJ(pListData->content_ly), "show_searchbar", "sel_all"); + evas_object_show(pListData->searchbar); + elm_object_part_content_set(pListData->content_ly, "sel_all", pListData->searchbar); + } else { + if (pListData->search_btn) { + Evas_Object *search_icon = elm_object_content_get(pListData->search_btn); + elm_image_file_set(search_icon, MSG_IMAGES_EDJ, MSG_UI_THREAD_LIST_TITLE_ICON_SEARCH); + } + } + } + } +} + +void msg_ui_thread_get_title_text(PMSG_THREAD_LIST_DATA pListData, char *label, int label_len) +{ + MSG_UI_RETM_IF(MSG_UI_LEVEL_ERR, !label || !pListData, "label or pListData is NULL"); + + if (pListData) { + switch (pListData->list_type) { + case THREAD_NORMAL_LIST_TYPE: + strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(char)*label_len); + break; + case THREAD_SPAM_LIST_TYPE: + strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SPAM_MESSAGES"), sizeof(char)*label_len); + break; + case THREAD_SIM_LIST_TYPE: + strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_SIM_CARD_MESSAGES"), sizeof(char)*label_len); + break; + case THREAD_CBMSG_LIST_TYPE: + strncpy(label, dgettext(MESSAGE_PKGNAME, "IDS_MSGF_BODY_CB_MESSAGES"), sizeof(char)*label_len); + break; + default: + D_MSG("[ERROR] invalid viewmode"); + return; + } + } else { + strncpy(label, dgettext("sys_string", "IDS_COM_BODY_MESSAGES"), sizeof(char)*label_len); + } +} + + const char *msg_ui_thread_make_search_result_string(const char *string, char *searchword, bool *result) { char pstr[DEF_BUF_LEN + 1] = {0,}; diff --git a/thread/theme/thread_genlist.edc b/thread/theme/thread_genlist.edc index 39f85a4..bd83bea 100755 --- a/thread/theme/thread_genlist.edc +++ b/thread/theme/thread_genlist.edc @@ -99,6 +99,77 @@ collections{ } } } + group{ + name : "thread_detail_layout"; + + parts{ + part { + name: "pad_left"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 70 0; + fixed: 1 0; + visible: 0; + rel1.relative: 0.0 0.0; + rel2.relative: 0.0 1.0; + } + } + part { + name: "pad_right"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min : 70 0; + fixed: 1 0; + visible: 0; + rel1.relative: 1.0 0.0; + rel2.relative: 1.0 1.0; + } + } + part { + name: "pad_top"; + type: RECT; + scale : 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 0 1; + visible: 0; + rel1 { relative: 1.0 0.0; to_x: "pad_left"; } + rel2 { relative: 0.0 0.0; to_x: "pad_right"; } + } + } + part { + name: "pad_bottom"; + type: RECT; + scale : 1; + description { + state: "default" 0.0; + min: 0 0; + fixed: 0 1; + visible: 0; + rel1 { relative: 1.0 1.0; to_x: "pad_left"; } + rel2 { relative: 0.0 1.0; to_x: "pad_right"; } + } + } + part{ + name:"elm.swallow.content"; + type: SWALLOW; + scale : 1; + description { + state: "default" 0.0; + min: 0 0; + align: 0 0; + fixed: 1 0; + rel1 { relative: 0.0 1.0; to: "pad_top"; } + rel2 { relative: 1.0 1.0; to: "pad_bottom"; } + } + } + } + } group { name : "elm/genlist/item/thread_list_blank/default"; -- 2.7.4