UcAppGProt.h 31.8 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*******************************************************************************
 * Filename:
 * ---------
 * UcAppGprot.h
 *
 * Project:
 * --------
 * MAUI
 *
 * Description:
 * ------------
 * This file defines global enum, constant and prototypes for Unified Composer
 *
 * Author:
 * -------
 * -------
 *
 *==============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *==============================================================================
 *******************************************************************************/

#ifndef _MMI_UNIFIED_COMPOSER_GPROT_H
#define _MMI_UNIFIED_COMPOSER_GPROT_H

#if (defined(__MMI_UNIFIED_COMPOSER__) || defined(__MMI_MMS_STANDALONE_COMPOSER__))

#include "gui_config.h" /* For GUI_INPUT_BOX_MAX_LENGTH */

#include "custom_mmi_default_value.h"   /* For MMI_PHB_NAME_LENGTH */
#ifdef __MMI_MMS_2__
#include "custom_wap_config.h"
#include "custom_uc_config.h"   /* For MMI_UC_CUSTOM_MAX_ADDR_LEN */
#endif /* __MMI_MMS_2__ */ 

//#include "customer_ps_inc.h"
//#include "UMGprot.h"
#ifndef __MMI_MMS_STANDALONE_COMPOSER__
#include "smssrvgprot.h"
#endif
#include "UcSrvGprot.h"
#include "UcSrvIprot.h"
//suggested add
    #include "MMI_features.h"
    #include "customer_email_num.h"
    #include "custom_phb_config.h"
    //#include "kal_general_types.h"
    #include "MMIDataType.h"
    #include "stack_ltlcom.h"

/* DOM-NOT_FOR_SDK-BEGIN */
#if defined (__MMI_MMS_CALC_MSG_SIZE_BY_USER_ELEMENTS__) || defined (__MMI_MMS_WAP_CONNECTION_MAX_SIZE_SUPPORT__)
/* UC own wrapper compile option for WAP max size support feature. */
#define __MMI_UC_WAP_CONNECTION_MAX_SIZE_CHECK_SUPPORT__
#endif /* defined (__MMI_MMS_CALC_MSG_SIZE_BY_USER_ELEMENTS__) || defined (__MMI_MMS_WAP_CONNECTION_MAX_SIZE_SUPPORT__) */ 
/* DOM-NOT_FOR_SDK-END */
/* DOM-NOT_FOR_SDK-BEGIN */
// #define OMA13_CON_739_SUPPORT_TEMP_TEST_CODE
/* DOM-NOT_FOR_SDK-END */

/* Max length of subject UC supports, to compatable with UM subject. */
#define MMI_UC_MAX_SUBJECT_LEN SRV_UC_MAX_SUBJECT_LEN

/* Max Email length UC supports. */
#define MMI_UC_MAX_EMAIL_LEN SRV_UC_MAX_EMAIL_LEN

/* Max Phone number length UC supports. */
#define MMI_UC_MAX_PHONE_NUMBER_LEN SRV_UC_MAX_PHONE_NUMBER_LEN
#if MMI_UC_MAX_EMAIL_LEN < MMI_UC_MAX_PHONE_NUMBER_LEN
#error email len shall not smaller than phone number
#endif 
/* Max UTF8 char/text buffer size UC supports on single slide. */
#define MMI_UC_UTF8_TEXT_BUFFER_SIZE SRV_UC_UTF8_TEXT_BUFFER_SIZE

typedef void (*uc_func_ptr) (void *);
typedef void (*uc_confirm_func_ptr) (void);
typedef kal_int8 *(*uc_func_ptr_general_insert_get_addr_fn) (kal_uint16 index, kal_uint16 *type);

/* This enum is used to define message type modes supported in UC. This is decided before start composer and will inform UC that it can be switchable inside composer operation or its fixed to one type. */
typedef srv_uc_msg_type_enum mmi_uc_msg_type_enum;

#define MMI_UC_MSG_TYPE_DEFAULT SRV_UC_MSG_TYPE_DEFAULT /* Default type. */
#define MMI_UC_MSG_TYPE_SMS_PREFER SRV_UC_MSG_TYPE_SMS_PREFER   /* Default mode SMS. Try to change to SMS if content say can be SMS. */
#define MMI_UC_MSG_TYPE_MMS_PREFER SRV_UC_MSG_TYPE_MMS_PREFER   /* Default mode MMS. */
#define MMI_UC_MSG_TYPE_SMS_ONLY SRV_UC_MSG_TYPE_SMS_ONLY       /* Only SMS mode support. Msg will not change to MMS. */
#define MMI_UC_MSG_TYPE_MMS_ONLY SRV_UC_MSG_TYPE_MMS_ONLY       /* Only MMS mode support. Can not be changed to SMS. */
#define MMI_UC_MSG_TYPE_TOTAL_NUM SRV_UC_MSG_TYPE_TOTAL_NUM     /* Max number of type modes UC supports. */

#if (defined (__MMI_MMS_POSTCARD__)||defined(__MMI_OP02_LEMEI__)) 
/* This enum is used to define MMS edit mode types supported in UC. This is decided when launch editor for edit a MMS/Postcard/lemei. Values currently used to tell composer difference between normal, postcard and lemei MMS. */
typedef srv_uc_MMS_edit_mode_enum mmi_uc_MMS_edit_mode_enum;

#define MMI_UC_MMS_EDIT_MODE_NORMAL_MMS      SRV_UC_MMS_EDIT_MODE_NORMAL_MMS    /* Normal MMS mode. */
#define MMI_UC_MMS_EDIT_MODE_POSTCARD_MMS SRV_UC_MMS_EDIT_MODE_POSTCARD_MMS     /* Postcard MMS mode. */
#define MMI_UC_MMS_EDIT_MODE_LEMEI_MMS SRV_UC_MMS_EDIT_MODE_LEMEI_MMS     /* lemei MMS mode. */
#define MMI_UC_MMS_EDIT_MODE_TOTAL_NUM    SRV_UC_MMS_EDIT_MODE_TOTAL_NUM        /* Max number of MMS modes UC supports. */
#endif /* (defined (__MMI_MMS_POSTCARD__)||defined(__MMI_OP02_LEMEI__) */ 

/* This enum is used to define message info type modes supported in UC. Filled when want to launch UC editor to inform about the requester message application. */
typedef srv_uc_info_type_enum mmi_uc_info_type_enum;

#define MMI_UC_INFO_TYPE_SMS     SRV_UC_INFO_TYPE_SMS   /* Info type SMS. */
#define MMI_UC_INFO_TYPE_MMS     SRV_UC_INFO_TYPE_MMS   /* Info type MMS. */
#define MMI_UC_INFO_TYPE_NORMAL_MMS    SRV_UC_INFO_TYPE_NORMAL_MMS      /* Info type MMS. for backward conpatiblity. */
#define MMI_UC_INFO_TYPE_POSTCARD_MMS     SRV_UC_INFO_TYPE_POSTCARD_MMS /* Info type Postcard. */
#define MMI_UC_INFO_TYPE_LEMEI_MMS     SRV_UC_INFO_TYPE_LEMEI_MMS /* Info type Postcard. */
#define MMI_UC_INFO_TYPE_TOTAL_NUM     SRV_UC_INFO_TYPE_TOTAL_NUM       /* Max number of msg info UC supports. */

/* This enum is used to define UC current state of operation. It will be need to set when launch UC. As each state have different type of flow. */
typedef srv_uc_state_enum mmi_uc_state_enum;

#define MMI_UC_STATE_WRITE_NEW_MSG     SRV_UC_STATE_WRITE_NEW_MSG       /* Writing new msg state. */
#define MMI_UC_STATE_EDIT_EXISTED_MSG     SRV_UC_STATE_EDIT_EXISTED_MSG /* Edit existing msg state. */
#define MMI_UC_STATE_FORWARD           SRV_UC_STATE_FORWARD     /* Forward existing msg state. Only for inbox and sent box msgs. */
#define MMI_UC_STATE_SEND        SRV_UC_STATE_SEND      /* Send existing msg state. Only for outbox and draft box msgs. */
#define MMI_UC_STATE_REPLY       SRV_UC_STATE_REPLY     /* Reply existing msg state. */
#define MMI_UC_STATE_REPLY_ALL      SRV_UC_STATE_REPLY_ALL      /* Reply all existing msg state. */
#define MMI_UC_STATE_TOTAL_NUM      SRV_UC_STATE_TOTAL_NUM      /* Max number of msg states in UC. */

typedef mmi_uc_state_enum mmi_uc_done_type_enum;

/* This enum is used to specify the type of address. Email or number. */
typedef srv_uc_address_type_enum mmi_uc_address_type_enum;

#define MMI_UC_ADDRESS_TYPE_PHONE_NUMBER  SRV_UC_ADDRESS_TYPE_PHONE_NUMBER      /* Phone number. */
#define MMI_UC_ADDRESS_TYPE_EMAIL         SRV_UC_ADDRESS_TYPE_EMAIL     /* Email address. */
#define MMI_UC_ADDRESS_TYPE_IP            SRV_UC_ADDRESS_TYPE_IP        /* IP address. */
#define MMI_UC_ADDRESS_TYPE_TOTAL_NUM     SRV_UC_ADDRESS_TYPE_TOTAL_NUM /* Max number of address type. */

/* This enum is used to specify the group types of addresses. */
typedef srv_uc_address_group_type_enum mmi_uc_address_group_type_enum;

#define MMI_UC_ADDRESS_GROUP_TYPE_TO   SRV_UC_ADDRESS_GROUP_TYPE_TO     /* To group. */
#define MMI_UC_ADDRESS_GROUP_TYPE_CC   SRV_UC_ADDRESS_GROUP_TYPE_CC     /* Cc group. */
#define MMI_UC_ADDRESS_GROUP_TYPE_BCC  SRV_UC_ADDRESS_GROUP_TYPE_BCC    /* Bcc group. */
#define MMI_UC_ADDRESS_GROUP_TYPE_FROM SRV_UC_ADDRESS_GROUP_TYPE_FROM   /* From group. */
#define MMI_UC_ADDRESS_GROUP_TYPE_TOTAL_NUM     SRV_UC_ADDRESS_GROUP_TYPE_TOTAL_NUM     /* Max number of address group. */

/* This enum is used to specify sim in use. Its designed for two sim only. */
typedef srv_uc_sim_id mmi_uc_sim_id;

#define UC_SIM_ID_UNCLASSIFIED   SRV_UC_SIM_ID_UNCLASSIFIED     /* Unclassified message */
#define UC_SIM_ID_GSM_SIM1    SRV_UC_SIM_ID_GSM_SIM1    /* SIM1 card message */
#define UC_SIM_ID_GSM_SIM2    SRV_UC_SIM_ID_GSM_SIM2 
#define UC_SIM_ID_GSM_SIM3   SRV_UC_SIM_ID_GSM_SIM3
#define UC_SIM_ID_GSM_SIM4   SRV_UC_SIM_ID_GSM_SIM4   /* SIM2 card message */

typedef enum
{
/*    MMI_UC_OPERATION_WRITE_NEW_MSG, */        /* Writing new msg operation. */
    MMI_UC_OPERATION_EDIT_EXISTED_MSG,      /* Edit existing msg operation. */        
    MMI_UC_OPERATION_FORWARD,               /* Forward existing msg operation. Only for inbox and sent box msgs currently.*/
    MMI_UC_OPERATION_SEND,                  /* Send existing msg operation. Only for outbox and draft box msgs currently.*/
    MMI_UC_OPERATION_REPLY,                 /* Reply existing msg operation. New msg type controlled by UC */
    MMI_UC_OPERATION_REPLY_BY_SMS,                 /* Reply existing msg operation. New msg type controlled by caller app. */
    MMI_UC_OPERATION_REPLY_BY_MMS,                 /* Reply existing msg operation. New msg type controlled by caller app. */
    MMI_UC_OPERATION_REPLY_ALL,             /* Reply all existing msg operation. */
    MMI_UC_OPERATION_TOTAL_NUM              /* Max number of msg operations in UC. */
} mmi_uc_msg_operation_enum;

/* This structure contains the data to be filled by launching application. This information further use to fill UC internal used variables and states. */

typedef srv_uc_addr_struct mmi_uc_addr_struct;
typedef struct
{
    srv_uc_addr_struct *addr;           /* Addresses linklist */
	kal_uint8 *file_path;               /* File path */
    kal_uint8 *text_buffer;             /* File path */
	kal_uint8 *subject;                 /* File path */
	void *info;                         /* Info. SMS use msg ID/Index to pass */
    uc_func_ptr callback;               /* Callback function specified by caller of object forward, for calling after use of object */
    void *callback_para;                /* Input paramter to callback function above */
	uc_func_ptr_general_insert_get_addr_fn get_address_callback;        /* Callback function specified by caller to call if multiple addresses forwarded */
	kal_uint16 text_num;				/* File path */
	kal_uint8 addr_num;                 /* Max addresses */
	mmi_uc_msg_type_enum msg_type;      /* srv_uc_msg_type_enum */
	mmi_uc_info_type_enum info_type;    /* srv_uc_info_type_enum */
	mmi_uc_sim_id sim_id;               /* srv_uc_sim_id */
    kal_uint8 media_num;
    uc_func_ptr_general_insert_get_img_fn  get_img_callback;        /* Callback function specified by caller to call if multiple addresses forwarded */
} mmi_uc_entry_write_struct;

/* This structure contains the data to be passed to UC when other (MMS) application want to launch the UC composer. */
typedef srv_uc_start_struct mmi_uc_start_struct;

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_init
 * DESCRIPTION
 *  This function initialize Unified Composer application. Its getting call when all MMI app start initialization.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_init(void);

/* DOM-NOT_FOR_SDK-BEGIN */
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_pre_entry_write_msg
 * DESCRIPTION
 *  This function is a pre entry function of unified composer. Its for internal use not for external call.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_pre_entry_write_msg(void);

/* DOM-NOT_FOR_SDK-END */
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_get_address_from_phb_ext
 * DESCRIPTION
 *  This function is to get addresses from phonebook. Callback register to phonebook interface.
 * PARAMETERS
 *  name : [IN]        Name
 *  addr : [IN]        Address email + number
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_get_address_from_phb_ext(S8 *name, S8 *addr);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_entry_write_msg_with_content
 * DESCRIPTION
 *  This function is to enter unified composer with content filled by other applications. UC will launch itself after getting call.
 * PARAMETERS
 *  type : [IN]        mmi_uc_done_type_enum
 *  data : [IN]        mmi_uc_entry_write_struct
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_entry_write_msg_with_content(mmi_uc_done_type_enum type, mmi_uc_entry_write_struct *data);

#ifdef __MMI_MMS_MEMORY_CARD_STORAGE_SUPPORT__
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_sd_plug_in_hdlr
 * DESCRIPTION
 *  This function is used when memory card is removed. This callback is hooked with card operation handlers.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_sd_plug_in_hdlr(void);
#endif /* __MMI_MMS_MEMORY_CARD_STORAGE_SUPPORT__ */

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_sd_plug_out_hdlr
 * DESCRIPTION
 *  This function is used when memory card is removed. This callback is hooked with card operation handlers.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_sd_plug_out_hdlr(void);
#ifdef __MMI_MMS_MEMORY_CARD_STORAGE_SUPPORT__
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_sd_plug_in_hdlr
 * DESCRIPTION
 *  This function is used when memory card is inserted. This callback is hooked with card operation handlers.
 * PARAMETERS
 *  param : [IN]        mmi_event_struct
 * RETURNS
 *  mmi event return type
 *****************************************************************************/
extern mmi_ret mmi_uc_sd_card_plug_in_hdlr_cb(mmi_event_struct *param);
#endif /* __MMI_MMS_MEMORY_CARD_STORAGE_SUPPORT__ */

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_sd_plug_out_hdlr
 * DESCRIPTION
 *  This function is used when memory card is removed. This callback is hooked with card operation handlers.
 * PARAMETERS
 *  param : [IN]        mmi_event_struct
 * RETURNS
 *  mmi event return type
 *****************************************************************************/
extern mmi_ret mmi_uc_sd_card_plug_out_hdlr_cb (mmi_event_struct *param);


/*****************************************************************************
 * FUNCTION
 *  mmi_uc_usb_ms_plug_in_hdlr
 * DESCRIPTION
 *  This function is used when USB is inserted and mass storage is selected
 * PARAMETERS
 *  evt : [IN]        mmi_event_struct
 * RETURNS
 *  mmi event return type
 *****************************************************************************/
extern mmi_ret mmi_uc_usb_ms_plug_in_hdlr(mmi_event_struct *evt);


/*****************************************************************************
 * FUNCTION
 *  mmi_uc_get_max_recipient_count
 * DESCRIPTION
 *  This function is to return the max number of recipient UC will support. It will return the final customized value.
 * PARAMETERS
 *  void
 * RETURNS
 *  Max UC recipient number
 *****************************************************************************/
extern U32 mmi_uc_get_max_recipient_count(void);

#if defined(__MMI_MESSAGES_TEMPLATE__)
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_insert_text_template
 * DESCRIPTION
 *  This function is to insert text template. It will also check for userdefined and default templates.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_insert_text_template(void);
#endif /* defined(__MMI_MESSAGES_TEMPLATE__) */ 
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_uc_screen_in_history
 * DESCRIPTION
 *  This functions return true if unified composer screen is in the history.
 * PARAMETERS
 *  void        
 * RETURNS
 *   KAL_FALSE  : not present.
 *   KAL_TRUE  : present.
 *****************************************************************************/
extern kal_bool mmi_uc_is_uc_screen_in_history(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_pending_action
 * DESCRIPTION
 *  This function returns true if UC have pending action. Used by other application to know UC status.
 * PARAMETERS
 *  void
 * RETURNS
 *   KAL_FALSE  : no pending action.
 *   KAL_TRUE  : pending action.
 *****************************************************************************/
extern kal_bool mmi_uc_is_pending_action(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_delete_all_uc_screens
 * DESCRIPTION
 *  This function delete UC screens if present. It will delete the complete UC screens from history.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_delete_all_uc_screens(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_mms_in_use
 * DESCRIPTION
 *  Check if the msg_id is in used (Other application need to check for this before use a msg.
 *  Because same message can not be used by two applications simultaneously)
 *  Current user of this API are BGSR and JSR.
 * PARAMETERS
 *  msg_id : [IN] Msg id.
 * RETURNS
 *   KAL_FALSE  : Not in use.
 *   KAL_TRUE  : In use.
 *****************************************************************************/
extern kal_bool mmi_uc_is_mms_in_use(kal_uint32 msg_id);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_sms_in_use
 * DESCRIPTION
 *  Check if the msg_id is in used (Other application need to check for this before use a msg.
 *  Because same message can not be used by two applications simultaneously)
 *  msg_id : [IN] Msg id.
 * RETURNS
 *   KAL_FALSE  : Not in use.
 *   KAL_TRUE  : In use.
 *****************************************************************************/
extern kal_bool mmi_uc_is_sms_in_use(kal_uint32 msg_id);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_reset_msg
 * DESCRIPTION
 *  This function is to reset msg info in UC context. Need to use when want to clear the context of UC.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_reset_msg(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_no_recepient
 * DESCRIPTION
 *  This function returns true if there is no recepient in the message. Must to check before trigger to send.
 * PARAMETERS
 *  void
 * RETURNS
 *   FALSE  : recipient present.
 *   TRUE  : no recipient.
 *****************************************************************************/
extern BOOL mmi_uc_is_no_recepient(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_send_mms_from_previewer
 * DESCRIPTION
 *  This function need to call when user select send item in previewer screen.
 * PARAMETERS
 *  sim_id : [IN] mmi_uc_sim_id
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_send_mms_from_previewer(mmi_uc_sim_id sim_id);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_edit_mms_content_from_previewer
 * DESCRIPTION
 *  This function need to call when user select edit item in previewer screen.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_edit_mms_content_from_previewer(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_battery_low_callback
 * DESCRIPTION
 *  This function is pre evnet handler when battery is low. This callback need to call by framework low battery indication handler.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_battery_low_callback(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_launch
 * DESCRIPTION
 *  This function is to trigger request for start UC. If any MMI application need to start UC. Like MMS app currentely.
 * PARAMETERS
 *  msg_req : [IN] mmi_uc_start_struct
 * RETURNS
 *  mma_result_enum to check result
 *****************************************************************************/
extern U32 mmi_uc_launch(mmi_uc_start_struct *msg_req);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_collect_object_ind_data
 * DESCRIPTION
 *  This function is to collect the multiple objects information in one unit to pass to UC in one go. Currently used for phonebook interface.
 * PARAMETERS
 *  peer_buffer_p : [IN]    peerbuffer data passed by application
 *  num_of_object : [IN]    number of object passed
 *  more : [IN]     More req need to come
 *  uc_data : [OUT] UC context filled to collect complete req data to one unit
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_collect_object_ind_data(
                peer_buff_struct *peer_buffer_p,
                kal_uint32 num_of_object,
                kal_bool more,
                mmi_uc_entry_write_struct **uc_data);
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_free_collected_object_ind_data
 * DESCRIPTION
 *  This function is to free the UC context, created to help other application, used in multi object forward request to UC.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_free_collected_object_ind_data(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_show_progress_entry_composer_write_msg
 * DESCRIPTION
 *  This function is to show process screen of entering unified composer
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_show_progress_entry_composer_write_msg(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_multi_object_insert_req
 * DESCRIPTION
 *  This function is to start request and show progress for multiple object forward to composer request.
 * PARAMETERS
 *  void
 * RETURNS
 *   KAL_FALSE  : not available.
 *   KAL_TRUE  : available.
 *****************************************************************************/
extern kal_bool mmi_uc_multi_object_insert_req(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_multi_object_req_is_in_process
 * DESCRIPTION
 *  This function is to check if multiple object forward request already in process.
 * PARAMETERS
 *  void
 * RETURNS
 *   KAL_FALSE  : not in process.
 *   KAL_TRUE  : in process.
 *****************************************************************************/
extern kal_bool mmi_uc_is_multi_object_req_is_in_process(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_show_progress_entry_composer_write_msg
 * DESCRIPTION
 *  This function is to show process when entering unified composer.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_show_progress_entry_composer_write_msg(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_uc_ready
 * DESCRIPTION
 *  This function is to tell about UC ready or not to accept and process data. This depend on SMS and MMS ready.
 * PARAMETERS
 *  void
 * RETURNS
 *   MMI_FALSE  : not ready.
 *   MMI_TRUE  : ready.
 *****************************************************************************/
extern MMI_BOOL mmi_uc_is_uc_ready(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_uc_reenter
 * DESCRIPTION
 *  This function is to tell other MMI app that UC/MMS/SMS existence is already in history. As UC from its side not allowed reentry.
 * PARAMETERS
 *  void
 * RETURNS
 *   MMI_FALSE  : first entry.
 *   MMI_TRUE  : reentry.
 *****************************************************************************/
extern MMI_BOOL mmi_uc_is_uc_reenter(void);

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_is_send_message_menu_hidden
 * DESCRIPTION
 *  This function is for other MMI app to know to show
 *   direct launch UC "Send message" option or not.
 * PARAMETERS
 *  void
 * RETURNS
 *   MMI_FALSE  : no need to hide.
 *   MMI_TRUE  : need to hide.
 *****************************************************************************/
extern MMI_BOOL mmi_uc_is_send_message_menu_hidden(void);

#ifdef __MMI_PHOTOEDITOR__
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_edit_image_for_phoart_callback_to_asm
 * DESCRIPTION
 *  This function is to use by photoeditor to launch UC when there is not enough memory and control will be at ASM application side.
 *   Its required as there is no callback to photoeditor to contol flow in back key press.
 *   And photoeditor itseld unable to judge that user select Ok or back on that release memory selection screen.
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_edit_image_for_phoart_callback_to_asm(void);
#endif /* __MMI_PHOTOEDITOR__ */ 

/* DOM-NOT_FOR_SDK-BEGIN */
#if !defined(__MMI_MMS_STANDALONE_COMPOSER__)
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_handle_sms_msg_del_event
 * DESCRIPTION
 *  Callback to register to handle the sms delete case. update the UC status according to last state.
 * PARAMETERS
 *  event_data : [IN]    event data passed by the sms core in callback        
 * RETURNS
 *   MMI_FALSE  : others can also handle.
 *   MMI_TRUE  : for UC only.
 *****************************************************************************/
extern mmi_ret mmi_uc_handle_sms_msg_del_event(mmi_event_struct *event_data);
#endif /* !defined(__MMI_MMS_STANDALONE_COMPOSER__) */
/* DOM-NOT_FOR_SDK-END */
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_entry_msg_operation_launch
 * DESCRIPTION
 *  Api to launch the operation via UC over a SMS, MMS or Postcard.
 *  Here possible operations are edit, forward, reply and reply to all.
 * PARAMETERS
 *  msg_id : [IN]    msg_id for the msg operated
 *  msg_type : [IN]    msg type sms/mms passed by caller application
 *  operation : [IN]    type of operation passed by caller application
 * RETURNS
 *  MMI_TRUE:   Success
 *  MMI_FALSE:  Failure
 *****************************************************************************/
extern MMI_BOOL mmi_uc_entry_msg_operation_launch( U32 msg_id, U16 msg_type, mmi_uc_msg_operation_enum operation);
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_write_msg_launch
 * DESCRIPTION
 *  Api to provide UI options to launch UC editor for msg or postcard.
 *  
 * PARAMETERS
 *  parent_cui_gid : [IN]    screen group parent id passed by caller application
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_write_msg_launch(mmi_id parent_cui_gid);

#ifdef __MMI_MMS_POSTCARD__
/*****************************************************************************
 * FUNCTION
 *  mmi_uc_entry_write_msg_selection_launch
 * DESCRIPTION
 *  Api to provide UI options to launch UC message and postcard with parent id.
 *  
 * PARAMETERS
 *  parent_cui_gid : [IN]    screen group parent id passed by caller application
 * RETURNS
 *  void
 *****************************************************************************/
extern void mmi_uc_entry_write_msg_selection_launch(mmi_id parent_cui_gid);
#endif /*#ifdef __MMI_MMS_POSTCARD__*/

/*****************************************************************************
 * FUNCTION
 *  mmi_uc_handle_sms_msg_del_event
 * DESCRIPTION
 *  Callback to register to handle the sms delete case. update the UC status according to last state.
 * PARAMETERS
 *  evt : [IN]    event data passed by the sms core in callback        
 * RETURNS
 *   MMI_RET      Always OK
 *****************************************************************************/
extern mmi_ret mmi_uc_force_close(mmi_event_struct *evt);
#endif /* (defined(__MMI_UNIFIED_COMPOSER__) || defined(__MMI_MMS_STANDALONE_COMPOSER__)) */ 
#endif /* _MMI_UNIFIED_COMPOSER_GPROT_H */