TizenRefApp-5789 [Call UI] Refactor all veiws data stuctures 24/60624/1
authorIgor Olshevskyi <i.olshevskyi@samsung.com>
Mon, 22 Feb 2016 09:24:24 +0000 (11:24 +0200)
committerIgor Olshevskyi <i.olshevskyi@samsung.com>
Mon, 29 Feb 2016 10:54:29 +0000 (12:54 +0200)
Change-Id: If26291498929c71f174e5719b264c92f05113551

41 files changed:
SDK-Project/call-ui/.cproject
SDK-Project/call-ui/.tproject
inc/callui-common.h
inc/callui-debug.h
inc/callui-keypad.h
inc/callui-view-callend.h
inc/callui-view-circle.h
inc/callui-view-dialing.h
inc/callui-view-elements.h
inc/callui-view-incoming-call-noti.h [moved from inc/callui-view-active-incoming-call.h with 51% similarity]
inc/callui-view-incoming-call.h
inc/callui-view-incoming-lock.h [deleted file]
inc/callui-view-layout.h
inc/callui-view-manager.h
inc/callui-view-multi-call-conf.h
inc/callui-view-multi-call-list.h
inc/callui-view-multi-call-split.h
inc/callui-view-single-call.h
inc/callui.h
res/edje_src/edc/call_edc/callui-view-main-layout.edc
res/edje_src/edc/call_edc/callui-view-multi-call-list.edc
res/edje_src/edc/call_edc/callui_view_incoming_active.edc
src/callui-common.c
src/callui-keypad.c
src/callui-lock-manager.c
src/callui-view-active-incoming-call.c [deleted file]
src/callui-view-callend.c
src/callui-view-circle.c
src/callui-view-dialing.c
src/callui-view-elements.c
src/callui-view-incoming-call-noti.c [new file with mode: 0644]
src/callui-view-incoming-call.c
src/callui-view-incoming-lock.c [deleted file]
src/callui-view-lock-screen.c
src/callui-view-manager.c
src/callui-view-multi-call-conf.c
src/callui-view-multi-call-list.c
src/callui-view-multi-call-split.c
src/callui-view-quickpanel.c
src/callui-view-single-call.c
src/callui.c

index 96b558c..b20b144 100644 (file)
@@ -26,7 +26,7 @@
                                                                <option id="gnu.cpp.compiler.option.optimization.level.1679205774" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
                                                                <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1016937387" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                <option id="sbi.gnu.cpp.compiler.option.1080100499" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
-                                                                       <listOptionValue builtIn="false" value="mobile-3.0-emulator.core_llvm36.i386.core.app"/>
+                                                                       <listOptionValue builtIn="false" value="mobile-3.0-device.core_llvm36.armel.core.app"/>
                                                                </option>
                                                                <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.168454849" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
@@ -38,6 +38,8 @@
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
@@ -70,6 +72,7 @@
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eldbus-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/service-adaptor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
                                                                        <listOptionValue builtIn="false" value=" -fPIE"/>
                                                                        <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
                                                                </option>
                                                                <option id="gnu.cpp.compiler.option.include.paths.579553451" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.107534150" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
                                                                <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.1399910668" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
                                                                <option id="sbi.gnu.c.compiler.option.376711470" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
-                                                                       <listOptionValue builtIn="false" value="mobile-3.0-emulator.core_llvm36.i386.core.app"/>
+                                                                       <listOptionValue builtIn="false" value="mobile-3.0-device.core_llvm36.armel.core.app"/>
                                                                </option>
                                                                <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.724287551" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eldbus-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/service-adaptor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
                                                                        <listOptionValue builtIn="false" value=" -fPIE"/>
                                                                        <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="-mthumb"/>
                                                                </option>
                                                                <option id="gnu.c.compiler.option.include.paths.367450361" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool command="i386-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1302461488" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+                                                       <tool command="arm-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1302461488" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
                                                                <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1788077149" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
                                                        </tool>
                                                        <tool id="org.tizen.nativecore.tool.fnmapgen.1210964854" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
                                                </toolChain>
                                        </folderInfo>
                                        <sourceEntries>
-                                               <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="inc"/>
-                                               <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="res"/>
-                                               <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="src"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+                                               <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+                                               <entry excluding="callui-view-incoming-lock.cxx" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
                                        </sourceEntries>
                                </configuration>
                        </storageModule>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eldbus-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/service-adaptor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/call-manager&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/chromium-ewk&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eldbus-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/emile-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eo-1&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/metadata-editor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minicontrol&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+                                                                       <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/nsd/&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/phonenumber-utils&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
                                                                        <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/service-adaptor&quot;"/>
index 74bbc34..56660b2 100644 (file)
@@ -7,5 +7,6 @@
     </platforms>
     <package>
         <blacklist/>
+        <resFallback autoGen="true"/>
     </package>
 </tproject>
index 4a09f7f..54305aa 100644 (file)
 #define CALLUI_KEY_VOLUMEUP "XF86AudioRaiseVolume"
 #define CALLUI_KEY_VOLUMEDOWN "XF86AudioLowerVolume"
 
+#define CALLUI_REJ_MSG_MAX_LENGTH (210+1)
+#define CALLUI_REJ_MSG_MAX_COUNT 6
+
+#define CALLUI_SAFE_C_CAST(type, value) ((type)(ptrdiff_t)value)
+
+#undef FREE
+#define FREE(ptr) \
+       do {\
+               free(ptr);\
+               ptr = NULL;\
+       } while (0)
+
+#undef G_FREE
+#define G_FREE(ptr) \
+       do {\
+               g_free(ptr);\
+               ptr = NULL;\
+       } while (0)
+
+#undef DELETE_EVAS_OBJECT
+#define DELETE_EVAS_OBJECT(x) \
+       do { \
+               if (x != NULL) { \
+                       evas_object_del(x); \
+                       x = NULL; \
+               } \
+       } while (0)
+
 
 typedef enum {
        LOCK_TYPE_UNLOCK = 1,
@@ -57,7 +85,8 @@ typedef enum {
 typedef enum {
    CALLUI_RESULT_OK,
    CALLUI_RESULT_FAIL,
-   CALLUI_RESULT_INVALID_PARAM
+   CALLUI_RESULT_INVALID_PARAM,
+   CALLUI_RESULT_ALLOCATION_FAIL
 } callui_result_t;
 
 /**
@@ -90,17 +119,15 @@ void _callui_common_delete_duration_timer();
 
 /**
  * @brief create ending timer
- *
- * @param[in] vd            View data
- *
+ * @param[in] appdata        App data
  */
-void _callui_common_create_ending_timer(call_view_data_t *vd);
+void _callui_common_create_ending_timer(void *appdata);
 
 /**
  * @brief Delete ending timer
- *
+ * @param[in] appdata        App data
  */
-void _callui_common_delete_ending_timer(void);
+void _callui_common_delete_ending_timer(void *appdata);
 
 /**
  * @brief Get sim name
@@ -226,7 +253,7 @@ gboolean _callui_common_is_extra_volume_available(void);
  * @return state
  *
  */
-gboolean _callui_common_is_answering_mode_on(void);
+int _callui_common_is_answering_mode_on(void);
 
 /**
  * @brief state is powerkey mode on
@@ -234,7 +261,7 @@ gboolean _callui_common_is_answering_mode_on(void);
  * @return state
  *
  */
-gboolean _callui_common_is_powerkey_mode_on(void);
+int _callui_common_is_powerkey_mode_on(void);
 
 /**
  * @brief Changed lcd state
@@ -296,4 +323,24 @@ char *_callui_common_get_reject_msg_by_index(int index);
  */
 void _callui_common_exit_app();
 
+/**
+ * @brief Sends reject message to incoming call recipient
+ * @param[in] appdata          application data
+ * @param[in] reject_msg       reject message txt
+ * @return result CALLUI_RESULT_OK on success and error result otherwise
+ */
+int _callui_common_send_reject_msg(void *appdata, char *reject_msg);
+
+/**
+ * @brief Gets audio mode
+ * @return @c true when callui is on handsfree mode, otherwise false
+ */
+bool _callui_is_on_handsfree_mode();
+
+/**
+ * @brief Gets background state
+ * @return @c true when callui is on background, otherwise false
+ */
+bool _callui_is_on_background();
+
 #endif //__CALLUI_COMMON_H_
index 96f7343..877619d 100644 (file)
@@ -14,6 +14,9 @@
  *  limitations under the License.
  *
  */
+
+#include <dlog.h>
+
 #ifndef __CALLUI_DEBUG_H__
 #define __CALLUI_DEBUG_H__
 
index f59d012..0088ecf 100755 (executable)
@@ -50,8 +50,10 @@ void _callui_keypad_hide_layout(void *appdata);
  *
  * @param[in]    appdata         Application data
  *
+ * @return CALLUI_RESULT_OK os success or error code otherwise
+ *
  */
-void _callui_keypad_create_layout(void *appdata);
+int _callui_keypad_create_layout(void *appdata);
 
 /**
  * @brief Delete keypad layout
index 70204aa..7c29d37 100644 (file)
  *
  */
 
-#ifndef _CALLUI_VIEW_CALLEND_H_
-#define _CALLUI_VIEW_CALLEND_H_
+#ifndef __CALLUI_VIEW_CALLEND_H__
+#define __CALLUI_VIEW_CALLEND_H__
 
-#include "callui-view-manager.h"
+typedef struct _callui_view_callend *callui_view_callend_h;
 
 /**
- * @brief Create end call layout
- *
- * @return End call view data
- *
- */
-call_view_data_t *_callui_view_callend_new();
-
-/**
- * @brief Get end call layout
- *
- * @param[in]    vd              View data
- *
- * @return End call layout
+ * @brief Creates Call End view instance
  *
+ * @return View data handler
  */
-Evas_Object *_callui_view_callend_get_layout(call_view_data_t *vd);
+callui_view_callend_h _callui_view_callend_new();
 
-#endif //_CALLUI_VIEW_CALLEND_H_
+#endif /* __CALLUI_VIEW_CALLEND_H__ */
index 81e704e..47e231e 100755 (executable)
 #ifndef __CALLUI_ONECALL_CIRCLE_VIEW_H_
 #define __CALLUI_ONECALL_CIRCLE_VIEW_H_
 
-#include "callui.h"
 
-/**
- * @brief Reset accept/reject layout
- *
- * @param[in]    data     View data
- *
- */
-void _callui_view_circle_accept_reject_reset(void *data);
+#include <Elementary.h>
+
+#include "callui-view-incoming-call.h"
+#include "callui.h"
 
 /**
  * @brief Create reject layout
  *
- * @param[in]    ad       Application data
- * @param[in]    data     View data
+ * @param[in]  ad              Application data
+ * @param[in]  vd              Incoming call lock view hander
+ * @param[in]  parent  Parent Evas_Object
  *
- * @return Reject layout
+ * @return CALLUI_RESULT_OK on success or error code otherwise
  *
  */
-Evas_Object *_callui_view_circle_create_reject_layout(callui_app_data_t *ad, void *data);
+int _callui_view_circle_create_reject_layout(callui_app_data_t *ad, callui_view_incoming_call_h vd, Evas_Object *parent);
 
 /**
  * @brief Create accept layout
  *
- * @param[in]    ad       Application data
- * @param[in]    data     View data
+ * @param[in]  ad              Application data
+ * @param[in]  vd              Incoming call lock view hander
+ * @param[in]  parent  Parent Evas_Object
  *
- * @return Accept layout
+ * @return CALLUI_RESULT_OK on success or error code otherwise
  *
  */
-Evas_Object *_callui_view_circle_create_accept_layout(callui_app_data_t *ad, void *data);
+int _callui_view_circle_create_accept_layout(callui_app_data_t *ad, callui_view_incoming_call_h vd, Evas_Object *parent);
 
 #endif
index 3f6a6ad..7debd2a 100644 (file)
  *
  */
 
-#ifndef __CALLUI_DIALING_VIEW_H_
-#define __CALLUI_DIALING_VIEW_H_
+#ifndef __CALLUI_DIALING_VIEW_H__
+#define __CALLUI_DIALING_VIEW_H__
 
-#include "callui-view-manager.h"
+typedef struct _callui_view_dialing *callui_view_dialing_h;
 
 /**
- * @brief Create dialing view
- *
- * @return New dialing view data
+ * @brief Create dialing view instance
  *
+ * @return View data handler
  */
-call_view_data_t *_callui_dialing_view_dialing_new();
+callui_view_dialing_h _callui_dialing_view_dialing_new();
 
-#endif //__CALLUI_DIALING_VIEW_H_
+#endif /* __CALLUI_DIALING_VIEW_H__ */
index 6e028ff..7ff2cda 100644 (file)
@@ -179,12 +179,13 @@ Evas_Object *_callui_create_bottom_third_button_disabled(callui_app_data_t *ad);
  * @brief Create end call button
  *
  * @param[in]    parent    Parent object
+ * @param[in]    cb_func   Callback function
  * @param[in]    data      App data
  *
  * @return layout
  *
  */
-Evas_Object *_callui_create_end_call_button(Evas_Object *parent, void *data);
+Evas_Object *_callui_create_end_call_button(Evas_Object *parent, Evas_Smart_Cb cb_func, void *data);
 
 /**
  * @brief Destroy end call button
@@ -195,81 +196,6 @@ Evas_Object *_callui_create_end_call_button(Evas_Object *parent, void *data);
 void _callui_destroy_end_call_button(Evas_Object *parent);
 
 /**
- * @brief Create disabled voice call button
- *
- * @param[in]    data      View data
- *
- * @return layout
- *
- */
-Evas_Object *_callui_create_voicecall_button_disabled(void *data);
-
-/**
- * @brief Create disabled message button
- *
- * @param[in]    data      View data
- *
- * @return layout
- *
- */
-Evas_Object *_callui_create_message_button_disabled(void *data);
-
-/**
- * @brief Create view contact button
- *
- * @param[in]    data       View data
- * @param[in]    ct_id      Contact id
- *
- * @return layout
- *
- */
-Evas_Object *_callui_create_view_contact_button(void *data, int ct_id);
-
-/**
- * @brief Create contact button
- *
- * @param[in]    data       View data
- * @param[in]    number     Contact number
- *
- * @return layout
- *
- */
-Evas_Object *_callui_create_create_contacts_button(void *data, char *number);
-
-/**
- * @brief Update existing contact button
- *
- * @param[in]    data       View data
- * @param[in]    number     Contact number
- *
- * @return layout
- *
- */
-Evas_Object *_callui_create_update_existing_contact_button(void *data, char *number);
-
-/**
- * @brief Create voice call button
- *
- * @param[in]    data       View data
- * @param[in]    number     Contact number
- *
- * @return layout
- *
- */
-Evas_Object *_callui_create_voicecall_button(void *data, char *number);
-
-/**
- * @brief Create message button
- *
- * @param[in]    data       View data
- * @param[in]    number     Contact number
- *
- * @return layout
- *
- */
-Evas_Object *_callui_create_message_button(void *data, char *number);
-
-/**
  * @brief Create bg layout
  *
  * @param[in]    parent     Parent layout
@@ -476,19 +402,13 @@ void _callui_update_extra_vol_btn(callui_app_data_t *ad, Eina_Bool is_on);
 void _callui_set_background_layout(Evas_Object *parent);
 
 /**
- * @brief Gets audio mode
- *
- * @return @c true when callui is on handsfree mode, otherwise false
- *
- */
-bool _callui_is_on_handsfree_mode();
-
-/**
- * @brief Gets background state
+ * @brief Create and set background layout
  *
- * @return @c true when callui is on background, otherwise false
+ * @param[in]    app_data              Application data pointer
+ * @param[in]    parent        Parent object
+ * @param[in]    part          Part name in parent to be set reject message button
  *
  */
-bool _callui_is_on_background();
+int _callui_create_reject_msg_button(void *app_data, Evas_Object *parent, char *part);
 
 #endif //__CALLUI_VIEW_ELEMENTS_H_
similarity index 51%
rename from inc/callui-view-active-incoming-call.h
rename to inc/callui-view-incoming-call-noti.h
index 7093cef..08d4438 100644 (file)
  *
  */
 
-#ifndef __CALLUI_VIEW_ACTIVE_INCOMING_CALL_H_
-#define __CALLUI_VIEW_ACTIVE_INCOMING_CALL_H_
+#ifndef __CALLUI_VIEW_INCOMING_CALL_NOTI_H__
+#define __CALLUI_VIEW_INCOMING_CALL_NOTI_H__
 
-#include "callui-view-manager.h"
+typedef struct _callui_view_incoming_call_noti *callui_view_incoming_call_noti_h;
 
 /**
- * @brief Draw screen for active incoming call
- *
- * @param[in]   ad      Call ui app data
- * @param[in]   vd      Call view data
- *
- */
-void _callui_view_active_incoming_call_draw_screen(callui_app_data_t *ad, call_view_data_t *vd);
-
-/**
- * @brief Create layout for active incoming call
- *
- * @param[in]   vd       Call view data
- * @param[in]   appdata  app data
+ * @brief Creates incoming call active notification view instance
  *
+ * @return View data handler
  */
-int _callui_view_active_incoming_call_oncreate(call_view_data_t *view_data, void *appdata);
+callui_view_incoming_call_noti_h _callui_view_incoming_call_noti_new();
 
-#endif /* __CALLUI_VIEW_ACTIVE_INCOMING_CALL_H_ */
+#endif /* __CALLUI_VIEW_INCOMING_CALL_NOTI_H__ */
index e756a9a..7fde3dd 100644 (file)
  *
  */
 
-#ifndef __CALLUI_VIEW_INCOMING_CALL_H_
-#define __CALLUI_VIEW_INCOMING_CALL_H_
+#ifndef __CALLUI_VIEW_INCOMING_LOCK_H__
+#define __CALLUI_VIEW_INCOMING_LOCK_H__
 
-#include "callui-view-manager.h"
-#include "callui.h"
+#include <Elementary.h>
+
+typedef struct _callui_view_incoming_call *callui_view_incoming_call_h;
+
+/**
+ * @brief Creates Incoming call view instance
+ *
+ * @return View data handler
+ */
+callui_view_incoming_call_h _callui_view_incoming_call_new();
+
+/**
+ * @brief Sets accept layout to Incoming call view
+ *
+ * @param[in]  vd              View data handler
+ * @param[in]  layout  Accept layout
+ *
+ * @return CALLUI_RESULT_OK on success or error code otherwise
+ */
+int _callui_view_incoming_call_set_accept_layout(callui_view_incoming_call_h vd, Evas_Object *layout);
 
 /**
- * @brief Draw screen for incoming call
+ * @brief Gets accept layout from Incoming call view
  *
- * @param[in]   ad            Call ui app data
- * @param[in]   vd            Call view data
+ * @param[in]  vd              View data handler
  *
+ * @return Accept layout
  */
-void _callui_view_incoming_call_draw_screen(callui_app_data_t *ad, call_view_data_t *vd);
+Evas_Object *_callui_view_incoming_call_get_accept_layout(callui_view_incoming_call_h vd);
 
 /**
- * @brief Create layout for incoming call
+ * @brief Sets reject layout to Incoming call view
  *
- * @param[in]   vd            Call view data
- * @param[in]   appdata       Application data
+ * @param[in]  vd              View data handler
+ * @param[in]  layout  Reject layout
  *
+ * @return CALLUI_RESULT_OK on success or error code otherwise
  */
-int _callui_view_incoming_call_oncreate(call_view_data_t *view_data, void *appdata);
+int _callui_view_incoming_call_set_reject_layout(callui_view_incoming_call_h vd, Evas_Object *layout);
 
 /**
- * @brief Destroy incoming call
+ * @brief Gets reject layout from Incoming call view
  *
- * @param[in]   data         View data
+ * @param[in]  vd              View data handler
  *
+ * @return Reject layout
  */
-void _callui_view_incoming_call_ondestroy(void *data);
+Evas_Object *_callui_view_incoming_call_get_reject_layout(callui_view_incoming_call_h vd);
 
-#endif /* __CALLUI_VIEW_INCOMING_CALL_H_ */
+#endif /* __CALLUI_VIEW_INCOMING_LOCK_H__ */
diff --git a/inc/callui-view-incoming-lock.h b/inc/callui-view-incoming-lock.h
deleted file mode 100644 (file)
index e8b548f..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-#ifndef __CALLUI_INCOMINGLOCK_VIEW_H_
-#define __CALLUI_INCOMINGLOCK_VIEW_H_
-
-#include "callui-view-manager.h"
-#include "callui.h"
-
-/**
- * @brief Create Incoming lock view
- *
- * @return View data
- *
- */
-call_view_data_t *_callui_view_incoming_lock_new();
-
-/**
- * @brief Incoming lock set accept layout
- *
- * @param[in]   vd                     view data
- * @param[in]   layout                 Accept layout
- *
- */
-void _callui_view_incoming_lock_set_accept_layout(call_view_data_t *vd, Evas_Object *layout);
-
-/**
- * @brief Incoming lock get accept layout
- *
- * @param[in]   vd                      View data
- *
- * @return Accept layout
- *
- */
-Evas_Object *_callui_view_incoming_lock_get_accept_layout(call_view_data_t *vd);
-
-/**
- * @brief Incoming lock get reject layout
- *
- * @param[in]   vd                      View data
- *
- * @return Reject layout
- *
- */
-Evas_Object *_callui_view_incoming_lock_get_reject_layout(call_view_data_t *vd);
-
-/**
- * @brief Incoming lock set reject layout
- *
- * @param[in]   vd                      View data
- * @param[in]   layout                  Reject layout
- *
- */
-void _callui_view_incoming_lock_set_reject_layout(call_view_data_t *vd, Evas_Object *layout);
-
-/**
- * @brief Send reject message
- *
- * @param[in]   data                    View data
- * @param[in]   call_data               Call data
- *
- */
-void _callui_view_incoming_lock_view_send_reject_msg(void *data, call_data_t *call_data);
-
-/**
- * @brief Create item class
- *
- * @return Elm_Genlist_Item_Class
- *
- */
-Elm_Genlist_Item_Class * _callui_view_incoming_lock_create_item_class();
-
-/**
- * @brief Create reject message button
- *
- * @param[in]   parent                  Parent object
- * @param[in]   part                    Part to set button
- * @param[in]   data                    View data
- *
- */
-void _callui_view_incoming_lock_create_reject_msg_button(Evas_Object *parent, char *part, void *data);
-
-/**
- * @brief Append item to genlist
- *
- * @param[in]   msg_glist               Message genlist
- * @param[in]   itc_reject_msg          Genlist item class
- * @param[in]   index                   Item index
- *
- * @return Item
- *
- */
-Elm_Object_Item *_callui_view_incoming_lock_append_genlist_item(Evas_Object *msg_glist, Elm_Genlist_Item_Class * itc_reject_msg, int index);
-
-#define CALLUI_REJECT_MSG_LENGTH_MAX (210+1)
-typedef struct {
-       Evas_Object *contents;
-       Evas_Object *caller_info;
-       Evas_Object *dimming_ly;
-
-       Evas_Object *lock_accept;
-       Evas_Object *lock_reject;
-
-       Evas_Object *ic;
-       Evas_Object *lock_reject_with_msg;
-       Evas_Object *reject_msg_gl;
-       Evas_Object *msg_glist;
-
-       int reject_with_msg_start_y;
-       int reject_with_msg_cur_y;
-
-       int msg_list_height;
-
-       gboolean bmouse_down_pressed;
-
-       Elm_Genlist_Item_Class *itc_reject_msg;
-       Evas_Coord y_momentum;
-       char reject_msg[CALLUI_REJECT_MSG_LENGTH_MAX];
-
-} incoming_lock_view_priv_t;
-
-#endif //__CALLUI_INCOMINGLOCK_VIEW_H_
index fd8e306..920fbe7 100755 (executable)
 #define MTLOCK_REJECT_MSG_TOP_VISIBLE_AREA_W   (MTLOCK_REJECT_MSG_TEXT_HEIGHT+MTLOCK_REJECT_MSG_ARW_HEIGHT)
 
 // TODO: need to check and correct if is needed
-#define MTLOCK_ACTIVE_CALL_HEIGHT 360
+#define MTLOCK_ACTIVE_NOTI_CALL_HEIGHT 360
 
 #define ITEM_SIZE_H 120
 
index 73affdb..4bcbb24 100644 (file)
 
 typedef enum {
        VIEW_TYPE_UNDEFINED = -1,
-       VIEW_TYPE_DIALLING,                     /**< Dialling view*/
-       VIEW_TYPE_INCOMING_LOCK,        /**< Incoming lock view*/
-       VIEW_TYPE_SINGLECALL,           /**< Incoming single call view*/
-       VIEW_TYPE_MULTICALL_SPLIT,      /**< Multicall split view */
-       VIEW_TYPE_MULTICALL_CONF,       /**< Multicall conference view */
-       VIEW_TYPE_MULTICALL_LIST,       /**< Multicall list view */
-       VIEW_TYPE_ENDCALL,                      /**< End call view */
-       VIEW_TYPE_QUICKPANEL,           /**< Quick panel view */
-       VIEW_TYPE_MAX                           /**< Max view count*/
+       VIEW_TYPE_DIALLING,                             /**< Dialling view*/
+       VIEW_TYPE_INCOMING_CALL_NOTI,   /**< Incoming active notification view*/
+       VIEW_TYPE_INCOMING_CALL,                /**< Incoming lock view*/
+       VIEW_TYPE_SINGLECALL,                   /**< Incoming single call view*/
+       VIEW_TYPE_MULTICALL_SPLIT,              /**< Multicall split view */
+       VIEW_TYPE_MULTICALL_CONF,               /**< Multicall conference view */
+       VIEW_TYPE_MULTICALL_LIST,               /**< Multicall list view */
+       VIEW_TYPE_ENDCALL,                              /**< End call view */
+       VIEW_TYPE_QUICKPANEL,                   /**< Quick panel view */
+       VIEW_TYPE_MAX                                   /**< Max view count*/
 } callui_view_type_e;
 
 struct _view_data;
-typedef struct appdata callui_app_data_t;
 
 typedef int (*create_cb)       (struct _view_data *view_data, void *appdata);
 typedef int (*update_cb)       (struct _view_data *view_data);
 typedef int (*destroy_cb)      (struct _view_data *view_data);
 
-typedef struct _view_data {
-       callui_view_type_e type;        //CM_UI to do removed   vcui_app_call_data_t *app_data;
+typedef struct appdata callui_app_data_t;
 
+struct _view_data {
        create_cb onCreate;
        update_cb onUpdate;
        destroy_cb onDestroy;
-
-       Evas_Object *layout;
        callui_app_data_t *ad;
-       void *priv;
-} call_view_data_t;
+       Evas_Object *contents;
+};
+typedef struct _view_data call_view_data_base_t;
 
 typedef struct _callui_vm *callui_vm_h;
 
 /**
  * @brief Create view manager
+ *
  * @return view manager handler
  */
 callui_vm_h _callui_vm_create(callui_app_data_t *ad);
 
 /**
  * @brief Destroy view manager
+ *
  * @param[in]  vm              View manager handler
  */
 void _callui_vm_destroy(callui_vm_h vm);
 
 /**
  * @brief Change view
+ *
  * @param[in]  vm              View manager handler
  * @param[in]  type    View type
+ *
  * @return result CALLUI_RESULT_OK on success
  */
 int _callui_vm_change_view(callui_vm_h vm, callui_view_type_e type);
 
 /**
  * @brief Auto change view
+ *
  * @param[in]  vm              View manager handler
+ *
  * @return result CALLUI_RESULT_OK on success
  */
 int _callui_vm_auto_change_view(callui_vm_h vm);
 
 /**
  * @brief Get top view type
+ *
  * @param[in]  vm              View manager handler
+ *
  * @return view type
  */
 callui_view_type_e _callui_vm_get_cur_view_type(callui_vm_h vm);
index e19117c..1f38533 100755 (executable)
  */
 
 
-#ifndef _CALLUI_VIEW_MULTI_CALL_CONF_H_
-#define _CALLUI_VIEW_MULTI_CALL_CONF_H_
+#ifndef __CALLUI_VIEW_MULTI_CALL_CONF_H__
+#define __CALLUI_VIEW_MULTI_CALL_CONF_H__
 
-#include "callui-view-manager.h"
+typedef struct _callui_view_mc_conf *callui_view_mc_conf_h;
 
 /**
- * @brief Create multicall conf
+ * @brief Creates Multicall conference view instance
  *
- * @return New multicall data
+ * @return View data handler
  *
  */
-call_view_data_t *_callui_view_multi_call_conf_new();
+callui_view_mc_conf_h _callui_view_multi_call_conf_new();
 
-#endif /*_CALLUI_VIEW_MULTI_CALL_CONF_H_*/
+#endif /* __CALLUI_VIEW_MULTI_CALL_CONF_H__ */
 
index da3d8c0..5dc5634 100755 (executable)
  */
 
 
-#ifndef _CALLUI_VIEW_MULTI_CALL_LIST_H_
-#define _CALLUI_VIEW_MULTI_CALL_LIST_H_
+#ifndef __CALLUI_VIEW_MULTI_CALL_LIST_H__
+#define __CALLUI_VIEW_MULTI_CALL_LIST_H__
+
+typedef struct _callui_view_mc_list *callui_view_mc_list_h;
 
 /**
- * @brief Create multicall list view
- *
- * @param[in]    ad            Application data
+ * @brief Creates Multicall list view instance
  *
- * @return New multicall list data
+ * @return View data handler
  *
  */
-call_view_data_t *_callui_view_multi_call_list_new(callui_app_data_t *ad);
-#endif
+callui_view_mc_list_h _callui_view_multi_call_list_new();
+
+#endif /* __CALLUI_VIEW_MULTI_CALL_LIST_H__ */
index 144bc1f..80b08ad 100644 (file)
  */
 
 
-#ifndef _CALLUI_VIEW_MULTI_CALL_SPLIT_H_
-#define _CALLUI_VIEW_MULTI_CALL_SPLIT_H_
+#ifndef __CALLUI_VIEW_MULTI_CALL_SPLIT_H__
+#define __CALLUI_VIEW_MULTI_CALL_SPLIT_H__
 
-#include "callui-view-manager.h"
+typedef struct _callui_view_mc_split *callui_view_mc_split_h;
 
 /**
- * @brief Creates multi call split view
+ * @brief Creates Multicall split view instance
  *
- * @return New multi call split view data
+ * @return View data handler
  *
  */
-call_view_data_t *_callui_view_multi_call_split_new();
+callui_view_mc_split_h _callui_view_multi_call_split_new();
 
-#endif //_CALLUI_VIEW_MULTI_CALL_SPLIT_H_
+#endif /* __CALLUI_VIEW_MULTI_CALL_SPLIT_H__ */
 
index c0453d1..bad76c6 100644 (file)
  *
  */
 
-#ifndef __CALLUI_ONECALL_VIEW_H_
-#define __CALLUI_ONECALL_VIEW_H_
+#ifndef __CALLUI_ONECALL_VIEW_H__
+#define __CALLUI_ONECALL_VIEW_H__
 
-#include "callui-view-manager.h"
+typedef struct _call_view_single_call *call_view_single_call_h;
 
 /**
- * @brief Create single call view
- *
- * @return New single call data
+ * @brief Create Single call view instance
  *
+ * @return View data handler
  */
-call_view_data_t *_callui_view_single_call_new();
+call_view_single_call_h _callui_view_single_call_new();
 
-#endif //__CALLUI_ONECALL_VIEW_H_
+#endif /* __CALLUI_ONECALL_VIEW_H__ */
index 9722113..4b80acc 100755 (executable)
@@ -18,7 +18,6 @@
 #ifndef __CALLUI_H_
 #define __CALLUI_H_
 
-#include <dlog.h>
 #include <efl_extension.h>
 #include <call-manager.h>
 #include <call-manager-extension.h>
@@ -27,6 +26,8 @@
 #include "callui-lock-manager.h"
 #include "callui-debug.h"
 
+#define ACTIVE_NOTIFICATION_AVAILABLE 1
+
 #ifndef CALLUI_EXPORT_API
 #define CALLUI_EXPORT_API __attribute__ ((visibility("default")))
 #endif
 #define GRP_LOCK_ACCEPT "lock_accept"
 #define GRP_LOCK_REJECT "lock_reject"
 #define GRP_LOCK_REJECT_WITH_MSG "lock_reject_with_msg"
+#define GRP_DIMMING_LAYOUT "dimming_ly"
+#define GRP_ENDCALL_MAIN_LAYOUT "main_end_call"
+#define GRP_ENDCALL_CALL_BACK_BTN "call_back"
+#define GRP_ENDCALL_MSG_BTN "message_button"
+#define GRP_ENDCALL_CREATE_CONT_BTN "create_contact_button"
 
 #define         CALLUI_DISPLAY_NAME_LENGTH_MAX                 (255+1)                 /**< Voiecall Display Name Max Length  */
 #define         CALLUI_IMAGE_PATH_LENGTH_MAX                   (255+1)                 /**< Max File length for image */
@@ -146,7 +152,7 @@ struct appdata {
        call_data_t *active;
        call_data_t *held;
 
-       bool active_incoming;
+       bool incoming_noti;
 
        bool waiting_dialing;
 
index 6aef09b..d6241b2 100644 (file)
@@ -99,18 +99,12 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               visible: 0;
                                rel1{ relative: 0.0 1.0; to: "caller_info_rect";}
                                rel2{ relative: 1.0 1.0;}
                                min: MTLOCK_ACCEPT_CIRCLE_RECT_WIDTH MTLOCK_ACCEPT_CIRCLE_RECT_HEIGHT;
                                color: 255 255 255 255;
                                align: 0.5 0.0;
                        }
-                       description {
-                               state: "show" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                       }
                }
 
                part { name: "btn_area";
@@ -136,24 +130,20 @@ group {
                        }
                }
 
-               part { name: PART_SWALLOW_KEYPAD;
+               part { name: "btn_region";
                        type: SWALLOW;
                        scale: 1;
                        description {
                                state: "default" 0.0;
                                visible: 0;
-                               rel1.relative: 0.0 1.0;
-                               rel2.relative: 1.0 2.0;
+                               rel1 { relative: 0.0 0.0; to: "btn_area";}
+                               rel2 { relative: 1.0 1.0; to: "btn_area";}
+                               align: 0.5 0.0;
                        }
                        description {
                                state: "show" 0.0;
                                inherit: "default" 0.0;
                                visible: 1;
-                               rel1.relative: 0.0 0.0;
-                               rel2 {
-                                       relative: 1.0 0.0;
-                                       to_y: "end_btn_area";
-                               }
                        }
                        description {
                                state: "hide" 0.0;
@@ -162,20 +152,24 @@ group {
                        }
                }
 
-               part { name: "btn_region";
+               part { name: PART_SWALLOW_KEYPAD;
                        type: SWALLOW;
                        scale: 1;
                        description {
                                state: "default" 0.0;
                                visible: 0;
-                               rel1 { relative: 0.0 0.0; to: "btn_area";}
-                               rel2 { relative: 1.0 1.0; to: "btn_area";}
-                               align: 0.5 0.0;
+                               rel1.relative: 0.0 1.0;
+                               rel2.relative: 1.0 2.0;
                        }
                        description {
                                state: "show" 0.0;
                                inherit: "default" 0.0;
                                visible: 1;
+                               rel1.relative: 0.0 0.0;
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to_y: "end_btn_area";
+                               }
                        }
                        description {
                                state: "hide" 0.0;
@@ -243,7 +237,6 @@ group {
                        source: "KEYPAD_BTN";
                        action: STATE_SET "hide" 0.0;
                        target: "caller_info";
-                       target: "btn_region";
                        after: "show_entry";
                        after: "show_keypadbtn";
                }
@@ -268,13 +261,8 @@ group {
                        action: STATE_SET "default" 0.0;
                        transition: LINEAR 0.25;
                        target: PART_SWALLOW_KEYPAD;
-                       after: "show_six_btns";
                        after: "show_caller_info";
                }
-               program { name: "show_six_btns";
-                       action: STATE_SET "show" 0.0;
-                       target: "btn_region";
-               }
 
                program {
                        name: "show_caller_info";
@@ -300,19 +288,5 @@ group {
                        target: "btn_region";
                        target: PART_SWALLOW_KEYPAD;
                }
-
-               program { name: "show_mt_circle_bg";
-                       signal: "mt_circle_bg_show";
-                       source: "mt_view";
-                       action: STATE_SET "show" 0.0;
-                       target: "circle_btn_area";
-               }
-
-               program { name: "hide_mt_circle_bg";
-                       signal: "mt_circle_bg_hide";
-                       source: "mt_view";
-                       action: STATE_SET "default" 0.0;
-                       target: "circle_btn_area";
-               }
        }
 }
index 5519a11..c4445af 100644 (file)
@@ -100,17 +100,4 @@ group {
                        }
                }
        }//parts
-
-       programs {
-               program {
-                       name: "set_portrait";
-                       signal: "set_portrait";
-                       source: "multicall_list_layout";
-                       in: 0.0 0.0;
-                       action: STATE_SET "default" 0.0;
-
-                       target: "background";
-                       target: "swl_calllist";
-               }
-       }
 }
index 7352b12..131a9b9 100644 (file)
@@ -223,7 +223,7 @@ group {
 }
 
 group {
-       name: "main_incoming_active_call";
+       name: "main_active_noti_call";
        parts {
                part { name: "screen_bg";
                        type: RECT;
@@ -513,7 +513,7 @@ group {
                program {
                        name: "show_image";
                        signal: "show_image";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "show" 0.0;
                        target: "caller_id_mask";
                        target: "caller_id_default";
@@ -521,7 +521,7 @@ group {
                program {
                        name: "hide_image";
                        signal: "hide_image";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "hide" 0.0;
                        target: "caller_id_mask";
                        target: "caller_id_default";
@@ -529,7 +529,7 @@ group {
                program {
                        name: "small_main_ly";
                        signal: "small_main_ly";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "small" 0.0;
                        target: "bg";
                        after: "hide_reject_msg";
@@ -538,21 +538,21 @@ group {
                program {
                        name: "show_reject_msg";
                        signal: "show_reject_msg";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "show" 0.0;
                        target: "swallow.reject_msg";
                }
                program {
                        name: "hide_reject_msg";
                        signal: "hide_reject_msg";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "hide" 0.0;
                        target: "swallow.reject_msg";
                }
                program {
                        name: "big_main_ly";
                        signal: "big_main_ly";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "big" 0.0;
                        target: "bg";
                        after: "show_reject_msg";
@@ -561,14 +561,14 @@ group {
                program {
                        name: "show_swipe_call";
                        signal: "show_swipe_call";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "show" 0.0;
                        target: "swallow.swipe_button";
                }
                program {
                        name: "hide_swipe_call";
                        signal: "hide_swipe_call";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "hide" 0.0;
                        target: "swallow.swipe_button";
                        after: "show_reject_msg";
@@ -576,7 +576,7 @@ group {
                program {
                        name: "big_buttons";
                        signal: "big_buttons";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "big" 0.0;
                        target: "swallow.call_button";
                        target: "swallow.end_call_button";
@@ -585,14 +585,14 @@ group {
                program {
                        name: "hide_swallow.rj_msg_button";
                        signal: "hide_swallow.rj_msg_button";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "hide" 0.0;
                        target: "swallow.rj_msg_button";
                }
                program {
                        name: "small_buttons";
                        signal: "small_buttons";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "small" 0.0;
                        target: "swallow.call_button";
                        target: "swallow.end_call_button";
@@ -601,7 +601,7 @@ group {
                program {
                        name: "show_swallow.rj_msg_button";
                        signal: "show_swallow.rj_msg_button";
-                       source: "main_incoming_active_call";
+                       source: "main_active_noti_call";
                        action: STATE_SET "show" 0.0;
                        target: "swallow.rj_msg_button";
                }
index 8cec5d6..c8cf17e 100755 (executable)
@@ -30,6 +30,8 @@
 #include <system_settings.h>
 #include <efl_util.h>
 #include <app_common.h>
+#include <msg.h>
+#include <msg_transport.h>
 #include <Ecore_Wayland.h>
 
 #include "callui-common.h"
@@ -179,17 +181,20 @@ void _callui_common_delete_duration_timer()
 static Eina_Bool __callui_common_ending_timer_expired_cb(void *data)
 {
        dbg("__callui_common_ending_timer_expired_cb");
-       callui_app_data_t *ad = _callui_get_app_data();
+       CALLUI_RETURN_VALUE_IF_FAIL(data, ECORE_CALLBACK_CANCEL);
+       callui_app_data_t *ad = (callui_app_data_t *)data;
 
        ad->ending_timer = NULL;
        _callui_common_exit_app();
+
        return ECORE_CALLBACK_CANCEL;
 }
 
 static Eina_Bool __callui_common_ending_timer_blink_cb(void *data)
 {
        dbg("__callui_common_ending_timer_blink_cb");
-       callui_app_data_t *ad = _callui_get_app_data();
+       CALLUI_RETURN_VALUE_IF_FAIL(data, ECORE_CALLBACK_CANCEL);
+       callui_app_data_t *ad = (callui_app_data_t *)data;
 
        if ((ad->blink_cnt % 2) == 0) {
                _callui_show_caller_info_status(ad, _("IDS_CALL_BODY_CALL_ENDE_M_STATUS_ABB"));
@@ -204,7 +209,7 @@ static Eina_Bool __callui_common_ending_timer_blink_cb(void *data)
                        ecore_timer_del(ad->ending_timer);
                        ad->ending_timer = NULL;
                }
-               ad->ending_timer = ecore_timer_add(2, __callui_common_ending_timer_expired_cb, NULL);
+               ad->ending_timer = ecore_timer_add(2, __callui_common_ending_timer_expired_cb, ad);
 
                ad->blink_timer = NULL;
                return ECORE_CALLBACK_CANCEL;
@@ -212,21 +217,24 @@ static Eina_Bool __callui_common_ending_timer_blink_cb(void *data)
        return ECORE_CALLBACK_RENEW;
 }
 
-void _callui_common_create_ending_timer(call_view_data_t *vd)
+void _callui_common_create_ending_timer(void *appdata)
 {
-       CALLUI_RETURN_IF_FAIL(vd);
-       callui_app_data_t *ad = _callui_get_app_data();
+       CALLUI_RETURN_IF_FAIL(appdata);
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
        ad->blink_cnt = 0;
        if (ad->blink_timer) {
                ecore_timer_del(ad->blink_timer);
                ad->blink_timer = NULL;
        }
-       ad->blink_timer = ecore_timer_add(0.5, __callui_common_ending_timer_blink_cb, vd);
+       ad->blink_timer = ecore_timer_add(0.5, __callui_common_ending_timer_blink_cb, ad);
 }
 
-void _callui_common_delete_ending_timer(void)
+void _callui_common_delete_ending_timer(void *appdata)
 {
-       callui_app_data_t *ad = _callui_get_app_data();
+       CALLUI_RETURN_IF_FAIL(appdata);
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
        if (ad->ending_timer) {
                ecore_timer_del(ad->ending_timer);
                ad->ending_timer = NULL;
@@ -240,8 +248,9 @@ void _callui_common_delete_ending_timer(void)
 
 char *_callui_common_get_sim_name(void *appdata)
 {
-       dbg("_callui_common_get_sim_name");
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, NULL);
        callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
        char *sim_name = NULL;
        if (ad->sim_slot == CM_SIM_SLOT_1_E) {
                sim_name = vconf_get_str(VCONFKEY_SETAPPL_SIM1_NAME);
@@ -743,33 +752,33 @@ EXIT:
 
 void _callui_common_dvc_set_lcd_timeout(callui_lcd_timeout_t state)
 {
-       int bPowerkeyMode = 0;
+       int powerkey_mode = 0;
        char str_on[32];
        char str_dim[32];
        char str_holdkey[2];
        char *ar[3];
-       int ret = vconf_get_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, &bPowerkeyMode);
+       int ret = vconf_get_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, &powerkey_mode);
        if (ret < 0) {
                err("vconf_get_int failed..[%d]\n", ret);
        }
 
-       dbg("set timeout : %d, powerkeymode : %d", state, bPowerkeyMode);
+       dbg("set timeout : %d, powerkeymode : %d", state, powerkey_mode);
        if (state == LCD_TIMEOUT_SET) {
                snprintf(str_on, sizeof(str_on), "%d", 10);
                snprintf(str_dim, sizeof(str_dim), "%d", 20);
-               snprintf(str_holdkey, sizeof(str_holdkey), "%d", bPowerkeyMode);
+               snprintf(str_holdkey, sizeof(str_holdkey), "%d", powerkey_mode);
        } else if (state == LCD_TIMEOUT_UNSET) {
                snprintf(str_on, sizeof(str_on), "%d", 0);
                snprintf(str_dim, sizeof(str_dim), "%d", 0);
-               snprintf(str_holdkey, sizeof(str_holdkey), "%d", bPowerkeyMode);
+               snprintf(str_holdkey, sizeof(str_holdkey), "%d", powerkey_mode);
        } else if (state == LCD_TIMEOUT_LOCKSCREEN_SET) { /*After lock-screen comes in Connected state LCD goes to OFF in 5 secs*/
                snprintf(str_on, sizeof(str_on), "%d", 5);
                snprintf(str_dim, sizeof(str_dim), "%d", 0);
-               snprintf(str_holdkey, sizeof(str_holdkey), "%d", bPowerkeyMode);
+               snprintf(str_holdkey, sizeof(str_holdkey), "%d", powerkey_mode);
        } else if (state == LCD_TIMEOUT_KEYPAD_SET) {
                snprintf(str_on, sizeof(str_on), "%d", 3);
                snprintf(str_dim, sizeof(str_dim), "%d", 5);
-               snprintf(str_holdkey, sizeof(str_holdkey), "%d", bPowerkeyMode);
+               snprintf(str_holdkey, sizeof(str_holdkey), "%d", powerkey_mode);
        } else {
                snprintf(str_on, sizeof(str_on), "%d", 0);
                snprintf(str_dim, sizeof(str_dim), "%d", 0);
@@ -804,8 +813,6 @@ void _callui_common_reset_main_ly_text_fields(Evas_Object *contents)
                edje_object_part_text_set(_EDJ(caller_info), "txt_call_name", "");
                edje_object_part_text_set(_EDJ(caller_info), "txt_phone_num", "");
        }
-
-       return;
 }
 
 gboolean _callui_common_is_extra_volume_available(void)
@@ -826,34 +833,33 @@ gboolean _callui_common_is_extra_volume_available(void)
        }
 }
 
-gboolean _callui_common_is_answering_mode_on(void)
+int _callui_common_is_answering_mode_on(void)
 {
-       gboolean bAnswerMode = EINA_FALSE;
-       Eina_Bool ret = EINA_FALSE;
+       int answerMode = 0;
+       int ret = 0;
 
-       ret = vconf_get_bool(VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, &bAnswerMode);
-       if (0 == ret) {
-               dbg("bAnswerMode = [%d] \n", bAnswerMode);
+       ret = vconf_get_bool(VCONFKEY_CISSAPPL_ANSWERING_KEY_BOOL, &answerMode);
+       if (!ret) {
+               dbg("answerMode = [%d] \n", answerMode);
        } else {
                dbg("vconf_get_int failed..[%d]\n", ret);
        }
 
-       return bAnswerMode;
+       return answerMode;
 }
 
-gboolean _callui_common_is_powerkey_mode_on(void)
+int _callui_common_is_powerkey_mode_on(void)
 {
-       gboolean bPowerkeyMode = EINA_FALSE;
-       Eina_Bool ret = EINA_FALSE;
+       int powerkey_mode = 0;
+       int ret = 0;
 
-       ret = vconf_get_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, &bPowerkeyMode);
-       if (0 == ret) {
-               dbg("bPowerkeyMode = [%d] \n", bPowerkeyMode);
+       ret = vconf_get_bool(VCONFKEY_CISSAPPL_POWER_KEY_ENDS_CALL_BOOL, &powerkey_mode);
+       if (!ret) {
+               dbg("powerkey_mode = [%d] \n", powerkey_mode);
        } else {
                dbg("vconf_get_int failed..[%d]\n", ret);
        }
-
-       return bPowerkeyMode;
+       return powerkey_mode;
 }
 
 static void __callui_common_lock_state_cb (system_settings_key_e key, void *user_data)
@@ -1009,3 +1015,106 @@ void _callui_common_exit_app()
 {
        ui_app_exit();
 }
+
+static void ___callui_common_send_reject_msg_status_cb(msg_handle_t Handle, msg_struct_t pStatus, void *pUserParam)
+{
+       CALLUI_RETURN_IF_FAIL(pStatus != NULL);
+       int status = MSG_NETWORK_SEND_FAIL;
+
+       msg_get_int_value(pStatus, MSG_SENT_STATUS_NETWORK_STATUS_INT, &status);
+       dbg("status:[%d]", status);
+}
+
+int _callui_common_send_reject_msg(void *appdata, char *reject_msg)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(reject_msg, CALLUI_RESULT_INVALID_PARAM);
+
+       int res = CALLUI_RESULT_FAIL;
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+       call_data_t *call_data = ad->incom;
+
+       CALLUI_RETURN_VALUE_IF_FAIL(call_data, CALLUI_RESULT_FAIL);
+
+       if (strlen(reject_msg) == 0) {
+               err("Is not reject with message case");
+               return res;
+       }
+
+       msg_handle_t msgHandle = NULL;
+       msg_error_t err = msg_open_msg_handle(&msgHandle);
+       if (err != MSG_SUCCESS) {
+               dbg("msg_open_msg_handle()- failed [%d]", err);
+               return res;
+       }
+
+       err = msg_reg_sent_status_callback(msgHandle, ___callui_common_send_reject_msg_status_cb, NULL);
+       if (err != MSG_SUCCESS) {
+               dbg("msg_reg_sent_status_callback()- failed [%d]", err);
+               msg_close_msg_handle(&msgHandle);
+               return res;
+       }
+
+       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
+       msg_struct_t pReq = msg_create_struct(MSG_STRUCT_REQUEST_INFO);
+
+       /* Set message type to SMS reject*/
+       msg_set_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, MSG_TYPE_SMS_REJECT);
+
+       int slot_id = ad->sim_slot;
+       dbg("msg_sms_send_message() Sim slot [%d]", slot_id);
+       if (slot_id != -1) {
+               slot_id++;
+               msg_set_int_value(msgInfo, MSG_MESSAGE_SIM_INDEX_INT, slot_id);
+       }
+
+       /* No setting send option */
+       msg_set_bool_value(sendOpt, MSG_SEND_OPT_SETTING_BOOL, FALSE);
+
+       /* Set message body */
+       if (msg_set_str_value(msgInfo, MSG_MESSAGE_SMS_DATA_STR, reject_msg, strlen(reject_msg)) != MSG_SUCCESS) {
+               err("msg_set_str_value() - failed");
+       } else {
+               /* Create address list*/
+               msg_struct_list_s *addr_list;
+               msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
+               msg_struct_t addr_info = addr_list->msg_struct_info[0];
+               char *call_number = call_data->call_num;
+
+               /* Set message address */
+               msg_set_int_value(addr_info, MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);
+               msg_set_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, call_number, strlen(call_number));
+               addr_list->nCount = 1;
+
+               /* Set message struct to Request*/
+               msg_set_struct_handle(pReq, MSG_REQUEST_MESSAGE_HND, msgInfo);
+               msg_set_struct_handle(pReq, MSG_REQUEST_SENDOPT_HND, sendOpt);
+
+               /* Send message */
+               err = msg_sms_send_message(msgHandle, pReq);
+               if (err != MSG_SUCCESS) {
+                       err("msg_sms_send_message() - failed [%d]", err);
+               } else {
+                       dbg("Sending...");
+                       res = CALLUI_RESULT_OK;
+               }
+       }
+       msg_close_msg_handle(&msgHandle);
+       msg_release_struct(&pReq);
+       msg_release_struct(&msgInfo);
+       msg_release_struct(&sendOpt);
+
+       return res;
+}
+
+bool _callui_is_on_handsfree_mode()
+{
+       callui_app_data_t *ad = _callui_get_app_data();
+       return (ad->speaker_status || ad->headset_status || ad->earphone_status);
+}
+
+bool _callui_is_on_background()
+{
+       callui_app_data_t *ad = _callui_get_app_data();
+       return ad->on_background;
+}
index 5d0921c..4a24270 100755 (executable)
@@ -125,31 +125,28 @@ static void __callui_keypad_arrow_mouse_up_cb(void *data, Evas *evas, Evas_Objec
        return;
 }
 
-static void __callui_keypad_create_gesture_layer(void *data)
+static int __callui_keypad_create_gesture_layer(callui_app_data_t *ad)
 {
-       dbg("..");
-
        keypad_data_t *pkeypad_data = gkeypad_data;
        Evas_Object *sweep_area = NULL;
-       callui_app_data_t *ad = (callui_app_data_t *)data;
 
        if (pkeypad_data->gesture_ly) {
-               evas_object_del(pkeypad_data->gesture_ly);
-               pkeypad_data->gesture_ly = NULL;
+               DELETE_EVAS_OBJECT(pkeypad_data->gesture_ly);
        }
 
        sweep_area = _callui_edje_object_part_get(pkeypad_data->keypad_ly, "sweep_area");
        pkeypad_data->gesture_ly = elm_gesture_layer_add(pkeypad_data->keypad_ly);
        if (FALSE == elm_gesture_layer_attach(pkeypad_data->gesture_ly, sweep_area)) {
                err("elm_gesture_layer_attach failed !!");
-               evas_object_del(pkeypad_data->gesture_ly);
+               DELETE_EVAS_OBJECT(pkeypad_data->gesture_ly);
+               return CALLUI_RESULT_ALLOCATION_FAIL;
        } else {
                evas_object_event_callback_add(sweep_area, EVAS_CALLBACK_MOUSE_DOWN, __callui_keypad_arrow_mouse_down_cb, ad);
                evas_object_event_callback_add(sweep_area, EVAS_CALLBACK_MOUSE_UP, __callui_keypad_arrow_mouse_up_cb, ad);
                elm_gesture_layer_cb_set(pkeypad_data->gesture_ly, ELM_GESTURE_N_FLICKS, ELM_GESTURE_STATE_MOVE, __callui_keypad_arrow_flick_gesture_event_cb, ad);
        }
 
-       return;
+       return CALLUI_RESULT_OK;
 }
 
 
@@ -284,30 +281,30 @@ static Evas_Object *__callui_keypad_create_single_line_scrolled_entry(void *cont
        return en;
 }
 
-static void __callui_keypad_create_entry(void *data)
+static int __callui_keypad_create_entry(callui_app_data_t *ad)
 {
-       dbg("..");
-       keypad_data_t *pkeypad_data = gkeypad_data;
-       callui_app_data_t *ad = (callui_app_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(ad != NULL);
+       CALLUI_RETURN_VALUE_IF_FAIL(gkeypad_data, CALLUI_RESULT_FAIL);
+
        Evas_Object *current_ly = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-       CALLUI_RETURN_IF_FAIL(current_ly != NULL);
+       CALLUI_RETURN_VALUE_IF_FAIL(current_ly, CALLUI_RESULT_FAIL);
 
-       CALLUI_RETURN_IF_FAIL(pkeypad_data != NULL);
+       keypad_data_t *pkeypad_data = gkeypad_data;
 
        if (!pkeypad_data->entry) {
-               dbg("..");
                pkeypad_data->entry = __callui_keypad_create_single_line_scrolled_entry(ad->win_conformant);
+               if (!pkeypad_data->entry) {
+                       err("Create entry failed");
+                       return CALLUI_RESULT_ALLOCATION_FAIL;
+               }
                memset(pkeypad_data->entry_disp_data, 0x0, sizeof(pkeypad_data->entry_disp_data));
                pkeypad_data->data_len = 0;
 
                elm_object_signal_callback_add(pkeypad_data->keypad_ly, "pad_down", "*", __callui_keypad_on_key_down, ad);
                elm_object_signal_callback_add(pkeypad_data->keypad_ly, "pad_up", "*", __callui_keypad_on_key_up, ad);
-
-               if (current_ly) {
-                       edje_object_part_swallow(_EDJ(current_ly), PART_SWALLOW_TEXTBLOCK_AREA, pkeypad_data->entry);
-               }
+               edje_object_part_swallow(_EDJ(current_ly), PART_SWALLOW_TEXTBLOCK_AREA, pkeypad_data->entry);
        }
+
+       return CALLUI_RESULT_OK;
 }
 
 static Eina_Bool __down_arrow_animation_timerout_cb(void *data)
@@ -383,33 +380,50 @@ void _callui_keypad_hide_layout(void *app_data)
        }
 }
 
-void _callui_keypad_create_layout(void *appdata)
+int _callui_keypad_create_layout(void *appdata)
 {
-       dbg("..");
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
        callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       CALLUI_RETURN_IF_FAIL(ad);
+
        Evas_Object *parent_ly = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-       CALLUI_RETURN_IF_FAIL(parent_ly);
+       CALLUI_RETURN_VALUE_IF_FAIL(parent_ly, CALLUI_RESULT_FAIL);
 
        _callui_keypad_delete_layout(ad);
+       int res = CALLUI_RESULT_FAIL;
 
        keypad_data_t *pkeypad_data = __callui_keypad_memory_alloc();
-       CALLUI_RETURN_IF_FAIL(pkeypad_data != NULL);
+       CALLUI_RETURN_VALUE_IF_FAIL(pkeypad_data, CALLUI_RESULT_ALLOCATION_FAIL);
 
        if (!pkeypad_data->keypad_ly) {
                dbg("..");
                pkeypad_data->keypad_ly = __callui_keypad_create_contents(ad, GRP_KEYPAD);
-
-               __callui_keypad_create_gesture_layer(ad);
-
+               if (!pkeypad_data->keypad_ly) {
+                       err("Create keypad_ly failed");
+                       _callui_keypad_delete_layout(ad);
+                       return CALLUI_RESULT_ALLOCATION_FAIL;
+               }
+               res = __callui_keypad_create_gesture_layer(ad);
+               if (res != CALLUI_RESULT_OK) {
+                       err("Create gesture_layer failed");
+                       _callui_keypad_delete_layout(ad);
+                       return CALLUI_RESULT_ALLOCATION_FAIL;
+               }
                elm_object_part_content_set(parent_ly, PART_SWALLOW_KEYPAD, pkeypad_data->keypad_ly);
        }
 
-       __callui_keypad_create_entry(ad);
-       memset(pkeypad_data->entry_disp_data, '\0', KEYPAD_ENTRY_DISP_DATA_SIZE+1);
+       res = __callui_keypad_create_entry(ad);
+       if (res != CALLUI_RESULT_OK) {
+               err("Create entry failed");
+               _callui_keypad_delete_layout(ad);
+               return CALLUI_RESULT_ALLOCATION_FAIL;
+       }
+
+       memset(pkeypad_data->entry_disp_data, '\0', KEYPAD_ENTRY_DISP_DATA_SIZE + 1);
        pkeypad_data->data_len = 0;
        elm_entry_entry_set(pkeypad_data->entry, "");
        elm_entry_cursor_end_set(pkeypad_data->entry);
+
+       return res;
 }
 
 void _callui_keypad_delete_layout(void *appdata)
index 17071d6..077fcc2 100644 (file)
@@ -18,7 +18,7 @@
 #include "callui-lock-manager.h"
 #include "callui-proximity-lock-manager.h"
 #include "callui-view-lock-screen.h"
-#include "callui-view-elements.h"
+#include "callui-common.h"
 
 lock_data_t *_callui_lock_manager_create()
 {
diff --git a/src/callui-view-active-incoming-call.c b/src/callui-view-active-incoming-call.c
deleted file mode 100644 (file)
index 6c4d7e6..0000000
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-#include "callui-view-incoming-lock.h"
-#include "callui-view-active-incoming-call.h"
-#include "callui-view-manager.h"
-#include "callui-view-layout.h"
-#include "callui-view-elements.h"
-#include "callui-common.h"
-#include <vconf.h>
-#include <app_control.h>
-
-#define DURING_ICON            "call_button_icon_03.png"
-#define REJECT_ICON            "call_button_icon_04.png"
-#define END_ICON               "call_button_icon_01.png"
-#define REJ_MSG_GENLIST_DATA "reject_msg_genlist_data"
-
-static Eina_Bool __callui_view_active_incoming_call_effect_close_active(void *data);
-static void __callui_view_active_incoming_call_reject_msg_create_glist(void *data);
-typedef void (*button_cb)(void *data, Evas *evas, Evas_Object *obj, void *event_info);
-
-static void __callui_view_active_incoming_call_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
-{
-       if (data) {
-               incoming_lock_view_priv_t *prev = (incoming_lock_view_priv_t *) data;
-               ecore_idle_enterer_before_add(__callui_view_active_incoming_call_effect_close_active, prev);
-               callui_app_data_t * ad = (callui_app_data_t *)evas_object_data_get(obj, "app_data");
-               if (ad) {
-                       evas_object_resize(ad->win, 0, 0);
-               }
-       }
-}
-
-static Eina_Bool __callui_view_active_incoming_call_effect_close_active(void *data)
-{
-       if (data) {
-               incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *) data;
-               Evas_Object *screen_ly = NULL;
-               Elm_Transit *transit = NULL;
-               int xpos = 0;
-               int ypos = 0;
-               int width = 0;
-               int height = 0;
-               int transit_y = 0;
-
-               screen_ly = priv->contents;
-               transit = elm_transit_add();
-               elm_transit_object_add(transit, screen_ly);
-               evas_object_geometry_get(screen_ly, &xpos, &ypos, &width, &height);
-               transit_y = -(height + ypos);
-               elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-               elm_transit_duration_set(transit, 0.5);
-               evas_object_show(screen_ly);
-               elm_transit_objects_final_state_keep_set(transit, EINA_TRUE);
-               elm_transit_go(transit);
-       }
-       return ECORE_CALLBACK_CANCEL;
-}
-
-static void __callui_view_active_incoming_call_reject_message_btn_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       if (data) {
-               incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *) vd->priv;
-               callui_app_data_t * ad = (callui_app_data_t *)evas_object_data_get(obj, "app_data");
-               if (ad) {
-                       evas_object_resize(ad->win, ad->root_w, ad->root_h);
-               }
-               __callui_view_active_incoming_call_reject_msg_create_glist(vd);
-               elm_object_signal_emit(priv->contents, "big_main_ly", "main_incoming_active_call");
-       }
-}
-
-static void __callui_view_active_incoming_call_reject_ms_back_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       if (data) {
-               incoming_lock_view_priv_t *prev = (incoming_lock_view_priv_t *) data;
-               callui_app_data_t * ad = (callui_app_data_t *)evas_object_data_get(obj, "app_data");
-               if (ad) {
-                       evas_object_resize(ad->win, ad->root_w, ELM_SCALE_SIZE(MTLOCK_ACTIVE_CALL_HEIGHT));
-               }
-               elm_object_signal_emit(prev->contents, "small_main_ly", "main_incoming_active_call");
-               evas_object_del(prev->msg_glist);
-       }
-}
-
-static void __callui_view_active_incoming_call_reject_msg_create_glist(void *data)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(vd);
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-       CALLUI_RETURN_IF_FAIL(priv);
-       callui_app_data_t *ad = _callui_get_app_data();
-       Elm_Object_Item *item = NULL;
-       int msg_cnt = 0;
-       int index = 0;
-
-       if (0 != vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &msg_cnt)) {
-               warn("vconf_get_int failed.");
-       }
-
-       priv->reject_msg_gl = _callui_load_edj(ad->win, EDJ_NAME, "reject_msg_ly");
-       elm_object_part_content_set(priv->contents, "swallow.reject_msg", priv->reject_msg_gl);
-       priv->msg_glist = elm_genlist_add(priv->contents);
-       CALLUI_RETURN_IF_FAIL(priv->msg_glist);
-       //elm_genlist_realization_mode_set(priv->msg_glist, EINA_TRUE);
-       evas_object_data_set(priv->reject_msg_gl, "app_data", ad);
-       eext_object_event_callback_add(priv->reject_msg_gl, EEXT_CALLBACK_BACK, __callui_view_active_incoming_call_reject_ms_back_cb, (void *)priv);
-
-       evas_object_data_set(priv->msg_glist, REJ_MSG_GENLIST_DATA, (const void *)vd);
-       evas_object_size_hint_weight_set(priv->msg_glist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(priv->msg_glist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_object_part_content_set(priv->reject_msg_gl, "swallow.content", priv->msg_glist);
-
-       priv->itc_reject_msg = _callui_view_incoming_lock_create_item_class();
-
-       if (msg_cnt == 0) {
-               index = -1;
-               item = _callui_view_incoming_lock_append_genlist_item(priv->msg_glist, priv->itc_reject_msg, index);
-               if (item) {
-                       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               }
-       } else {
-               for (index = 0; index < msg_cnt; index++) {
-                       _callui_view_incoming_lock_append_genlist_item(priv->msg_glist, priv->itc_reject_msg, index);
-               }
-       }
-       elm_genlist_item_class_free(priv->itc_reject_msg);
-       priv->itc_reject_msg = NULL;
-
-       _callui_view_incoming_lock_create_reject_msg_button(priv->reject_msg_gl, "swallow.button", data);
-
-       elm_object_tree_focus_allow_set(priv->msg_glist, EINA_FALSE);
-       evas_object_size_hint_min_set(priv->msg_glist, ad->root_w, 0);
-       evas_object_size_hint_max_set(priv->msg_glist, ad->root_w, ELM_SCALE_SIZE(MTLOCK_REJECT_MSG_LIST_1ITEM_NEW_HEIGHT * msg_cnt));
-       evas_object_show(priv->reject_msg_gl);
-       evas_object_show(priv->msg_glist);
-}
-
-static void __callui_view_active_incoming_call_app_control_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
-{
-       char *key = (char *) data;
-       if (key == NULL) {
-               return;
-       }
-       app_control_h app_control = NULL;
-       if (app_control_create(&app_control) != APP_CONTROL_ERROR_NONE) {
-               dbg("app_control_create() is failed");
-       } else if (app_control_set_app_id(app_control, "org.tizen.call-ui") != APP_CONTROL_ERROR_NONE) {
-               dbg("app_control_set_app_id() is failed");
-       } else if (app_control_set_operation(app_control, key) != APP_CONTROL_ERROR_NONE) {
-               dbg("app_control_set_operation() is failed");
-       } else if (app_control_send_launch_request(app_control, NULL, NULL)  != APP_CONTROL_ERROR_NONE) {
-               err("app_control_send_launch_request() is failed");
-       }
-
-       app_control_destroy(app_control);
-}
-
-int _callui_view_active_incoming_call_oncreate(call_view_data_t *view_data, void *appdata)
-{
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *) view_data->priv;
-
-       priv->contents = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-       if (priv->contents) {
-               priv->caller_info = elm_object_part_content_get(priv->contents, "caller_info");
-               if (priv->caller_info) {
-                       evas_object_del(priv->caller_info);
-                       priv->caller_info = NULL;
-               }
-
-               Evas_Object *btn_ly = elm_object_part_content_get(priv->contents, "btn_region");
-               if (btn_ly) {
-                       evas_object_del(btn_ly);
-                       btn_ly = NULL;
-               }
-               evas_object_del(priv->contents);
-               elm_win_alpha_set(ad->win, EINA_TRUE);
-               priv->contents = NULL;
-       }
-       if (ad->main_ly) {
-               evas_object_resize(ad->win, ad->root_w, ELM_SCALE_SIZE(MTLOCK_ACTIVE_CALL_HEIGHT));
-               priv->contents = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-               if (!priv->contents) {
-                       priv->contents = _callui_load_edj(ad->main_ly, EDJ_NAME,  "main_incoming_active_call");
-                       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", priv->contents);
-               }
-               evas_object_show(priv->contents);
-               evas_object_show(ad->main_ly);
-       }
-       return 0;
-}
-
-void _callui_view_active_incoming_call_create_button(callui_app_data_t *ad, char *icon_name, char *part, button_cb func, void * data, void * data_bt_cb)
-{
-       incoming_lock_view_priv_t * priv = (incoming_lock_view_priv_t *)data;
-       if (priv) {
-               Evas_Object *button_call = elm_layout_add(priv->contents);
-               if (button_call) {
-                       elm_layout_file_set(button_call, EDJ_NAME, "main_button_ly");
-                       Evas_Object *icon = elm_image_add(button_call);
-                       elm_image_file_set(icon, EDJ_NAME, icon_name);
-                       elm_object_part_content_set(button_call, "swallow.icon", icon);
-                       elm_object_part_content_set(priv->contents, part, button_call);
-                       evas_object_data_set(button_call, "app_data", ad);
-                       evas_object_event_callback_add(button_call, EVAS_CALLBACK_MOUSE_UP, func, data_bt_cb);
-               }
-       }
-}
-
-void _callui_view_active_incoming_call_draw_screen(callui_app_data_t *ad, call_view_data_t *vd)
-{
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-       call_data_t *call_data = NULL;
-
-       call_data = ad->incom;
-       if (call_data == NULL) {
-               err("call data is null");
-               return;
-       }
-       elm_object_signal_emit(priv->contents, "small_main_ly", "main_incoming_active_call");
-
-       _callui_view_active_incoming_call_create_button(ad, DURING_ICON, "swallow.call_button",
-                       __callui_view_active_incoming_call_app_control_cb, priv, (void *)APP_CONTROL_OPERATION_DURING_CALL);
-       _callui_view_active_incoming_call_create_button(ad, REJECT_ICON, "swallow.rj_msg_button",
-                       __callui_view_active_incoming_call_reject_message_btn_cb, priv, (void *)vd);
-       _callui_view_active_incoming_call_create_button(ad, END_ICON, "swallow.end_call_button",
-                       __callui_view_active_incoming_call_app_control_cb, priv, (void *)APP_CONTROL_OPERATION_END_CALL);
-
-       Evas_Object *swipe_button = elm_layout_add(priv->contents);
-       if (swipe_button) {
-               elm_layout_file_set(swipe_button, EDJ_NAME, "swipe_call_button_ly");
-               evas_object_event_callback_add(swipe_button, EVAS_CALLBACK_MOUSE_MOVE, __callui_view_active_incoming_call_mouse_move_cb, (void *)priv);
-               evas_object_data_set(swipe_button, "app_data", ad);
-       }
-       elm_object_part_content_set(priv->contents, "swallow.swipe_button", swipe_button);
-
-       char *call_name = call_data->call_ct_info.call_disp_name;
-       char *call_number = NULL;
-       if (call_data->call_disp_num[0] != '\0') {
-               call_number = call_data->call_disp_num;
-       } else {
-               call_number = call_data->call_num;
-       }
-       char *file_path = call_data->call_ct_info.caller_id_path;
-
-       if (!(call_name && call_name[0] != '\0') && !(call_number && call_number[0] != '\0')) {
-               elm_object_signal_emit(priv->contents, "big_buttons", "main_incoming_active_call");
-               elm_object_part_text_set(priv->contents, "text.contact_name", _("IDS_CALL_BODY_UNKNOWN"));
-       } else if (!(call_name && call_name[0] != '\0')) {
-               elm_object_signal_emit(priv->contents, "small_buttons", "main_incoming_active_call");
-               elm_object_part_text_set(priv->contents, "text.contact_name", call_number);
-       } else {
-               elm_object_signal_emit(priv->contents, "small_buttons", "main_incoming_active_call");
-               elm_object_part_text_set(priv->contents, "text.contact_name", call_name);
-               elm_object_part_text_set(priv->contents, "text.contact_number", call_number);
-       }
-
-       if (strcmp(file_path, "default") != 0) {
-               _callui_show_caller_id(priv->contents, file_path);
-       } else {
-               elm_object_signal_emit(priv->contents, "show_image", "main_incoming_active_call");
-       }
-}
index 1d4f5ca..9e508b8 100644 (file)
  *
  */
 
-#include "callui.h"
+#include <app_control.h>
+
 #include "callui-view-callend.h"
+#include "callui.h"
 #include "callui-view-elements.h"
 #include "callui-common.h"
-#include <app_control.h>
 
-#define        CALLUI_VIEW_CALLEND_LAYOUT_ID "ENDCALLVIEW"
-struct callui_endcall_view_priv {
-       Evas_Object *contents;
-       Evas_Object *caller_info;
-       Evas_Object *caller_id;
-       Evas_Object *btn_ly;
-       Evas_Object *ic;        /* small size call image */
-       Eina_Bool bshowbutton;
+#define APP_CONTROL_MIME_CONTACT "application/vnd.tizen.contact"
+#define CONTACT_NUMBER_BUF_LEN 32
+
+struct _callui_view_callend {
+       call_view_data_base_t base_view;
+
        Evas_Object *create_update_popup;
-       char caller_id_path[CALLUI_IMAGE_PATH_LENGTH_MAX];
+
        char call_number[CALLUI_PHONE_DISP_NUMBER_LENGTH_MAX];
-       int contact_person_id;
-       int call_end_type;
-       bool is_emergency_call;
 };
-typedef struct callui_endcall_view_priv callui_endcall_view_priv_t;
+typedef struct _callui_view_callend _callui_view_callend_t;
 
-#define APP_CONTROL_MIME_CONTACT "application/vnd.tizen.contact"
-#define CONTACT_NUMBER_BUF_LEN 32
-#define BG_COLOR_ALPHA 120
+static int __callui_view_callend_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int __callui_view_callend_ondestroy(call_view_data_base_t *view_data);
+
+static int __create_main_content(callui_view_callend_h vd);
+static int __update_displayed_data(callui_view_callend_h vd);
+
+static void __call_back_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 
-static int __callui_view_callend_oncreate(call_view_data_t *view_data, void *appdata);
-static int __callui_view_callend_onupdate(call_view_data_t *view_data);
-static int __callui_view_callend_onshow(call_view_data_t *view_data, void *appdata);
-static int __callui_view_callend_ondestroy(call_view_data_t *view_data);
-static void __callui_view_callend_create_screen(callui_app_data_t *ad, Evas_Object *eo, void *data);
-static Evas_Object *__callui_view_callend_create_contents(void *data, char *grp_name);
+static char *__vcui_endcall_get_item_text(void *data, Evas_Object *obj, const char *part);
 
-call_view_data_t *_callui_view_callend_new()
+static void __create_contact_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __update_contact_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __popup_back_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __add_contact_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __msg_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+
+callui_view_callend_h _callui_view_callend_new()
 {
-       call_view_data_t *callend_view = calloc(1, sizeof(call_view_data_t));
-       callend_view->type = VIEW_TYPE_ENDCALL;
-       callend_view->layout = NULL;
-       callend_view->onCreate = __callui_view_callend_oncreate;
-       callend_view->onUpdate = __callui_view_callend_onupdate;
-       callend_view->onDestroy = __callui_view_callend_ondestroy;
-
-       callend_view->priv = calloc(1, sizeof(callui_endcall_view_priv_t));
-       if (!callend_view->priv) {
-               err("ERROR!!!!!!!!!!!");
-       }
+       callui_view_callend_h callend_view = calloc(1, sizeof(_callui_view_callend_t));
+       CALLUI_RETURN_NULL_IF_FAIL(callend_view);
+
+       callend_view->base_view.onCreate = __callui_view_callend_oncreate;
+       callend_view->base_view.onUpdate = NULL;
+       callend_view->base_view.onDestroy = __callui_view_callend_ondestroy;
 
        return callend_view;
 }
 
-static void __callui_endcall_voicecall_btn_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static int __callui_view_callend_oncreate(call_view_data_base_t *view_data, void *appdata)
 {
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad);
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_callend_h vd = (callui_view_callend_h)view_data;
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
+       vd->base_view.ad = ad;
+
+       _callui_common_win_set_noti_type(vd->base_view.ad, EINA_TRUE);
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       return __update_displayed_data(vd);
+}
+
+
+static int __callui_view_callend_ondestroy(call_view_data_base_t *view_data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_callend_h vd = (callui_view_callend_h)view_data;
+
+       _callui_common_delete_ending_timer(vd->base_view.ad);
+
+       DELETE_EVAS_OBJECT(vd->create_update_popup);
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
+
+       free(vd);
+
+       return CALLUI_RESULT_OK;
+}
+
+static int __create_main_content(callui_view_callend_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME, GRP_ENDCALL_MAIN_LAYOUT);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", vd->base_view.contents);
+
+       return CALLUI_RESULT_OK;
+}
+
+static int __update_displayed_data(callui_view_callend_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       call_data_t *call_data = NULL;
+       if (ad->active) {
+               call_data = ad->active;
+       } else {
+               call_data = ad->held;
+       }
+       CALLUI_RETURN_VALUE_IF_FAIL(call_data, CALLUI_RESULT_FAIL);
+
+       char *file_path = call_data->call_ct_info.caller_id_path;
+       char *call_name = call_data->call_ct_info.call_disp_name;
+
+       if (call_data->call_disp_num[0] != '\0') {
+               strncpy(vd->call_number, call_data->call_disp_num, sizeof(vd->call_number));
+       } else {
+               strncpy(vd->call_number, call_data->call_num, sizeof(vd->call_number));
+       }
+
+       Evas_Object *button_call_back = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_ENDCALL_CALL_BACK_BTN);
+       CALLUI_RETURN_VALUE_IF_FAIL(button_call_back, CALLUI_RESULT_ALLOCATION_FAIL);
+       evas_object_event_callback_add(button_call_back, EVAS_CALLBACK_MOUSE_UP,  __call_back_btn_click_cb, vd);
+       elm_object_part_text_set(button_call_back, "end_btn_text", _("IDS_CALL_BUTTON_CALL"));
+       elm_object_part_content_set(vd->base_view.contents, "button_call_back", button_call_back);
+
+       Evas_Object *button_message = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_ENDCALL_MSG_BTN);
+       CALLUI_RETURN_VALUE_IF_FAIL(button_message, CALLUI_RESULT_ALLOCATION_FAIL);
+       evas_object_event_callback_add(button_message, EVAS_CALLBACK_MOUSE_UP, __msg_btn_click_cb, vd);
+       elm_object_part_text_set(button_message, "end_btn_text", _("IDS_COM_BODY_MESSAGE"));
+       elm_object_part_content_set(vd->base_view.contents, "button_message_back", button_message);
 
-       evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP, __callui_endcall_voicecall_btn_cb);
+       elm_object_part_text_set(vd->base_view.contents, "main_title_status", _("IDS_CALL_BODY_CALL_ENDE_M_STATUS_ABB"));
 
-       _callui_common_delete_ending_timer();
-       ad->speaker_status = EINA_FALSE;
-       ad->mute_status = EINA_FALSE;
-       ad->extra_volume_status = EINA_FALSE;
-       cm_dial_call(ad->cm_handle, data, CM_CALL_TYPE_VOICE, ad->sim_slot);
-       return;
+       if (!(call_name && call_name[0] != '\0')) {
+               Evas_Object *button_create = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_ENDCALL_CREATE_CONT_BTN);
+               CALLUI_RETURN_VALUE_IF_FAIL(button_create, CALLUI_RESULT_ALLOCATION_FAIL);
+               evas_object_event_callback_add(button_create, EVAS_CALLBACK_MOUSE_UP, __add_contact_btn_click_cb, vd);
+               elm_object_part_content_set(vd->base_view.contents, "swallow.create_contact", button_create);
+
+               elm_object_part_text_set(vd->base_view.contents, "contact_name", vd->call_number);
+               elm_object_part_text_set(vd->base_view.contents, "contact_number", _("IDS_COM_OPT_ADD_TO_CONTACTS"));
+       } else {
+               elm_object_part_text_set(vd->base_view.contents, "contact_name", call_name);
+               elm_object_part_text_set(vd->base_view.contents, "contact_number", vd->call_number);
+       }
+
+       if (strcmp(file_path, "default") != 0) {
+               _callui_show_caller_id(vd->base_view.contents, file_path);
+       } else {
+               elm_object_signal_emit(vd->base_view.contents, "show_image", "main_end_call");
+       }
+
+       _callui_common_create_ending_timer(vd->base_view.ad);
+
+       evas_object_show(vd->base_view.contents);
+
+       evas_object_hide(ad->main_ly);
+       evas_object_show(ad->main_ly);
+
+       return CALLUI_RESULT_OK;
 }
 
-char *__vcui_endcall_get_item_text(void *data, Evas_Object *obj, const char *part)
+static void __call_back_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_view_callend_h vd = (callui_view_callend_h)data;
+
+       evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP, __call_back_btn_click_cb);
+
+       _callui_common_delete_ending_timer(vd->base_view.ad);
+
+       vd->base_view.ad->speaker_status = EINA_FALSE;
+       vd->base_view.ad->mute_status = EINA_FALSE;
+       vd->base_view.ad->extra_volume_status = EINA_FALSE;
+
+       cm_dial_call(vd->base_view.ad->cm_handle,
+                       vd->call_number,
+                       CM_CALL_TYPE_VOICE,
+                       vd->base_view.ad->sim_slot);
+}
+
+static char *__vcui_endcall_get_item_text(void *data, Evas_Object *obj, const char *part)
 {
        CALLUI_RETURN_VALUE_IF_FAIL(data, NULL);
        if (!strcmp(part, "elm.text")) {
                return strdup(data);
        }
-
        return NULL;
 }
 
-static void __vcui_endcall_create_contact_btn_cb(void *data, Evas_Object *obj, void *event_info)
+static void __create_contact_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad);
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_view_callend_h vd = (callui_view_callend_h)data;
+
        _callui_common_exit_app();
+
+       // TODO: Replace into launcher
        app_control_h request;
        app_control_create(&request);
        app_control_set_operation(request, APP_CONTROL_OPERATION_ADD);
        app_control_set_mime(request, APP_CONTROL_MIME_CONTACT);
+       app_control_add_extra_data(request, APP_CONTROL_DATA_PHONE, vd->call_number);
 
-       if (data) {
-               app_control_add_extra_data(request, APP_CONTROL_DATA_PHONE, data);
-       }
        int err = app_control_send_launch_request(request, NULL, NULL);
        if (err != APP_CONTROL_ERROR_NONE) {
                dbg("app_control_send_launch_request() is failed");
@@ -111,19 +221,20 @@ static void __vcui_endcall_create_contact_btn_cb(void *data, Evas_Object *obj, v
        app_control_destroy(request);
 }
 
-static void __vcui_endcall_update_contact_btn_cb(void *data, Evas_Object *obj, void *event_info)
+static void __update_contact_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad);
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_view_callend_h vd = (callui_view_callend_h)data;
+
        _callui_common_exit_app();
+
+       // TODO: Replace into launcher
        app_control_h request;
        app_control_create(&request);
        app_control_set_operation(request, APP_CONTROL_OPERATION_EDIT);
        app_control_set_mime(request, APP_CONTROL_MIME_CONTACT);
+       app_control_add_extra_data(request, APP_CONTROL_DATA_PHONE, vd->call_number);
 
-       if (data) {
-               app_control_add_extra_data(request, APP_CONTROL_DATA_PHONE, data);
-       }
        int result = app_control_send_launch_request(request, NULL, NULL);
        if (result != APP_CONTROL_ERROR_NONE) {
                err("app_control_send_launch_request() failed (%d)", result);
@@ -131,7 +242,7 @@ static void __vcui_endcall_update_contact_btn_cb(void *data, Evas_Object *obj, v
        app_control_destroy(request);
 }
 
-static void __vcui_endcall_popup_back_cb(void *data, Evas_Object *obj, void *event_info)
+static void __popup_back_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
        dbg("..");
        callui_app_data_t *ad = (callui_app_data_t *)data;
@@ -145,27 +256,27 @@ static void __vcui_endcall_popup_back_cb(void *data, Evas_Object *obj, void *eve
        }
 }
 
-static void __vcui_endcall_create_popup_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static void __add_contact_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
 {
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad);
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_view_callend_h vd = (callui_view_callend_h)data;
 
-       if (ad->ending_timer) {
-               ecore_timer_freeze(ad->ending_timer);
-       } else if (ad->blink_timer) {
-               ecore_timer_freeze(ad->blink_timer);
+       if (vd->base_view.ad->ending_timer) {
+               ecore_timer_freeze(vd->base_view.ad->ending_timer);
+       } else if (vd->base_view.ad->blink_timer) {
+               ecore_timer_freeze(vd->base_view.ad->blink_timer);
        }
-       callui_endcall_view_priv_t *priv = (callui_endcall_view_priv_t *)data;
-       CALLUI_RETURN_IF_FAIL(priv);
+
        Evas_Object *parent = elm_object_top_widget_get(obj);
        CALLUI_RETURN_IF_FAIL(parent);
-       priv->create_update_popup = elm_popup_add(parent);
-       eext_object_event_callback_add(priv->create_update_popup, EEXT_CALLBACK_BACK, __vcui_endcall_popup_back_cb, ad);
 
-       elm_popup_align_set(priv->create_update_popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
-       elm_object_part_text_set(priv->create_update_popup, "title,text",  priv->call_number);
+       vd->create_update_popup = elm_popup_add(parent);
+       eext_object_event_callback_add(vd->create_update_popup, EEXT_CALLBACK_BACK, __popup_back_click_cb, vd->base_view.ad);
+
+       elm_popup_align_set(vd->create_update_popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+       elm_object_part_text_set(vd->create_update_popup, "title,text",  vd->call_number);
 
-       Evas_Object *genlist = elm_genlist_add(priv->create_update_popup);
+       Evas_Object *genlist = elm_genlist_add(vd->create_update_popup);
        elm_genlist_homogeneous_set(genlist, EINA_TRUE);
        elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
        elm_scroller_content_min_limit(genlist, EINA_FALSE, EINA_TRUE);
@@ -175,233 +286,34 @@ static void __vcui_endcall_create_popup_cb(void *data, Evas *evas, Evas_Object *
        itc->item_style = "type1";
        itc->func.text_get = __vcui_endcall_get_item_text;
 
-       elm_genlist_item_append(genlist, itc, _("IDS_COM_OPT_CREATE_CONTACT"), NULL, ELM_GENLIST_ITEM_NONE, __vcui_endcall_create_contact_btn_cb, priv->call_number);
-       elm_genlist_item_append(genlist, itc, "Update contact", NULL, ELM_GENLIST_ITEM_NONE, __vcui_endcall_update_contact_btn_cb,  priv->call_number);
+       elm_genlist_item_append(genlist, itc, _("IDS_COM_OPT_CREATE_CONTACT"),
+                       NULL, ELM_GENLIST_ITEM_NONE, __create_contact_btn_click_cb, vd);
+       elm_genlist_item_append(genlist, itc, "Update contact",
+                       NULL, ELM_GENLIST_ITEM_NONE, __update_contact_btn_click_cb, vd);
 
        elm_genlist_item_class_free(itc);
-       elm_object_content_set(priv->create_update_popup, genlist);
-       elm_popup_orient_set(priv->create_update_popup, ELM_POPUP_ORIENT_CENTER);
-       evas_object_show(priv->create_update_popup);
+       elm_object_content_set(vd->create_update_popup, genlist);
+       elm_popup_orient_set(vd->create_update_popup, ELM_POPUP_ORIENT_CENTER);
+       evas_object_show(vd->create_update_popup);
 }
 
-static void __vcui_endcall_msg_btn_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static void __msg_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
 {
-       evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP, __vcui_endcall_msg_btn_cb);
-       char *number = (char *)data;
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_view_callend_h vd = (callui_view_callend_h)data;
+
+       evas_object_event_callback_del(obj, EVAS_CALLBACK_MOUSE_UP, __msg_btn_click_cb);
+
        app_control_h request;
        app_control_create(&request);
        app_control_set_operation(request, APP_CONTROL_OPERATION_COMPOSE);
        char str[CONTACT_NUMBER_BUF_LEN];
-       snprintf(str, sizeof(str), "sms:%s", number);
+       snprintf(str, sizeof(str), "sms:%s", vd->call_number);
        app_control_set_uri(request, str);
+
        int result = app_control_send_launch_request(request, NULL, NULL);
        if (result != APP_CONTROL_ERROR_NONE) {
                err("app_control_send_launch_request() failed (%d)", result);
        }
        app_control_destroy(request);
 }
-
-static void __callui_view_callend_create_screen(callui_app_data_t *ad, Evas_Object *eo, void *data)
-{
-       dbg("..");
-
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(vd);
-       callui_endcall_view_priv_t *priv = (callui_endcall_view_priv_t *)vd->priv;
-       CALLUI_RETURN_IF_FAIL(priv);
-       call_data_t *call_data = NULL;
-
-       if (ad->active) {
-               call_data = ad->active;
-       } else {
-               call_data = ad->held;
-       }
-       CALLUI_RETURN_IF_FAIL(call_data);
-
-       char *file_path = call_data->call_ct_info.caller_id_path;
-       char *call_name = call_data->call_ct_info.call_disp_name;
-
-       if (call_data->call_disp_num[0] != '\0') {
-               strncpy(priv->call_number, call_data->call_disp_num, sizeof(priv->call_number));
-       } else {
-               strncpy(priv->call_number, call_data->call_num, sizeof(priv->call_number));
-       }
-       priv->contact_person_id = call_data->call_ct_info.person_id;
-
-       Evas_Object *button_call_back = elm_layout_add(priv->contents);
-       if (button_call_back) {
-               elm_layout_file_set(button_call_back, EDJ_NAME, "call_back");
-               evas_object_event_callback_add(button_call_back, EVAS_CALLBACK_MOUSE_UP,  __callui_endcall_voicecall_btn_cb, (void *)priv->call_number);
-               elm_object_part_text_set(button_call_back, "end_btn_text", _("IDS_CALL_BUTTON_CALL"));
-       }
-       elm_object_part_content_set(priv->contents, "button_call_back", button_call_back);
-
-       Evas_Object *button_message = elm_layout_add(priv->contents);
-       if (button_message) {
-               elm_layout_file_set(button_message, EDJ_NAME, "message_button");
-               evas_object_event_callback_add(button_message, EVAS_CALLBACK_MOUSE_UP, __vcui_endcall_msg_btn_cb, (void *)priv->call_number);
-               elm_object_part_text_set(button_message, "end_btn_text", _("IDS_COM_BODY_MESSAGE"));
-       }
-       elm_object_part_content_set(priv->contents, "button_message_back", button_message);
-       elm_object_part_text_set(priv->contents, "main_title_status", _("IDS_CALL_BODY_CALL_ENDE_M_STATUS_ABB"));
-
-       if (!(call_name && call_name[0] != '\0')) {
-               Evas_Object *button_create = elm_layout_add(priv->contents);
-               if (button_create) {
-                       elm_layout_file_set(button_create, EDJ_NAME, "create_contact_button");
-                       evas_object_event_callback_add(button_create, EVAS_CALLBACK_MOUSE_UP, __vcui_endcall_create_popup_cb, (void *)priv);
-                       elm_object_part_content_set(priv->contents, "swallow.create_contact", button_create);
-               }
-               elm_object_part_text_set(priv->contents, "contact_name", priv->call_number);
-               elm_object_part_text_set(priv->contents, "contact_number", _("IDS_COM_OPT_ADD_TO_CONTACTS"));
-       } else {
-               elm_object_part_text_set(priv->contents, "contact_name", call_name);
-               elm_object_part_text_set(priv->contents, "contact_number", priv->call_number);
-       }
-
-       if (strcmp(file_path, "default") != 0) {
-               _callui_show_caller_id(priv->contents, file_path);
-       } else {
-               elm_object_signal_emit(priv->contents, "show_image", "main_end_call");
-       }
-       _callui_common_create_ending_timer(vd);
-}
-
-static Evas_Object *__callui_view_callend_create_contents(void *data, char *grp_name)
-{
-       if (data == NULL) {
-               err("ERROR");
-               return NULL;
-       }
-       callui_app_data_t *ad = (callui_app_data_t *)data;
-       Evas_Object *eo = NULL;
-
-       eo = _callui_load_edj(ad->main_ly, EDJ_NAME, grp_name);
-
-       if (eo == NULL)
-               return NULL;
-
-       return eo;
-}
-
-static int __callui_view_callend_oncreate(call_view_data_t *view_data, void *data)
-{
-       dbg("endcall view create");
-       call_view_data_t *vd = view_data;
-       callui_app_data_t *ad = (callui_app_data_t *)data;
-       callui_endcall_view_priv_t *priv = (callui_endcall_view_priv_t *)vd->priv;
-       call_data_t *call_data = NULL;
-
-       vd->ad = ad;
-       priv->bshowbutton = FALSE;      /* Init */
-
-       if (ad->active) {
-               call_data = ad->active;
-       } else {
-               call_data = ad->held;
-       }
-       CALLUI_RETURN_VALUE_IF_FAIL(call_data, -1);
-
-       Evas_Object *contents = NULL;
-       Evas_Object *caller_info = NULL;
-       Evas_Object *btn_ly = NULL;
-
-       contents = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-       if (contents) {
-               caller_info = elm_object_part_content_get(contents, "caller_info");
-               if (caller_info) {
-                       evas_object_del(caller_info);
-                       caller_info = NULL;
-               }
-
-               btn_ly = elm_object_part_content_get(contents, "btn_region");
-               if (btn_ly) {
-                       evas_object_del(btn_ly);
-                       btn_ly = NULL;
-               }
-               evas_object_del(contents);
-               contents = NULL;
-       }
-
-       g_strlcpy(priv->caller_id_path, call_data->call_ct_info.caller_id_path, sizeof(priv->caller_id_path));
-       if (ad->main_ly) {
-               priv->contents = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-               if (!priv->contents) {
-                       priv->contents = __callui_view_callend_create_contents(ad, "main_end_call");
-                       _callui_set_object_data(priv->contents, CALLUI_END_TYPE_KEY, CALLUI_END_TYPE_SINGLE_CALL_END);
-                       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", priv->contents);
-                       evas_object_name_set(priv->contents, CALLUI_VIEW_CALLEND_LAYOUT_ID);
-               }
-
-               __callui_view_callend_onshow(view_data, ad);
-       }
-       return 0;
-}
-
-static int __callui_view_callend_onupdate(call_view_data_t *view_data)
-{
-       dbg("end call view update");
-       return 0;
-}
-
-static int __callui_view_callend_onshow(call_view_data_t *view_data, void *appdata)
-{
-       dbg("end call view show");
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       callui_endcall_view_priv_t *priv = (callui_endcall_view_priv_t *)view_data->priv;
-
-       __callui_view_callend_create_screen(ad, priv->contents, view_data);
-
-       _callui_common_win_set_noti_type(ad, EINA_TRUE);
-       evas_object_hide(ad->main_ly);
-       evas_object_show(ad->main_ly);
-       return 0;
-}
-
-static int __callui_view_callend_ondestroy(call_view_data_t *vd)
-{
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, -1);
-
-       callui_endcall_view_priv_t *priv = (callui_endcall_view_priv_t *)vd->priv;
-
-       _callui_common_delete_ending_timer();
-
-       if (priv != NULL) {
-               if (priv->contents) {
-                       evas_object_del(priv->contents);
-                       priv->contents = NULL;
-               }
-
-               if (priv->caller_info) {
-                       evas_object_del(priv->caller_info);
-                       priv->caller_info = NULL;
-               }
-
-               if (priv->caller_id) {
-                       evas_object_del(priv->caller_id);
-                       priv->caller_id = NULL;
-               }
-
-               if (priv->create_update_popup) {
-                       dbg("create_update_popup");
-                       evas_object_del(priv->create_update_popup);
-               }
-               free(priv);
-               priv = NULL;
-       }
-
-       return 0;
-}
-
-Evas_Object *_callui_view_callend_get_layout(call_view_data_t *vd)
-{
-       dbg("..");
-       callui_endcall_view_priv_t *priv = NULL;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, NULL);
-       priv = (callui_endcall_view_priv_t *) vd->priv;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(priv, NULL);
-       return priv->contents;
-}
-
index c609d9b..35ec9b9 100755 (executable)
  *
  */
 
-#include "callui-view-manager.h"
 #include "callui-view-circle.h"
-#include "callui-view-incoming-lock.h"
 #include "callui-view-elements.h"
 #include "callui-view-layout.h"
 #include "callui-common.h"
 
+#define CALLUI_CIRCLE_LAYOUT_DATA "VIEW_DATA"
+
 static void __callui_view_circle_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void __callui_view_circle_multi_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void __callui_view_circle_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void __callui_view_circle_multi_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void __callui_view_circle_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
 static void __callui_view_circle_multi_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
-static void __callui_view_circle_accept_down(call_view_data_t *vd, callui_app_data_t *ad, int x, int y);
-static void __callui_view_circle_accept_move(call_view_data_t *vd, callui_app_data_t *ad, int x, int y);
-static void __callui_view_circle_accept_up(call_view_data_t *vd, callui_app_data_t *ad, int x, int y);
-static void __callui_view_circle_reject_down(call_view_data_t *vd, callui_app_data_t *ad, int x, int y);
-static void __callui_view_circle_reject_move(call_view_data_t *vd, callui_app_data_t *ad, int x, int y);
-static void __callui_view_circle_reject_up(call_view_data_t *vd, callui_app_data_t *ad, int x, int y);
+static void __callui_view_circle_accept_down(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y);
+static void __callui_view_circle_accept_move(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y);
+static void __callui_view_circle_accept_up(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y);
+static void __callui_view_circle_reject_down(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y);
+static void __callui_view_circle_reject_move(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y);
+static void __callui_view_circle_reject_up(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y);
 
 static int accept_touch_num = -1;
 static int reject_touch_num = -1;
@@ -52,104 +52,34 @@ static int outer_circle_height = -1;
 static Eina_Bool baccept_clicked;
 static Eina_Bool breject_clicked;
 
-static void __callui_view_circle_handle_accept(call_view_data_t *vd, callui_app_data_t *ad)
+static void __callui_view_circle_handle_accept(callui_app_data_t *ad)
 {
        dbg("..");
 
-       int ret = -1;
        if (_callui_common_get_idle_lock_type() == LOCK_TYPE_SWIPE_LOCK) {
                _callui_common_unlock_swipe_lock();
        }
 
-       if (vd->type == VIEW_TYPE_INCOMING_LOCK) {
-               if (ad->active == NULL) {
-                       dbg("No Call Or Held call - Accept");
+       if (ad->active == NULL) {
+               dbg("No Call Or Held call - Accept");
 
-                       ret = cm_answer_call(ad->cm_handle, CALL_ANSWER_TYPE_NORMAL);
-                       if (ret != CM_ERROR_NONE) {
-                               err("cm_answer_call() is failed");
-                               return;
-                       }
-               } else {
-                       dbg("Show popup - 2nd MT call - test volume popup");
-                       _callui_load_second_call_popup(ad);
-               }
-       }
-}
-
-static void __callui_view_circle_handle_reject(call_view_data_t *vd, callui_app_data_t *ad)
-{
-       dbg("..");
-       int ret = -1;
-
-       if (vd->type == VIEW_TYPE_INCOMING_LOCK) {
-               ret = cm_reject_call(ad->cm_handle);
+               int ret = cm_answer_call(ad->cm_handle, CALL_ANSWER_TYPE_NORMAL);
                if (ret != CM_ERROR_NONE) {
-                       err("cm_reject_call() is failed");
+                       err("cm_answer_call() is failed");
+                       return;
                }
+       } else {
+               dbg("Show popup - 2nd MT call - test volume popup");
+               _callui_load_second_call_popup(ad);
        }
-       return;
-}
-
-static Evas_Object *__callui_view_circle_get_accept_layout(void *data)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       Evas_Object *layout = NULL;
-       switch (vd->type) {
-       case VIEW_TYPE_INCOMING_LOCK:
-               {
-                       layout = _callui_view_incoming_lock_get_accept_layout(vd);
-               }
-               break;
-       default:
-               err("vd type is error");
-               return NULL;
-       }
-       return layout;
-}
-
-static void __callui_view_circle_set_accept_layout(void *data, Evas_Object *layout)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       switch (vd->type) {
-       case VIEW_TYPE_INCOMING_LOCK:
-               {
-                       _callui_view_incoming_lock_set_accept_layout(vd, layout);
-               }
-               break;
-       default:
-               err("vd type is error");
-       }
-}
-
-static Evas_Object *__callui_view_circle_get_reject_layout(void *data)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       Evas_Object *layout = NULL;
-       switch (vd->type) {
-       case VIEW_TYPE_INCOMING_LOCK:
-               {
-                       layout = _callui_view_incoming_lock_get_reject_layout(vd);
-               }
-               break;
-       default:
-               err("code should never reach here");
-               return NULL;
-       }
-       return layout;
 }
 
-static void __callui_view_circle_set_reject_layout(void *data, Evas_Object *layout)
+static void __callui_view_circle_handle_reject(callui_app_data_t *ad)
 {
-       call_view_data_t *vd = (call_view_data_t *)data;
-       switch (vd->type) {
-       case VIEW_TYPE_INCOMING_LOCK:
-               {
-                       _callui_view_incoming_lock_set_reject_layout(vd, layout);
-               }
-               break;
-       default:
-               err("vd type is error");
+       dbg("..");
+       int ret = cm_reject_call(ad->cm_handle);
+       if (ret != CM_ERROR_NONE) {
+               err("cm_reject_call() is failed");
        }
 }
 
@@ -161,10 +91,10 @@ static Evas_Coord __callui_view_circle_get_distance(callui_app_data_t *ad, int c
        return (Evas_Coord)sqrt((point_x-centre_x)*(point_x-centre_x) + (point_y-centre_y)*(point_y-centre_y));
 }
 
-static void __callui_view_circle_accept_down(call_view_data_t *vd, callui_app_data_t *ad, int x, int y)
+static void __callui_view_circle_accept_down(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y)
 {
        dbg("..");
-       Evas_Object *lock_accept = __callui_view_circle_get_accept_layout(vd);
+       Evas_Object *lock_accept = _callui_view_incoming_call_get_accept_layout(vd);
 
        int point_distance = 0;
 
@@ -186,12 +116,9 @@ static void __callui_view_circle_mouse_down_cb(void *data, Evas *evas, Evas_Obje
        CALLUI_RETURN_IF_FAIL(data);
        CALLUI_RETURN_IF_FAIL(event_info);
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_IF_FAIL(vd->ad);
-
        Evas_Event_Mouse_Down *ev = event_info;
-       callui_app_data_t *ad = vd->ad;
+       callui_app_data_t *ad = (callui_app_data_t*)data;
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)evas_object_data_get(obj, CALLUI_CIRCLE_LAYOUT_DATA);
 
        if (-1 == accept_touch_num && -1 == reject_touch_num) {
                __callui_view_circle_accept_down(vd, ad, ev->canvas.x, ev->canvas.y);
@@ -210,12 +137,9 @@ static void __callui_view_circle_multi_down_cb(void *data, Evas *evas, Evas_Obje
        CALLUI_RETURN_IF_FAIL(data);
        CALLUI_RETURN_IF_FAIL(event_info);
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_IF_FAIL(vd->ad);
-
        Evas_Event_Multi_Down *ev = event_info;
-       callui_app_data_t *ad = vd->ad;
+       callui_app_data_t *ad = (callui_app_data_t*)data;
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)evas_object_data_get(obj, CALLUI_CIRCLE_LAYOUT_DATA);
 
        dbg("ev->device = %d, accept_touch_num = %d", ev->device, accept_touch_num);
        if (-1 == accept_touch_num && -1 == reject_touch_num) {
@@ -231,9 +155,9 @@ static void __callui_view_circle_multi_down_cb(void *data, Evas *evas, Evas_Obje
 
 }
 
-static void __callui_view_circle_accept_move(call_view_data_t *vd, callui_app_data_t *ad, int x, int y)
+static void __callui_view_circle_accept_move(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y)
 {
-       Evas_Object *lock_accept = __callui_view_circle_get_accept_layout(vd);
+       Evas_Object *lock_accept = _callui_view_incoming_call_get_accept_layout(vd);
 
        Evas_Coord point_distance = 0;
 
@@ -260,12 +184,9 @@ static void __callui_view_circle_mouse_move_cb(void *data, Evas *evas, Evas_Obje
        CALLUI_RETURN_IF_FAIL(data);
        CALLUI_RETURN_IF_FAIL(event_info);
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_IF_FAIL(vd->ad);
-
        Evas_Event_Mouse_Move *ev = event_info;
-       callui_app_data_t *ad = vd->ad;
+       callui_app_data_t *ad = (callui_app_data_t*)data;
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)evas_object_data_get(obj, CALLUI_CIRCLE_LAYOUT_DATA);
 
        if (accept_touch_num == 0)
                __callui_view_circle_accept_move(vd, ad, ev->cur.canvas.x, ev->cur.canvas.y);
@@ -278,12 +199,9 @@ static void __callui_view_circle_multi_move_cb(void *data, Evas *evas, Evas_Obje
        CALLUI_RETURN_IF_FAIL(data);
        CALLUI_RETURN_IF_FAIL(event_info);
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_IF_FAIL(vd->ad);
-
        Evas_Event_Multi_Move *ev = event_info;
-       callui_app_data_t *ad = vd->ad;
+       callui_app_data_t *ad = (callui_app_data_t*)data;
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)evas_object_data_get(obj, CALLUI_CIRCLE_LAYOUT_DATA);
 
        dbg("ev->device = %d, accept_touch_num = %d", ev->device, accept_touch_num);
        if (vd) {
@@ -295,10 +213,10 @@ static void __callui_view_circle_multi_move_cb(void *data, Evas *evas, Evas_Obje
 
 }
 
-static void __callui_view_circle_accept_up(call_view_data_t *vd, callui_app_data_t *ad, int x, int y)
+static void __callui_view_circle_accept_up(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y)
 {
        dbg("..");
-       Evas_Object *lock_accept = __callui_view_circle_get_accept_layout(vd);
+       Evas_Object *lock_accept = _callui_view_incoming_call_get_accept_layout(vd);
        Evas_Coord point_distance = 0;
 
        if (baccept_clicked) {
@@ -311,7 +229,7 @@ static void __callui_view_circle_accept_up(call_view_data_t *vd, callui_app_data
                        evas_object_image_fill_set(circle_bg, 0, 0, outer_circle_width, outer_circle_height);
 
                        dbg("__callui_view_circle_handle_accept");
-                       __callui_view_circle_handle_accept(vd, ad);
+                       __callui_view_circle_handle_accept(ad);
                } else {
                        elm_object_signal_emit(lock_accept, "outer_circle,hide", "outer-circle");
                }
@@ -325,12 +243,9 @@ static void __callui_view_circle_mouse_up_cb(void *data, Evas *evas, Evas_Object
        CALLUI_RETURN_IF_FAIL(data);
        CALLUI_RETURN_IF_FAIL(event_info);
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_IF_FAIL(vd->ad);
-
        Evas_Event_Mouse_Up *ev = event_info;
-       callui_app_data_t *ad = vd->ad;
+       callui_app_data_t *ad = (callui_app_data_t*)data;
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)evas_object_data_get(obj, CALLUI_CIRCLE_LAYOUT_DATA);
 
        if (accept_touch_num == 0) {
                __callui_view_circle_accept_up(vd, ad, ev->canvas.x, ev->canvas.y);
@@ -346,12 +261,9 @@ static void __callui_view_circle_multi_up_cb(void *data, Evas *evas, Evas_Object
        CALLUI_RETURN_IF_FAIL(data);
        CALLUI_RETURN_IF_FAIL(event_info);
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_IF_FAIL(vd->ad);
-
        Evas_Event_Multi_Up *ev = event_info;
-       callui_app_data_t *ad = vd->ad;
+       callui_app_data_t *ad = (callui_app_data_t*)data;
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)evas_object_data_get(obj, CALLUI_CIRCLE_LAYOUT_DATA);
 
        if (accept_touch_num == ev->device) {
                __callui_view_circle_accept_up(vd, ad, ev->canvas.x, ev->canvas.y);
@@ -362,10 +274,10 @@ static void __callui_view_circle_multi_up_cb(void *data, Evas *evas, Evas_Object
        }
 }
 
-static void __callui_view_circle_reject_down(call_view_data_t *vd, callui_app_data_t *ad, int x, int y)
+static void __callui_view_circle_reject_down(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y)
 {
        dbg("..");
-       Evas_Object *lock_reject = __callui_view_circle_get_reject_layout(vd);
+       Evas_Object *lock_reject = _callui_view_incoming_call_get_reject_layout(vd);
        int     point_distance = 0;
 
        point_distance = __callui_view_circle_get_distance(ad, reject_button_center_x, x, y);
@@ -380,9 +292,9 @@ static void __callui_view_circle_reject_down(call_view_data_t *vd, callui_app_da
        }
 }
 
-static void __callui_view_circle_reject_move(call_view_data_t *vd, callui_app_data_t *ad, int x, int y)
+static void __callui_view_circle_reject_move(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y)
 {
-       Evas_Object *lock_reject = __callui_view_circle_get_reject_layout(vd);
+       Evas_Object *lock_reject = _callui_view_incoming_call_get_reject_layout(vd);
 
        Evas_Coord      point_distance = 0;
 
@@ -404,10 +316,10 @@ static void __callui_view_circle_reject_move(call_view_data_t *vd, callui_app_da
        }
 }
 
-static void __callui_view_circle_reject_up(call_view_data_t *vd, callui_app_data_t *ad, int x, int y)
+static void __callui_view_circle_reject_up(callui_view_incoming_call_h vd, callui_app_data_t *ad, int x, int y)
 {
        dbg("..");
-       Evas_Object *lock_reject = __callui_view_circle_get_reject_layout(vd);
+       Evas_Object *lock_reject = _callui_view_incoming_call_get_reject_layout(vd);
        Evas_Coord      point_distance = 0;
 
        if (breject_clicked) {
@@ -418,7 +330,7 @@ static void __callui_view_circle_reject_up(call_view_data_t *vd, callui_app_data
                        evas_object_move(circle_bg, reject_outer_circle_x, outer_circle_y);
                        evas_object_resize(circle_bg, outer_circle_width, outer_circle_height);
                        evas_object_image_fill_set(circle_bg, 0, 0, outer_circle_width, outer_circle_height);
-                       __callui_view_circle_handle_reject(vd, ad);
+                       __callui_view_circle_handle_reject(ad);
                } else {
                        elm_object_signal_emit(lock_reject, "outer_circle,hide", "outer-circle");
                        elm_object_signal_emit(lock_reject, "inner_circle,show", "inner-circle");
@@ -428,28 +340,16 @@ static void __callui_view_circle_reject_up(call_view_data_t *vd, callui_app_data
        }
 }
 
-void _callui_view_circle_accept_reject_reset(void *data)
+int _callui_view_circle_create_reject_layout(callui_app_data_t *ad, callui_view_incoming_call_h vd, Evas_Object *parent)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       Evas_Object *lock_accept = __callui_view_circle_get_accept_layout(vd);
-       Evas_Object *lock_reject = __callui_view_circle_get_reject_layout(vd);
-
-       baccept_clicked = EINA_FALSE;
-       breject_clicked = EINA_FALSE;
-
-       elm_object_signal_emit(lock_reject, "inner_circle,show", "inner-circle");
-       elm_object_signal_emit(lock_accept, "inner_circle,show", "inner-circle");
-
-}
+       CALLUI_RETURN_VALUE_IF_FAIL(ad, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(parent, CALLUI_RESULT_INVALID_PARAM);
 
-Evas_Object *_callui_view_circle_create_reject_layout(callui_app_data_t *ad, void *data)
-{
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       Evas_Object *lock_reject = __callui_view_circle_get_reject_layout(vd);
+       Evas_Object *lock_reject = _callui_view_incoming_call_get_reject_layout(vd);
        Evas_Object *inner_circle = NULL;
        Evas_Object *outer_circle = NULL;
+       int res = CALLUI_RESULT_FAIL;
        int x = 0;
        int y = 0;
        int width = 0;
@@ -457,25 +357,30 @@ Evas_Object *_callui_view_circle_create_reject_layout(callui_app_data_t *ad, voi
 
        if (lock_reject != NULL) {
                evas_object_del(lock_reject);
-               __callui_view_circle_set_reject_layout(vd, NULL);
+               res = _callui_view_incoming_call_set_reject_layout(vd, NULL);
+               CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, CALLUI_RESULT_FAIL);
        }
 
-       lock_reject = _callui_load_edj(ad->win, EDJ_NAME, GRP_LOCK_REJECT);
+       lock_reject = _callui_load_edj(parent, EDJ_NAME, GRP_LOCK_REJECT);
+       CALLUI_RETURN_VALUE_IF_FAIL(lock_reject, CALLUI_RESULT_ALLOCATION_FAIL);
        evas_object_resize(lock_reject, ad->root_w, ad->root_h);
        evas_object_move(lock_reject, 0, 0);
 
-       __callui_view_circle_set_reject_layout(vd, lock_reject);
+       res = _callui_view_incoming_call_set_reject_layout(vd, lock_reject);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, CALLUI_RESULT_FAIL);
 
        elm_object_signal_emit(lock_reject, "outer_circle,hide", "outer-circle");
 
        elm_object_part_text_set(lock_reject, "reject_text", _("IDS_CALL_BUTTON_REJECT"));
 
-       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MOUSE_DOWN, __callui_view_circle_mouse_down_cb, vd);
-       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MOUSE_MOVE, __callui_view_circle_mouse_move_cb, vd);
-       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MOUSE_UP, __callui_view_circle_mouse_up_cb, vd);
-       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MULTI_DOWN, __callui_view_circle_multi_down_cb, vd);
-       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MULTI_MOVE, __callui_view_circle_multi_move_cb, vd);
-       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MULTI_UP, __callui_view_circle_multi_up_cb, vd);
+       evas_object_data_set(lock_reject, CALLUI_CIRCLE_LAYOUT_DATA, vd);
+
+       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MOUSE_DOWN, __callui_view_circle_mouse_down_cb, ad);
+       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MOUSE_MOVE, __callui_view_circle_mouse_move_cb, ad);
+       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MOUSE_UP, __callui_view_circle_mouse_up_cb, ad);
+       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MULTI_DOWN, __callui_view_circle_multi_down_cb, ad);
+       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MULTI_MOVE, __callui_view_circle_multi_move_cb, ad);
+       evas_object_event_callback_add(lock_reject, EVAS_CALLBACK_MULTI_UP, __callui_view_circle_multi_up_cb, ad);
 
        inner_circle = _callui_edje_object_part_get(lock_reject, "reject_inner_circle");
        evas_object_geometry_get(inner_circle, &x, &y, &width, &height);
@@ -489,16 +394,19 @@ Evas_Object *_callui_view_circle_create_reject_layout(callui_app_data_t *ad, voi
 
        evas_object_show(lock_reject);
 
-       return lock_reject;
+       return CALLUI_RESULT_OK;
 }
 
-Evas_Object *_callui_view_circle_create_accept_layout(callui_app_data_t *ad, void *data)
+int _callui_view_circle_create_accept_layout(callui_app_data_t *ad, callui_view_incoming_call_h vd, Evas_Object *parent)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       Evas_Object *lock_accept = __callui_view_circle_get_accept_layout(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(ad, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(parent, CALLUI_RESULT_INVALID_PARAM);
+
+       Evas_Object *lock_accept = _callui_view_incoming_call_get_accept_layout(vd);
        Evas_Object *inner_circle = NULL;
        Evas_Object *outer_circle = NULL;
+       int res = CALLUI_RESULT_FAIL;
        int x = 0;
        int y = 0;
        int width = 0;
@@ -506,24 +414,29 @@ Evas_Object *_callui_view_circle_create_accept_layout(callui_app_data_t *ad, voi
 
        if (lock_accept != NULL) {
                evas_object_del(lock_accept);
-               __callui_view_circle_set_accept_layout(vd, NULL);
+               res = _callui_view_incoming_call_set_accept_layout(vd, NULL);
+               CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, CALLUI_RESULT_FAIL);
        }
 
-       lock_accept = _callui_load_edj(ad->win, EDJ_NAME, GRP_LOCK_ACCEPT);
+       lock_accept = _callui_load_edj(parent, EDJ_NAME, GRP_LOCK_ACCEPT);
+       CALLUI_RETURN_VALUE_IF_FAIL(lock_accept, CALLUI_RESULT_ALLOCATION_FAIL);
        evas_object_resize(lock_accept, ad->root_w, ad->root_h);
        evas_object_move(lock_accept, 0, 0);
 
-       __callui_view_circle_set_accept_layout(vd, lock_accept);
+       res = _callui_view_incoming_call_set_accept_layout(vd, lock_accept);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, CALLUI_RESULT_FAIL);
 
        elm_object_signal_emit(lock_accept, "outer_circle,hide", "outer-circle");
 
+       evas_object_data_set(lock_accept, CALLUI_CIRCLE_LAYOUT_DATA, vd);
+
        elm_object_part_text_set(lock_accept, "accept_text", _("IDS_CALL_BUTTON_ACCEPT"));
-       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MOUSE_DOWN, __callui_view_circle_mouse_down_cb, vd);
-       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MOUSE_MOVE, __callui_view_circle_mouse_move_cb, vd);
-       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MOUSE_UP, __callui_view_circle_mouse_up_cb, vd);
-       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MULTI_DOWN, __callui_view_circle_multi_down_cb, vd);
-       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MULTI_MOVE, __callui_view_circle_multi_move_cb, vd);
-       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MULTI_UP, __callui_view_circle_multi_up_cb, vd);
+       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MOUSE_DOWN, __callui_view_circle_mouse_down_cb, ad);
+       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MOUSE_MOVE, __callui_view_circle_mouse_move_cb, ad);
+       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MOUSE_UP, __callui_view_circle_mouse_up_cb, ad);
+       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MULTI_DOWN, __callui_view_circle_multi_down_cb, ad);
+       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MULTI_MOVE, __callui_view_circle_multi_move_cb, ad);
+       evas_object_event_callback_add(lock_accept, EVAS_CALLBACK_MULTI_UP, __callui_view_circle_multi_up_cb, ad);
 
        inner_circle = _callui_edje_object_part_get(lock_accept, "accept_inner_circle");
        evas_object_geometry_get(inner_circle, &x, &y, &width, &height);
@@ -544,5 +457,5 @@ Evas_Object *_callui_view_circle_create_accept_layout(callui_app_data_t *ad, voi
        dbg("Outer Circle X[%d] Y[%d] Radius[%d]", accept_outer_circle_x, outer_circle_y, outer_circle_radius);
        evas_object_show(lock_accept);
 
-       return lock_accept;
+       return CALLUI_RESULT_OK;
 }
index de88caa..c2dd854 100644 (file)
 
 #include "callui-view-dialing.h"
 #include "callui.h"
-#include "callui-view-manager.h"
 #include "callui-view-elements.h"
 #include "callui-keypad.h"
-#include "callui-view-quickpanel.h"
 #include "callui-common.h"
 
-struct callui_view_dialing_priv {
-       Evas_Object *contents;
+struct _callui_view_dialing {
+       call_view_data_base_t base_view;
+
        Evas_Object *caller_info;
-       Evas_Object *btn_ly;
-       Evas_Object *ic;
-       Eina_Bool bredial;
 };
-typedef struct callui_view_dialing_priv callui_view_dialing_priv_t;
+typedef struct _callui_view_dialing _callui_view_dialing_t;
+
+static int __callui_view_dialing_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int __callui_view_dialing_onupdate(call_view_data_base_t *view_data);
+static int __callui_view_dialing_ondestroy(call_view_data_base_t *view_data);
 
-#define         VIEW_DIALING_LAYOUT_ID "DIALVIEW"
+static int __create_main_content(callui_view_dialing_h vd);
 
-static int __callui_view_dialing_oncreate(call_view_data_t *view_data, void *appdata);
-static int __callui_view_dialing_onupdate(call_view_data_t *view_data);
-static int __callui_view_dialing_onshow(call_view_data_t *view_data, void *appdata);
-static int __callui_view_dialing_ondestroy(call_view_data_t *view_data);
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static int __update_displayed_data(callui_view_dialing_h vd);
 
-call_view_data_t *_callui_dialing_view_dialing_new()
+callui_view_dialing_h _callui_dialing_view_dialing_new()
 {
-       call_view_data_t *dialing_view = calloc(1, sizeof(call_view_data_t));
+       callui_view_dialing_h dialing_view = calloc(1, sizeof(_callui_view_dialing_t));
+       CALLUI_RETURN_NULL_IF_FAIL(dialing_view);
 
-       dialing_view->type = VIEW_TYPE_DIALLING;
-       dialing_view->layout = NULL;
-       dialing_view->onCreate = __callui_view_dialing_oncreate;
-       dialing_view->onUpdate = __callui_view_dialing_onupdate;
-       dialing_view->onDestroy = __callui_view_dialing_ondestroy;
-       dialing_view->priv = calloc(1, sizeof(callui_view_dialing_priv_t));
-
-       if (!dialing_view->priv) {
-               err("ERROR!!!!!!!!!!! ");
-       }
+       dialing_view->base_view.onCreate = __callui_view_dialing_oncreate;
+       dialing_view->base_view.onUpdate = __callui_view_dialing_onupdate;
+       dialing_view->base_view.onDestroy = __callui_view_dialing_ondestroy;
 
        return dialing_view;
 }
 
-static Evas_Object *__callui_view_dialing_create_contents(void *data, char *grpname)
+static int __callui_view_dialing_oncreate(call_view_data_base_t *view_data, void *appdata)
 {
-       callui_app_data_t *ad = (callui_app_data_t *)data;
-       Evas_Object *eo = NULL;
-
-       /* load edje */
-       eo = _callui_load_edj(ad->main_ly, EDJ_NAME, grpname);
-       if (eo == NULL) {
-               err("__callui_view_dialing_create_contents ERROR");
-               return NULL;
-       }
-       return eo;
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_dialing_h vd = (callui_view_dialing_h)view_data;
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
+       vd->base_view.ad = ad;
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, CALLUI_RESULT_FAIL);
+
+       _callui_lock_manager_start(ad->lock_handle);
+
+       return __update_displayed_data(vd);
 }
 
-static void __callui_view_dialing_draw_screen(callui_app_data_t *ad, Evas_Object *eo, void *data)
+static int __create_main_content(callui_view_dialing_h vd)
 {
-       dbg("__callui_view_dialing_draw_screen");
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-       callui_view_dialing_priv_t *priv = (callui_view_dialing_priv_t *)vd->priv;
-       call_data_t *now_call_data = ad->active;
-       CALLUI_RETURN_IF_FAIL(now_call_data);
-       char *file_path = NULL;
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME, GRP_MAIN_LY);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", vd->base_view.contents);
+
+       Evas_Object *btn_layout = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_BUTTON_LAYOUT);
+       CALLUI_RETURN_VALUE_IF_FAIL(btn_layout, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, "btn_region", btn_layout);
 
-       if (now_call_data == NULL) {
-               err("Now Data is NULL");
-               return;
+       vd->caller_info = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_CALLER_INFO);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->caller_info, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, "caller_info", vd->caller_info);
+
+       int res = _callui_keypad_create_layout(ad);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_end_call_button(vd->base_view.contents, __end_call_btn_click_cb, vd),
+                       CALLUI_RESULT_ALLOCATION_FAIL);
+
+       return res;
+}
+
+static int __callui_view_dialing_onupdate(call_view_data_base_t *view_data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       return __update_displayed_data((callui_view_dialing_h)view_data);
+}
+
+static int __callui_view_dialing_ondestroy(call_view_data_base_t *view_data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_dialing_h vd = (callui_view_dialing_h)view_data;
+
+       _callui_keypad_delete_layout(vd->base_view.ad);
+
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
+
+       free(vd);
+
+       return CALLUI_RESULT_OK;
+}
+
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_view_dialing_h vd = (callui_view_dialing_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       if (ad->active) {
+               int ret = cm_end_call(ad->cm_handle, ad->active->call_id, CALL_RELEASE_TYPE_BY_CALL_HANDLE);
+               if (ret != CM_ERROR_NONE) {
+                       err("cm_end_call() is failed");
+               }
        }
+}
 
-       file_path = now_call_data->call_ct_info.caller_id_path;
-       sec_dbg("file_path: %s", file_path);
+static int __update_displayed_data(callui_view_dialing_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+       call_data_t *now_call_data = ad->active;
+       CALLUI_RETURN_VALUE_IF_FAIL(now_call_data, CALLUI_RESULT_FAIL);
 
+       char *file_path = now_call_data->call_ct_info.caller_id_path;
        char *call_name = now_call_data->call_ct_info.call_disp_name;
        char *disp_number = NULL;
+
        if (strlen(now_call_data->call_disp_num) > 0) {
                disp_number = now_call_data->call_disp_num;
        } else {
                disp_number = now_call_data->call_num;
        }
 
-       if (now_call_data->is_emergency == EINA_TRUE) {
+       if (now_call_data->is_emergency) {
                call_name = _("IDS_COM_BODY_EMERGENCY_NUMBER");
                disp_number = "";
        }
 
        if (strlen(call_name) == 0) {
                _callui_show_caller_info_name(ad, disp_number);
-               elm_object_signal_emit(priv->caller_info, "1line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "1line", "caller_name");
        } else if (now_call_data->is_emergency == EINA_TRUE) {
                _callui_show_caller_info_name(ad, call_name);
-               elm_object_signal_emit(priv->caller_info, "1line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "1line", "caller_name");
        } else {
                _callui_show_caller_info_name(ad, call_name);
                _callui_show_caller_info_number(ad, disp_number);
-               elm_object_signal_emit(priv->caller_info, "2line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "2line", "caller_name");
        }
 
        _callui_show_caller_info_status(ad, _("IDS_CALL_POP_DIALLING"));
 
-       _callui_create_top_first_button(ad);
-       _callui_create_top_second_button(ad);
-       _callui_create_top_third_button(ad);
-       _callui_create_bottom_first_button_disabled(ad);
-       _callui_create_bottom_second_button_disabled(ad);
-       _callui_create_bottom_third_button_disabled(ad);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_first_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_second_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_third_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_first_button_disabled(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_second_button_disabled(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_third_button_disabled(ad), CALLUI_RESULT_FAIL);
 
-       elm_object_signal_emit(priv->contents, "SHOW_EFFECT", "ALLBTN");
-
-       /*_vcui_elements_check_keypad_n_hide(vd);*/
-       _callui_create_end_call_button(priv->contents, vd);
-
-       evas_object_show(eo);
+       elm_object_signal_emit(vd->base_view.contents, "SHOW_EFFECT", "ALLBTN");
 
        if (now_call_data->is_emergency == EINA_TRUE) {
-               elm_object_signal_emit(priv->caller_info, "set_emergency_mode", "");
+               elm_object_signal_emit(vd->caller_info, "set_emergency_mode", "");
        } else {
                if (strcmp(file_path, "default") != 0) {
-                       _callui_show_caller_id(priv->caller_info, file_path);
-               }
-       }
-       /*evas_event_callback_add(evas_object_evas_get(eo),
-                       EVAS_CALLBACK_RENDER_POST, __vcui_view_dialing_post_render_cb, vd);*/
-}
-
-static int __callui_view_dialing_oncreate(call_view_data_t *view_data, void *appdata)
-{
-       dbg("dialling view create!!");
-       callui_app_data_t *ad = (callui_app_data_t *) appdata;
-       callui_view_dialing_priv_t *priv = (callui_view_dialing_priv_t *)view_data->priv;
-
-       view_data->ad = ad;
-
-       if (ad->main_ly) {
-               priv->contents = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-               if (!priv->contents) {
-                       priv->contents = __callui_view_dialing_create_contents(ad, GRP_MAIN_LY);
-                       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", priv->contents);
-               }
-
-               priv->btn_ly = elm_object_part_content_get(priv->contents, "btn_region");
-               if (!priv->btn_ly) {
-                       priv->btn_ly = __callui_view_dialing_create_contents(ad, GRP_BUTTON_LAYOUT);
-                       elm_object_part_content_set(priv->contents, "btn_region", priv->btn_ly);
-               }
-
-               priv->caller_info = elm_object_part_content_get(priv->contents, "caller_info");
-               if (!priv->caller_info) {
-                       priv->caller_info = __callui_view_dialing_create_contents(ad, GRP_CALLER_INFO);
-                       elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
+                       _callui_show_caller_id(vd->caller_info, file_path);
                }
-               evas_object_name_set(priv->contents, VIEW_DIALING_LAYOUT_ID);
-               dbg("[========== DIALVIEW: priv->contents Addr : [%p] ==========]", priv->contents);
-
-               /*create keypad layout*/
-               _callui_keypad_create_layout(ad);
        }
-       __callui_view_dialing_onshow(view_data, ad);
 
-       _callui_lock_manager_start(ad->lock_handle);
-       return 0;
-}
-
-static int __callui_view_dialing_onupdate(call_view_data_t *view_data)
-{
-       return 0;
-}
-
-static int __callui_view_dialing_onshow(call_view_data_t *view_data, void *appdata)
-{
-       dbg("dialling view show");
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-
-       callui_view_dialing_priv_t *priv = (callui_view_dialing_priv_t *)view_data->priv;
-
-       __callui_view_dialing_draw_screen(ad, priv->contents, view_data);
+       evas_object_show(vd->base_view.contents);
 
        evas_object_hide(ad->main_ly);
        evas_object_show(ad->main_ly);
 
-       return 0;
-}
-
-static int __callui_view_dialing_ondestroy(call_view_data_t *vd)
-{
-       dbg("dialling view destroy");
-
-       callui_app_data_t *ad = _callui_get_app_data();
-       callui_view_dialing_priv_t *priv = (callui_view_dialing_priv_t *)vd->priv;
-
-       if (priv != NULL) {
-               /*Delete keypad layout */
-               _callui_keypad_delete_layout(ad);
-               elm_object_signal_emit(priv->contents, "HIDE_BTN_LY", "ALLBTN");
-               _callui_common_reset_main_ly_text_fields(priv->contents);
-               free(priv);
-               priv = NULL;
-       }
-
-       return 0;
+       return CALLUI_RESULT_OK;
 }
index a517a47..dff7772 100755 (executable)
 #include <vconf.h>
 #include <vconf-keys.h>
 #include <bluetooth.h>
+#include <app_control.h>
+#include <notification.h>
 
 #include "callui-view-elements.h"
 #include "callui-view-manager.h"
 #include "callui-view-dialing.h"
 #include "callui-view-single-call.h"
 #include "callui-view-callend.h"
-#include "callui-view-incoming-lock.h"
 #include "callui-view-multi-call-split.h"
 #include "callui-view-layout.h"
 #include "callui-common.h"
 #include "callui-keypad.h"
 #include "callui-view-multi-call-conf.h"
-#include "callui-view-incoming-lock.h"
 #include "callui-view-quickpanel.h"
 #include "callui-view-caller-info-defines.h"
 #include "callui-proximity-lock-manager.h"
-#include <app_control.h>
-#include <notification.h>
 
 #define        POPUP_LIST_W            300
 #define        POPUP_LIST_ITEM_H       120
@@ -48,10 +46,6 @@ typedef struct {
        char option_msg[512];
 } second_call_popup_data_t;
 
-static void __vcui_msg_btn_cb(void *data, Evas_Object *obj, void *event_info);
-static void __vcui_view_contact_btn_cb(void *data, Evas_Object *obj, void *event_info);
-static void __vcui_update_existing_contact_btn_cb(void *data, Evas_Object *obj, void *event_info);
-static void __vcui_create_contact_btn_cb(void *data, Evas_Object *obj, void *event_info);
 static void __callui_unload_more_option(callui_app_data_t *ad);
 
 const char *group_thumbnail[] = {
@@ -535,53 +529,10 @@ Evas_Object *_callui_create_bottom_third_button_disabled(callui_app_data_t *ad)
        return btn;
 }
 
-static void __callui_end_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(vd != NULL);
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad != NULL);
-       int ret = -1;
-
-       dbg("vd->type:[%d]", vd->type);
-
-       switch (vd->type) {
-       case VIEW_TYPE_DIALLING:
-               {
-                       if (ad->active)
-                               ret = cm_end_call(ad->cm_handle, ad->active->call_id, CALL_RELEASE_TYPE_BY_CALL_HANDLE);
-               }
-               break;
-       case VIEW_TYPE_SINGLECALL:
-               {
-                       ret = cm_end_call(ad->cm_handle, 0, CALL_RELEASE_TYPE_ALL_CALLS);
-               }
-               break;
-       case VIEW_TYPE_MULTICALL_SPLIT:
-               {
-                       ret = cm_end_call(ad->cm_handle, 0, CALL_RELEASE_TYPE_ALL_ACTIVE_CALLS);
-               }
-               break;
-       case VIEW_TYPE_MULTICALL_CONF:
-       case VIEW_TYPE_MULTICALL_LIST:
-               {
-                       ret = cm_end_call(ad->cm_handle, 0, CALL_RELEASE_TYPE_ALL_CALLS);
-               }
-               break;
-       default:
-               err("ERROR - wrong vd type:[%d]", vd->type);
-               break;
-       }
-
-       if (ret != CM_ERROR_NONE) {
-               err("cm_end_call() is failed");
-       }
-       return;
-}
-
-Evas_Object *_callui_create_end_call_button(Evas_Object *parent, void *data)
+Evas_Object *_callui_create_end_call_button(Evas_Object *parent, Evas_Smart_Cb cb_func, void *data)
 {
        CALLUI_RETURN_VALUE_IF_FAIL(parent != NULL, NULL);
+       CALLUI_RETURN_VALUE_IF_FAIL(cb_func != NULL, NULL);
 
        Evas_Object *btn = elm_object_part_content_get(parent, PART_END_BTN);
        if (!btn) {
@@ -592,9 +543,9 @@ Evas_Object *_callui_create_end_call_button(Evas_Object *parent, void *data)
                elm_image_file_set(icon, EDJ_NAME, "call_button_icon_01.png");
                elm_object_part_content_set(btn, "elm.swallow.content", icon);
                elm_object_part_content_set(parent, PART_END_BTN, btn);
+
+               evas_object_smart_callback_add(btn, "clicked", cb_func, data);
        }
-       evas_object_smart_callback_del(btn, "clicked", __callui_end_btn_cb);
-       evas_object_smart_callback_add(btn, "clicked", __callui_end_btn_cb, data);
        evas_object_show(btn);
 
        return btn;
@@ -613,325 +564,6 @@ void _callui_destroy_end_call_button(Evas_Object *parent)
        return;
 }
 
-Evas_Object *_callui_create_voicecall_button_disabled(void *data)
-{
-       Evas_Object *btn = NULL;
-       Evas_Object *layout = NULL;
-
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(vd != NULL, NULL);
-       Evas_Object *icon = NULL;
-
-       layout = _callui_view_callend_get_layout(vd);
-
-       btn = elm_button_add(layout);
-       elm_object_style_set(btn, "call_icon_only");
-       icon = elm_image_add(btn);
-       elm_image_file_set(icon, EDJ_NAME, "call_button_icon_03.png");
-       elm_object_part_content_set(btn, "elm.swallow.content", icon);
-
-       elm_object_part_content_set(layout, "three_btn_voicecall", btn);
-       elm_object_disabled_set(btn, EINA_TRUE);
-       evas_object_show(btn);
-
-       return btn;
-}
-
-static void __callui_voicecall_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dbg("__vcui_voicecall_btn_cb..");
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad);
-       char *call_number = (char *)data;
-       CALLUI_RETURN_IF_FAIL(call_number);
-
-       evas_object_smart_callback_del(obj, "clicked", __callui_voicecall_btn_cb);
-
-       _callui_common_delete_ending_timer();
-       ad->speaker_status = EINA_FALSE;
-       ad->mute_status = EINA_FALSE;
-       ad->extra_volume_status = EINA_FALSE;
-       cm_dial_call(ad->cm_handle, call_number, CM_CALL_TYPE_VOICE, ad->sim_slot);
-       g_free(call_number);
-       return;
-}
-
-Evas_Object *_callui_create_voicecall_button(void *data, char *number)
-{
-       Evas_Object *btn = NULL;
-       Evas_Object *layout = NULL;
-
-       call_view_data_t *vd = NULL;
-
-       CALLUI_RETURN_VALUE_IF_FAIL((vd = (call_view_data_t *)data) != NULL, NULL);
-       Evas_Object *icon = NULL;
-       layout = _callui_view_callend_get_layout(vd);
-
-       btn = elm_button_add(layout);
-       elm_object_style_set(btn, "call_icon_only");
-       icon = elm_image_add(btn);
-       elm_image_file_set(icon, EDJ_NAME, "call_button_icon_03.png");
-       elm_object_part_content_set(btn, "elm.swallow.content", icon);
-
-       elm_object_part_content_set(layout, "three_btn_voicecall", btn);
-
-       evas_object_smart_callback_del(btn, "clicked", __callui_voicecall_btn_cb);
-       evas_object_smart_callback_add(btn, "clicked", __callui_voicecall_btn_cb, g_strdup(number));
-
-       evas_object_show(btn);
-       return btn;
-}
-
-Evas_Object *_callui_create_message_button_disabled(void *data)
-{
-       Evas_Object *btn = NULL;
-       Evas_Object *layout = NULL;
-
-       call_view_data_t *vd = (call_view_data_t *)data;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(vd != NULL, NULL);
-       Evas_Object *icon = NULL;
-
-       switch (vd->type) {
-       case VIEW_TYPE_ENDCALL:
-               {
-                       layout = _callui_view_callend_get_layout(vd);
-               }
-               break;
-       default:
-               err("ERROR - wrong vd type:[%d]", vd->type);
-               return NULL;
-       }
-
-       btn = elm_button_add(layout);
-       elm_object_style_set(btn, "call_icon_only");
-       icon = elm_image_add(btn);
-       elm_image_file_set(icon, EDJ_NAME, "call_button_icon_04.png");
-       elm_object_part_content_set(btn, "elm.swallow.content", icon);
-
-       elm_object_part_content_set(layout, "three_btn_message", btn);
-       elm_object_disabled_set(btn, EINA_TRUE);
-       evas_object_show(btn);
-
-       return btn;
-}
-
-static void __vcui_msg_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       char *number = (char *)data;
-       app_control_h request;
-       app_control_create(&request);
-       app_control_set_operation(request, APP_CONTROL_OPERATION_COMPOSE);
-       char str[CONTACT_NUMBER_BUF_LEN];
-       snprintf(str, sizeof(str), "%s%s", "sms:", number);
-       app_control_set_uri(request, str);
-       int result = app_control_send_launch_request(request, NULL, NULL);
-       if (result != APP_CONTROL_ERROR_NONE) {
-               err("app_control_send_launch_request() failed (%d)", result);
-       }
-       free(number);
-       app_control_destroy(request);
-
-
-}
-
-static void __vcui_view_contact_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       char *contact_id = (char *)data;
-       app_control_h request;
-       app_control_create(&request);
-       app_control_set_operation(request, APP_CONTROL_OPERATION_VIEW);
-       app_control_set_mime(request, APP_CONTROL_MIME_CONTACT);
-       app_control_add_extra_data(request, APP_CONTROL_DATA_ID, contact_id);
-
-       int result = app_control_send_launch_request(request, NULL, NULL);
-       if (result != APP_CONTROL_ERROR_NONE) {
-               err("app_control_send_launch_request() failed (%d)", result);
-       }
-       free(contact_id);
-       app_control_destroy(request);
-}
-
-Evas_Object *_callui_create_view_contact_button(void *data, int ct_id)
-{
-       Evas_Object *btn;
-       Evas_Object *layout;
-       Evas_Object *sw;
-
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_VALUE_IF_FAIL(vd != NULL, NULL);
-
-       switch (vd->type) {
-       case VIEW_TYPE_ENDCALL:
-               {
-                       layout = _callui_view_callend_get_layout(vd);
-               }
-               break;
-       default:
-               err("ERROR - wrong vd type:[%d]", vd->type);
-               return NULL;
-       }
-
-       sw = edje_object_part_swallow_get(_EDJ(layout), "btn_view_contacts");
-       if (sw) {
-               btn = sw;
-       } else {
-               btn = elm_button_add(layout);
-               elm_object_part_content_set(layout, "btn_view_contacts", btn);
-       }
-
-       elm_object_style_set(btn, "style_call_end_view_contact_button");
-       elm_object_text_set(btn, _("IDS_CALL_BUTTON_VIEW_CONTACT_DETAILS_ABB"));
-       char str[CONTACT_ID_BUF_LEN];
-       sprintf(str, "%d", ct_id);
-       evas_object_smart_callback_add(btn, "clicked", __vcui_view_contact_btn_cb, (void *)strdup(str));
-
-       return btn;
-}
-
-Evas_Object *_callui_create_create_contacts_button(void *data, char *number)
-{
-
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_VALUE_IF_FAIL(vd != NULL, NULL);
-
-       Evas_Object *btn = NULL;
-       Evas_Object *layout = NULL;
-       Evas_Object *sw = NULL;
-
-       switch (vd->type) {
-       case VIEW_TYPE_ENDCALL:
-               {
-                       layout = _callui_view_callend_get_layout(vd);
-               }
-               break;
-       default:
-               err("ERROR - wrong vd type:[%d]", vd->type);
-               return NULL;
-       }
-
-       sw = edje_object_part_swallow_get(_EDJ(layout), "btn_create_contacts");
-       if (sw) {
-               btn = sw;
-       } else {
-               btn = elm_button_add(layout);
-               elm_object_part_content_set(layout, "btn_create_contacts", btn);
-       }
-
-       info("Going to set style");
-       elm_object_style_set(btn, "style_call_end_create_contact_button");
-
-       elm_object_text_set(btn, _("IDS_COM_OPT_CREATE_CONTACT"));
-       evas_object_smart_callback_add(btn, "clicked", __vcui_create_contact_btn_cb, (void *)strdup(number));
-
-       return btn;
-}
-
-static void __vcui_create_contact_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       dbg("_vcui_create_contact_btn_cb");
-       char *number = (char *)data;
-       app_control_h request;
-       app_control_create(&request);
-       app_control_set_operation(request, APP_CONTROL_OPERATION_ADD);
-       app_control_set_mime(request, APP_CONTROL_MIME_CONTACT);
-
-       if (number) {
-               app_control_add_extra_data(request, APP_CONTROL_DATA_PHONE, number);
-       }
-       app_control_send_launch_request(request, NULL, NULL);
-       free(number);
-       app_control_destroy(request);
-}
-
-static void __vcui_update_existing_contact_btn_cb(void *data,
-               Evas_Object *obj, void *event_info)
-{
-       dbg("__vcui_update_existing_contact_btn_cb");
-       char * number = (char *)data;
-       app_control_h request;
-       app_control_create(&request);
-       app_control_set_operation(request, APP_CONTROL_OPERATION_EDIT);
-       app_control_set_mime(request, APP_CONTROL_MIME_CONTACT);
-
-       if (number) {
-               app_control_add_extra_data(request, APP_CONTROL_DATA_PHONE, number);
-       }
-       app_control_send_launch_request(request, NULL, NULL);
-       free(number);
-       app_control_destroy(request);
-}
-
-Evas_Object *_callui_create_update_existing_contact_button(void *data, char *number)
-{
-       Evas_Object *btn;
-       Evas_Object *layout;
-       Evas_Object *sw;
-
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_VALUE_IF_FAIL(vd != NULL, NULL);
-
-       switch (vd->type) {
-       case VIEW_TYPE_ENDCALL:
-               {
-                       layout = _callui_view_callend_get_layout(vd);
-               }
-               break;
-       default:
-               err("ERROR - wrong vd type:[%d]", vd->type);
-               return NULL;
-       }
-
-       sw = edje_object_part_swallow_get(_EDJ(layout), "btn_update");
-       if (sw) {
-               btn = sw;
-       } else {
-               btn = elm_button_add(layout);
-               elm_object_part_content_set(layout, "btn_update", btn);
-       }
-
-       elm_object_style_set(btn, "style_call_end_update_contact_button");
-       elm_object_text_set(btn, _("IDS_CALL_BUTTON_UPDATE_EXISTING"));
-       evas_object_smart_callback_add(btn, "clicked",
-                       __vcui_update_existing_contact_btn_cb, (void *)strdup(number));
-
-       return btn;
-}
-
-Evas_Object *_callui_create_message_button(void *data, char *number)
-{
-       Evas_Object *btn = NULL;
-       Evas_Object *layout = NULL;
-
-       call_view_data_t *vd = NULL;
-       CALLUI_RETURN_VALUE_IF_FAIL((vd = (call_view_data_t *)data) != NULL, NULL);
-
-       Evas_Object *icon = NULL;
-       switch (vd->type) {
-       case VIEW_TYPE_ENDCALL:
-               {
-                       layout = _callui_view_callend_get_layout(vd);
-               }
-               break;
-       default:
-               err("ERROR - wrong vd type:[%d]", vd->type);
-               return NULL;
-       }
-
-       btn = elm_button_add(layout);
-       elm_object_style_set(btn, "call_icon_only");
-       icon = elm_image_add(btn);
-       elm_image_file_set(icon, EDJ_NAME, "call_button_icon_04.png");
-       elm_object_part_content_set(btn, "elm.swallow.content", icon);
-
-       elm_object_part_content_set(layout, "three_btn_message", btn);
-       evas_object_smart_callback_add(btn, "clicked", __vcui_msg_btn_cb, (void *)strdup(number));
-
-       evas_object_show(btn);
-       return btn;
-}
-
 /* Creates thumbnail */
 Evas_Object *_callui_create_thumbnail(Evas_Object *parent, const char *path, thumbnail_type type)
 {
@@ -1075,26 +707,24 @@ static void __callui_more_option_delete_cb(void *data, Evas *e, Evas_Object *obj
 
 void _callui_load_more_option(void *data)
 {
-       dbg("..");
-       callui_app_data_t *ad = _callui_get_app_data();
-       call_view_data_t *vd = (call_view_data_t *)data;
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_app_data_t *ad = (callui_app_data_t *)data;
+       bool is_lcd_locked = false;
 
-       bool is_lcd_locked = FALSE;
        if (_callui_proximity_lock_manager_is_supported()) {
                is_lcd_locked = _callui_lock_manager_is_lcd_off(ad->lock_handle);
        } else {
                is_lcd_locked = _callui_lock_manager_is_started(ad->lock_handle);
        }
 
-       if (is_lcd_locked == TRUE) {
+       if (is_lcd_locked) {
                dbg( "Lock screen active. Do not show popup.");
                return;
        }
 
        if (ad->ctxpopup == NULL) {
-               Evas_Object *ctxpopup = NULL;
-
-               ctxpopup = elm_ctxpopup_add(ad->main_ly);
+               Evas_Object *ctxpopup = elm_ctxpopup_add(ad->main_ly);
                elm_object_style_set(ctxpopup, "more/default");
                elm_ctxpopup_auto_hide_disabled_set(ctxpopup, EINA_TRUE);
                evas_object_smart_callback_add(ctxpopup, "dismissed", __callui_more_option_dismissed_cb, ad);
@@ -1103,20 +733,13 @@ void _callui_load_more_option(void *data)
                eext_object_event_callback_add(ctxpopup, EEXT_CALLBACK_MORE, eext_ctxpopup_back_cb, NULL);
 
                /* Hold/Resume */
-               if (vd->type != VIEW_TYPE_MULTICALL_SPLIT) {
+               if (_callui_vm_get_cur_view_type(ad->view_manager_handle) != VIEW_TYPE_MULTICALL_SPLIT) {
                        if (ad->active != NULL) {
                                elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_HOLD"), NULL, __callui_hold_btn_cb, ad);
-                       } else {/* CALL_HOLD */
+                       } else {
                                elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_BUTTON_RESUME_ABB"), NULL, __callui_unhold_btn_cb, ad);
                        }
                }
-
-               /* SIM Service */
-/*             if (__vcui_view_popup_is_sim_available() == EINA_TRUE) {
-                       ctx_it = elm_ctxpopup_item_append(ctxpopup, _("IDS_CALL_OPT_SIM_SERVICES"),
-                               NULL, __vcui_view_popup_sim_service_cb, vd);
-               }
-*/
                elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_UP,
                                                                                        ELM_CTXPOPUP_DIRECTION_UNKNOWN,
                                                                                        ELM_CTXPOPUP_DIRECTION_UNKNOWN,
@@ -1243,7 +866,7 @@ static void __callui_second_call_cancel_btn_response_cb(void *data, Evas_Object
 
        callui_app_data_t *ad = (callui_app_data_t*) data;
        __callui_unload_second_call_popup(ad);
-       _callui_vm_change_view(ad->view_manager_handle, VIEW_TYPE_INCOMING_LOCK);
+       _callui_vm_change_view(ad->view_manager_handle, VIEW_TYPE_INCOMING_CALL);
 
        return;
 }
@@ -1591,14 +1214,35 @@ void _callui_create_toast_message(char *string)
        return;
 }
 
-bool _callui_is_on_handsfree_mode()
+static void __callui_create_new_msg_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       callui_app_data_t *ad = _callui_get_app_data();
-       return (ad->speaker_status || ad->headset_status || ad->earphone_status);
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_app_data_t *ad = (callui_app_data_t *)data;
+
+       CALLUI_RETURN_IF_FAIL(ad->incom);
+
+       call_data_t *call_data = ad->incom;
+       char *tel_number = call_data->call_num;
+
+       _callui_common_launch_msg_composer(ad, tel_number);
+
+       int ret = cm_reject_call(ad->cm_handle);
+       if (ret != CM_ERROR_NONE) {
+               err("cm_reject_call() is failed");
+       }
 }
 
-bool _callui_is_on_background()
+int _callui_create_reject_msg_button(void *app_data, Evas_Object *parent, char *part)
 {
-       callui_app_data_t *ad = _callui_get_app_data();
-       return ad->on_background;
+       Evas_Object *msg_button = elm_button_add(parent);
+       CALLUI_RETURN_VALUE_IF_FAIL(msg_button, CALLUI_RESULT_ALLOCATION_FAIL);
+
+       elm_object_style_set(msg_button, "default");
+       elm_object_text_set(msg_button,  _("IDS_CALL_BUTTON_COMPOSE_MESSAGE_TO_SEND_ABB"));
+       evas_object_smart_callback_add(msg_button, "clicked", __callui_create_new_msg_btn_click_cb, app_data);
+       elm_object_part_content_set(parent, part, msg_button);
+       evas_object_show(msg_button);
+
+       return CALLUI_RESULT_OK;
 }
diff --git a/src/callui-view-incoming-call-noti.c b/src/callui-view-incoming-call-noti.c
new file mode 100644 (file)
index 0000000..a04a58d
--- /dev/null
@@ -0,0 +1,472 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ */
+
+#include <vconf.h>
+#include <app_control.h>
+#include <Elementary.h>
+
+#include "callui-view-incoming-call-noti.h"
+#include "callui.h"
+#include "callui-view-manager.h"
+#include "callui-view-layout.h"
+#include "callui-view-elements.h"
+#include "callui-common.h"
+
+#define CALLUI_DURING_ICON     "call_button_icon_03.png"
+#define CALLUI_REJECT_ICON     "call_button_icon_04.png"
+#define CALLUI_END_ICON                "call_button_icon_01.png"
+
+#define CALLUI_REJ_MSG_GENLIST_DATA "VIEW_DATA"
+
+struct _callui_view_incoming_call_noti {
+       call_view_data_base_t base_view;
+
+       Evas_Object *reject_msg_layout;
+       Evas_Object *reject_msg_genlist;
+
+       Elm_Genlist_Item_Class *reject_msg_itc;
+       char reject_msg[CALLUI_REJ_MSG_MAX_LENGTH];
+};
+
+typedef struct _callui_view_incoming_call_noti _callui_view_incoming_call_noti_t;
+
+static int __callui_view_incoming_call_noti_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int __callui_view_incoming_call_noti_onupdate(call_view_data_base_t *view_data);
+static int __callui_view_incoming_call_noti_ondestroy(call_view_data_base_t *view_data);
+
+static int __create_main_content(callui_view_incoming_call_noti_h vd);
+static int __update_displayed_data(callui_view_incoming_call_noti_h vd);
+
+static void __reject_msg_genlist_item_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __reject_msg_layout_back_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __reject_msg_genlist_add(callui_view_incoming_call_noti_h vd);
+static char *__reject_msg_genlist_item_txt_cb(void *data, Evas_Object *obj, const char *part);
+static void __reject_msg_genlist_init_item_class(callui_view_incoming_call_noti_h vd);
+static void __reject_msg_genlist_deinit_item_class(callui_view_incoming_call_noti_h vd);
+static Elm_Object_Item *__reject_msg_genlist_append_item(Evas_Object *msg_glist, Elm_Genlist_Item_Class * itc_reject_msg, int index);
+static int __reject_msg_genlist_fill(callui_view_incoming_call_noti_h vd);
+
+static void __swipe_layout_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static Eina_Bool __reject_msg_close_effect_activated_cb(void *data);
+static void __show_reject_msg_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+
+static void __create_reject_msg_content(callui_view_incoming_call_noti_h vd);
+
+static void __launch_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+
+static int __create_main_content(callui_view_incoming_call_noti_h vd);
+static int __create_custom_button(char *icon_name, char *part, Evas_Object_Event_Cb func, void *data, void *data_bt_cb);
+
+callui_view_incoming_call_noti_h _callui_view_incoming_call_noti_new()
+{
+       callui_view_incoming_call_noti_h incoming_call_noti = calloc(1, sizeof(_callui_view_incoming_call_noti_t));
+       CALLUI_RETURN_NULL_IF_FAIL(incoming_call_noti);
+
+       incoming_call_noti->base_view.onCreate = __callui_view_incoming_call_noti_oncreate;
+       incoming_call_noti->base_view.onUpdate = __callui_view_incoming_call_noti_onupdate;
+       incoming_call_noti->base_view.onDestroy = __callui_view_incoming_call_noti_ondestroy;
+
+       return incoming_call_noti;
+}
+
+static int __callui_view_incoming_call_noti_oncreate(call_view_data_base_t *view_data, void *appdata)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)view_data;
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
+       vd->base_view.ad = ad;
+
+       // TODO: need to remove this logic from here
+       evas_object_resize(ad->win, ad->root_w, ELM_SCALE_SIZE(MTLOCK_ACTIVE_NOTI_CALL_HEIGHT));
+       _callui_common_win_set_noti_type(ad, EINA_TRUE);
+
+       if (elm_win_keygrab_set(ad->win, CALLUI_KEY_SELECT, 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST)) {
+               dbg("KEY_SELECT key grab failed");
+       }
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       return __update_displayed_data(vd);
+}
+
+static int __callui_view_incoming_call_noti_onupdate(call_view_data_base_t *view_data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       return __update_displayed_data((callui_view_incoming_call_noti_h)view_data);
+}
+
+static int __callui_view_incoming_call_noti_ondestroy(call_view_data_base_t *view_data)
+{
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)view_data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       // TODO: need to replace from view
+#ifdef _DBUS_DVC_LSD_TIMEOUT_
+       /* Set LCD timeout for call state */
+       /* LCD is alwasy on during incoming call screen */
+       if (ad->speaker_status == EINA_TRUE) {
+               _callui_common_dvc_set_lcd_timeout(LCD_TIMEOUT_SET);
+       }
+#endif
+
+       if (ad->second_call_popup) {
+               evas_object_del(ad->second_call_popup);
+               ad->second_call_popup = NULL;
+       }
+
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
+
+       _callui_common_win_set_noti_type(ad, EINA_FALSE);
+
+       evas_object_resize(ad->win, ad->root_w, ad->root_h);
+
+       elm_win_keygrab_unset(ad->win, CALLUI_KEY_SELECT, 0, 0);
+
+       free(vd);
+
+       return CALLUI_RESULT_OK;
+}
+
+static void __reject_msg_genlist_item_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       int index = CALLUI_SAFE_C_CAST(int, data);
+       dbg("index: %d", index);
+
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)evas_object_data_get(obj, CALLUI_REJ_MSG_GENLIST_DATA);
+       CALLUI_RETURN_IF_FAIL(vd);
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index != -1) {
+               char *ret_str = _callui_common_get_reject_msg_by_index(index);
+               if (ret_str) {
+                       char *reject_msg = elm_entry_markup_to_utf8(ret_str); /*send utf8 text to MSG */
+                       if (reject_msg != NULL) {
+                               snprintf(vd->reject_msg, sizeof(vd->reject_msg), "%s", reject_msg);
+                               free(reject_msg);
+                       }
+                       free(ret_str);
+               }
+
+               int ret = cm_reject_call(ad->cm_handle);
+               if (ret != CM_ERROR_NONE) {
+                       err("cm_reject_call() is failed");
+               } else {
+                       _callui_common_send_reject_msg(ad, vd->reject_msg);
+               }
+       }
+}
+
+static void __swipe_layout_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       ecore_idle_enterer_before_add(__reject_msg_close_effect_activated_cb, vd);
+
+       evas_object_resize(ad->win, 0, 0);
+}
+
+static Eina_Bool __reject_msg_close_effect_activated_cb(void *data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(data, ECORE_CALLBACK_CANCEL);
+
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)data;
+
+       Evas_Object *screen_ly = NULL;
+       Elm_Transit *transit = NULL;
+       int xpos = 0;
+       int ypos = 0;
+       int width = 0;
+       int height = 0;
+       int transit_y = 0;
+
+       screen_ly = vd->base_view.contents;
+       transit = elm_transit_add();
+       elm_transit_object_add(transit, screen_ly);
+       evas_object_geometry_get(screen_ly, &xpos, &ypos, &width, &height);
+       transit_y = -(height + ypos);
+       elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
+       elm_transit_duration_set(transit, 0.5);
+       evas_object_show(screen_ly);
+       elm_transit_objects_final_state_keep_set(transit, EINA_TRUE);
+       elm_transit_go(transit);
+
+       return ECORE_CALLBACK_CANCEL;
+}
+
+static void __show_reject_msg_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       evas_object_resize(ad->win, ad->root_w, ad->root_h);
+
+       __create_reject_msg_content(vd);
+
+       elm_object_signal_emit(vd->base_view.contents, "big_main_ly", "main_active_noti_call");
+}
+
+static void __reject_msg_layout_back_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       evas_object_resize(ad->win, ad->root_w, ELM_SCALE_SIZE(MTLOCK_ACTIVE_NOTI_CALL_HEIGHT));
+
+       elm_object_signal_emit(vd->base_view.contents, "small_main_ly", "main_active_noti_call");
+       evas_object_del(vd->reject_msg_genlist);
+}
+
+static void __reject_msg_genlist_add(callui_view_incoming_call_noti_h vd)
+{
+       if (vd->reject_msg_genlist) {
+               evas_object_del(vd->reject_msg_genlist);
+               vd->reject_msg_genlist = NULL;
+       }
+
+       vd->reject_msg_genlist = elm_genlist_add(vd->base_view.contents);
+       CALLUI_RETURN_IF_FAIL(vd->reject_msg_genlist);
+       eext_object_event_callback_add(vd->reject_msg_layout, EEXT_CALLBACK_BACK, __reject_msg_layout_back_click_cb, vd);
+       evas_object_data_set(vd->reject_msg_genlist, CALLUI_REJ_MSG_GENLIST_DATA, vd);
+
+       evas_object_size_hint_weight_set(vd->reject_msg_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(vd->reject_msg_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       elm_object_part_content_set(vd->reject_msg_layout, "swallow.content", vd->reject_msg_genlist);
+}
+
+static char *__reject_msg_genlist_item_txt_cb(void *data, Evas_Object *obj, const char *part)
+{
+       int index = CALLUI_SAFE_C_CAST(int, data);
+       char *msg_str = NULL;
+
+       if (!strcmp(part, "elm.text")) {
+               if (index != -1) {
+                       msg_str = _callui_common_get_reject_msg_by_index(index);
+                       sec_dbg("msg_str(%s)", msg_str);
+                       return msg_str; /* Send markup text to draw the genlist */
+               } else {
+                       warn("invalid index: %d", index);
+                       msg_str = _("IDS_CALL_BODY_NO_MESSAGES");
+                       return strdup(msg_str);
+               }
+       }
+       return NULL;
+}
+
+static void __reject_msg_genlist_init_item_class(callui_view_incoming_call_noti_h vd)
+{
+       Elm_Genlist_Item_Class *item_class = elm_genlist_item_class_new();
+       CALLUI_RETURN_IF_FAIL(item_class);
+
+       item_class->item_style = "type1";
+       item_class->func.text_get = __reject_msg_genlist_item_txt_cb;
+       item_class->func.content_get = NULL;
+       item_class->func.state_get = NULL;
+       item_class->func.del = NULL;
+       vd->reject_msg_itc = item_class;
+}
+
+static void __reject_msg_genlist_deinit_item_class(callui_view_incoming_call_noti_h vd)
+{
+       elm_genlist_item_class_free(vd->reject_msg_itc);
+       vd->reject_msg_itc = NULL;
+}
+
+static Elm_Object_Item *__reject_msg_genlist_append_item(Evas_Object *msg_glist, Elm_Genlist_Item_Class * itc_reject_msg, int index)
+{
+       Elm_Object_Item *item = NULL;
+       item = elm_genlist_item_append(msg_glist, itc_reject_msg,
+                       CALLUI_SAFE_C_CAST(void *, index), NULL, ELM_GENLIST_ITEM_NONE,
+                       __reject_msg_genlist_item_click_cb, CALLUI_SAFE_C_CAST(void *, index));
+       return item;
+}
+
+static int __reject_msg_genlist_fill(callui_view_incoming_call_noti_h vd)
+{
+       int msg_cnt = 0;
+       if (0 != vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &msg_cnt)) {
+               warn("vconf_get_int failed.");
+       }
+       dbg("msg_cnt: %d", msg_cnt);
+
+       int index = 0;
+       if (msg_cnt == 0) {
+               index = -1;
+               Elm_Object_Item * item = __reject_msg_genlist_append_item(vd->reject_msg_genlist, vd->reject_msg_itc, index);
+               if (item) {
+                       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+               }
+       } else {
+               for (index = 0; index < msg_cnt; index++) {
+                       __reject_msg_genlist_append_item(vd->reject_msg_genlist, vd->reject_msg_itc, index);
+               }
+       }
+       return msg_cnt;
+}
+
+static void __create_reject_msg_content(callui_view_incoming_call_noti_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       vd->reject_msg_layout = _callui_load_edj(vd->base_view.contents, EDJ_NAME, "reject_msg_ly");
+       elm_object_part_content_set(vd->base_view.contents, "swallow.reject_msg", vd->reject_msg_layout);
+
+       // TODO: possibly can be replaced in common part. Need investigate
+       __reject_msg_genlist_add(vd);
+       __reject_msg_genlist_init_item_class(vd);
+       int msg_cnt = __reject_msg_genlist_fill(vd);
+       __reject_msg_genlist_deinit_item_class(vd);
+
+       _callui_create_reject_msg_button(ad, vd->reject_msg_layout, "swallow.button");
+
+       elm_object_tree_focus_allow_set(vd->reject_msg_genlist, EINA_FALSE);
+       evas_object_size_hint_min_set(vd->reject_msg_genlist, ad->root_w, 0);
+       evas_object_size_hint_max_set(vd->reject_msg_genlist, ad->root_w, ELM_SCALE_SIZE(MTLOCK_REJECT_MSG_LIST_1ITEM_NEW_HEIGHT * msg_cnt));
+       evas_object_show(vd->reject_msg_layout);
+       evas_object_show(vd->reject_msg_genlist);
+}
+
+static void __launch_btn_click_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+       char *key = (char *) data;
+       if (key == NULL) {
+               return;
+       }
+
+       //TODO: replace to separate launcher
+       app_control_h app_control = NULL;
+       if (app_control_create(&app_control) != APP_CONTROL_ERROR_NONE) {
+               dbg("app_control_create() is failed");
+       } else if (app_control_set_app_id(app_control, "org.tizen.call-ui") != APP_CONTROL_ERROR_NONE) {
+               dbg("app_control_set_app_id() is failed");
+       } else if (app_control_set_operation(app_control, key) != APP_CONTROL_ERROR_NONE) {
+               dbg("app_control_set_operation() is failed");
+       } else if (app_control_send_launch_request(app_control, NULL, NULL)  != APP_CONTROL_ERROR_NONE) {
+               err("app_control_send_launch_request() is failed");
+       }
+
+       app_control_destroy(app_control);
+}
+
+static int __create_main_content(callui_view_incoming_call_noti_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME,  "main_active_noti_call");
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", vd->base_view.contents);
+
+       int res = __create_custom_button(CALLUI_DURING_ICON, "swallow.call_button",
+                       __launch_btn_click_cb, vd, (void *)APP_CONTROL_OPERATION_DURING_CALL);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       res = __create_custom_button(CALLUI_REJECT_ICON, "swallow.rj_msg_button",
+                       __show_reject_msg_btn_click_cb, vd, (void *)vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       res = __create_custom_button(CALLUI_END_ICON, "swallow.end_call_button",
+                       __launch_btn_click_cb, vd, (void *)APP_CONTROL_OPERATION_END_CALL);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       Evas_Object *swipe_layout = elm_layout_add(vd->base_view.contents);
+       CALLUI_RETURN_VALUE_IF_FAIL(swipe_layout, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_layout_file_set(swipe_layout, EDJ_NAME, "swipe_call_button_ly");
+       evas_object_event_callback_add(swipe_layout, EVAS_CALLBACK_MOUSE_MOVE, __swipe_layout_mouse_move_cb, vd);
+       elm_object_part_content_set(vd->base_view.contents, "swallow.swipe_button", swipe_layout);
+
+       return res;
+}
+
+static int __create_custom_button(char *icon_name, char *part, Evas_Object_Event_Cb func, void * data, void * data_bt_cb)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_incoming_call_noti_h vd = (callui_view_incoming_call_noti_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       Evas_Object *button_call = elm_layout_add(vd->base_view.contents);
+       CALLUI_RETURN_VALUE_IF_FAIL(button_call, CALLUI_RESULT_ALLOCATION_FAIL);
+
+       elm_layout_file_set(button_call, EDJ_NAME, "main_button_ly");
+       Evas_Object *icon = elm_image_add(button_call);
+       CALLUI_RETURN_VALUE_IF_FAIL(icon, CALLUI_RESULT_ALLOCATION_FAIL);
+
+       elm_image_file_set(icon, EDJ_NAME, icon_name);
+       elm_object_part_content_set(button_call, "swallow.icon", icon);
+       elm_object_part_content_set(vd->base_view.contents, part, button_call);
+       evas_object_data_set(button_call, "app_data", ad);
+       evas_object_event_callback_add(button_call, EVAS_CALLBACK_MOUSE_UP, func, data_bt_cb);
+
+       return CALLUI_RESULT_OK;
+}
+
+static int __update_displayed_data(callui_view_incoming_call_noti_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       CALLUI_RETURN_VALUE_IF_FAIL(ad->incom, CALLUI_RESULT_FAIL);
+       call_data_t *call_data = ad->incom;
+
+       elm_object_signal_emit(vd->base_view.contents, "small_main_ly", "main_active_noti_call");
+
+       char *call_name = call_data->call_ct_info.call_disp_name;
+       char *call_number = NULL;
+       if (call_data->call_disp_num[0] != '\0') {
+               call_number = call_data->call_disp_num;
+       } else {
+               call_number = call_data->call_num;
+       }
+       char *file_path = call_data->call_ct_info.caller_id_path;
+
+       if (!(call_name && call_name[0] != '\0') && !(call_number && call_number[0] != '\0')) {
+               elm_object_signal_emit(vd->base_view.contents, "big_buttons", "main_active_noti_call");
+               elm_object_part_text_set(vd->base_view.contents, "text.contact_name", _("IDS_CALL_BODY_UNKNOWN"));
+       } else if (!(call_name && call_name[0] != '\0')) {
+               elm_object_signal_emit(vd->base_view.contents, "small_buttons", "main_active_noti_call");
+               elm_object_part_text_set(vd->base_view.contents, "text.contact_name", call_number);
+       } else {
+               elm_object_signal_emit(vd->base_view.contents, "small_buttons", "main_active_noti_call");
+               elm_object_part_text_set(vd->base_view.contents, "text.contact_name", call_name);
+               elm_object_part_text_set(vd->base_view.contents, "text.contact_number", call_number);
+       }
+
+       if (strcmp(file_path, "default") != 0) {
+               _callui_show_caller_id(vd->base_view.contents, file_path);
+       } else {
+               elm_object_signal_emit(vd->base_view.contents, "show_image", "main_active_noti_call");
+       }
+
+       evas_object_show(vd->base_view.contents);
+
+       evas_object_hide(ad->main_ly);
+       evas_object_show(ad->main_ly);
+
+       return CALLUI_RESULT_OK;
+}
index 6b3a2a7..df0dd41 100644 (file)
  *
  */
 
-#include "callui-view-manager.h"
-#include "callui-view-circle.h"
+#include <vconf.h>
+#include <Elementary.h>
+
 #include "callui-view-incoming-call.h"
-#include "callui-view-incoming-lock.h"
+#include "callui.h"
 #include "callui-view-layout.h"
 #include "callui-view-elements.h"
-#include <vconf.h>
+#include "callui-view-manager.h"
+#include "callui-view-circle.h"
 #include "callui-common.h"
 
-#define REJ_MSG_GENLIST_DATA "reject_msg_genlist_data"
-#define REJ_MSG_LIST_OPEN_STATUS_KEY "list_open_status_key"
-#define VIEW_INCOMING_LOCK_LAYOUT_ID "INCOMINGLOCKVIEW"
-#define MAX_MSG_COUNT 6
-
-static Evas_Object *__callui_view_incoming_call_create_reject_msg_layout(void *data);
-static Eina_Bool __callui_view_incoming_lock_reject_msg_available(callui_app_data_t *ad, char *call_num);
+#define CALLUI_REJ_MSG_GENLIST_DATA "reject_msg_genlist_data"
+#define CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY "list_open_status_key"
 
 #define SCALE_SIZE(x, h) (((x) * (h)) / MAIN_SCREEN_H)
 
-static Evas_Object *__callui_view_incoming_call_create_contents(void *data, char *grpname)
+struct _callui_view_incoming_call {
+       call_view_data_base_t base_view;
+
+       Evas_Object *caller_info;
+
+       Evas_Object *lock_accept;
+       Evas_Object *lock_reject;
+
+       Evas_Object *dimming_ly;
+
+       Evas_Object *reject_msg_layout;
+       Evas_Object *reject_msg_glayer;
+       Evas_Object *reject_msg_genlist;
+
+       int reject_msg_start_y;
+       int reject_msg_cur_y;
+
+       int reject_msg_height;
+
+       Eina_Bool is_mouse_down_pressed;
+
+       Elm_Genlist_Item_Class *reject_msg_itc;
+       Evas_Coord momentum_y;
+       char reject_msg[CALLUI_REJ_MSG_MAX_LENGTH];
+};
+typedef struct _callui_view_incoming_call _callui_view_incoming_call_t;
+
+static int __callui_view_incoming_call_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int __callui_view_incoming_call_onupdate(call_view_data_base_t *view_data);
+static int __callui_view_incoming_call_ondestroy(call_view_data_base_t *view_data);
+
+static int __create_main_content(callui_view_incoming_call_h vd);
+static int __update_displayed_data(callui_view_incoming_call_h vd);
+
+static char *__callui_view_incoming_call_reject_msg_gl_label_get_msg(void *data, Evas_Object *obj, const char *part);
+static void __reject_msg_gl_sel_msg(void *data, Evas_Object *obj, void *event_info);
+
+static void __reject_msg_genlist_create(callui_view_incoming_call_h vd);
+static void __reject_msg_genlist_init_item_class(callui_view_incoming_call_h vd);
+static void __reject_msg_genlist_deinit_item_class(callui_view_incoming_call_h vd);
+static int __reject_msg_genlist_fill(callui_view_incoming_call_h vd);
+static Elm_Object_Item *__reject_msg_genlist_append_item(Evas_Object *msg_glist, Elm_Genlist_Item_Class * itc_reject_msg, int index);
+
+static void __reject_msg_list_param_reset(callui_view_incoming_call_h vd);
+static void __reject_screen_transit_complete_cb(void *data, Elm_Transit *transit);
+static Eina_Bool __reject_msg_show_sliding_effect(void *data);
+static Evas_Event_Flags __reject_msg_flick_gesture_move_event_cb(void *data, void *event_info);
+static void __reject_msg_create_gesture_layer(callui_view_incoming_call_h vd);
+
+static void __reject_msg_bg_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __reject_msg_bg_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+static void __reject_msg_bg_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+
+static void __reject_msg_list_height_update(callui_view_incoming_call_h vd);
+static void __reject_msg_create_genlist(callui_view_incoming_call_h vd);
+static Eina_Bool __reject_msg_check_tel_num(char *call_num);
+static Evas_Object *__create_reject_msg_layout(callui_view_incoming_call_h vd);
+
+callui_view_incoming_call_h _callui_view_incoming_call_new()
+{
+       debug_enter();
+
+       callui_view_incoming_call_h incoming_lock_view = calloc(1, sizeof(_callui_view_incoming_call_t));
+       CALLUI_RETURN_NULL_IF_FAIL(incoming_lock_view);
+
+       incoming_lock_view->base_view.onCreate = __callui_view_incoming_call_oncreate;
+       incoming_lock_view->base_view.onUpdate = __callui_view_incoming_call_onupdate;
+       incoming_lock_view->base_view.onDestroy = __callui_view_incoming_call_ondestroy;
+
+       return incoming_lock_view;
+}
+
+static int __callui_view_incoming_call_oncreate(call_view_data_base_t *view_data, void *appdata)
 {
-       if (data == NULL) {
-               err("ERROR");
-               return NULL;
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)view_data;
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
+       vd->base_view.ad = ad;
+
+       evas_object_pointer_mode_set(ad->win, EVAS_OBJECT_POINTER_MODE_NOGRAB);
+
+       if (_callui_lock_manager_is_started(ad->lock_handle)) {
+               _callui_lock_manager_force_stop(ad->lock_handle);
        }
-       callui_app_data_t *ad = (callui_app_data_t *)data;
-       Evas_Object *eo;
 
-       /* load edje */
-       eo = _callui_load_edj(ad->main_ly, EDJ_NAME, grpname);
-       if (eo == NULL)
-               return NULL;
+       if (elm_win_keygrab_set(ad->win, CALLUI_KEY_SELECT, 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST)) {
+               dbg("KEY_SELECT key grab failed");
+       }
+       _callui_common_win_set_noti_type(ad, EINA_TRUE);
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-       return eo;
+       return __update_displayed_data(vd);
 }
 
-static void __reject_msg_list_param_reset(void *data)
+static int __callui_view_incoming_call_onupdate(call_view_data_base_t *view_data)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-
-       priv->y_momentum = 0;
-       priv->reject_with_msg_start_y = 0;
-       priv->reject_with_msg_cur_y = 0;
-       priv->bmouse_down_pressed = EINA_FALSE;
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)view_data;
+
+       return __update_displayed_data(vd);
 }
 
-static void __reject_screen_transit_complete_cb(void *data, Elm_Transit *transit)
+static int __callui_view_incoming_call_ondestroy(call_view_data_base_t *view_data)
+{
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)view_data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       // TODO: need to replace from view
+#ifdef _DBUS_DVC_LSD_TIMEOUT_
+       /* Set LCD timeout for call state */
+       /* LCD is alwasy on during incoming call screen */
+       if (ad->speaker_status == EINA_TRUE) {
+               _callui_common_dvc_set_lcd_timeout(LCD_TIMEOUT_SET);
+       }
+#endif
+
+       if (ad->second_call_popup) {
+               evas_object_del(ad->second_call_popup);
+               ad->second_call_popup = NULL;
+       }
+
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
+
+       _callui_common_win_set_noti_type(ad, EINA_FALSE);
+
+       elm_win_keygrab_unset(ad->win, CALLUI_KEY_SELECT, 0, 0);
+
+       free(vd);
+
+       return CALLUI_RESULT_OK;
+}
+
+static char *__callui_view_incoming_call_reject_msg_gl_label_get_msg(void *data, Evas_Object *obj, const char *part)
+{
+       int index = CALLUI_SAFE_C_CAST(int, data);
+       char *msg_str = NULL;
+
+       if (!strcmp(part, "elm.text")) {
+               if (index != -1) {
+                       msg_str = _callui_common_get_reject_msg_by_index(index);
+                       sec_dbg("msg_str(%s)", msg_str);
+                       return msg_str; /* Send markup text to draw the genlist */
+               } else {
+                       warn("invalid index: %d", index);
+                       msg_str = _("IDS_CALL_BODY_NO_MESSAGES");
+                       return strdup(msg_str);
+               }
+       }
+       return NULL;
+}
+
+static void __reject_msg_gl_sel_msg(void *data, Evas_Object *obj, void *event_info)
+{
+       int index = CALLUI_SAFE_C_CAST(int, data);
+       dbg("index: %d", index);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)evas_object_data_get(obj, CALLUI_REJ_MSG_GENLIST_DATA);
+       CALLUI_RETURN_IF_FAIL(vd);
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
+
+       if (index != -1) {
+               char *ret_str = _callui_common_get_reject_msg_by_index(index);
+               if (ret_str) {
+                       char *reject_msg = elm_entry_markup_to_utf8(ret_str); /*send utf8 text to MSG */
+                       if (reject_msg != NULL) {
+                               snprintf(vd->reject_msg, sizeof(vd->reject_msg), "%s", reject_msg);
+                               free(reject_msg);
+                       }
+                       free(ret_str);
+               }
+
+               int ret = cm_reject_call(ad->cm_handle);
+               if (ret != CM_ERROR_NONE) {
+                       err("cm_reject_call() is failed");
+               } else {
+                       _callui_common_send_reject_msg(ad, vd->reject_msg);
+               }
+       }
+}
+
+static void __reject_msg_genlist_create(callui_view_incoming_call_h vd)
+{
+       if (vd->reject_msg_genlist) {
+               evas_object_del(vd->reject_msg_genlist);
+               vd->reject_msg_genlist = NULL;
+       }
+
+       vd->reject_msg_genlist = elm_genlist_add(vd->reject_msg_layout);
+       elm_genlist_homogeneous_set(vd->reject_msg_genlist, EINA_TRUE);
+       elm_genlist_mode_set(vd->reject_msg_genlist, ELM_LIST_COMPRESS);
+       elm_scroller_content_min_limit(vd->reject_msg_genlist, EINA_FALSE, EINA_TRUE);
+       CALLUI_RETURN_IF_FAIL(vd->reject_msg_genlist);
+
+       evas_object_data_set(vd->reject_msg_genlist, CALLUI_REJ_MSG_GENLIST_DATA, vd);
+       evas_object_size_hint_weight_set(vd->reject_msg_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(vd->reject_msg_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_object_part_content_set(vd->reject_msg_layout, "swl_msglist", vd->reject_msg_genlist);
+}
+
+static void __reject_msg_genlist_init_item_class(callui_view_incoming_call_h vd)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-
-       if (EINA_FALSE == evas_object_data_get(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY)) {
-               elm_object_tree_focus_allow_set(priv->msg_glist, EINA_FALSE);
-               elm_object_signal_emit(priv->lock_reject_with_msg, "show-up-arrow", "reject_msg");
-               evas_object_hide(priv->dimming_ly);
+       Elm_Genlist_Item_Class *item_class = elm_genlist_item_class_new();
+       CALLUI_RETURN_IF_FAIL(item_class);
+
+       item_class->item_style = "type1";
+       item_class->func.text_get = __callui_view_incoming_call_reject_msg_gl_label_get_msg;
+       item_class->func.content_get = NULL;
+       item_class->func.state_get = NULL;
+       item_class->func.del = NULL;
+       vd->reject_msg_itc = item_class;
+}
+
+static void __reject_msg_genlist_deinit_item_class(callui_view_incoming_call_h vd)
+{
+       elm_genlist_item_class_free(vd->reject_msg_itc);
+       vd->reject_msg_itc = NULL;
+}
+
+static Elm_Object_Item *__reject_msg_genlist_append_item(Evas_Object *msg_glist, Elm_Genlist_Item_Class * itc_reject_msg, int index)
+{
+       Elm_Object_Item *item = NULL;
+       item = elm_genlist_item_append(msg_glist, itc_reject_msg,
+                       CALLUI_SAFE_C_CAST(void *, index), NULL, ELM_GENLIST_ITEM_NONE,
+                       __reject_msg_gl_sel_msg, CALLUI_SAFE_C_CAST(void *, index));
+       return item;
+}
+
+static int __reject_msg_genlist_fill(callui_view_incoming_call_h vd)
+{
+       int msg_cnt = 0;
+       if (0 != vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &msg_cnt)) {
+               warn("vconf_get_int failed.");
+       }
+       dbg("msg_cnt: %d", msg_cnt);
+
+       int index = 0;
+       if (msg_cnt == 0) {
+               index = -1;
+               Elm_Object_Item * item = __reject_msg_genlist_append_item(vd->reject_msg_genlist, vd->reject_msg_itc, index);
+               if (item) {
+                       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+               }
        } else {
-               elm_object_tree_focus_allow_set(priv->msg_glist, EINA_TRUE);
-               elm_object_signal_emit(priv->lock_reject_with_msg, "show-down-arrow", "reject_msg");
-               evas_object_show(priv->dimming_ly);
+               for (index = 0; index < msg_cnt; index++) {
+                       __reject_msg_genlist_append_item(vd->reject_msg_genlist, vd->reject_msg_itc, index);
+               }
        }
+       return msg_cnt;
+}
 
-       __reject_msg_list_param_reset(vd);
+Evas_Object *_callui_view_incoming_call_get_accept_layout(callui_view_incoming_call_h vd)
+{
+       CALLUI_RETURN_NULL_IF_FAIL(vd);
+       return vd->lock_accept;
+}
+
+int _callui_view_incoming_call_set_accept_layout(callui_view_incoming_call_h vd, Evas_Object *layout)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(vd, CALLUI_RESULT_INVALID_PARAM);
+
+       vd->lock_accept = layout;
+       return CALLUI_RESULT_OK;
+}
+
+Evas_Object *_callui_view_incoming_call_get_reject_layout(callui_view_incoming_call_h vd)
+{
+       CALLUI_RETURN_NULL_IF_FAIL(vd);
+       return vd->lock_reject;
+}
+
+int _callui_view_incoming_call_set_reject_layout(callui_view_incoming_call_h vd, Evas_Object *layout)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(vd, CALLUI_RESULT_INVALID_PARAM);
+
+       vd->lock_reject = layout;
+       return CALLUI_RESULT_OK;
+}
+
+static void __reject_msg_list_param_reset(callui_view_incoming_call_h vd)
+{
+       vd->momentum_y = 0;
+       vd->reject_msg_start_y = 0;
+       vd->reject_msg_cur_y = 0;
+       vd->is_mouse_down_pressed = EINA_FALSE;
+}
 
-       return;
+static void __reject_screen_transit_complete_cb(void *data, Elm_Transit *transit)
+{
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)data;
+
+       if (EINA_FALSE == evas_object_data_get(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY)) {
+               elm_object_tree_focus_allow_set(vd->reject_msg_genlist, EINA_FALSE);
+               elm_object_signal_emit(vd->reject_msg_layout, "show-up-arrow", "reject_msg");
+               evas_object_hide(vd->dimming_ly);
+       } else {
+               elm_object_tree_focus_allow_set(vd->reject_msg_genlist, EINA_TRUE);
+               elm_object_signal_emit(vd->reject_msg_layout, "show-down-arrow", "reject_msg");
+               evas_object_show(vd->dimming_ly);
+       }
+       __reject_msg_list_param_reset(vd);
 }
 
-static Eina_Bool __rej_msg_show_sliding_effect(void *data)
+static Eina_Bool __reject_msg_show_sliding_effect(void *data)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
+       CALLUI_RETURN_VALUE_IF_FAIL(data, ECORE_CALLBACK_CANCEL);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)data;
        Evas_Object *screen_ly;
        Elm_Transit *transit;
        int xpos = 0;
@@ -98,32 +355,32 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
        int transit_y = 0;
        int max_height_limit = 0;
 
-       screen_ly = priv->lock_reject_with_msg;
+       screen_ly = vd->reject_msg_layout;
        transit = elm_transit_add();
        elm_transit_object_add(transit, screen_ly);
 
-       evas_object_geometry_get(priv->lock_reject_with_msg, &xpos, &ypos, &width, &height);
+       evas_object_geometry_get(vd->reject_msg_layout, &xpos, &ypos, &width, &height);
        dbg("reject_w_msg dimensions ---> x[%d] y[%d] w[%d] h[%d]", xpos, ypos, width, height);
-       dbg("priv->y_momentum: %d", priv->y_momentum);
+       dbg("vd->y_momentum: %d", vd->momentum_y);
 
        /*Max height possible*/
-       max_height_limit = (priv->msg_list_height);
+       max_height_limit = (vd->reject_msg_height);
        dbg("max_height_limit: %d", max_height_limit);
 
-       if (EINA_FALSE == evas_object_data_get(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY)) {
+       if (EINA_FALSE == evas_object_data_get(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY)) {
                dbg("Close list... Check if opening is feasible");
 
-               if (priv->y_momentum) {
+               if (vd->momentum_y) {
                        dbg("Momentum...");
 
-                       if (priv->y_momentum < -500) {
+                       if (vd->momentum_y < -500) {
                                dbg("Huge Momentum... Move the layout");
 
                                /*effect to pull up the window.*/
                                transit_y = -(max_height_limit + ypos);
 
                                elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                               evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
+                               evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
                        } else {
                                dbg("Small Momentum..");
 
@@ -135,7 +392,7 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                                transit_y = -ypos;
 
                                                elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                               evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
+                                               evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
                                        } else if (-ypos >= max_height_limit/2 && -ypos <= max_height_limit) {  /*Layout position is greater than half of the height*/
                                                dbg("Movement G.T. HALF the height..");
 
@@ -143,7 +400,7 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                                transit_y = -(max_height_limit + ypos);
 
                                                elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                               evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
+                                               evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
                                        }
                                }
                        }
@@ -158,7 +415,7 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                        transit_y = -ypos;
 
                                        elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                       evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
+                                       evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
                                } else if (-ypos >= max_height_limit/2 && -ypos <= max_height_limit) {  /*Layout position is greater than half of the height*/
                                        dbg("Movement G.T. HALF the height..");
 
@@ -166,24 +423,24 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                        transit_y = -(max_height_limit + ypos);
 
                                        elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                       evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
+                                       evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
                                }
                        }
                }
        } else {
                dbg("Open list... Check if closing is feasible");
 
-               if (priv->y_momentum) {
+               if (vd->momentum_y) {
                        dbg("Momentum...");
 
-                       if (priv->y_momentum > 500) {
+                       if (vd->momentum_y > 500) {
                                dbg("Huge Momentum... Move the layout");
 
                                /*effect to pull down the window.*/
                                transit_y = -ypos;
 
                                elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                               evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
+                               evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
                        } else {
                                dbg("Small Momentum..");
 
@@ -195,7 +452,7 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                                transit_y = -ypos;
 
                                                elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                               evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
+                                               evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
                                        } else if (-ypos >= (max_height_limit * 0.8) && -ypos <= max_height_limit) {    /*Layout position is greater than half of the height*/
                                                dbg("Movement G.T. 80 percent of the height..");
 
@@ -203,7 +460,7 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                                transit_y = -(max_height_limit + ypos);
 
                                                elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                               evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
+                                               evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
                                        }
                                }
                        }
@@ -218,7 +475,7 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                        transit_y = -ypos;
 
                                        elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                       evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
+                                       evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
                                } else if (-ypos >= (max_height_limit * 0.8) && -ypos <= max_height_limit) {    /*Layout position is greater than half of the height*/
                                        dbg("Movement G.T. 80 percent of the height..");
 
@@ -226,7 +483,7 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
                                        transit_y = -(max_height_limit + ypos);
 
                                        elm_transit_effect_translation_add(transit, 0, 0, 0, transit_y);
-                                       evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
+                                       evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
                                }
                        }
                }
@@ -234,16 +491,16 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
 
        elm_transit_del_cb_set(transit, __reject_screen_transit_complete_cb, vd);
 
-       if (priv->y_momentum < 0)
-               priv->y_momentum = -priv->y_momentum;
+       if (vd->momentum_y < 0)
+               vd->momentum_y = -vd->momentum_y;
 
-       if (priv->y_momentum < 1500) {
+       if (vd->momentum_y < 1500) {
                elm_transit_duration_set(transit, 0.5);
-       } else if (priv->y_momentum >= 1500 && priv->y_momentum < 3000) {
+       } else if (vd->momentum_y >= 1500 && vd->momentum_y < 3000) {
                elm_transit_duration_set(transit, 0.4);
-       } else if (priv->y_momentum >= 3000 && priv->y_momentum < 4500) {
+       } else if (vd->momentum_y >= 3000 && vd->momentum_y < 4500) {
                elm_transit_duration_set(transit, 0.3);
-       } else if (priv->y_momentum >= 4500) {
+       } else if (vd->momentum_y >= 4500) {
                elm_transit_duration_set(transit, 0.2);
        }
        evas_object_show(screen_ly);    /*It must be called before elm_transit_go(). transit policy*/
@@ -253,14 +510,14 @@ static Eina_Bool __rej_msg_show_sliding_effect(void *data)
        return ECORE_CALLBACK_CANCEL;
 }
 
-static void __callui_view_incoming_call_reject_with_msg_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static void __reject_msg_bg_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
+       CALLUI_RETURN_IF_FAIL(data);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)data;
 
-       if (priv->bmouse_down_pressed) {
-               ecore_idle_enterer_before_add(__rej_msg_show_sliding_effect, vd);
+       if (vd->is_mouse_down_pressed) {
+               ecore_idle_enterer_before_add(__reject_msg_show_sliding_effect, vd);
        } else {
                dbg("mouse down was NOT pressed - DONT handle up event");
        }
@@ -268,9 +525,10 @@ static void __callui_view_incoming_call_reject_with_msg_mouse_up_cb(void *data,
 
 static Evas_Event_Flags __reject_msg_flick_gesture_move_event_cb(void *data, void *event_info)
 {
-       dbg("Flick_Gesture Move");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
+       CALLUI_RETURN_VALUE_IF_FAIL(data, EVAS_EVENT_FLAG_NONE);
+       CALLUI_RETURN_VALUE_IF_FAIL(event_info, EVAS_EVENT_FLAG_NONE);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)data;
        Elm_Gesture_Line_Info *info = (Elm_Gesture_Line_Info *)event_info;
 
        dbg("*********************************************");
@@ -282,97 +540,92 @@ static Evas_Event_Flags __reject_msg_flick_gesture_move_event_cb(void *data, voi
        dbg("info->momentum.y1 = %d, info->momentum.y2 = %d", info->momentum.y1, info->momentum.y2);
        dbg("*********************************************");
 
-       priv->y_momentum = info->momentum.my;
+       vd->momentum_y = info->momentum.my;
 
        return EVAS_EVENT_FLAG_NONE;
 }
 
-static void __reject_msg_create_gesture_layer(void *data)
+static void __reject_msg_create_gesture_layer(callui_view_incoming_call_h vd)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-       Evas_Object *rej_msg_bg = NULL;
-
-       rej_msg_bg = _callui_edje_object_part_get(priv->lock_reject_with_msg, "reject_msg_bg");
-       if (priv->reject_msg_gl) {
-               evas_object_del(priv->reject_msg_gl);
-               priv->reject_msg_gl = NULL;
+       Evas_Object *reject_msg_bg = _callui_edje_object_part_get(vd->reject_msg_layout, "reject_msg_bg");
+       if (vd->reject_msg_glayer) {
+               evas_object_del(vd->reject_msg_glayer);
+               vd->reject_msg_glayer = NULL;
        }
 
-       priv->reject_msg_gl = elm_gesture_layer_add(priv->lock_reject_with_msg);
-       if (FALSE == elm_gesture_layer_attach(priv->reject_msg_gl, rej_msg_bg)) {
+       vd->reject_msg_glayer = elm_gesture_layer_add(vd->reject_msg_layout);
+       if (FALSE == elm_gesture_layer_attach(vd->reject_msg_glayer, reject_msg_bg)) {
                dbg("elm_gesture_layer_attach failed !!");
-               evas_object_del(priv->reject_msg_gl);
-               priv->reject_msg_gl = NULL;
+               evas_object_del(vd->reject_msg_glayer);
+               vd->reject_msg_glayer = NULL;
        } else {
-               elm_gesture_layer_cb_set(priv->reject_msg_gl, ELM_GESTURE_N_FLICKS, ELM_GESTURE_STATE_MOVE, __reject_msg_flick_gesture_move_event_cb, vd);
+               elm_gesture_layer_cb_set(vd->reject_msg_glayer, ELM_GESTURE_N_FLICKS, ELM_GESTURE_STATE_MOVE, __reject_msg_flick_gesture_move_event_cb, vd);
        }
 }
 
-static void __callui_view_incoming_call_reject_with_msg_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static void __reject_msg_bg_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-       Evas_Event_Mouse_Move *ev = event_info;
+       CALLUI_RETURN_IF_FAIL(data);
+       CALLUI_RETURN_IF_FAIL(event_info);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)data;
+       Evas_Event_Mouse_Down *ev = event_info;
 
-       priv->reject_with_msg_start_y = ev->cur.canvas.y;
-       priv->bmouse_down_pressed = EINA_TRUE;
+       vd->reject_msg_start_y = ev->canvas.y;
+       vd->is_mouse_down_pressed = EINA_TRUE;
 }
 
-static void __callui_view_incoming_call_reject_with_msg_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+static void __reject_msg_bg_mouse_move_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
 {
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
+       CALLUI_RETURN_IF_FAIL(data);
+       CALLUI_RETURN_IF_FAIL(event_info);
+
+       callui_view_incoming_call_h vd = (callui_view_incoming_call_h)data;
        Evas_Event_Mouse_Move *ev = event_info;
+
        int diff_y = 0;
        int max_height_limit = 0;
 
        /*Max height possible*/
-       max_height_limit = priv->msg_list_height;
+       max_height_limit = vd->reject_msg_height;
        dbg("max_height_limit: %d", max_height_limit);
 
-       if (!priv->bmouse_down_pressed) {
+       if (!vd->is_mouse_down_pressed) {
                dbg("mouse down was NOT pressed - DONT handle move event");
                return;
        }
        dbg("mouse down was pressed - handle move event");
-       priv->reject_with_msg_cur_y = ev->cur.canvas.y;
+       vd->reject_msg_cur_y = ev->cur.canvas.y;
 
-       diff_y = priv->reject_with_msg_cur_y - priv->reject_with_msg_start_y;
+       diff_y = vd->reject_msg_cur_y - vd->reject_msg_start_y;
        dbg("diff_y [<<< %d >>>>]", diff_y);
 
-       if (EINA_FALSE == evas_object_data_get(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY)) {
-               elm_object_signal_emit(priv->lock_reject_with_msg, "show-down-arrow", "reject_msg");
+       if (EINA_FALSE == evas_object_data_get(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY)) {
+               elm_object_signal_emit(vd->reject_msg_layout, "show-down-arrow", "reject_msg");
                if ((diff_y > -max_height_limit) && (diff_y <= 0)) {
                        /*Lies between 0 and msg-list layout height*/
-                       evas_object_move(priv->lock_reject_with_msg, 0, diff_y);
+                       evas_object_move(vd->reject_msg_layout, 0, diff_y);
                } else if (diff_y <= -max_height_limit) {
                        /*Special case - Move the max distance - msg-list height*/
-                       evas_object_move(priv->lock_reject_with_msg, 0, -max_height_limit);
-                       evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
+                       evas_object_move(vd->reject_msg_layout, 0, -max_height_limit);
+                       evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_TRUE);
                        __reject_screen_transit_complete_cb(vd, NULL);
                }
        } else {
                if ((diff_y >= 0) && (diff_y < max_height_limit)) {
                        /*Lies between 0 and msg-list layout height*/
-                       evas_object_move(priv->lock_reject_with_msg, 0, -(max_height_limit - diff_y));
+                       evas_object_move(vd->reject_msg_layout, 0, -(max_height_limit - diff_y));
                } else if (diff_y >= max_height_limit) {
                        /*Special case - Move the max distance - msg-list height*/
-                       evas_object_move(priv->lock_reject_with_msg, 0, 0);
-                       evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
+                       evas_object_move(vd->reject_msg_layout, 0, 0);
+                       evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
                        __reject_screen_transit_complete_cb(vd, NULL);
                }
        }
 }
 
-static void __reject_msg_list_height_update(void *data)
+static void __reject_msg_list_height_update(callui_view_incoming_call_h vd)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-
        int msg_cnt = 0;
        if (0 != vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &msg_cnt)) {
                warn("vconf_get_int failed.");
@@ -381,98 +634,50 @@ static void __reject_msg_list_height_update(void *data)
                msg_cnt = 1;
 
        int win_h = 0;
-       callui_app_data_t *ad = _callui_get_app_data();
+       callui_app_data_t *ad = vd->base_view.ad;
        elm_win_screen_size_get(ad->win, NULL, NULL, NULL, &win_h);
 
-       priv->msg_list_height = SCALE_SIZE((REJ_MSG_LIST_CREATE_MSG_BTN_H + ((ITEM_SIZE_H) * msg_cnt)), win_h);/* bottom btn height + (genlist item height * msg count) */
-       if (priv->msg_list_height > (SCALE_SIZE((MTLOCK_REJECT_MSG_LIST_HEIGHT + REJ_MSG_LIST_CREATE_MSG_BTN_H), win_h))) {
-               priv->msg_list_height = SCALE_SIZE((MTLOCK_REJECT_MSG_LIST_HEIGHT + REJ_MSG_LIST_CREATE_MSG_BTN_H), win_h);
+       vd->reject_msg_height = SCALE_SIZE((REJ_MSG_LIST_CREATE_MSG_BTN_H + ((ITEM_SIZE_H) * msg_cnt)), win_h);/* bottom btn height + (genlist item height * msg count) */
+       if (vd->reject_msg_height > (SCALE_SIZE((MTLOCK_REJECT_MSG_LIST_HEIGHT + REJ_MSG_LIST_CREATE_MSG_BTN_H), win_h))) {
+               vd->reject_msg_height = SCALE_SIZE((MTLOCK_REJECT_MSG_LIST_HEIGHT + REJ_MSG_LIST_CREATE_MSG_BTN_H), win_h);
        }
 }
 
-static void __reject_msg_create_glist(void *data)
+static void __reject_msg_create_genlist(callui_view_incoming_call_h vd)
 {
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(vd);
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-       CALLUI_RETURN_IF_FAIL(priv);
-       Elm_Object_Item *item = NULL;
        int msg_cnt = 0;
-       int index = 0;
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       /* msg count from setting */
-       if (0 != vconf_get_int(VCONFKEY_CISSAPPL_REJECT_CALL_MSG_INT, &msg_cnt)) {
-               warn("vconf_get_int failed.");
-       }
-       dbg("msg_cnt: %d", msg_cnt);
-
-       /* create gen list */
-       if (priv->msg_glist) {
-               evas_object_del(priv->msg_glist);
-               priv->msg_glist = NULL;
-       }
+       __reject_msg_genlist_create(vd);
+       __reject_msg_genlist_init_item_class(vd);
+       msg_cnt = __reject_msg_genlist_fill(vd);
+       __reject_msg_genlist_deinit_item_class(vd);
 
-       priv->msg_glist = elm_genlist_add(priv->lock_reject_with_msg);
-       elm_genlist_homogeneous_set(priv->msg_glist, EINA_TRUE);
-       elm_genlist_mode_set(priv->msg_glist, ELM_LIST_COMPRESS);
-       elm_scroller_content_min_limit(priv->msg_glist, EINA_FALSE, EINA_TRUE);
-       CALLUI_RETURN_IF_FAIL(priv->msg_glist);
-       //elm_genlist_realization_mode_set(priv->msg_glist, EINA_TRUE);
+       _callui_create_reject_msg_button(ad, vd->reject_msg_layout, "bottom_btn");
 
-       evas_object_data_set(priv->msg_glist, REJ_MSG_GENLIST_DATA, (const void *)vd);
-       evas_object_size_hint_weight_set(priv->msg_glist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       evas_object_size_hint_align_set(priv->msg_glist, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       elm_object_part_content_set(priv->lock_reject_with_msg, "swl_msglist", priv->msg_glist);
-
-       priv->itc_reject_msg = _callui_view_incoming_lock_create_item_class();
-
-       if (msg_cnt == 0) {
-               index = -1;
-               item = _callui_view_incoming_lock_append_genlist_item(priv->msg_glist, priv->itc_reject_msg, index);
-               if (item) {
-                       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-               }
-       } else {
-               for (index = 0; index < msg_cnt; index++) {
-                       _callui_view_incoming_lock_append_genlist_item(priv->msg_glist, priv->itc_reject_msg, index);
-               }
-       }
-       elm_genlist_item_class_free(priv->itc_reject_msg);
-       priv->itc_reject_msg = NULL;
-
-       _callui_view_incoming_lock_create_reject_msg_button(priv->lock_reject_with_msg, "bottom_btn", data);
-
-       /*Adjust the list height*/
        __reject_msg_list_height_update(vd);
+
        if (msg_cnt < 2)
-               elm_object_signal_emit(priv->lock_reject_with_msg, "set_1item_list", "");
-       else if (msg_cnt <= MAX_MSG_COUNT) {
-               char signal[16] = {0,};
+               elm_object_signal_emit(vd->reject_msg_layout, "set_1item_list", "");
+       else if (msg_cnt <= CALLUI_REJ_MSG_MAX_COUNT) {
+               char signal[16] = { 0 };
                snprintf(signal, 16, "set_%ditems_list", msg_cnt);
-               elm_object_signal_emit(priv->lock_reject_with_msg, signal, "");
+               elm_object_signal_emit(vd->reject_msg_layout, signal, "");
        }
-       elm_object_tree_focus_allow_set(priv->msg_glist, EINA_FALSE);
+       elm_object_tree_focus_allow_set(vd->reject_msg_genlist, EINA_FALSE);
 }
 
-void _callui_view_incoming_call_draw_screen(callui_app_data_t *ad, call_view_data_t *vd)
+static int __update_displayed_data(callui_view_incoming_call_h vd)
 {
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-
-       char *file_path = NULL;
-       call_data_t *call_data = NULL;
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       call_data = ad->incom;
-       if (call_data == NULL) {
-               err("call data is null");
-               return;
-       }
+       CALLUI_RETURN_VALUE_IF_FAIL(ad->incom, CALLUI_RESULT_FAIL);
 
-       file_path = call_data->call_ct_info.caller_id_path;
+       call_data_t *call_data = ad->incom;
+       char *file_path = call_data->call_ct_info.caller_id_path;
 
-       sec_dbg("file_path: %s", file_path);
        if (strcmp(file_path, "default") != 0) {
-               _callui_show_caller_id(priv->caller_info, file_path);
+               _callui_show_caller_id(vd->caller_info, file_path);
        }
 
        char *call_name = call_data->call_ct_info.call_disp_name;
@@ -484,32 +689,27 @@ void _callui_view_incoming_call_draw_screen(callui_app_data_t *ad, call_view_dat
        }
        if (strlen(call_name) == 0) {
                _callui_show_caller_info_name(ad, call_number);
-               elm_object_signal_emit(priv->caller_info, "1line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "1line", "caller_name");
        } else {
                _callui_show_caller_info_name(ad, call_name);
                _callui_show_caller_info_number(ad, call_number);
-               elm_object_signal_emit(priv->caller_info, "2line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "2line", "caller_name");
        }
 
-       _callui_show_caller_info_status(ad, _("IDS_CALL_BODY_INCOMING_CALL"));
-
-       _callui_view_circle_create_accept_layout(ad, vd);
-       _callui_view_circle_create_reject_layout(ad, vd);
+       if (__reject_msg_check_tel_num(call_number)) {
+               __create_reject_msg_layout(vd);
+       }
 
-       priv->dimming_ly = __callui_view_incoming_call_create_contents(ad, "dimming_ly");
-       evas_object_resize(priv->dimming_ly, ad->root_w, ad->root_h);
-       evas_object_move(priv->dimming_ly, 0, 0);
+       evas_object_show(vd->base_view.contents);
 
-       if (__callui_view_incoming_lock_reject_msg_available(ad, call_number)) {
-               __callui_view_incoming_call_create_reject_msg_layout(vd);
-       }
+       evas_object_hide(ad->main_ly);
+       evas_object_show(ad->main_ly);
 
-       evas_object_show(priv->contents);
+       return CALLUI_RESULT_OK;
 }
 
-static Eina_Bool __callui_view_incoming_lock_reject_msg_available(callui_app_data_t *ad, char *call_num)
+static Eina_Bool __reject_msg_check_tel_num(char *call_num)
 {
-       CALLUI_RETURN_VALUE_IF_FAIL(ad, EINA_FALSE);
        CALLUI_RETURN_VALUE_IF_FAIL(call_num, EINA_FALSE);
 
        if (strlen(call_num) <= 0) {
@@ -520,117 +720,63 @@ static Eina_Bool __callui_view_incoming_lock_reject_msg_available(callui_app_dat
        return EINA_TRUE;
 }
 
-static void __callui_view_incoming_lock_reject_msg_close(void *data)
+static Evas_Object *__create_reject_msg_layout(callui_view_incoming_call_h vd)
 {
-       CALLUI_RETURN_IF_FAIL(data != NULL);
-       dbg("..");
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-
-       if (EINA_FALSE != evas_object_data_get(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY)) {
-               evas_object_move(priv->lock_reject_with_msg, 0, 0);
-               elm_object_signal_emit(priv->lock_reject_with_msg, "show-up-arrow-landscape", "reject_msg");
-               evas_object_hide(priv->dimming_ly);
-               evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
-       }
-}
+       callui_app_data_t *ad = vd->base_view.ad;
 
-static void __callui_view_incoming_call_hw_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
-{
-       Evas_Event_Mouse_Up *ev = event_info;
-       if (ev->button == 3) {
-               /* Handle mouse right button event */
-               __callui_view_incoming_lock_reject_msg_close(data);
+       if (vd->reject_msg_layout != NULL) {
+               evas_object_del(vd->reject_msg_layout);
+               vd->reject_msg_layout = NULL;
        }
-}
+       vd->reject_msg_layout = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_LOCK_REJECT_WITH_MSG);
 
-void _callui_view_incoming_call_ondestroy(void *data)
-{
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)data;
-       callui_app_data_t *ad = _callui_get_app_data();
-       if (priv->lock_reject_with_msg) {
-               evas_object_event_callback_del(priv->lock_reject_with_msg, EVAS_CALLBACK_MOUSE_UP,
-                               __callui_view_incoming_call_hw_mouse_up_cb);
-               evas_object_event_callback_del(ad->win_conformant, EVAS_CALLBACK_MOUSE_UP,
-                               __callui_view_incoming_call_hw_mouse_up_cb);
-
-               evas_object_del(priv->lock_reject_with_msg);
-               priv->lock_reject_with_msg = NULL;
-               evas_object_del(priv->dimming_ly);
-               priv->dimming_ly = NULL;
-       }
-}
-
-static Evas_Object *__callui_view_incoming_call_create_reject_msg_layout(void *data)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-       callui_app_data_t *ad = _callui_get_app_data();
-       Evas_Object *rej_msg_bg = NULL;
-
-       if (priv->lock_reject_with_msg != NULL) {
-               evas_object_event_callback_del(priv->lock_reject_with_msg,
-                               EVAS_CALLBACK_MOUSE_UP, __callui_view_incoming_call_hw_mouse_up_cb);
-               evas_object_event_callback_del(ad->win_conformant,
-                               EVAS_CALLBACK_MOUSE_UP, __callui_view_incoming_call_hw_mouse_up_cb);
-
-               evas_object_del(priv->lock_reject_with_msg);
-               priv->lock_reject_with_msg = NULL;
-       }
-       priv->lock_reject_with_msg = _callui_load_edj(ad->win, EDJ_NAME, GRP_LOCK_REJECT_WITH_MSG);
-
-       evas_object_resize(priv->lock_reject_with_msg, ad->root_w, ad->root_h);
+       evas_object_resize(vd->reject_msg_layout, ad->root_w, ad->root_h);
 
        __reject_msg_create_gesture_layer(vd);
 
-       rej_msg_bg = _callui_edje_object_part_get(priv->lock_reject_with_msg, "reject_msg_bg");
-       evas_object_event_callback_add(rej_msg_bg, EVAS_CALLBACK_MOUSE_DOWN, __callui_view_incoming_call_reject_with_msg_mouse_down_cb, vd);
-       evas_object_event_callback_add(rej_msg_bg, EVAS_CALLBACK_MOUSE_MOVE, __callui_view_incoming_call_reject_with_msg_mouse_move_cb, vd);
-       evas_object_event_callback_add(rej_msg_bg, EVAS_CALLBACK_MOUSE_UP, __callui_view_incoming_call_reject_with_msg_mouse_up_cb, vd);
+       Evas_Object *reject_msg_bg = _callui_edje_object_part_get(vd->reject_msg_layout, "reject_msg_bg");
+       evas_object_event_callback_add(reject_msg_bg, EVAS_CALLBACK_MOUSE_DOWN, __reject_msg_bg_mouse_down_cb, vd);
+       evas_object_event_callback_add(reject_msg_bg, EVAS_CALLBACK_MOUSE_MOVE, __reject_msg_bg_mouse_move_cb, vd);
+       evas_object_event_callback_add(reject_msg_bg, EVAS_CALLBACK_MOUSE_UP, __reject_msg_bg_mouse_up_cb, vd);
 
-       elm_object_part_text_set(priv->lock_reject_with_msg, "reject_msg_text", _("IDS_VCALL_BUTTON2_REJECT_CALL_WITH_MESSAGE"));
+       elm_object_part_text_set(vd->reject_msg_layout, "reject_msg_text", _("IDS_VCALL_BUTTON2_REJECT_CALL_WITH_MESSAGE"));
 
-       elm_object_signal_emit(priv->lock_reject_with_msg, "show-up-arrow", "reject_msg");
-       evas_object_data_set(priv->lock_reject_with_msg, REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
-       evas_object_hide(priv->dimming_ly);
+       elm_object_signal_emit(vd->reject_msg_layout, "show-up-arrow", "reject_msg");
+       evas_object_data_set(vd->reject_msg_layout, CALLUI_REJ_MSG_LIST_OPEN_STATUS_KEY, (const void *)EINA_FALSE);
+       evas_object_hide(vd->dimming_ly);
 
        __reject_msg_list_param_reset(vd);
 
-       evas_object_event_callback_add(ad->win_conformant, EVAS_CALLBACK_MOUSE_UP, __callui_view_incoming_call_hw_mouse_up_cb, vd);
-       evas_object_event_callback_add(priv->lock_reject_with_msg, EVAS_CALLBACK_MOUSE_UP, __callui_view_incoming_call_hw_mouse_up_cb, vd);
+       evas_object_show(vd->reject_msg_layout);
 
-       evas_object_show(priv->lock_reject_with_msg);
+       __reject_msg_create_genlist(vd);
 
-       __reject_msg_create_glist(vd);
-       return priv->lock_reject_with_msg;
+       return vd->reject_msg_layout;
 }
 
-int _callui_view_incoming_call_oncreate(call_view_data_t *view_data, void *appdata)
+static int __create_main_content(callui_view_incoming_call_h vd)
 {
-       dbg("mt-lock view create!!");
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       dbg(" active %p", ad->active);
-       dbg(" incoming %p", ad->incom);
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *) view_data->priv;
-
-       evas_object_resize(ad->win, ad->root_w, ad->root_h);
-       evas_object_pointer_mode_set(ad->win, EVAS_OBJECT_POINTER_MODE_NOGRAB);
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME, GRP_MAIN_LY);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content",  vd->base_view.contents);
 
-       if (ad->main_ly) {
-               priv->contents = __callui_view_incoming_call_create_contents(ad, GRP_MAIN_LY);
-               elm_object_part_content_set(ad->main_ly, "elm.swallow.content",  priv->contents);
+       vd->caller_info = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_CALLER_INFO);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->caller_info, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, "caller_info", vd->caller_info);
 
-               priv->caller_info = __callui_view_incoming_call_create_contents(ad, GRP_CALLER_INFO);
-               elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
+       _callui_show_caller_info_status(ad, _("IDS_CALL_BODY_INCOMING_CALL"));
 
-               elm_object_signal_emit(priv->contents, "mt_circle_bg_show", "mt_view");
-               evas_object_name_set(priv->caller_info, VIEW_INCOMING_LOCK_LAYOUT_ID);
-       }
+       int res = _callui_view_circle_create_accept_layout(ad, vd, vd->base_view.contents);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+       res = _callui_view_circle_create_reject_layout(ad, vd, vd->base_view.contents);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-       if (_callui_lock_manager_is_started(ad->lock_handle)) {
-               _callui_lock_manager_force_stop(ad->lock_handle);
-       }
+       vd->dimming_ly = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_DIMMING_LAYOUT);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->dimming_ly, CALLUI_RESULT_ALLOCATION_FAIL);
+       evas_object_resize(vd->dimming_ly, ad->root_w, ad->root_h);
+       evas_object_move(vd->dimming_ly, 0, 0);
 
-       return 0;
+       return res;
 }
diff --git a/src/callui-view-incoming-lock.c b/src/callui-view-incoming-lock.c
deleted file mode 100755 (executable)
index 54ccac3..0000000
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- */
-
-#include <msg.h>
-#include <msg_transport.h>
-#include <vconf.h>
-#include <notification.h>
-#include <Elementary.h>
-
-#include "callui.h"
-#include "callui-view-layout.h"
-#include "callui-view-elements.h"
-#include "callui-view-active-incoming-call.h"
-#include "callui-view-incoming-call.h"
-#include "callui-view-incoming-lock.h"
-#include "callui-common.h"
-#define REJ_MSG_LIST_OPEN_STATUS_KEY "list_open_status_key"
-#define REJ_MSG_GENLIST_DATA "reject_msg_genlist_data"
-
-#define SAFE_C_CAST(type, value) ((type)(ptrdiff_t)value)
-
-static int __callui_view_incoming_lock_oncreate(call_view_data_t *view_data, void *appdata);
-static int __callui_view_incoming_lock_onupdate(call_view_data_t *view_data);
-static int __callui_view_incoming_lock_onshow(call_view_data_t *view_data, void *appdata);
-static int __callui_view_incoming_lock_ondestroy(call_view_data_t *view_data);
-
-call_view_data_t *_callui_view_incoming_lock_new()
-{
-       call_view_data_t *incoming_lock_view = calloc(1, sizeof(call_view_data_t));
-
-       incoming_lock_view->type = VIEW_TYPE_INCOMING_LOCK;
-       incoming_lock_view->layout = NULL;
-       incoming_lock_view->onCreate = __callui_view_incoming_lock_oncreate;
-       incoming_lock_view->onUpdate = __callui_view_incoming_lock_onupdate;
-       incoming_lock_view->onDestroy = __callui_view_incoming_lock_ondestroy;
-       incoming_lock_view->priv = calloc(1, sizeof(incoming_lock_view_priv_t));
-
-       if (!incoming_lock_view->priv) {
-               err("ERROR!!!!!!!!!!!");
-       }
-
-       return incoming_lock_view;
-}
-
-static void __send_reject_msg_status_cb(msg_handle_t Handle, msg_struct_t pStatus, void *pUserParam)
-{
-       CALLUI_RETURN_IF_FAIL(pStatus != NULL);
-       int status = MSG_NETWORK_SEND_FAIL;
-
-       msg_get_int_value(pStatus, MSG_SENT_STATUS_NETWORK_STATUS_INT, &status);
-       dbg("status:[%d]", status);
-}
-
-void _callui_view_incoming_lock_view_send_reject_msg(void *data, call_data_t *call_data)
-{
-       CALLUI_RETURN_IF_FAIL(data != NULL);
-       CALLUI_RETURN_IF_FAIL(call_data != NULL);
-       dbg("..");
-       call_view_data_t *vd = data;
-       callui_app_data_t *ad = _callui_get_app_data();
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-       int slot_id;
-
-       msg_error_t err = MSG_SUCCESS;
-       msg_handle_t msgHandle = NULL;
-
-       if (strlen(priv->reject_msg) == 0) {
-               warn("Is not reject with message case");
-               return;
-       }
-
-       err = msg_open_msg_handle(&msgHandle);
-       if (err != MSG_SUCCESS) {
-               dbg("msg_open_msg_handle()- failed [%d]", err);
-               return;
-       }
-
-       err = msg_reg_sent_status_callback(msgHandle, &__send_reject_msg_status_cb, NULL);
-       if (err != MSG_SUCCESS) {
-               dbg("msg_reg_sent_status_callback()- failed [%d]", err);
-               msg_close_msg_handle(&msgHandle);
-               return;
-       }
-       msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
-       msg_struct_t sendOpt = msg_create_struct(MSG_STRUCT_SENDOPT);
-       msg_struct_t pReq = msg_create_struct(MSG_STRUCT_REQUEST_INFO);
-
-       /* Set message type to SMS reject*/
-       msg_set_int_value(msgInfo, MSG_MESSAGE_TYPE_INT, MSG_TYPE_SMS_REJECT);
-
-       slot_id = ad->sim_slot;
-       dbg("msg_sms_send_message() Sim slot [%d]", slot_id);
-       if (slot_id != -1) {
-               slot_id++;
-               msg_set_int_value(msgInfo, MSG_MESSAGE_SIM_INDEX_INT, slot_id);
-       }
-
-       /* No setting send option */
-       msg_set_bool_value(sendOpt, MSG_SEND_OPT_SETTING_BOOL, FALSE);
-
-       /* Set message body */
-       if (msg_set_str_value(msgInfo, MSG_MESSAGE_SMS_DATA_STR, priv->reject_msg, strlen(priv->reject_msg)) != MSG_SUCCESS) {
-               err("msg_set_str_value() - failed");
-       } else {
-               /* Create address list*/
-               msg_struct_list_s *addr_list;
-               msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void **)&addr_list);
-               msg_struct_t addr_info = addr_list->msg_struct_info[0];
-               char *call_number = call_data->call_num;
-
-               /* Set message address */
-               msg_set_int_value(addr_info, MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);
-               msg_set_str_value(addr_info, MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, call_number, strlen(call_number));
-               addr_list->nCount = 1;
-
-               /* Set message struct to Request*/
-               msg_set_struct_handle(pReq, MSG_REQUEST_MESSAGE_HND, msgInfo);
-               msg_set_struct_handle(pReq, MSG_REQUEST_SENDOPT_HND, sendOpt);
-
-               /* Send message */
-               err = msg_sms_send_message(msgHandle, pReq);
-               if (err != MSG_SUCCESS) {
-                       err("msg_sms_send_message() - failed [%d]", err);
-               } else {
-                       dbg("Sending...");
-               }
-       }
-       msg_close_msg_handle(&msgHandle);
-       msg_release_struct(&pReq);
-       msg_release_struct(&msgInfo);
-       msg_release_struct(&sendOpt);
-
-       return;
-}
-
-static int __callui_view_incoming_lock_oncreate(call_view_data_t *view_data, void *appdata)
-{
-
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       view_data->ad = ad;
-
-       if (_callui_common_get_idle_lock_type() == LOCK_TYPE_UNLOCK && ad->held == NULL
-                       && ad->active == NULL && ad->incom != NULL && ad->active_incoming == false) {
-
-               // TODO commented the active notification, because cannot change window size
-               //_callui_view_active_incoming_call_oncreate(view_data, appdata);
-
-               _callui_view_incoming_call_oncreate(view_data, appdata);
-       } else {
-               _callui_view_incoming_call_oncreate(view_data, appdata);
-       }
-       __callui_view_incoming_lock_onshow(view_data, ad);
-       _callui_common_win_set_noti_type(ad, EINA_TRUE);
-       return 0;
-}
-
-static int __callui_view_incoming_lock_onupdate(call_view_data_t *view_data)
-{
-       dbg("mt-lock view update!!");
-       callui_app_data_t *ad = _callui_get_app_data();
-       __callui_view_incoming_lock_onshow(view_data, ad);
-       return 0;
-}
-
-static int __callui_view_incoming_lock_onshow(call_view_data_t *view_data, void *appdata)
-{
-       dbg("mt-lock view show!!");
-       callui_app_data_t *ad = (callui_app_data_t *) appdata;
-       int result = 0;
-       if (_callui_common_get_idle_lock_type() == LOCK_TYPE_UNLOCK && ad->active == NULL
-                       && ad->held == NULL && ad->incom != NULL && ad->active_incoming == false) {
-
-               // TODO commented the active notification, because cannot change window size
-               /* create active incoming call */
-               //_callui_view_active_incoming_call_draw_screen(ad, view_data);
-
-               _callui_view_incoming_call_draw_screen(ad, view_data);
-       } else {
-               /* create incoming call */
-               _callui_view_incoming_call_draw_screen(ad, view_data);
-       }
-
-       ad->active_incoming = true;
-       evas_object_show(ad->main_ly);
-       result = elm_win_keygrab_set(ad->win, CALLUI_KEY_SELECT, 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST);
-       if (result) {
-               dbg("KEY_SELECT key grab failed");
-       }
-
-       return 0;
-}
-
-static char *__callui_view_incoming_lock_reject_msg_gl_label_get_msg(void *data, Evas_Object *obj, const char *part)
-{
-       CALLUI_RETURN_NULL_IF_FAIL(part);
-       call_view_data_t *vd = (call_view_data_t *)evas_object_data_get(obj, REJ_MSG_GENLIST_DATA);
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, NULL);
-
-       int index = SAFE_C_CAST(int, data);
-       char *msg_str = NULL;
-
-       if (!strcmp(part, "elm.text")) {
-               if (index != -1) {
-                       msg_str = _callui_common_get_reject_msg_by_index(index);
-                       sec_dbg("msg_str(%s)", msg_str);
-                       return msg_str; /*Send markup text to draw the genlist */
-               } else {
-                       warn("invalid index: %d", index);
-                       msg_str = _("IDS_CALL_BODY_NO_MESSAGES");
-                       return strdup(msg_str);
-               }
-       }
-       return NULL;
-}
-
-static void __reject_msg_gl_sel_msg(void *data, Evas_Object *obj, void *event_info)
-{
-       dbg("..");
-       int index = SAFE_C_CAST(int, data);
-       int ret = -1;
-       dbg("index: %d", index);
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad);
-
-       elm_genlist_item_selected_set((Elm_Object_Item *)event_info, EINA_FALSE);
-
-       if (index != -1) {
-               char *reject_msg = NULL;
-               char *ret_str = NULL;
-               call_view_data_t *vd = (call_view_data_t *)evas_object_data_get(obj, REJ_MSG_GENLIST_DATA);
-               CALLUI_RETURN_IF_FAIL(vd);
-               incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-               CALLUI_RETURN_IF_FAIL(priv);
-
-               ret_str =  _callui_common_get_reject_msg_by_index(index);
-               if (ret_str) {
-                       reject_msg = elm_entry_markup_to_utf8(ret_str); /*send utf8 text to MSG */
-                       if (reject_msg != NULL) {
-                               snprintf(priv->reject_msg, sizeof(priv->reject_msg), "%s", reject_msg);
-                               sec_dbg("priv->reject_msg(%s)", priv->reject_msg);
-                               free(reject_msg);
-                       }
-                       free(ret_str);
-               }
-
-               ret = cm_reject_call(ad->cm_handle);
-               if (ret != CM_ERROR_NONE) {
-                       err("cm_reject_call() is failed");
-               } else {
-                       _callui_view_incoming_lock_view_send_reject_msg(vd, ad->incom);
-               }
-       }
-
-       return;
-}
-
-Elm_Object_Item *_callui_view_incoming_lock_append_genlist_item(Evas_Object *msg_glist, Elm_Genlist_Item_Class * itc_reject_msg, int index)
-{
-       Elm_Object_Item *item = NULL;
-       item = elm_genlist_item_append(msg_glist, itc_reject_msg,
-                       SAFE_C_CAST(void *, index), NULL, ELM_GENLIST_ITEM_NONE,
-                       __reject_msg_gl_sel_msg, SAFE_C_CAST(void *, index));
-       return item;
-}
-
-Elm_Genlist_Item_Class *_callui_view_incoming_lock_create_item_class()
-{
-       Elm_Genlist_Item_Class *item_class = elm_genlist_item_class_new();
-       CALLUI_RETURN_VALUE_IF_FAIL(item_class, NULL);
-
-       item_class->item_style = "type1";
-       item_class->func.text_get = __callui_view_incoming_lock_reject_msg_gl_label_get_msg;
-       item_class->func.content_get = NULL;
-       item_class->func.state_get = NULL;
-       item_class->func.del = NULL;
-       return item_class;
-}
-
-static void __callui_view_incoming_lock_create_new_msg_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       CALLUI_RETURN_IF_FAIL(data != NULL);
-       callui_app_data_t *ad = _callui_get_app_data();
-       char *tel_number = NULL;
-       int ret = -1;
-       call_data_t *call_data = NULL;
-
-       call_data = ad->incom;
-       if (call_data != NULL) {
-               tel_number = call_data->call_num;
-               _callui_common_launch_msg_composer(ad, tel_number);
-               ret = cm_reject_call(ad->cm_handle);
-               if (ret != CM_ERROR_NONE) {
-                       err("cm_reject_call() is failed");
-               }
-       }
-}
-
-void _callui_view_incoming_lock_create_reject_msg_button(Evas_Object *parent, char *part, void *data)
-{
-       Evas_Object *msg_button = elm_button_add(parent);
-       CALLUI_RETURN_IF_FAIL(msg_button);
-       elm_object_style_set(msg_button, "default");
-       elm_object_text_set(msg_button,  _("IDS_CALL_BUTTON_COMPOSE_MESSAGE_TO_SEND_ABB"));
-       evas_object_smart_callback_add(msg_button, "clicked",  __callui_view_incoming_lock_create_new_msg_cb, data);
-       elm_object_part_content_set(parent, part,  msg_button);
-       evas_object_show(msg_button);
-}
-
-static int __callui_view_incoming_lock_ondestroy(call_view_data_t *vd)
-{
-       dbg("mt-lock view destroy!!");
-       callui_app_data_t *ad = _callui_get_app_data();
-       incoming_lock_view_priv_t *priv = (incoming_lock_view_priv_t *)vd->priv;
-
-#ifdef _DBUS_DVC_LSD_TIMEOUT_
-       /* Set LCD timeout for call state */
-       /* LCD is alwasy on during incoming call screen */
-       if (ad->speaker_status == EINA_TRUE) {
-               _callui_common_dvc_set_lcd_timeout(LCD_TIMEOUT_SET);
-       }
-#endif
-
-       _callui_common_win_set_noti_type(ad, EINA_FALSE);
-       if (priv != NULL) {
-               if (priv->lock_accept) {
-                       evas_object_del(priv->lock_accept);
-                       priv->lock_accept = NULL;
-               }
-               if (priv->lock_reject) {
-                       evas_object_del(priv->lock_reject);
-                       priv->lock_reject = NULL;
-               }
-
-               if (ad->second_call_popup) {
-                       evas_object_del(ad->second_call_popup);
-                       ad->second_call_popup = NULL;
-               }
-
-               if (priv->itc_reject_msg) {
-                       priv->itc_reject_msg->func.text_get = NULL;
-                       priv->itc_reject_msg->func.content_get = NULL;
-                       priv->itc_reject_msg->func.state_get = NULL;
-                       priv->itc_reject_msg->func.del = NULL;
-                       elm_genlist_item_class_free(priv->itc_reject_msg);
-                       priv->itc_reject_msg = NULL;
-               }
-
-               if (priv->msg_glist) {
-                       elm_genlist_clear(priv->msg_glist);
-                       evas_object_del(priv->msg_glist);
-                       priv->msg_glist = NULL;
-               }
-
-               if (priv->reject_msg_gl) {
-                       evas_object_del(priv->reject_msg_gl);
-                       priv->reject_msg_gl = NULL;
-               }
-
-               _callui_view_incoming_call_ondestroy(priv);
-
-               elm_object_signal_emit(priv->contents, "mt_circle_bg_hide", "mt_view");
-               _callui_common_reset_main_ly_text_fields(priv->contents);
-
-               if (ad->main_ly) {
-                       priv->contents = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-                       if (priv->contents) {
-                               evas_object_del(priv->contents);
-                               priv->contents = NULL;
-                       }
-               }
-
-               if (priv->dimming_ly) {
-                       evas_object_del(priv->dimming_ly);
-                       priv->dimming_ly = NULL;
-               }
-
-               if (ad->win) {
-                       evas_object_resize(ad->win, ad->root_w, ad->root_h);
-               }
-
-               free(priv);
-               priv = NULL;
-       }
-       elm_win_keygrab_unset(ad->win, CALLUI_KEY_SELECT, 0, 0);
-
-       return 0;
-}
-
-Evas_Object *_callui_view_incoming_lock_get_accept_layout(call_view_data_t *vd)
-{
-       incoming_lock_view_priv_t *priv = NULL;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, NULL);
-       priv = (incoming_lock_view_priv_t *) vd->priv;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(priv, NULL);
-       return priv->lock_accept;
-}
-
-void _callui_view_incoming_lock_set_accept_layout(call_view_data_t *vd, Evas_Object *layout)
-{
-       incoming_lock_view_priv_t *priv = NULL;
-
-       CALLUI_RETURN_IF_FAIL(vd);
-       priv = (incoming_lock_view_priv_t *) vd->priv;
-
-       CALLUI_RETURN_IF_FAIL(priv);
-       priv->lock_accept = layout;
-}
-
-Evas_Object *_callui_view_incoming_lock_get_reject_layout(call_view_data_t *vd)
-{
-       incoming_lock_view_priv_t *priv = NULL;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, NULL);
-       priv = (incoming_lock_view_priv_t *) vd->priv;
-
-       CALLUI_RETURN_VALUE_IF_FAIL(priv, NULL);
-       return priv->lock_reject;
-}
-
-void _callui_view_incoming_lock_set_reject_layout(call_view_data_t *vd, Evas_Object *layout)
-{
-       incoming_lock_view_priv_t *priv = NULL;
-
-       CALLUI_RETURN_IF_FAIL(vd);
-       priv = (incoming_lock_view_priv_t *) vd->priv;
-
-       CALLUI_RETURN_IF_FAIL(priv);
-       priv->lock_reject = layout;
-}
index 99b2869..c19399c 100755 (executable)
@@ -159,11 +159,10 @@ static Eina_Bool __lock_timeout_cb(void *data)
 
        priv->no_lock_timer = NULL;
 
-       if (_callui_vm_get_cur_view_type(ad->view_manager_handle) >= VIEW_TYPE_MULTICALL_LIST) {
+       callui_view_type_e type = _callui_vm_get_cur_view_type(ad->view_manager_handle);
+       if (type >= VIEW_TYPE_MULTICALL_LIST) {
                return ECORE_CALLBACK_CANCEL;
-       }
-
-       if (_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_INCOMING_LOCK) {
+       } else if (type == VIEW_TYPE_INCOMING_CALL || type == VIEW_TYPE_INCOMING_CALL_NOTI) {
                return ECORE_CALLBACK_RENEW;
        }
 
index c329089..886f7c0 100644 (file)
 #include "callui-view-dialing.h"
 #include "callui-view-single-call.h"
 #include "callui-view-callend.h"
-#include "callui-view-incoming-lock.h"
+#include "callui-view-incoming-call-noti.h"
+#include "callui-view-incoming-call.h"
 #include "callui-view-multi-call-split.h"
 #include "callui-view-multi-call-conf.h"
 #include "callui-view-multi-call-list.h"
 #include "callui-view-quickpanel.h"
 #include "callui-common.h"
 
-typedef call_view_data_t *(*new_view_data_cb) ();
+typedef call_view_data_base_t *(*new_view_data_cb) ();
 
 struct _callui_vm {
-       new_view_data_cb func_new[VIEW_TYPE_MAX];
-       call_view_data_t *cur_view;
+       call_view_data_base_t *cur_view;
        callui_view_type_e cur_view_type;
        callui_app_data_t *ad;
 };
@@ -38,13 +38,33 @@ typedef struct _callui_vm callui_vm_t;
 
 static int __callui_vm_destroy_cur_view(callui_vm_h vm);
 static int __callui_vm_create_update_view(callui_vm_h vm, callui_view_type_e type);
-static void __callui_vm_init_view_reg_func(callui_vm_h vm,
-               callui_view_type_e view_type,
-               call_view_data_t *(*view_new) ());
 
-static void __callui_vm_init_view_reg_func(callui_vm_h vm, callui_view_type_e view_type, call_view_data_t *(*view_new) ())
+static call_view_data_base_t *_allocate_view(callui_view_type_e view_type)
 {
-       vm->func_new[view_type] = view_new;
+       debug_enter();
+
+       switch (view_type)
+       {
+       case VIEW_TYPE_DIALLING:
+               return (call_view_data_base_t *)_callui_dialing_view_dialing_new();
+       case VIEW_TYPE_INCOMING_CALL_NOTI:
+               return (call_view_data_base_t *)_callui_view_incoming_call_noti_new();
+       case VIEW_TYPE_INCOMING_CALL:
+               return (call_view_data_base_t *)_callui_view_incoming_call_new();
+       case VIEW_TYPE_SINGLECALL:
+               return (call_view_data_base_t *)_callui_view_single_call_new();
+       case VIEW_TYPE_MULTICALL_SPLIT:
+               return (call_view_data_base_t *)_callui_view_multi_call_split_new();
+       case VIEW_TYPE_MULTICALL_CONF:
+               return (call_view_data_base_t *)_callui_view_multi_call_conf_new();
+       case VIEW_TYPE_MULTICALL_LIST:
+               return (call_view_data_base_t *)_callui_view_multi_call_list_new();
+       case VIEW_TYPE_ENDCALL:
+               return (call_view_data_base_t *)_callui_view_callend_new();
+       default:
+               return NULL;
+       }
+       return NULL;
 }
 
 callui_vm_h _callui_vm_create(callui_app_data_t *ad)
@@ -55,14 +75,6 @@ callui_vm_h _callui_vm_create(callui_app_data_t *ad)
 
        CALLUI_RETURN_VALUE_IF_FAIL(vm, NULL);
 
-       __callui_vm_init_view_reg_func(vm, VIEW_TYPE_DIALLING, _callui_dialing_view_dialing_new);
-       __callui_vm_init_view_reg_func(vm, VIEW_TYPE_INCOMING_LOCK, _callui_view_incoming_lock_new);
-       __callui_vm_init_view_reg_func(vm, VIEW_TYPE_SINGLECALL, _callui_view_single_call_new);
-       __callui_vm_init_view_reg_func(vm, VIEW_TYPE_MULTICALL_SPLIT, _callui_view_multi_call_split_new);
-       __callui_vm_init_view_reg_func(vm, VIEW_TYPE_MULTICALL_CONF, _callui_view_multi_call_conf_new);
-       __callui_vm_init_view_reg_func(vm, VIEW_TYPE_MULTICALL_LIST, _callui_view_multi_call_list_new);
-       __callui_vm_init_view_reg_func(vm, VIEW_TYPE_ENDCALL, _callui_view_callend_new);
-
        vm->cur_view_type = VIEW_TYPE_UNDEFINED;
        vm->ad = ad;
 
@@ -89,8 +101,10 @@ callui_view_type_e _callui_vm_get_cur_view_type(callui_vm_h vm)
 
 static int __callui_vm_destroy_cur_view(callui_vm_h vm)
 {
-       int res;
-       call_view_data_t *view = vm->cur_view;
+       int res = CALLUI_RESULT_FAIL;
+
+       call_view_data_base_t *view = vm->cur_view;
+
        CALLUI_RETURN_VALUE_IF_FAIL(view, CALLUI_RESULT_FAIL);
        CALLUI_RETURN_VALUE_IF_FAIL(view->onDestroy, CALLUI_RESULT_FAIL);
 
@@ -98,7 +112,6 @@ static int __callui_vm_destroy_cur_view(callui_vm_h vm)
                res = view->onDestroy(view);
        }
 
-       free(vm->cur_view);
        vm->cur_view = NULL;
        vm->cur_view_type = VIEW_TYPE_UNDEFINED;
 
@@ -107,14 +120,13 @@ static int __callui_vm_destroy_cur_view(callui_vm_h vm)
 
 static int __callui_vm_create_update_view(callui_vm_h vm, callui_view_type_e type)
 {
-       call_view_data_t *view = vm->cur_view;
+       call_view_data_base_t *view = vm->cur_view;
        int res;
 
        if (!view) {
                dbg("Try create new view [%d]", type);
-               CALLUI_RETURN_VALUE_IF_FAIL(vm->func_new[type], CALLUI_RESULT_FAIL);
 
-               view = vm->func_new[type]();
+               view = _allocate_view(type);
                CALLUI_RETURN_VALUE_IF_FAIL(view, CALLUI_RESULT_FAIL);
 
                if (!view->onCreate) {
@@ -122,7 +134,9 @@ static int __callui_vm_create_update_view(callui_vm_h vm, callui_view_type_e typ
                        free(view);
                        return CALLUI_RESULT_FAIL;
                }
+
                res = view->onCreate(view, vm->ad);
+
                if (res != CALLUI_RESULT_OK) {
                        err("onCreate callback failed! res[%d]", res);
                        free(view);
@@ -153,7 +167,7 @@ int _callui_vm_change_view(callui_vm_h vm, callui_view_type_e type)
        callui_view_type_e last_view_type = vm->cur_view_type;
 
        if ((last_view_type != VIEW_TYPE_UNDEFINED) && (last_view_type != type)) {
-               dbg("hide & destroy [%d]", last_view_type);
+               dbg("destroy [%d]", last_view_type);
                res = __callui_vm_destroy_cur_view(vm);
                CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
        }
@@ -163,10 +177,14 @@ int _callui_vm_change_view(callui_vm_h vm, callui_view_type_e type)
 
        vm->cur_view_type = type;
 
-       if (type == VIEW_TYPE_DIALLING || type == VIEW_TYPE_INCOMING_LOCK) {
+       if (type == VIEW_TYPE_DIALLING || type == VIEW_TYPE_INCOMING_CALL) {
                elm_win_activate(vm->ad->win);
        }
 
+       if (type == VIEW_TYPE_INCOMING_CALL_NOTI) {
+               vm->ad->incoming_noti = true;
+       }
+
        if (type != VIEW_TYPE_ENDCALL) {
                // TODO: temp solution. Need to be replaced in future
                _callui_qp_mc_update(vm->ad->qp_minicontrol);
@@ -191,7 +209,18 @@ int _callui_vm_auto_change_view(callui_vm_h vm)
 
        int res;
        if (ad->incom) {
-               res = _callui_vm_change_view(vm, VIEW_TYPE_INCOMING_LOCK);
+
+               callui_view_type_e type = VIEW_TYPE_INCOMING_CALL;
+
+#ifdef ACTIVE_NOTIFICATION_AVAILABLE
+               if (_callui_common_get_idle_lock_type() == LOCK_TYPE_UNLOCK &&
+                               ad->active == NULL &&
+                               ad->held == NULL &&
+                               ad->incoming_noti == false) {
+                       type = VIEW_TYPE_INCOMING_CALL_NOTI;
+               }
+#endif
+               res =_callui_vm_change_view(ad->view_manager_handle, type);
        } else if (ad->active) {
                if (CM_CALL_STATE_DIALING == ad->active->call_state) {
                        res = _callui_vm_change_view(vm, VIEW_TYPE_DIALLING);
index 1fa9853..0d1f178 100755 (executable)
  *
  */
 
+#include <Elementary.h>
 
+#include "callui-view-multi-call-conf.h"
 #include "callui.h"
 #include "callui-common.h"
 #include "callui-view-elements.h"
-#include "callui-view-multi-call-conf.h"
 #include "callui-view-layout.h"
 #include "callui-keypad.h"
 
-#define        CALLUI_VIEW_MULTICALL_CONF_LAYOUT_ID "MULTIVIEWCONF"
-typedef struct {
-       Evas_Object *contents;
+#define CALLUI_BUF_MEMBER_SIZE 512
+#define CALLUI_BUF_STATUS_SIZE 129
+
+struct _callui_view_mc_conf {
+       call_view_data_base_t base_view;
+
        Evas_Object *caller_info;
-       Evas_Object *btn_ly;
-       Evas_Object *manage_calls_ly;
-       Eina_Bool is_held;
-} callui_view_multi_call_conf_priv_t;
+} callui_view_mc_list;
 
-static int __callui_view_multi_call_conf_oncreate(call_view_data_t *view_data, void *appdata);
-static int __callui_view_multi_call_conf_onupdate(call_view_data_t *view_data);
-static int __callui_view_multi_call_conf_onshow(call_view_data_t *view_data,  void *appdata);
-static int __callui_view_multi_call_conf_ondestroy(call_view_data_t *view_data);
+typedef struct _callui_view_mc_conf _callui_view_mc_conf_t;
 
-call_view_data_t *_callui_view_multi_call_conf_new()
+static int __callui_view_multi_call_conf_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int __callui_view_multi_call_conf_onupdate(call_view_data_base_t *view_data);
+static int __callui_view_multi_call_conf_ondestroy(call_view_data_base_t *view_data);
+
+static int __create_main_content(callui_view_mc_conf_h vd);
+static int __update_displayed_data(callui_view_mc_conf_h vd);
+
+static void __manage_calls_btn_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source);
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __more_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+
+callui_view_mc_conf_h _callui_view_multi_call_conf_new()
 {
-       call_view_data_t *multi_call_conf_view = calloc(1, sizeof(call_view_data_t));
-       multi_call_conf_view->type = VIEW_TYPE_MULTICALL_CONF;
-       multi_call_conf_view->layout = NULL;
-       multi_call_conf_view->onCreate = __callui_view_multi_call_conf_oncreate;
-       multi_call_conf_view->onUpdate = __callui_view_multi_call_conf_onupdate;
-       multi_call_conf_view->onDestroy = __callui_view_multi_call_conf_ondestroy;
-
-       multi_call_conf_view->priv = calloc(1, sizeof(callui_view_multi_call_conf_priv_t));
-       if (!multi_call_conf_view->priv) {
-               err("ERROR!!!!!!!!!!! ");
-       }
-       return multi_call_conf_view;
+       debug_enter();
+
+       callui_view_mc_conf_h mc_list_conf = calloc(1, sizeof(_callui_view_mc_conf_t));
+       CALLUI_RETURN_NULL_IF_FAIL(mc_list_conf);
+
+       mc_list_conf->base_view.onCreate = __callui_view_multi_call_conf_oncreate;
+       mc_list_conf->base_view.onUpdate = __callui_view_multi_call_conf_onupdate;
+       mc_list_conf->base_view.onDestroy = __callui_view_multi_call_conf_ondestroy;
+
+       return mc_list_conf;
 }
 
-static void __callui_view_manage_btn_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+static int __create_main_content(callui_view_mc_conf_h vd)
 {
-       dbg("..");
-       callui_app_data_t *ad = _callui_get_app_data();
-       _callui_vm_change_view(ad->view_manager_handle, VIEW_TYPE_MULTICALL_LIST);
-       return;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       /* Main Layout */
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME, GRP_MAIN_LY);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", vd->base_view.contents);
+
+       // TODO: replace this into view manager in nearest future
+       eext_object_event_callback_add(vd->base_view.contents, EEXT_CALLBACK_MORE, __more_btn_click_cb, ad);
+
+       /* Caller info layout */
+       vd->caller_info = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_CALLER_INFO);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->caller_info, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, "caller_info", vd->caller_info);
+
+       /* Manage button Layout */
+       Evas_Object *manage_calls_ly = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_MANAGE_CALLS);
+       CALLUI_RETURN_VALUE_IF_FAIL(manage_calls_ly, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->caller_info, "manage_calls_icon_swallow", manage_calls_ly);
+       edje_object_signal_callback_add(_EDJ(manage_calls_ly), "mouse,clicked,1", "btn", __manage_calls_btn_clicked_cb, vd);
+
+       Evas_Object *btn_layout = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_BUTTON_LAYOUT);
+       CALLUI_RETURN_VALUE_IF_FAIL(btn_layout, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, "btn_region", btn_layout);
+
+       /*create keypad layout*/
+       int res = _callui_keypad_create_layout(ad);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       CALLUI_RETURN_VALUE_IF_FAIL(
+                       _callui_create_end_call_button(vd->base_view.contents, __end_call_btn_click_cb, vd),
+                       CALLUI_RESULT_ALLOCATION_FAIL);
+
+       return res;
+}
+
+static int __callui_view_multi_call_conf_oncreate(call_view_data_base_t *view_data, void *appdata)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_conf_h vd = (callui_view_mc_conf_h)view_data;
+       view_data->ad = (callui_app_data_t *)appdata;
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       return __update_displayed_data(vd);
 }
 
-static void __callui_view_multi_call_conf_draw_screen(Evas_Object *eo, void *data)
+static int __callui_view_multi_call_conf_onupdate(call_view_data_base_t *view_data)
 {
-       dbg("..");
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_conf_h vd = (callui_view_mc_conf_h)view_data;
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-       callui_view_multi_call_conf_priv_t *priv = (callui_view_multi_call_conf_priv_t *)vd->priv;
-       callui_app_data_t *ad = _callui_get_app_data();
-       char buf[512] = { 0, };
+       return __update_displayed_data(vd);
+}
+
+static int __update_displayed_data(callui_view_mc_conf_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       char buf[CALLUI_BUF_MEMBER_SIZE] = { 0 };
+       char status_txt[CALLUI_BUF_STATUS_SIZE] = { 0 };
        call_data_t *call_data = NULL;
-       char status_txt[128 + 1] = { '\0', };
+       Eina_Bool is_held;
 
        if (ad->active) {
                call_data = ad->active;
-               priv->is_held = EINA_FALSE;
+               is_held = EINA_FALSE;
        } else if (ad->held) {
                call_data = ad->held;
-               priv->is_held = EINA_TRUE;
-       } else {
-               err("call data is null");
-               return;
+               is_held = EINA_TRUE;
        }
+       CALLUI_RETURN_VALUE_IF_FAIL(call_data, CALLUI_RESULT_FAIL);
 
-       if (priv->is_held == EINA_TRUE) {
+       if (is_held) {
                snprintf(status_txt, sizeof(status_txt), _("IDS_CALL_BODY_ON_HOLD_ABB"));
                _callui_show_caller_info_status(ad, status_txt);
-               elm_object_signal_emit(priv->caller_info, "set-hold-state", "call-screen");
+               elm_object_signal_emit(vd->caller_info, "set-hold-state", "call-screen");
        } else {
-               /*****deciding the call status according the sim name******/
-               elm_object_signal_emit(priv->caller_info, "set-unhold-state", "call-screen");
+               elm_object_signal_emit(vd->caller_info, "set-unhold-state", "call-screen");
        }
 
-       elm_object_part_content_unset(priv->caller_info, "manage_calls_icon_swallow");
-       elm_object_part_content_set(priv->caller_info, "manage_calls_icon_swallow", priv->manage_calls_ly);
-       evas_object_show(priv->manage_calls_ly);
-       edje_object_signal_callback_del(_EDJ(priv->manage_calls_ly), "mouse,clicked,1", "btn", __callui_view_manage_btn_clicked_cb);
-       edje_object_signal_callback_add(_EDJ(priv->manage_calls_ly), "mouse,clicked,1", "btn", __callui_view_manage_btn_clicked_cb, priv);
-
-       elm_object_signal_emit(priv->caller_info, "set_conference_mode", "");
+       elm_object_signal_emit(vd->caller_info, "set_conference_mode", "");
        _callui_show_caller_info_name(ad, _("IDS_CALL_BODY_CONFERENCE"));
-       char * status = _("IDS_CALL_BODY_WITH_PD_PEOPLE_M_CONFERENCE_CALL_ABB");
-       snprintf(buf, 512, status, call_data->member_count);
+       char *status = _("IDS_CALL_BODY_WITH_PD_PEOPLE_M_CONFERENCE_CALL_ABB");
+       snprintf(buf, CALLUI_BUF_MEMBER_SIZE, status, call_data->member_count);
        _callui_show_caller_info_number(ad, buf);
 
-       if (priv->is_held == EINA_TRUE) {
-               _callui_create_top_second_button_disabled(ad);
-               _callui_create_bottom_second_button_disabled(ad);
+       if (is_held) {
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_second_button_disabled(ad), CALLUI_RESULT_FAIL);
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_second_button_disabled(ad), CALLUI_RESULT_FAIL);
        } else {
-               /*Delete keypad layout - before creating the keypad button again
-                * Since layout are created again in update_cb
-                * to handle rotation use-case*/
-               if (_callui_keypad_get_show_status() == EINA_TRUE) {
+               if (_callui_keypad_get_show_status()) {
                        _callui_keypad_hide_layout(ad);
                }
-
-               _callui_create_top_second_button(ad);
-               _callui_create_bottom_second_button(ad);
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_second_button(ad), CALLUI_RESULT_FAIL);
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_second_button(ad), CALLUI_RESULT_FAIL);
        }
-       _callui_create_top_third_button(ad);
-       _callui_create_bottom_first_button(ad);
-
-       _callui_create_top_first_button(ad);
-       _callui_create_bottom_third_button(ad);
-       elm_object_signal_emit(priv->contents, "SHOW_NO_EFFECT", "ALLBTN");
-       _callui_create_end_call_button(priv->contents, vd);
-       evas_object_show(eo);
-}
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_third_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_first_button(ad), CALLUI_RESULT_FAIL);
 
-static Evas_Object *__callui_view_multi_call_conf_create_contents(void *data, char *group)
-{
-       if (data == NULL) {
-               err("ERROR");
-               return NULL;
-       }
-       callui_app_data_t *ad = (callui_app_data_t *)data;
-       Evas_Object *eo;
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_first_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_third_button(ad), CALLUI_RESULT_FAIL);
 
-       /* load edje */
-       eo = _callui_load_edj(ad->main_ly, EDJ_NAME, group);
-       if (eo == NULL)
-               return NULL;
+       elm_object_signal_emit(vd->base_view.contents, "SHOW_NO_EFFECT", "ALLBTN");
 
-       return eo;
-}
+       evas_object_show(vd->base_view.contents);
 
-static void __callui_view_multi_call_conf_more_btn_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(vd != NULL);
-       _callui_load_more_option(vd);
-       return;
+       evas_object_hide(ad->main_ly);
+       evas_object_show(ad->main_ly);
+
+       return CALLUI_RESULT_OK;
 }
 
-static int __callui_view_multi_call_conf_oncreate(call_view_data_t *view_data, void *appdata)
+static int __callui_view_multi_call_conf_ondestroy(call_view_data_base_t *view_data)
 {
-       callui_view_multi_call_conf_priv_t *priv = (callui_view_multi_call_conf_priv_t *)view_data->priv;
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
 
-       view_data->ad = ad;
+       callui_view_mc_conf_h vd = (callui_view_mc_conf_h)view_data;
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       if (ad->main_ly) {
-               /* Create Main Layout */
-               priv->contents = __callui_view_multi_call_conf_create_contents(ad, GRP_MAIN_LY);
-               elm_object_part_content_set(ad->main_ly, "elm.swallow.content", priv->contents);
-
-               if (priv->contents) {
-                       eext_object_event_callback_del(priv->contents, EEXT_CALLBACK_MORE, __callui_view_multi_call_conf_more_btn_cb);
-               }
-               eext_object_event_callback_add(priv->contents, EEXT_CALLBACK_MORE, __callui_view_multi_call_conf_more_btn_cb, view_data);
+       if (ad->ctxpopup) {
+               elm_ctxpopup_dismiss(ad->ctxpopup);
+               ad->ctxpopup = NULL;
+       }
 
-               priv->caller_info = elm_object_part_content_get(priv->contents, "caller_info");
-               if (!priv->caller_info) {
-                       priv->caller_info = __callui_view_multi_call_conf_create_contents(ad, GRP_CALLER_INFO);
-                       elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
-               }
+       _callui_keypad_delete_layout(ad);
 
-               /* Manage button Layout */
-               priv->manage_calls_ly = elm_object_part_content_get(priv->caller_info, "manage_calls_icon_swallow");
-               if (!priv->manage_calls_ly) {
-                       priv->manage_calls_ly = __callui_view_multi_call_conf_create_contents(ad, GRP_MANAGE_CALLS);
-               }
+       eext_object_event_callback_del(vd->base_view.contents, EEXT_CALLBACK_MORE, __more_btn_click_cb);
 
-               priv->btn_ly = elm_object_part_content_get(priv->contents, "btn_region");
-               if (!priv->btn_ly) {
-                       priv->btn_ly = __callui_view_multi_call_conf_create_contents(ad, GRP_BUTTON_LAYOUT);
-                       elm_object_part_content_set(priv->contents, "btn_region", priv->btn_ly);
-               }
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
 
-               evas_object_name_set(priv->contents, CALLUI_VIEW_MULTICALL_CONF_LAYOUT_ID);
-               dbg("[========== MULTIVIEWCONF: priv->contents Addr : [%p] ==========]", priv->contents);
+       free(vd);
 
-               /*create keypad layout*/
-               _callui_keypad_create_layout(ad);
-       } else {
-               err("ERROR");
-               return -1;
-       }
-
-       __callui_view_multi_call_conf_onshow(view_data, NULL);
-       return 0;
+       return CALLUI_RESULT_OK;
 }
 
-static int __callui_view_multi_call_conf_onupdate(call_view_data_t *view_data)
+static void __manage_calls_btn_clicked_cb(void *data, Evas_Object *o, const char *emission, const char *source)
 {
-       dbg("multicall-conf view update");
+       callui_view_mc_conf_h vd = (callui_view_mc_conf_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       __callui_view_multi_call_conf_onshow(view_data, NULL);
-       return 0;
+       _callui_vm_change_view(ad->view_manager_handle, VIEW_TYPE_MULTICALL_LIST);
+       return;
 }
 
-static int __callui_view_multi_call_conf_onshow(call_view_data_t *view_data,  void *appdata)
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       dbg("multicall-conf view show");
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_view_mc_conf_h vd = (callui_view_mc_conf_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       callui_view_multi_call_conf_priv_t *priv = (callui_view_multi_call_conf_priv_t *)view_data->priv;
-       callui_app_data_t *ad = _callui_get_app_data();
-
-       __callui_view_multi_call_conf_draw_screen(priv->contents, view_data);
-
-       evas_object_hide(ad->main_ly);
-       evas_object_show(ad->main_ly);
-
-       return 0;
+       int ret = cm_end_call(ad->cm_handle, 0, CALL_RELEASE_TYPE_ALL_CALLS);
+       if (ret != CM_ERROR_NONE) {
+               err("cm_end_call() is failed");
+       }
 }
 
-static int __callui_view_multi_call_conf_ondestroy(call_view_data_t *vd)
+static void __more_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, -1);
-       CALLUI_RETURN_VALUE_IF_FAIL(vd->ad, -1);
-
-       callui_app_data_t *ad = vd->ad;
-
-       callui_view_multi_call_conf_priv_t *priv = (callui_view_multi_call_conf_priv_t *)vd->priv;
-
-       if (priv != NULL) {
-               if (ad->ctxpopup) {
-                       elm_ctxpopup_dismiss(ad->ctxpopup);
-                       ad->ctxpopup = NULL;
-               }
-
-               _callui_show_caller_info_number(ad, ""); /*reset the number text*/
-
-               /*Delete keypad layout*/
-               _callui_keypad_delete_layout(ad);
-
-               if (priv->contents) {
-                       eext_object_event_callback_del(priv->contents, EEXT_CALLBACK_MORE, __callui_view_multi_call_conf_more_btn_cb);
-                       _callui_common_reset_main_ly_text_fields(priv->contents);
-               }
-               elm_object_signal_emit(priv->contents, "HIDE_BTN_LY", "ALLBTN");
-
-               if (priv->manage_calls_ly) {
-                       elm_object_part_content_unset(priv->caller_info, "manage_calls_icon_swallow");
-                       edje_object_part_unswallow(_EDJ(priv->caller_info), priv->manage_calls_ly);
-                       evas_object_del(priv->manage_calls_ly);
-                       priv->manage_calls_ly = NULL;
-               }
-
-               free(priv);
-               priv = NULL;
-       }
-
-       return 0;
+       _callui_load_more_option(data);
 }
index 0004890..e3d087c 100755 (executable)
  *
  */
 
-#include "callui-common.h"
+#include <Elementary.h>
+
+#include "callui-view-multi-call-list.h"
 #include "callui.h"
+#include "callui-common.h"
 #include "callui-view-elements.h"
-#include "callui-view-multi-call-list.h"
 #include "callui-view-layout.h"
 
-static Elm_Genlist_Item_Class *itc_call;
-#define        CALLUI_VIEW_MULTICALL_LIST_LAYOUT_ID "MULTIVIEWLIST"
-typedef struct {
-       Evas_Object *contents;
-       Evas_Object *ic;
-       Evas_Object *multibox_gl;
+#define CALLUI_APP_DATA_NAME "multi_call_app_data"
 
+struct _callui_view_mc_list {
+       call_view_data_base_t base_view;
+
+       Evas_Object *call_genlist;
        GSList *call_list;
-} callui_view_multi_call_list_priv_t;
+       Elm_Genlist_Item_Class *call_genlist_itc;
+};
+typedef struct _callui_view_mc_list _callui_view_mc_list_t;
+
+static int __callui_view_multi_call_list_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int __callui_view_multi_call_list_onupdate(call_view_data_base_t *view_data);
+static int __callui_view_multi_call_list_ondestroy(call_view_data_base_t *view_data);
+
+static int __create_main_content(callui_view_mc_list_h vd);
+static int __update_displayed_data(callui_view_mc_list_h vd);
+
+static void __caller_genlist_init_item_class(callui_view_mc_list_h vd);
+static void __caller_genlist_deinit_item_class(callui_view_mc_list_h vd);
+
+static int __caller_genlist_add(callui_view_mc_list_h vd);
+static void __caller_genlist_clear(callui_view_mc_list_h vd);
+static void __caller_genlist_fill(callui_view_mc_list_h vd);
+
+static Evas_Object *__caller_genlist_content_cb(void *data, Evas_Object *obj, const char *part);
+static char *__caller_genlist_txt_cb(void *data, Evas_Object *obj, const char *part);
+
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __split_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+
+static void __back_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __list_free_cb(gpointer data);
+
+callui_view_mc_list_h _callui_view_multi_call_list_new()
+{
+       callui_view_mc_list_h mc_list_view = calloc(1, sizeof(_callui_view_mc_list_t));
+       CALLUI_RETURN_NULL_IF_FAIL(mc_list_view);
+
+       mc_list_view->base_view.onCreate = __callui_view_multi_call_list_oncreate;
+       mc_list_view->base_view.onUpdate = __callui_view_multi_call_list_onupdate;
+       mc_list_view->base_view.onDestroy = __callui_view_multi_call_list_ondestroy;
+
+       return mc_list_view;
+}
+
+static int __callui_view_multi_call_list_oncreate(call_view_data_base_t *view_data, void *appdata)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_list_h vd = (callui_view_mc_list_h)view_data;
+       view_data->ad = (callui_app_data_t *)appdata;
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       return __update_displayed_data(vd);
+}
+
+static int __callui_view_multi_call_list_onupdate(call_view_data_base_t *view_data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_list_h vd = (callui_view_mc_list_h)view_data;
+
+       return __update_displayed_data(vd);
+}
+
+static int __update_displayed_data(callui_view_mc_list_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       g_slist_free_full(vd->call_list, __list_free_cb);
 
-static int __callui_view_multi_call_list_oncreate(call_view_data_t *view_data, void *appdata);
-static int __callui_view_multi_call_list_onupdate(call_view_data_t *view_data);
-static int __callui_view_multi_call_list_onshow(call_view_data_t *view_data,  void *appdata);
-static int __callui_view_multi_call_list_ondestroy(call_view_data_t *view_data);
+       int res = cm_get_conference_call_list(ad->cm_handle, &vd->call_list);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CM_ERROR_NONE, CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->call_list, CALLUI_RESULT_FAIL);
 
-call_view_data_t *_callui_view_multi_call_list_new(callui_app_data_t *ad)
+       __caller_genlist_clear(vd);
+
+       __caller_genlist_init_item_class(vd);
+       __caller_genlist_fill(vd);
+       __caller_genlist_deinit_item_class(vd);
+
+       evas_object_show(vd->base_view.contents);
+
+       evas_object_hide(ad->main_ly);
+       evas_object_show(ad->main_ly);
+
+       return CALLUI_RESULT_OK;
+}
+
+static int __callui_view_multi_call_list_ondestroy(call_view_data_base_t *view_data)
 {
-       call_view_data_t* multi_call_list_view = calloc(1, sizeof(call_view_data_t));
-       multi_call_list_view->type = VIEW_TYPE_MULTICALL_LIST;
-       multi_call_list_view->layout = NULL;
-       multi_call_list_view->onCreate = __callui_view_multi_call_list_oncreate;
-       multi_call_list_view->onUpdate = __callui_view_multi_call_list_onupdate;
-       multi_call_list_view->onDestroy = __callui_view_multi_call_list_ondestroy;
-       multi_call_list_view->priv = calloc(1, sizeof(callui_view_multi_call_list_priv_t));
-       CALLUI_RETURN_VALUE_IF_FAIL(multi_call_list_view->priv, NULL);
-       return multi_call_list_view;
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_list_h vd = (callui_view_mc_list_h)view_data;
+
+       g_slist_free_full(vd->call_list, __list_free_cb);
+
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
+
+       free(vd);
+
+       return CALLUI_RESULT_OK;
 }
 
-static void __callui_view_multi_call_list_small_end_call_cb(void *data, Evas_Object *obj, void *event_info)
+static int __create_main_content(callui_view_mc_list_h vd)
 {
-       dbg("..");
-       callui_app_data_t *ad = _callui_get_app_data();
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME, GRP_MULTICALL);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", vd->base_view.contents);
+
+       // TODO: replace this into view manager in nearest future
+       eext_object_event_callback_add(vd->base_view.contents, EEXT_CALLBACK_BACK, __back_btn_click_cb, ad);
+
+       Evas_Object *back_btn = elm_button_add(vd->base_view.contents);
+       CALLUI_RETURN_VALUE_IF_FAIL(back_btn, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_style_set(back_btn, "bottom");
+       elm_object_text_set(back_btn, _("IDS_CALL_BUTTON_RETURN_TO_CALL_SCREEN_ABB"));
+       elm_object_part_content_set(vd->base_view.contents, "bottom_btn", back_btn);
+       evas_object_smart_callback_add(back_btn, "clicked", __back_btn_click_cb, ad);
+       evas_object_show(back_btn);
+
+       int res = __caller_genlist_add(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       return CALLUI_RESULT_OK;
+}
+
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_app_data_t *ad = (callui_app_data_t *)evas_object_data_get(obj, CALLUI_APP_DATA_NAME);
        CALLUI_RETURN_IF_FAIL(ad);
+
        cm_conf_call_data_t *call_data = (cm_conf_call_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(call_data);
-       int ret = -1;
+
        unsigned int call_id = 0;
        cm_conf_call_data_get_call_id(call_data, &call_id);
-       ret = cm_end_call(ad->cm_handle, call_id, CALL_RELEASE_TYPE_BY_CALL_HANDLE);
+
+       int ret = cm_end_call(ad->cm_handle, call_id, CALL_RELEASE_TYPE_BY_CALL_HANDLE);
        if (ret != CM_ERROR_NONE) {
                err("cm_end_call() get failed with err[%d]", ret);
        }
        ad->multi_call_list_end_clicked = true;
 }
 
-static void __callui_view_multi_call_list_split_call_cb(void *data, Evas_Object *obj, void *event_info)
+static void __split_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       dbg("..");
-       callui_app_data_t *ad = _callui_get_app_data();
+       CALLUI_RETURN_IF_FAIL(data);
+       callui_app_data_t *ad = (callui_app_data_t *)evas_object_data_get(obj, CALLUI_APP_DATA_NAME);
        CALLUI_RETURN_IF_FAIL(ad);
+
        cm_conf_call_data_t *call_data = (cm_conf_call_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(call_data);
-       int ret = -1;
-       unsigned int call_id = 0;
 
+       unsigned int call_id = 0;
        cm_conf_call_data_get_call_id(call_data, &call_id);
-       ret = cm_split_call(ad->cm_handle, call_id);
+
+       int ret = cm_split_call(ad->cm_handle, call_id);
        if (ret != CM_ERROR_NONE) {
                err("cm_split_call() get failed with err[%d]", ret);
        }
 }
 
-static Evas_Object *__callui_view_multi_call_list_gl_icon_get_call(void *data, Evas_Object *obj, const char *part)
+static Evas_Object *__caller_genlist_content_cb(void *data, Evas_Object *obj, const char *part)
 {
+       CALLUI_RETURN_NULL_IF_FAIL(data);
+       callui_app_data_t *ad = (callui_app_data_t *)evas_object_data_get(obj, CALLUI_APP_DATA_NAME);
+       CALLUI_RETURN_NULL_IF_FAIL(ad);
+
        cm_conf_call_data_t *call_data = (cm_conf_call_data_t *)data;
+
        Evas_Object *img = NULL;
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_VALUE_IF_FAIL(ad, NULL);
-       dbg("__callui_view_multi_call_list_gl_icon_get_call %s ", part);
        if ((strcmp(part, "elm.swallow.end") == 0)) {
-               Evas_Object *img = elm_image_add(obj);
+               img = elm_image_add(obj);
                elm_image_file_set(img, EDJ_NAME, GROUP_CALL_BTN_IC_END);
                evas_object_size_hint_min_set(img, ELM_SCALE_SIZE(CALL_BTN_IC_BG_SIZE), ELM_SCALE_SIZE(CALL_BTN_IC_BG_SIZE));
                evas_object_propagate_events_set(img, EINA_FALSE);
-               evas_object_smart_callback_add(img, "clicked", __callui_view_multi_call_list_small_end_call_cb, call_data);
-               return img;
+               evas_object_smart_callback_add(img, "clicked", __end_call_btn_click_cb, call_data);
+               evas_object_data_set(img, CALLUI_APP_DATA_NAME, ad);
        } else if (strcmp(part, "elm.swallow.icon") == 0) {
                if (ad->held || ad->active->member_count < 3) {
                        return NULL;
                }
-               Evas_Object *img = elm_image_add(obj);
+               img = elm_image_add(obj);
                elm_image_file_set(img, EDJ_NAME, GROUP_CALL_BTN_IC_SPLIT);
                evas_object_size_hint_min_set(img, ELM_SCALE_SIZE(CALL_BTN_IC_BG_SIZE), ELM_SCALE_SIZE(CALL_BTN_IC_BG_SIZE));
                evas_object_propagate_events_set(img, EINA_FALSE);
-               evas_object_smart_callback_add(img, "clicked", __callui_view_multi_call_list_split_call_cb, call_data);
-               return img;
+               evas_object_smart_callback_add(img, "clicked", __split_call_btn_click_cb, call_data);
+               evas_object_data_set(img, CALLUI_APP_DATA_NAME, ad);
        } else if ((strcmp(part, "elm.swallow.icon.0") == 0)) {
                call_contact_data_t ct_info = {0,};
                char *file_path = "default";
                int person_id = -1;
 
-               cm_conf_call_data_get_person_id(call_data, &person_id);
-               if (person_id != -1) {
+               int res = cm_conf_call_data_get_person_id(call_data, &person_id);
+               if (res == CM_ERROR_NONE && person_id != -1) {
                        _callui_common_get_contact_info(person_id, &ct_info);
                        if (strlen(ct_info.caller_id_path) > 0) {
                                file_path = ct_info.caller_id_path;
                        }
                }
                img = _callui_create_thumbnail_with_size(obj, file_path, THUMBNAIL_98, true);
-               return img;
-       } else {
-               return NULL;
        }
+       return img;
 }
 
-static char *__callui_view_multi_call_list_gl_label_get_call(void *data, Evas_Object *obj, const char *part)
+static char *__caller_genlist_txt_cb(void *data, Evas_Object *obj, const char *part)
 {
        cm_conf_call_data_t *call_data = (cm_conf_call_data_t *)data;
        int person_id = -1;
        char *call_number = NULL;
-       dbg("__callui_view_multi_call_list_gl_label_get_call %s ", part);
+       dbg("__caller_genlist_txt_cb %s ", part);
        if (strcmp(part, "elm.text") == 0) {
                cm_conf_call_data_get_person_id(call_data, &person_id);
                if (person_id != -1) {
-                       call_contact_data_t ct_info = {0,};
+                       call_contact_data_t ct_info = { 0 };
                        _callui_common_get_contact_info(person_id, &ct_info);
                        if (strlen(ct_info.call_disp_name) > 0) {
                                return strdup(ct_info.call_disp_name);
@@ -148,207 +256,68 @@ static char *__callui_view_multi_call_list_gl_label_get_call(void *data, Evas_Ob
        }
 }
 
-static void __callui_view_multi_call_list_genlist_init(void *data)
+static void __caller_genlist_init_item_class(callui_view_mc_list_h vd)
 {
-       itc_call = elm_genlist_item_class_new();
+       vd->call_genlist_itc = elm_genlist_item_class_new();
 
-       itc_call->item_style = "type1";
-       itc_call->func.text_get = __callui_view_multi_call_list_gl_label_get_call;
-       itc_call->func.content_get = __callui_view_multi_call_list_gl_icon_get_call;
-       itc_call->func.state_get = NULL;
-       itc_call->func.del = NULL;
+       vd->call_genlist_itc->item_style = "type1";
+       vd->call_genlist_itc->func.text_get = __caller_genlist_txt_cb;
+       vd->call_genlist_itc->func.content_get = __caller_genlist_content_cb;
+       vd->call_genlist_itc->func.state_get = NULL;
+       vd->call_genlist_itc->func.del = NULL;
 }
 
-static void __callui_view_multi_call_list_genlist_deinit()
+static void __caller_genlist_deinit_item_class(callui_view_mc_list_h vd)
 {
-       elm_genlist_item_class_free(itc_call);
-       itc_call = NULL;
+       elm_genlist_item_class_free(vd->call_genlist_itc);
+       vd->call_genlist_itc = NULL;
 }
 
-static void __callui_view_multi_call_list_genlist_add(void *data)
+static int __caller_genlist_add(callui_view_mc_list_h vd)
 {
-       call_view_data_t *vd = data;
-       callui_view_multi_call_list_priv_t *priv = (callui_view_multi_call_list_priv_t *)vd->priv;
-       Evas_Object *genlist = NULL;
-
-       genlist = elm_genlist_add(priv->contents);
+       Evas_Object *genlist = elm_genlist_add(vd->base_view.contents);
+       CALLUI_RETURN_VALUE_IF_FAIL(genlist, CALLUI_RESULT_ALLOCATION_FAIL);
        evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
        evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       elm_object_part_content_set(vd->base_view.contents, "swl_calllist", genlist);
+       evas_object_data_set(genlist, CALLUI_APP_DATA_NAME, vd->base_view.ad);
+       vd->call_genlist = genlist;
+
+       return CALLUI_RESULT_OK;
 
-       elm_object_part_content_set(priv->contents, "swl_calllist", genlist);
-       priv->multibox_gl = genlist;
 }
 
-static void __callui_view_multi_call_list_genlist_delete(void *data)
+static void __caller_genlist_clear(callui_view_mc_list_h vd)
 {
-       call_view_data_t *vd = data;
-       callui_view_multi_call_list_priv_t *priv = (callui_view_multi_call_list_priv_t *)vd->priv;
-       if (priv->multibox_gl != NULL) {
-               elm_genlist_clear(priv->multibox_gl);
-               evas_object_del(priv->multibox_gl);
-               priv->multibox_gl = NULL;
+       if (vd->call_genlist != NULL) {
+               elm_genlist_clear(vd->call_genlist);
        }
 }
 
-void __callui_view_multi_call_list_genlist_item_append(void *data)
+static void __caller_genlist_fill(callui_view_mc_list_h vd)
 {
-       dbg("..");
+       CALLUI_RETURN_IF_FAIL(vd->call_list);
+
+       int list_len = g_slist_length(vd->call_list);
        Elm_Object_Item *item = NULL;
-       callui_app_data_t *ad = _callui_get_app_data();
-       CALLUI_RETURN_IF_FAIL(ad);
-       call_view_data_t *vd = data;
-       CALLUI_RETURN_IF_FAIL(vd);
-       callui_view_multi_call_list_priv_t *priv = (callui_view_multi_call_list_priv_t *)vd->priv;
-       CALLUI_RETURN_IF_FAIL(priv);
-       int list_len = 0;
-       int idx = 0;
        cm_conf_call_data_t *call_data = NULL;
+       int idx = 0;
 
-       CALLUI_RETURN_IF_FAIL(priv->call_list);
-       list_len = g_slist_length(priv->call_list);
-       for (idx = 0; idx < list_len; idx++) {
-               call_data = (cm_conf_call_data_t *)g_slist_nth_data(priv->call_list, idx);
-               item = elm_genlist_item_append(priv->multibox_gl, itc_call, (void *)call_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       for (; idx < list_len; idx++) {
+               call_data = (cm_conf_call_data_t *)g_slist_nth_data(vd->call_list, idx);
+               item = elm_genlist_item_append(vd->call_genlist, vd->call_genlist_itc, (void *)call_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
                elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
        }
 }
 
-static void __callui_view_multi_call_list_back_cb(void *data, Evas_Object *obj, void *event_info)
+static void __back_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
        callui_app_data_t *ad = (callui_app_data_t *)data;
        _callui_vm_auto_change_view(ad->view_manager_handle);
 }
 
-static Evas_Object *__callui_view_multi_call_list_create_contents(Evas_Object *parent, char *group)
-{
-       Evas_Object *eo;
-
-       if (parent == NULL) {
-               err("ERROR");
-               return NULL;
-       }
-
-       /* load edje */
-       eo = _callui_load_edj(parent, EDJ_NAME, group);
-       if (eo == NULL)
-               return NULL;
-
-       return eo;
-}
-
-static int __callui_view_multi_call_list_oncreate(call_view_data_t *view_data, void *appdata)
-{
-       dbg("multicall-list view create");
-
-       view_data->ad = (callui_app_data_t *)appdata;
-
-       __callui_view_multi_call_list_onshow(view_data, NULL);
-
-       return 0;
-}
-
-static void __callui_view_multi_call_list_free_cb(gpointer data)
+static void __list_free_cb(gpointer data)
 {
        cm_conf_call_data_t *call_data = (cm_conf_call_data_t *)data;
        cm_conf_call_data_free(call_data);
 }
-
-static int __callui_view_multi_call_list_onupdate(call_view_data_t *view_data)
-{
-       dbg("multicall-list view update");
-
-       callui_app_data_t *ad = _callui_get_app_data();
-       callui_view_multi_call_list_priv_t *priv = (callui_view_multi_call_list_priv_t *)view_data->priv;
-       GSList *list = NULL;
-
-       __callui_view_multi_call_list_genlist_delete(view_data);
-       g_slist_free_full(priv->call_list, __callui_view_multi_call_list_free_cb);
-
-       cm_get_conference_call_list(ad->cm_handle, &list);
-       CALLUI_RETURN_VALUE_IF_FAIL(list, -1);
-       priv->call_list = list;
-       __callui_view_multi_call_list_genlist_add(view_data);
-       __callui_view_multi_call_list_genlist_init(view_data);
-       __callui_view_multi_call_list_genlist_item_append(view_data);
-       __callui_view_multi_call_list_genlist_deinit();
-
-       elm_object_signal_emit(priv->contents, "set_portrait", "multicall_list_layout");
-       evas_object_show(priv->contents);
-       evas_object_hide(ad->main_ly);
-       evas_object_show(ad->main_ly);
-       return 0;
-}
-
-static int __callui_view_multi_call_list_onshow(call_view_data_t *view_data,  void *appdata)
-{
-       dbg("multicall-list view show");
-
-       callui_app_data_t *ad = _callui_get_app_data();
-       callui_view_multi_call_list_priv_t *priv = (callui_view_multi_call_list_priv_t *)view_data->priv;
-       Evas_Object *back_btn = NULL;
-
-       priv->contents = elm_object_part_content_get(ad->main_ly, "elm.swallow.content");
-       if (priv->contents) {
-               elm_object_part_content_unset(ad->main_ly, "elm.swallow.content");
-               evas_object_del(priv->contents);
-               priv->contents = NULL;
-       }
-       priv->contents = __callui_view_multi_call_list_create_contents(ad->main_ly, GRP_MULTICALL);
-       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", priv->contents);
-       view_data->layout = priv->contents;
-
-       __callui_view_multi_call_list_genlist_add(view_data);
-       __callui_view_multi_call_list_genlist_init(view_data);
-
-       cm_get_conference_call_list(ad->cm_handle, &priv->call_list);
-       __callui_view_multi_call_list_genlist_item_append(view_data);
-       __callui_view_multi_call_list_genlist_deinit();
-
-       back_btn = elm_button_add(priv->contents);
-       elm_object_style_set(back_btn, "bottom");
-       elm_object_text_set(back_btn, _("IDS_CALL_BUTTON_RETURN_TO_CALL_SCREEN_ABB"));
-       elm_object_part_content_set(priv->contents, "bottom_btn", back_btn);
-
-       evas_object_smart_callback_del(back_btn, "clicked", __callui_view_multi_call_list_back_cb);
-       evas_object_smart_callback_add(back_btn, "clicked", __callui_view_multi_call_list_back_cb, ad);
-
-       evas_object_show(back_btn);
-       eext_object_event_callback_add(priv->contents, EEXT_CALLBACK_BACK, __callui_view_multi_call_list_back_cb, ad);
-
-       evas_object_name_set(priv->contents, CALLUI_VIEW_MULTICALL_LIST_LAYOUT_ID);
-       dbg("[========== MULTIVIEWLIST: priv->contents Addr : [%p] ==========]", priv->contents);
-
-       elm_object_signal_emit(priv->contents, "set_portrait", "multicall_list_layout");
-
-       evas_object_show(priv->contents);
-       evas_object_hide(ad->main_ly);
-       evas_object_show(ad->main_ly);
-       return 0;
-}
-
-static int __callui_view_multi_call_list_ondestroy(call_view_data_t *vd)
-{
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, -1);
-       CALLUI_RETURN_VALUE_IF_FAIL(vd->ad, -1);
-
-       callui_app_data_t *ad = vd->ad;
-
-       callui_view_multi_call_list_priv_t *priv = (callui_view_multi_call_list_priv_t *)vd->priv;
-
-       if (priv != NULL) {
-               __callui_view_multi_call_list_genlist_delete(vd);
-
-               g_slist_free_full(priv->call_list, __callui_view_multi_call_list_free_cb);
-
-               if (priv->contents) {
-                       evas_object_del(priv->contents);
-                       priv->contents = NULL;
-               }
-               elm_object_part_content_unset(ad->main_ly, "elm.swallow.content");
-               free(priv);
-               priv = NULL;
-       }
-       vd->layout = NULL;
-
-       return 0;
-}
index 800e32e..ae4bc3d 100755 (executable)
  *
  */
 
-#include "callui.h"
+#include <Elementary.h>
+
 #include "callui-view-multi-call-split.h"
+#include "callui.h"
 #include "callui-keypad.h"
 #include "callui-common.h"
 #include "callui-view-caller-info-defines.h"
 
 #define BUF_SIZE 256
 
-typedef struct {
-       Evas_Object *contents;
-} incall_multi_view_split_priv_t;
+struct _callui_view_mc_split {
+       call_view_data_base_t base_view;
+
+       Evas_Object *caller_info;
+
+       Evas_Object *hold_layout;
+       Evas_Object *active_layout;
+};
+typedef struct _callui_view_mc_split _callui_view_mc_split_t;
+
+static int _callui_view_multi_call_split_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int _callui_view_multi_call_split_onupdate(call_view_data_base_t *view_data);
+static int _callui_view_multi_call_split_ondestroy(call_view_data_base_t *view_data);
+
+static int __create_main_content(callui_view_mc_split_h vd);
+static int __update_displayed_data(callui_view_mc_split_h vd);
+
+static Evas_Object *__create_merge_swap_btn(Evas_Object *parent, const char *name, const char *text);
+
+static void __update_hold_active_layout(Evas_Object *layout, call_data_t *call_data);
+static void __fill_one_contact_layout(Evas_Object *parent, call_data_t *call_data);
+static void __fill_conference_layout(Evas_Object *parent, call_data_t *call_data);
+static void __set_hold_info(Evas_Object *parent, Evas_Object *content);
+static void __set_active_info(Evas_Object *parent, Evas_Object *content, callui_app_data_t *ad);
+
+static int __create_merge_swap_btns(Evas_Object *parent, callui_app_data_t *ad);
+
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __mng_callers_btn_click_cb(void *data, Evas_Object *obj, const char *emission, const char *src);
+static void __merge_btn_click_cb(void *data, Evas_Object *obj, const char *emission, const char *src);
+static void __swap_btn_click_cb(void *data, Evas_Object *obj, const char *emission, const char *src);
+
+callui_view_mc_split_h _callui_view_multi_call_split_new()
+{
+       callui_view_mc_split_h mc_split_view = calloc(1, sizeof(_callui_view_mc_split_t));
+       CALLUI_RETURN_NULL_IF_FAIL(mc_split_view);
+
+       mc_split_view->base_view.onCreate = _callui_view_multi_call_split_oncreate;
+       mc_split_view->base_view.onUpdate = _callui_view_multi_call_split_onupdate;
+       mc_split_view->base_view.onDestroy = _callui_view_multi_call_split_ondestroy;
+
+       return mc_split_view;
+}
+
+static int _callui_view_multi_call_split_oncreate(call_view_data_base_t *view_data, void *appdata)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_split_h vd = (callui_view_mc_split_h)view_data;
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
+
+       vd->base_view.ad = ad;
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       _callui_lock_manager_start(ad->lock_handle);
+
+       return __update_displayed_data(vd);
+}
+
+static int _callui_view_multi_call_split_onupdate(call_view_data_base_t *view_data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_split_h vd = (callui_view_mc_split_h)view_data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       _callui_lock_manager_start(ad->lock_handle);
+
+       return  __update_displayed_data(vd);
+}
+
+static int _callui_view_multi_call_split_ondestroy(call_view_data_base_t *view_data)
+{
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       callui_view_mc_split_h vd = (callui_view_mc_split_h)view_data;
 
-static Evas_Object *_create_merge_swap_btn(Evas_Object *parent, const char *name, const char *text);
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
 
-static Evas_Object *_create_hold_active_layout(Evas_Object *parent, call_data_t *call_data);
-static void _fill_one_contact_layout(Evas_Object *parent, call_data_t *call_data);
-static void _fill_conference_layout(Evas_Object *parent, call_data_t *call_data);
+       free(vd);
 
-static void _set_hold_info(Evas_Object *parent, Evas_Object *content);
-static void _set_active_info(Evas_Object *parent, Evas_Object *content, callui_app_data_t *ad);
-static void _set_merge_swap(Evas_Object *parent, callui_app_data_t *ad);
+       return CALLUI_RESULT_OK;
+}
+
+
+static int __create_main_content(callui_view_mc_split_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME, GROUP_SPLIT);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", vd->base_view.contents);
+
+       vd->caller_info = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GROUP_ONE_HOLD_IN_CONFERENCE);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->caller_info, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, PART_SWALLOW_CALL_INFO, vd->caller_info);
 
-static void _create_btn_region(Evas_Object *parent);
+       vd->hold_layout = _callui_load_edj(vd->caller_info, EDJ_NAME, GROUP_ACTIVE_HOLD_INFO);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->hold_layout, CALLUI_RESULT_ALLOCATION_FAIL);
 
-static Evas_Object *_create_call_info_layout(Evas_Object *parent, callui_app_data_t *ad);
-static Evas_Object *_create_split_layout(Evas_Object *parent, callui_app_data_t *ad);
+       vd->active_layout = _callui_load_edj(vd->caller_info, EDJ_NAME, GROUP_ACTIVE_HOLD_INFO);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->active_layout, CALLUI_RESULT_ALLOCATION_FAIL);
 
-static Evas_Object *_create_split_view(Evas_Object *parent, callui_app_data_t *ad);
+       int res = __create_merge_swap_btns(vd->caller_info, ad);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-static void _callui_view_multi_call_split_draw_screen(Evas_Object *eo, void *data);
+       Evas_Object *btn_region = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_BUTTON_LAYOUT);
+       CALLUI_RETURN_VALUE_IF_FAIL(btn_region, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, PART_SWALLOW_BTN_REGION, btn_region);
 
-static void _manage_callers_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
-static void _merge_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
-static void _swap_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
+       res = _callui_keypad_create_layout(ad);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-static int _callui_view_multi_call_split_oncreate(call_view_data_t *view_data, void *appdata);
-static int _callui_view_multi_call_split_onupdate(call_view_data_t *view_data);
-static int _callui_view_multi_call_split_onshow(call_view_data_t *view_data, void *appdata);
-static int _callui_view_multi_call_split_ondestroy(call_view_data_t *view_data);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_end_call_button(vd->base_view.contents,
+                       __end_call_btn_click_cb, vd), CALLUI_RESULT_ALLOCATION_FAIL);
 
-static Evas_Object *_create_merge_swap_btn(Evas_Object *parent, const char *name, const char *text)
+       return res;
+}
+
+static Evas_Object *__create_merge_swap_btn(Evas_Object *parent, const char *name, const char *text)
 {
        Evas_Object *layout = elm_layout_add(parent);
        elm_layout_file_set(layout, EDJ_NAME, name);
@@ -66,28 +158,22 @@ static Evas_Object *_create_merge_swap_btn(Evas_Object *parent, const char *name
        return layout;
 }
 
-static Evas_Object *_create_hold_active_layout(Evas_Object *parent, call_data_t *call_data)
+static void __update_hold_active_layout(Evas_Object *layout, call_data_t *call_data)
 {
-       Evas_Object *layout = elm_layout_add(parent);
-       elm_layout_file_set(layout, EDJ_NAME, GROUP_ACTIVE_HOLD_INFO);
-
        if (call_data->member_count == 1) {
-               _fill_one_contact_layout(layout, call_data);
+               __fill_one_contact_layout(layout, call_data);
        } else {
-               _fill_conference_layout(layout, call_data);
+               __fill_conference_layout(layout, call_data);
        }
-
-       return layout;
 }
 
-static void _fill_one_contact_layout(Evas_Object *parent, call_data_t *call_data)
+static void __fill_one_contact_layout(Evas_Object *parent, call_data_t *call_data)
 {
        const char *pic_path = call_data->call_ct_info.caller_id_path;
        const char *main_text = call_data->call_ct_info.call_disp_name;
        const char *sub_text = call_data->call_num;
-       Evas_Object *thumbnail = NULL;
 
-       thumbnail = _callui_create_thumbnail(parent, pic_path, THUMBNAIL_138);
+       Evas_Object *thumbnail = _callui_create_thumbnail(parent, pic_path, THUMBNAIL_138);
        elm_object_part_content_set(parent, PART_SWALLOW_CALLER_ID, thumbnail);
 
        if (main_text && *main_text) {
@@ -95,13 +181,12 @@ static void _fill_one_contact_layout(Evas_Object *parent, call_data_t *call_data
                elm_object_part_text_set(parent, PART_TEXT_SUB, sub_text);
        } else {
                elm_object_part_text_set(parent, PART_TEXT_MAIN, sub_text);
+               elm_object_part_text_set(parent, PART_TEXT_SUB, "");
        }
 }
 
-static void _fill_conference_layout(Evas_Object *parent, call_data_t *call_data)
+static void __fill_conference_layout(Evas_Object *parent, call_data_t *call_data)
 {
-       CALLUI_RETURN_IF_FAIL(call_data);
-
        Evas_Object *thumbnail = _callui_create_thumbnail(parent, NULL, CONFERENCE_THUMBNAIL_138);
        elm_object_part_content_set(parent, PART_SWALLOW_CALLER_ID, thumbnail);
 
@@ -113,7 +198,7 @@ static void _fill_conference_layout(Evas_Object *parent, call_data_t *call_data)
        elm_object_part_text_set(parent, PART_TEXT_SUB, buffer);
 }
 
-static void _set_hold_info(Evas_Object *parent, Evas_Object *content)
+static void __set_hold_info(Evas_Object *parent, Evas_Object *content)
 {
        elm_object_part_text_set(content, PART_TEXT_STATUS, _("IDS_CALL_BODY_ON_HOLD_ABB"));
 
@@ -121,7 +206,7 @@ static void _set_hold_info(Evas_Object *parent, Evas_Object *content)
        elm_object_signal_emit(content, SIGNAL_SET_BLURRED_BACKGROUND, "");
 }
 
-static void _set_active_info(Evas_Object *parent, Evas_Object *content, callui_app_data_t *ad)
+static void __set_active_info(Evas_Object *parent, Evas_Object *content, callui_app_data_t *ad)
 {
        elm_object_part_text_set(content, PART_TEXT_STATUS, _("IDS_CALL_BODY_CONNECTED_M_STATUS_ABB"));
 
@@ -129,168 +214,86 @@ static void _set_active_info(Evas_Object *parent, Evas_Object *content, callui_a
        elm_object_signal_emit(content, SIGNAL_SET_TRANSPARENT_BACKGROUND, "");
        if (ad->active->member_count > 1) {
                elm_object_signal_emit(content, SIGNAL_SHOW_ARROW, "");
-               elm_object_signal_callback_add(content, "mouse,up,*", "arrow", _manage_callers_cb, ad);
+               elm_object_signal_callback_add(content, "mouse,up,*", "arrow", __mng_callers_btn_click_cb, ad);
        }
 }
 
-static void _set_merge_swap(Evas_Object *parent, callui_app_data_t *ad)
+static int __create_merge_swap_btns(Evas_Object *parent, callui_app_data_t *ad)
 {
-       Evas_Object *merge = _create_merge_swap_btn(parent, GROUP_MERGE_BTN, _("IDS_CALL_BODY_MERGE_T_CALL"));
+       Evas_Object *merge = __create_merge_swap_btn(parent, GROUP_MERGE_BTN, _("IDS_CALL_BODY_MERGE_T_CALL"));
+       CALLUI_RETURN_VALUE_IF_FAIL(merge, CALLUI_RESULT_ALLOCATION_FAIL);
        elm_object_part_content_set(parent, PART_SWALLOW_MERGE, merge);
-       elm_object_signal_callback_add(merge, "mouse,clicked,*", "*", _merge_cb, ad);
+       elm_object_signal_callback_add(merge, "mouse,clicked,*", "*", __merge_btn_click_cb, ad);
 
-       Evas_Object *swap = _create_merge_swap_btn(parent, GROUP_SWAP_BTN, _("IDS_CALL_SK_MULTICALL_SWAP"));
+       Evas_Object *swap = __create_merge_swap_btn(parent, GROUP_SWAP_BTN, _("IDS_CALL_SK_MULTICALL_SWAP"));
+       CALLUI_RETURN_VALUE_IF_FAIL(merge, CALLUI_RESULT_ALLOCATION_FAIL);
        elm_object_part_content_set(parent, PART_SWALLOW_SWAP, swap);
-       elm_object_signal_callback_add(swap, "mouse,clicked,*", "*", _swap_cb, ad);
-}
+       elm_object_signal_callback_add(swap, "mouse,clicked,*", "*", __swap_btn_click_cb, ad);
 
-static void _create_btn_region(Evas_Object *parent)
-{
-       Evas_Object *btn_region = elm_layout_add(parent);
-       elm_layout_file_set(btn_region, EDJ_NAME, GRP_BUTTON_LAYOUT);
-       elm_object_part_content_set(parent, PART_SWALLOW_BTN_REGION, btn_region);
+       return CALLUI_RESULT_OK;
 }
 
-static Evas_Object *_create_call_info_layout(Evas_Object *parent, callui_app_data_t *ad)
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
 {
-       Evas_Object *one_hold_layout = elm_layout_add(parent);
-       elm_layout_file_set(one_hold_layout, EDJ_NAME, GROUP_ONE_HOLD_IN_CONFERENCE);
+       CALLUI_RETURN_IF_FAIL(data);
 
-       Evas_Object *hold_layout = _create_hold_active_layout(one_hold_layout, ad->held);
-       Evas_Object *active_layout = _create_hold_active_layout(one_hold_layout, ad->active);
+       callui_view_mc_split_h vd = (callui_view_mc_split_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       _set_hold_info(one_hold_layout, hold_layout);
-       _set_active_info(one_hold_layout, active_layout, ad);
-
-       _set_merge_swap(one_hold_layout, ad);
-
-       return one_hold_layout;
+       int ret = cm_end_call(ad->cm_handle, 0, CALL_RELEASE_TYPE_ALL_ACTIVE_CALLS);
+       if (ret != CM_ERROR_NONE) {
+               err("cm_end_call() is failed");
+       }
 }
 
-static Evas_Object *_create_split_layout(Evas_Object *parent, callui_app_data_t *ad)
+static int __update_displayed_data(callui_view_mc_split_h vd)
 {
-       Evas_Object *split_layout = elm_layout_add(parent);
-       elm_layout_file_set(split_layout, EDJ_NAME, GROUP_SPLIT);
+       callui_app_data_t *ad = vd->base_view.ad;
 
-       Evas_Object *call_info_layout = _create_call_info_layout(parent, ad);
-       elm_object_part_content_set(split_layout, PART_SWALLOW_CALL_INFO, call_info_layout);
+       __update_hold_active_layout(vd->hold_layout, ad->held);
+       __set_hold_info(vd->caller_info, vd->hold_layout);
 
-       _create_btn_region(split_layout);
+       __update_hold_active_layout(vd->active_layout, ad->active);
+       __set_active_info(vd->caller_info, vd->active_layout, ad);
 
-       return split_layout;
-}
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_first_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_second_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_third_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_first_button_disabled(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_second_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_third_button(ad), CALLUI_RESULT_FAIL);
 
-static Evas_Object *_create_split_view(Evas_Object *parent, callui_app_data_t *ad)
-{
-       Evas_Object *split_layout = _create_split_layout(parent, ad);
-       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", split_layout);
+       evas_object_show(vd->base_view.contents);
 
-       _callui_keypad_create_layout(ad);
+       evas_object_hide(ad->main_ly);
+       evas_object_show(ad->main_ly);
 
-       return split_layout;
+       return CALLUI_RESULT_OK;
 }
 
-static void _callui_view_multi_call_split_draw_screen(Evas_Object *eo, void *data)
+static void __mng_callers_btn_click_cb(void *data, Evas_Object *obj, const char *emission, const char *src)
 {
-       dbg("..");
-       call_view_data_t *vd = data;
-       incall_multi_view_split_priv_t *priv = vd->priv;
-       callui_app_data_t *ad = _callui_get_app_data();
-
-       priv->contents = _create_split_view(ad->main_ly, ad);
+       callui_app_data_t *ad = (callui_app_data_t *)data;
 
-       _callui_create_top_first_button(ad);
-       _callui_create_top_second_button(ad);
-       _callui_create_top_third_button(ad);
-       _callui_create_bottom_first_button_disabled(ad);
-       _callui_create_bottom_second_button(ad);
-       _callui_create_bottom_third_button(ad);
-
-       _callui_create_end_call_button(priv->contents, vd);
-}
-
-static void _manage_callers_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
-{
-       callui_app_data_t *ad = data;
        _callui_vm_change_view(ad->view_manager_handle, VIEW_TYPE_MULTICALL_LIST);
 }
 
-static void _merge_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+static void __merge_btn_click_cb(void *data, Evas_Object *obj, const char *emission, const char *src)
 {
-       callui_app_data_t *ad = data;
+       callui_app_data_t *ad = (callui_app_data_t *)data;
+
        int ret = cm_join_call(ad->cm_handle);
        if (ret != CM_ERROR_NONE) {
                err("cm_join_call() is failed");
        }
 }
 
-static void _swap_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+static void __swap_btn_click_cb(void *data, Evas_Object *obj, const char *emission, const char *src)
 {
-       callui_app_data_t *ad = data;
+       callui_app_data_t *ad = (callui_app_data_t *)data;
+
        int ret = cm_swap_call(ad->cm_handle);
        if (ret != CM_ERROR_NONE) {
                err("cm_swap_call() is failed");
        }
 }
-
-static int _callui_view_multi_call_split_oncreate(call_view_data_t *view_data, void *appdata)
-{
-       dbg("multi-split view create");
-
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       view_data->ad = ad;
-
-       _callui_view_multi_call_split_onshow(view_data, ad);
-       _callui_lock_manager_start(ad->lock_handle);
-
-       return 0;
-}
-
-static int _callui_view_multi_call_split_onupdate(call_view_data_t *view_data)
-{
-       dbg("multi-split view update");
-       callui_app_data_t *ad = _callui_get_app_data();
-       _callui_view_multi_call_split_onshow(view_data, ad);
-       _callui_lock_manager_start(ad->lock_handle);
-       return 0;
-}
-
-static int _callui_view_multi_call_split_onshow(call_view_data_t *view_data, void *appdata)
-{
-       dbg("multi-split view show");
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       incall_multi_view_split_priv_t *priv = (incall_multi_view_split_priv_t *)view_data->priv;
-       _callui_view_multi_call_split_draw_screen(priv->contents, view_data);
-
-       evas_object_hide(ad->main_ly);
-       evas_object_show(ad->main_ly);
-
-       return 0;
-}
-
-static int _callui_view_multi_call_split_ondestroy(call_view_data_t *vd)
-{
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, -1);
-
-       free(vd->priv);
-       vd->priv = NULL;
-
-       return 0;
-}
-
-call_view_data_t *_callui_view_multi_call_split_new()
-{
-       call_view_data_t *multi_call_split_view = calloc(1, sizeof(call_view_data_t));
-
-       multi_call_split_view->type = VIEW_TYPE_MULTICALL_SPLIT;
-       multi_call_split_view->layout = NULL;
-       multi_call_split_view->onCreate = _callui_view_multi_call_split_oncreate;
-       multi_call_split_view->onUpdate = _callui_view_multi_call_split_onupdate;
-       multi_call_split_view->onDestroy = _callui_view_multi_call_split_ondestroy;
-       multi_call_split_view->priv = calloc(1, sizeof(incall_multi_view_split_priv_t));
-       if (!multi_call_split_view->priv) {
-               err("ERROR!");
-       }
-
-       return multi_call_split_view;
-}
index 83f9205..b46c627 100755 (executable)
@@ -26,7 +26,6 @@
 #include "callui-view-layout.h"
 #include "callui-common.h"
 
-#define VIEW_QUICKPANEL_LAYOUT_ID "QUICKPANELVIEW"
 #define TXT_TIMER_BUF_LEN 26
 #define CALL_NUMBER_ONE 1
 #define QP_WIN_H 172
@@ -552,7 +551,6 @@ static int __callui_qp_mc_activate(callui_qp_mc_h qp)
                }
 
                elm_win_resize_object_add(qp->win_quickpanel, qp->quickpanel_layout);
-               evas_object_name_set(qp->quickpanel_layout, VIEW_QUICKPANEL_LAYOUT_ID);
                evas_object_event_callback_add(qp->quickpanel_layout, EVAS_CALLBACK_MOUSE_UP, __callui_qp_mc_launch_top_view_cb, qp);
        }
 
index 05d0735..0f3852e 100644 (file)
  *
  */
 
-#include "callui.h"
+#include <Elementary.h>
+
 #include "callui-view-single-call.h"
+#include "callui.h"
 #include "callui-view-elements.h"
 #include "callui-keypad.h"
 #include "callui-common.h"
 
-#define         VIEW_SINGLE_CALL_LAYOUT_ID "ONEVIEW"
+#define         VIEW_SINGLE_CALL_STATUS_TXT_LEN 129
+
+struct _call_view_single_call {
+       call_view_data_base_t base_view;
 
-struct incall_one_view_priv {
-       Evas_Object *contents;
        Evas_Object *caller_info;
-       Evas_Object *btn_ly;
-       Evas_Object *ic;
 };
-typedef struct incall_one_view_priv incall_one_view_priv_t;
+typedef struct _call_view_single_call _call_view_single_call_t;
 
-static int __callui_view_single_call_oncreate(call_view_data_t *view_data, void *appdata);
-static int __callui_view_single_call_onupdate(call_view_data_t *view_data);
-static int __callui_view_single_call_onshow(call_view_data_t *view_data, void *appdata);
-static int __callui_view_single_call_ondestroy(call_view_data_t *view_data);
-static Evas_Object *__callui_view_single_call_create_contents(void *data, char *grpname);
+static int __callui_view_single_call_oncreate(call_view_data_base_t *view_data, void *appdata);
+static int __callui_view_single_call_onupdate(call_view_data_base_t *view_data);
+static int __callui_view_single_call_ondestroy(call_view_data_base_t *view_data);
 
-call_view_data_t *_callui_view_single_call_new()
-{
-       call_view_data_t *single_call_view = calloc(1, sizeof(call_view_data_t));
+static int __create_main_content(call_view_single_call_h vd);
+static int __update_displayed_data(call_view_single_call_h vd);
 
-       single_call_view->type = VIEW_TYPE_SINGLECALL;
-       single_call_view->layout = NULL;
-       single_call_view->onCreate = __callui_view_single_call_oncreate;
-       single_call_view->onUpdate = __callui_view_single_call_onupdate;
-       single_call_view->onDestroy = __callui_view_single_call_ondestroy;
-       single_call_view->priv = calloc(1, sizeof(incall_one_view_priv_t));
+static void __more_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info);
 
-       if (!single_call_view->priv) {
-               err("ERROR!!!!!!!!!!! ");
-       }
+call_view_single_call_h _callui_view_single_call_new()
+{
+       call_view_single_call_h single_call_view = calloc(1, sizeof(_call_view_single_call_t));
+       CALLUI_RETURN_NULL_IF_FAIL(single_call_view);
+
+       single_call_view->base_view.onCreate = __callui_view_single_call_oncreate;
+       single_call_view->base_view.onUpdate = __callui_view_single_call_onupdate;
+       single_call_view->base_view.onDestroy = __callui_view_single_call_ondestroy;
 
        return single_call_view;
 }
 
-static Evas_Object *__callui_view_single_call_create_contents(void *data, char *grpname)
+static int __callui_view_single_call_oncreate(call_view_data_base_t *view_data, void *appdata)
 {
-       if (data == NULL) {
-               err("ERROR");
-               return NULL;
-       }
-       callui_app_data_t *ad = (callui_app_data_t *)data;
-       Evas_Object *eo = NULL;
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+       CALLUI_RETURN_VALUE_IF_FAIL(appdata, CALLUI_RESULT_INVALID_PARAM);
 
-       /* load edje */
-       eo = _callui_load_edj(ad->main_ly, EDJ_NAME, grpname);
-       if (eo == NULL)
-               return NULL;
+       call_view_single_call_h vd = (call_view_single_call_h)view_data;
+       callui_app_data_t *ad = (callui_app_data_t *)appdata;
 
-       return eo;
+       vd->base_view.ad = ad;
+
+       int res = __create_main_content(vd);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
+
+       _callui_lock_manager_start(ad->lock_handle);
+
+       return __update_displayed_data(vd);
 }
 
-void __callui_view_single_more_btn_cb(void *data, Evas_Object *obj, void *event_info)
+static int __callui_view_single_call_onupdate(call_view_data_base_t *view_data)
 {
-       call_view_data_t *vd = (call_view_data_t *)data;
-       CALLUI_RETURN_IF_FAIL(vd != NULL);
-       _callui_load_more_option(vd);
-       return;
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       return __update_displayed_data((call_view_single_call_h)view_data);
 }
 
-static void __callui_view_single_call_draw_screen(callui_app_data_t *ad, Evas_Object *eo, void *data)
+static int __callui_view_single_call_ondestroy(call_view_data_base_t *view_data)
 {
-       dbg("__callui_view_single_call_draw_screen");
+       CALLUI_RETURN_VALUE_IF_FAIL(view_data, CALLUI_RESULT_INVALID_PARAM);
+
+       call_view_single_call_h vd = (call_view_single_call_h)view_data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       /*Delete keypad layout*/
+       _callui_keypad_delete_layout(ad);
+
+       eext_object_event_callback_del(vd->base_view.contents, EEXT_CALLBACK_MORE, __more_btn_click_cb);
+
+       DELETE_EVAS_OBJECT(ad->ctxpopup);
+       DELETE_EVAS_OBJECT(vd->base_view.contents);
 
-       call_view_data_t *vd = (call_view_data_t *)data;
-       incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
+       free(vd);
+
+       return CALLUI_RESULT_OK;
+}
+
+static void __more_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+
+       _callui_load_more_option((callui_app_data_t *)data);
+}
+
+static void __end_call_btn_click_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       CALLUI_RETURN_IF_FAIL(data);
+
+       call_view_single_call_h vd = (call_view_single_call_h)data;
+       callui_app_data_t *ad = vd->base_view.ad;
+
+       int ret = cm_end_call(ad->cm_handle, 0, CALL_RELEASE_TYPE_ALL_CALLS);
+       if (ret != CM_ERROR_NONE) {
+               err("cm_end_call() is failed");
+       }
+}
+
+static int __update_displayed_data(call_view_single_call_h vd)
+{
+       callui_app_data_t *ad = vd->base_view.ad;
        call_data_t *call_data = NULL;
        char *file_path = NULL;
        Eina_Bool is_held = EINA_FALSE;
-       char status_txt[128 + 1] = {0, };
+       char status_txt[VIEW_SINGLE_CALL_STATUS_TXT_LEN] = { 0 };
 
        if (ad->active) {
                call_data = ad->active;
@@ -98,34 +134,32 @@ static void __callui_view_single_call_draw_screen(callui_app_data_t *ad, Evas_Ob
                call_data = ad->held;
                is_held = EINA_TRUE;
        }
-       if (call_data == NULL) {
-               dbg("call Data is NULL");
-               return;
-       }
+       CALLUI_RETURN_VALUE_IF_FAIL(call_data, CALLUI_RESULT_FAIL);
 
        file_path = call_data->call_ct_info.caller_id_path;
 
        sec_dbg("file_path: %s", file_path);
 
        if (call_data->is_emergency == EINA_TRUE) {
-               elm_object_signal_emit(priv->caller_info, "set_emergency_mode", "");
+               elm_object_signal_emit(vd->caller_info, "set_emergency_mode", "");
        } else {
                if (strcmp(file_path, "default") != 0) {
-                       _callui_show_caller_id(priv->caller_info, file_path);
+                       _callui_show_caller_id(vd->caller_info, file_path);
                }
        }
 
        if (is_held) {
-               dbg("=================HOLD======================");
+               dbg("====== HOLD ======");
                snprintf(status_txt, sizeof(status_txt), _("IDS_CALL_BODY_ON_HOLD_ABB"));
                _callui_show_caller_info_status(ad, status_txt);
        } else {
-               dbg("=================UNHOLD======================");
+               dbg("====== UNHOLD ======");
                _callui_common_update_call_duration(call_data->start_time);
        }
 
        char *call_name = call_data->call_ct_info.call_disp_name;
        char *disp_number = NULL;
+
        if (strlen(call_data->call_disp_num) > 0) {
                disp_number = call_data->call_disp_num;
        } else {
@@ -139,142 +173,65 @@ static void __callui_view_single_call_draw_screen(callui_app_data_t *ad, Evas_Ob
 
        if (strlen(call_name) == 0) {
                _callui_show_caller_info_name(ad, disp_number);
-               elm_object_signal_emit(priv->caller_info, "1line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "1line", "caller_name");
        } else if (call_data->is_emergency == EINA_TRUE) {
                _callui_show_caller_info_name(ad, call_name);
-               elm_object_signal_emit(priv->caller_info, "1line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "1line", "caller_name");
        } else {
                _callui_show_caller_info_name(ad, call_name);
                _callui_show_caller_info_number(ad, disp_number);
-               elm_object_signal_emit(priv->caller_info, "2line", "caller_name");
+               elm_object_signal_emit(vd->caller_info, "2line", "caller_name");
        }
 
-       _callui_create_top_third_button(ad);
-
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_third_button(ad), CALLUI_RESULT_FAIL);
        if (is_held) {
-               _callui_create_top_second_button_disabled(ad);
-               _callui_create_bottom_second_button_disabled(ad);
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_second_button_disabled(ad), CALLUI_RESULT_FAIL);
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_second_button_disabled(ad), CALLUI_RESULT_FAIL);
 
        } else {
-               _callui_create_top_second_button(ad);
-               _callui_create_bottom_second_button(ad);
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_second_button(ad), CALLUI_RESULT_FAIL);
+               CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_second_button(ad), CALLUI_RESULT_FAIL);
        }
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_first_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_top_first_button(ad), CALLUI_RESULT_FAIL);
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_bottom_third_button(ad), CALLUI_RESULT_FAIL);
 
-       _callui_create_bottom_first_button(ad);
-       _callui_create_top_first_button(ad);
-       _callui_create_bottom_third_button(ad);
+       elm_object_signal_emit(vd->base_view.contents, "SHOW_EFFECT", "ALLBTN");
 
-       elm_object_signal_emit(priv->contents, "SHOW_EFFECT", "ALLBTN");
-       if (priv->contents) {
-               eext_object_event_callback_del(priv->contents, EEXT_CALLBACK_MORE, __callui_view_single_more_btn_cb);
-       }
-       eext_object_event_callback_add(priv->contents, EEXT_CALLBACK_MORE, __callui_view_single_more_btn_cb, vd);
-       _callui_create_end_call_button(priv->contents, vd);
-       evas_object_show(eo);
-}
-
-static int __callui_view_single_call_oncreate(call_view_data_t *vd, void *appdata)
-{
-       dbg("incall view create");
-
-       incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
-       callui_app_data_t *ad = (callui_app_data_t *) appdata;
-       call_data_t *call_data = NULL;
-       vd->ad = ad;
-
-       if (ad->active) {
-               call_data = ad->active;
-       } else {
-               call_data = ad->held;
-       }
-       if (call_data == NULL) {
-               err("call data is null");
-               return -1;
-       }
-
-       if (ad->main_ly) {
-               priv->contents = __callui_view_single_call_create_contents(ad, GRP_MAIN_LY);
-               elm_object_part_content_set(ad->main_ly, "elm.swallow.content", priv->contents);
-
-               priv->btn_ly = elm_object_part_content_get(priv->contents, "btn_region");
-               if (!priv->btn_ly) {
-                       priv->btn_ly = __callui_view_single_call_create_contents(ad, GRP_BUTTON_LAYOUT);
-                       elm_object_part_content_set(priv->contents, "btn_region", priv->btn_ly);
-               }
-
-               priv->caller_info = elm_object_part_content_get(priv->contents, "caller_info");
-               if (!priv->caller_info) {
-                       priv->caller_info = __callui_view_single_call_create_contents(ad, GRP_CALLER_INFO);
-                       elm_object_part_content_set(priv->contents, "caller_info", priv->caller_info);
-               }
-
-               evas_object_name_set(priv->contents, VIEW_SINGLE_CALL_LAYOUT_ID);
-               dbg("[========== ONEVIEW: priv->contents Addr : [%p] ==========]", priv->contents);
-
-               /*create keypad layout*/
-               _callui_keypad_create_layout(ad);
-       } else {
-               err("ERROR");
-               return -1;
-       }
-
-       __callui_view_single_call_onshow(vd, ad);
-
-       _callui_lock_manager_start(ad->lock_handle);
-
-       return 0;
-}
-
-static int __callui_view_single_call_onupdate(call_view_data_t *view_data)
-{
-       dbg("incall view update");
-       callui_app_data_t *ad = _callui_get_app_data();
-       __callui_view_single_call_onshow(view_data, ad);
-       return 0;
-}
-
-static int __callui_view_single_call_onshow(call_view_data_t *view_data, void *appdata)
-{
-       dbg("incall view show");
-       callui_app_data_t *ad = (callui_app_data_t *)appdata;
-       incall_one_view_priv_t *priv = (incall_one_view_priv_t *)view_data->priv;
-
-       __callui_view_single_call_draw_screen(ad, priv->contents, view_data);
+       evas_object_show(vd->base_view.contents);
 
        evas_object_hide(ad->main_ly);
        evas_object_show(ad->main_ly);
 
-       return 0;
+       return CALLUI_RESULT_OK;
 }
 
-static int __callui_view_single_call_ondestroy(call_view_data_t *vd)
+static int __create_main_content(call_view_single_call_h vd)
 {
-       CALLUI_RETURN_VALUE_IF_FAIL(vd, -1);
-       CALLUI_RETURN_VALUE_IF_FAIL(vd->ad, -1);
+       callui_app_data_t *ad = vd->base_view.ad;
+       CALLUI_RETURN_VALUE_IF_FAIL(ad->main_ly, CALLUI_RESULT_FAIL);
 
-       callui_app_data_t *ad = vd->ad;
+       vd->base_view.contents = _callui_load_edj(ad->main_ly, EDJ_NAME, GRP_MAIN_LY);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->base_view.contents, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(ad->main_ly, "elm.swallow.content", vd->base_view.contents);
 
-       incall_one_view_priv_t *priv = (incall_one_view_priv_t *)vd->priv;
+       // TODO: replace this into view manager in nearest future
+       eext_object_event_callback_add(vd->base_view.contents, EEXT_CALLBACK_MORE, __more_btn_click_cb, ad);
 
-       if (priv != NULL) {
-               if (ad->ctxpopup) {
-                       elm_ctxpopup_dismiss(ad->ctxpopup);
-                       ad->ctxpopup = NULL;
-               }
+       vd->caller_info = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_CALLER_INFO);
+       CALLUI_RETURN_VALUE_IF_FAIL(vd->caller_info, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, "caller_info", vd->caller_info);
 
-               /*Delete keypad layout*/
-               _callui_keypad_delete_layout(ad);
+       Evas_Object *btn_region = _callui_load_edj(vd->base_view.contents, EDJ_NAME, GRP_BUTTON_LAYOUT);
+       CALLUI_RETURN_VALUE_IF_FAIL(btn_region, CALLUI_RESULT_ALLOCATION_FAIL);
+       elm_object_part_content_set(vd->base_view.contents, "btn_region", btn_region);
 
-               if (priv->contents) {
-                       eext_object_event_callback_del(priv->contents, EEXT_CALLBACK_MORE, __callui_view_single_more_btn_cb);
-                       _callui_common_reset_main_ly_text_fields(priv->contents);
-               }
-               elm_object_signal_emit(priv->contents, "HIDE_BTN_LY", "ALLBTN");
+       /*create keypad layout*/
+       int res = _callui_keypad_create_layout(ad);
+       CALLUI_RETURN_VALUE_IF_FAIL(res == CALLUI_RESULT_OK, res);
 
-               free(priv);
-               priv = NULL;
-       }
+       CALLUI_RETURN_VALUE_IF_FAIL(_callui_create_end_call_button(vd->base_view.contents, __end_call_btn_click_cb, vd),
+                       CALLUI_RESULT_ALLOCATION_FAIL);
 
-       dbg("complete destroy one view");
-       return 0;
+       return res;
 }
index a0f593d..64235d0 100755 (executable)
 #include <vconf.h>
 #include <vconf-keys.h>
 #include <bluetooth.h>
-#include "sys/socket.h"
-#include "sys/un.h"
+#include <device/display.h>
+#include <device/callback.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
 #include "callui.h"
 #include "callui-view-elements.h"
 #include "callui-common.h"
-#include <device/display.h>
-#include <device/callback.h>
 #include "callui-view-quickpanel.h"
 #include "callui-view-layout.h"
 
@@ -157,7 +158,19 @@ static void __callui_process_incoming_call(callui_app_data_t *ad)
        CALLUI_RETURN_IF_FAIL(cm_incom);
 
        __callui_update_call_data(&(ad->incom), cm_incom);
-       _callui_vm_change_view(ad->view_manager_handle, VIEW_TYPE_INCOMING_LOCK);
+
+       callui_view_type_e type = VIEW_TYPE_INCOMING_CALL;
+
+#ifdef ACTIVE_NOTIFICATION_AVAILABLE
+       if (_callui_common_get_idle_lock_type() == LOCK_TYPE_UNLOCK &&
+                       ad->active == NULL &&
+                       ad->held == NULL &&
+                       ad->incom != NULL &&
+                       ad->incoming_noti == false) {
+               type = VIEW_TYPE_INCOMING_CALL_NOTI;
+       }
+#endif
+       _callui_vm_change_view(ad->view_manager_handle, type);
 
        cm_call_data_free(cm_incom);
        return;
@@ -334,7 +347,7 @@ static void __callui_call_list_init(callui_app_data_t *ad)
        ad->active = NULL;
        ad->incom = NULL;
        ad->held = NULL;
-       ad->active_incoming = false;
+       ad->incoming_noti = false;
        ad->multi_call_list_end_clicked = false;
        ad->start_lock_manager_on_resume = false;
        ad->on_background = false;
@@ -380,17 +393,10 @@ static void __callui_win_delete_request_cb(void *data, Evas_Object *obj, void *e
 
 static Evas_Object *__callui_create_main_win(callui_app_data_t *ad)
 {
-       /*
-        * Widget Tree
-        * Window
-        *  - conform
-        *   - layout main
-        *    - naviframe */
-
        dbg("Create window");
        Evas_Object *eo = elm_win_add(NULL, PACKAGE, ELM_WIN_BASIC);
-       elm_win_alpha_set(eo, EINA_TRUE);
        elm_win_fullscreen_set(eo, EINA_FALSE);
+       elm_win_alpha_set(eo, EINA_TRUE);
 
        if (eo) {
                elm_win_title_set(eo, PACKAGE);
@@ -398,7 +404,7 @@ static Evas_Object *__callui_create_main_win(callui_app_data_t *ad)
                elm_win_screen_size_get(eo, NULL, NULL, &ad->root_w, &ad->root_h);
 
                dbg("root_w = %d, root_h = %d..", ad->root_w, ad->root_h);
-               evas_object_resize(eo, ad->root_w, ELM_SCALE_SIZE(MTLOCK_ACTIVE_CALL_HEIGHT));
+               evas_object_resize(eo, ad->root_w, ELM_SCALE_SIZE(MTLOCK_ACTIVE_NOTI_CALL_HEIGHT));
 
                elm_win_center(eo, EINA_FALSE, EINA_TRUE);
                evas_object_move(eo, 0, 0);
@@ -695,7 +701,6 @@ callui_app_data_t *_callui_get_app_data()
        return &g_ad;
 }
 
-
 CALLUI_EXPORT_API int main(int argc, char *argv[])
 {
        dbg("..");
@@ -723,8 +728,6 @@ CALLUI_EXPORT_API int main(int argc, char *argv[])
 static Eina_Bool __callui_app_win_hard_key_up_cb(void *data, int type, void *event)
 {
        dbg("..");
-       gboolean bpowerkey_enabled = EINA_FALSE;
-       gboolean banswering_enabled = EINA_FALSE;
 
        callui_app_data_t *ad = (callui_app_data_t *)data;
        Ecore_Event_Key *ev = event;
@@ -734,36 +737,51 @@ static Eina_Bool __callui_app_win_hard_key_up_cb(void *data, int type, void *eve
                return 0;
        }
 
-       dbg("Top view(%d)", _callui_vm_get_cur_view_type(ad->view_manager_handle));
+       callui_view_type_e view_type = _callui_vm_get_cur_view_type(ad->view_manager_handle);
+
+       dbg("Top view(%d)", view_type);
 
        /*power key case */
        if (!strcmp(ev->keyname, CALLUI_KEY_POWER)) {
                dbg("in keypower");
-               bpowerkey_enabled = _callui_common_is_powerkey_mode_on();
-               dbg("[KEY]KEY_POWER pressed, bpowerkey_enabled(%d)", bpowerkey_enabled);
-               if (bpowerkey_enabled == EINA_TRUE && !_callui_lock_manager_is_lcd_off(ad->lock_handle)) {
-                       if (_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_DIALLING) {
-                               if (ad->active)
+               int is_powerkey_enabled = _callui_common_is_powerkey_mode_on();
+               dbg("[KEY]KEY_POWER pressed, is_powerkey_enabled(%d)", is_powerkey_enabled);
+
+               if (is_powerkey_enabled && !_callui_lock_manager_is_lcd_off(ad->lock_handle)) {
+
+                       if (view_type == VIEW_TYPE_DIALLING) {
+                               if (ad->active) {
                                        cm_end_call(ad->cm_handle, ad->active->call_id, CALL_RELEASE_TYPE_BY_CALL_HANDLE);
-                       } else if (_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_INCOMING_LOCK) {
-                               if (ad->incom)
+                               }
+                       } else if (view_type == VIEW_TYPE_INCOMING_CALL ||
+                                       view_type == VIEW_TYPE_INCOMING_CALL_NOTI) {
+                               if (ad->incom) {
                                        cm_end_call(ad->cm_handle, ad->incom->call_id, CALL_RELEASE_TYPE_BY_CALL_HANDLE);
-                       } else if ((_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_SINGLECALL)
-                                               || (_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_MULTICALL_CONF)
-                                               || (_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_MULTICALL_LIST)) {
-                               if (ad->active)
+                               }
+                       } else if (view_type == VIEW_TYPE_SINGLECALL ||
+                                       view_type == VIEW_TYPE_MULTICALL_CONF ||
+                                       view_type == VIEW_TYPE_MULTICALL_LIST) {
+                               if (ad->active) {
                                        cm_end_call(ad->cm_handle, ad->active->call_id, CALL_RELEASE_TYPE_ALL_CALLS);
-                               else if (ad->held)
+                               } else if (ad->held) {
                                        cm_end_call(ad->cm_handle, ad->held->call_id, CALL_RELEASE_TYPE_ALL_CALLS);
-                       } else if (_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_MULTICALL_SPLIT) {
-                               if (ad->active)
+                               }
+                       } else if (view_type == VIEW_TYPE_MULTICALL_SPLIT) {
+                               if (ad->active) {
                                        cm_end_call(ad->cm_handle, ad->active->call_id, CALL_RELEASE_TYPE_ALL_ACTIVE_CALLS);
-                       } else {
-                               dbg("nothing...");
+                               }
                        }
                } else {
                        if (ad->incom && !ad->active && !ad->held) {
-                               _callui_vm_change_view(ad->view_manager_handle, VIEW_TYPE_INCOMING_LOCK);
+                               callui_view_type_e type = VIEW_TYPE_INCOMING_CALL;
+
+#ifdef ACTIVE_NOTIFICATION_AVAILABLE
+                               if (_callui_common_get_idle_lock_type() == LOCK_TYPE_UNLOCK &&
+                                               ad->incoming_noti == false) {
+                                       type = VIEW_TYPE_INCOMING_CALL_NOTI;
+                               }
+#endif
+                               _callui_vm_change_view(ad->view_manager_handle, type);
                        }
                }
        } else if (!strcmp(ev->keyname, CALLUI_KEY_MEDIA)) {
@@ -783,33 +801,32 @@ static Eina_Bool __callui_app_win_hard_key_up_cb(void *data, int type, void *eve
                } else {
                        dbg("KEY_SELECT key ungrab success");
                }
-               if (_callui_vm_get_cur_view_type(ad->view_manager_handle) == VIEW_TYPE_INCOMING_LOCK) {
-                       banswering_enabled = _callui_common_is_answering_mode_on();
-                       if (banswering_enabled == EINA_TRUE) {
+               if (view_type == VIEW_TYPE_INCOMING_CALL ||
+                               view_type == VIEW_TYPE_INCOMING_CALL_NOTI) {
+
+                       if (_callui_common_is_answering_mode_on()) {
+                               dbg("Answering mode on and Home key pressed on MT screen");
+
                                int unhold_call_count = 0;
                                if (ad->active) {
                                        unhold_call_count = ad->active->member_count;
                                }
-                               dbg("Answering mode on and Home key pressed on MT screen");
 
                                if (unhold_call_count == 0) {
                                        dbg("No Call Or Held call - Accept");
                                        cm_answer_call(ad->cm_handle, CALL_ANSWER_TYPE_NORMAL);
-                                       if (_callui_common_get_idle_lock_type() == LOCK_TYPE_SWIPE_LOCK)
+                                       if (_callui_common_get_idle_lock_type() == LOCK_TYPE_SWIPE_LOCK) {
                                                _callui_common_unlock_swipe_lock();
+                                       }
                                } else if (ad->second_call_popup == NULL) {
                                        dbg("Show popup - 2nd MT call - test volume popup");
                                        _callui_load_second_call_popup(ad);
                                }
                        } else {
-                               int result = 0;
-                               /* Grab home key event to keep incoming call view */
-                               result = elm_win_keygrab_set(ad->win, CALLUI_KEY_SELECT, 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST);
-                               if (result) {
+                               if (elm_win_keygrab_set(ad->win, CALLUI_KEY_SELECT, 0, 0, 0, ELM_WIN_KEYGRAB_TOPMOST)) {
                                        dbg("KEY_SELECT key ungrab failed");
                                }
                        }
-
                } else {
                        // TODO Implement other way to verify focus window == current
                        //Ecore_X_Window focus_win = ecore_x_window_focus_get();