SET(CMAKE_BUILD_TYPE "Release")
ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
-SET(VENDOR "tizen")
+SET(VENDOR "org.tizen")
SET(PACKAGE ${PROJECT_NAME})
-SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PKGNAME "${VENDOR}.${PACKAGE}")
SET(PREFIX ${CMAKE_INSTALL_PREFIX})
SET(PREFIXRW ${CMAKE_INSTALL_PREFIXRW})
SET(BINDIR "${PREFIX}/bin")
SET(LOCALEDIR "${RESDIR}/locale")
SET(ICONDIR "${RESDIR}/icons")
SET(EDJDIR "${RESDIR}/edje")
+SET(CHANGEABLEDIR "${PREFIX}/shared/res/tables")
SET(DESKTOPDIR "/usr/share/applications")
SET(MANIFESTXMLDIR "/usr/share/packages")
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/daemon DAEMON_SRCS)
AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/test TEST_SRCS)
+#AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/modules MODULE_SRCS)
FILE(GLOB_RECURSE MODULE_SRCS modules/*.c)
SET(SRCS ${DAEMON_SRCS} ${MODULE_SRCS} ${TEST_SRCS})
SET(CMAKE_SKIP_BUILD_RPATH TRUE)
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+
+IF("${ARCH}" STREQUAL "armv7l")
+ ADD_DEFINITIONS("-DDEVICE_BUILD")
+ MESSAGE("Building for target: add -DDEVICE_BUILD")
+ENDIF("${ARCH}" STREQUAL "armv7l")
+
INCLUDE(FindPkgConfig)
pkg_check_modules(pkgs REQUIRED
capi-appfw-application
capi-appfw-app-manager
capi-system-runtime-info
+ capi-network-bluetooth
+ capi-appfw-preference
+ capi-system-system-settings
+ capi-media-player
+ capi-media-sound-manager
+ capi-media-metadata-extractor
+ capi-network-wifi
+ capi-ui-efl-util
+ appcore-common
dlog
ecore
- ecore-x
+# ecore-x
ecore-evas
ecore-file
edbus
elementary
evas
eina
- fontconfig
+ edbus
libprivilege-control
notification
+# utilX
vconf
- utilX
minicontrol-monitor
feedback
+ pkgmgr-info
+ efl-assist
+ tapi
)
FOREACH(flag ${pkgs_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions -g")
-#SET(CMAKE_C_COMPILER "/scratchbox/devkits/sbwrap")
-#SET(CMAKE_C_COMPILER_ARG1 "/home/serena/working/indicator.trace /scratchbox/compilers/bin/gcc gcc")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -fPIE")
+SET(CMAKE_C_FLAGS_PROFILING "-O0 -g -pg -fPIE")
+SET(CMAKE_CXX_FLAGS_PROFILING "-O0 -std=c++0x -g -pg -fPIE")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g -fPIE")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -std=c++0x -g -fPIE")
+SET(CMAKE_C_FLAGS_RELEASE "-O2 -g -fPIE")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2 -std=c++0x -g -fPIE")
+SET(CMAKE_C_FLAGS_CCOV "-O2 -g --coverage -fPIE")
+SET(CMAKE_CXX_FLAGS_CCOV "-O2 -std=c++0x -g --coverage -fPIE")
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -g -O2")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
ADD_DEFINITIONS("-DHOME_KEY_EMULATION")
ADD_DEFINITIONS("-DINDICATOR_SUPPORT_OPACITY_MODE")
-#ADD_DEFINITIONS("-DFILE_DEBUG")
ADD_DEFINITIONS("-D_DLOG_USED")
-SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} -licui18n -licuuc)
INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
INSTALL(DIRECTORY DESTINATION ${DATADIR})
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${PKGNAME}.efl DESTINATION /etc/smack/accesses.d)
-ADD_SUBDIRECTORY(po)
ADD_SUBDIRECTORY(data)
-
--- /dev/null
+Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
+
+++ /dev/null
-Flora License
-
-Version 1.1, April, 2013
-
-http://floralicense.org/license/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction,
-and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by
-the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and
-all other entities that control, are controlled by, or are
-under common control with that entity. For the purposes of
-this definition, "control" means (i) the power, direct or indirect,
-to cause the direction or management of such entity,
-whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
-or more of the outstanding shares, or (iii) beneficial ownership of
-such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity
-exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications,
-including but not limited to software source code, documentation source,
-and configuration files.
-
-"Object" form shall mean any form resulting from mechanical
-transformation or translation of a Source form, including but
-not limited to compiled object code, generated documentation,
-and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form,
-made available under the License, as indicated by a copyright notice
-that is included in or attached to the work (an example is provided
-in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form,
-that is based on (or derived from) the Work and for which the editorial
-revisions, annotations, elaborations, or other modifications represent,
-as a whole, an original work of authorship. For the purposes of this License,
-Derivative Works shall not include works that remain separable from,
-or merely link (or bind by name) to the interfaces of, the Work and
-Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original
-version of the Work and any modifications or additions to that Work or
-Derivative Works thereof, that is intentionally submitted to Licensor
-for inclusion in the Work by the copyright owner or by an individual or
-Legal Entity authorized to submit on behalf of the copyright owner.
-For the purposes of this definition, "submitted" means any form of
-electronic, verbal, or written communication sent to the Licensor or
-its representatives, including but not limited to communication on
-electronic mailing lists, source code control systems, and issue
-tracking systems that are managed by, or on behalf of, the Licensor
-for the purpose of discussing and improving the Work, but excluding
-communication that is conspicuously marked or otherwise designated
-in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity
-on behalf of whom a Contribution has been received by Licensor and
-subsequently incorporated within the Work.
-
-"Tizen Certified Platform" shall mean a software platform that complies
-with the standards set forth in the Tizen Compliance Specification
-and passes the Tizen Compliance Tests as defined from time to time
-by the Tizen Technical Steering Group and certified by the Tizen
-Association or its designated agent.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-copyright license to reproduce, prepare Derivative Works of,
-publicly display, publicly perform, sublicense, and distribute the
-Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
-this License, each Contributor hereby grants to You a perpetual,
-worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-(except as stated in this section) patent license to make, have made,
-use, offer to sell, sell, import, and otherwise transfer the Work
-solely as incorporated into a Tizen Certified Platform, where such
-license applies only to those patent claims licensable by such
-Contributor that are necessarily infringed by their Contribution(s)
-alone or by combination of their Contribution(s) with the Work solely
-as incorporated into a Tizen Certified Platform to which such
-Contribution(s) was submitted. If You institute patent litigation
-against any entity (including a cross-claim or counterclaim
-in a lawsuit) alleging that the Work or a Contribution incorporated
-within the Work constitutes direct or contributory patent infringement,
-then any patent licenses granted to You under this License for that
-Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
-Work or Derivative Works thereof pursuant to the copyright license
-above, in any medium, with or without modifications, and in Source or
-Object form, provided that You meet the following conditions:
-
- 1. You must give any other recipients of the Work or Derivative Works
- a copy of this License; and
- 2. You must cause any modified files to carry prominent notices stating
- that You changed the files; and
- 3. You must retain, in the Source form of any Derivative Works that
- You distribute, all copyright, patent, trademark, and attribution
- notices from the Source form of the Work, excluding those notices
- that do not pertain to any part of the Derivative Works; and
- 4. If the Work includes a "NOTICE" text file as part of its distribution,
- then any Derivative Works that You distribute must include a readable
- copy of the attribution notices contained within such NOTICE file,
- excluding those notices that do not pertain to any part of
- the Derivative Works, in at least one of the following places:
- within a NOTICE text file distributed as part of the Derivative Works;
- within the Source form or documentation, if provided along with the
- Derivative Works; or, within a display generated by the Derivative Works,
- if and wherever such third-party notices normally appear.
- The contents of the NOTICE file are for informational purposes only
- and do not modify the License. You may add Your own attribution notices
- within Derivative Works that You distribute, alongside or as an addendum
- to the NOTICE text from the Work, provided that such additional attribution
- notices cannot be construed as modifying the License. You may add Your own
- copyright statement to Your modifications and may provide additional or
- different license terms and conditions for use, reproduction, or
- distribution of Your modifications, or for any such Derivative Works
- as a whole, provided Your use, reproduction, and distribution of
- the Work otherwise complies with the conditions stated in this License
- and your own copyright statement or terms and conditions do not conflict
- the conditions stated in the License including section 3.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
-any Contribution intentionally submitted for inclusion in the Work
-by You to the Licensor shall be under the terms and conditions of
-this License, without any additional terms or conditions.
-Notwithstanding the above, nothing herein shall supersede or modify
-the terms of any separate license agreement you may have executed
-with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
-names, trademarks, service marks, or product names of the Licensor,
-except as required for reasonable and customary use in describing the
-origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
-agreed to in writing, Licensor provides the Work (and each
-Contributor provides its Contributions) on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-implied, including, without limitation, any warranties or conditions
-of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-PARTICULAR PURPOSE. You are solely responsible for determining the
-appropriateness of using or redistributing the Work and assume any
-risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
-whether in tort (including negligence), contract, or otherwise,
-unless required by applicable law (such as deliberate and grossly
-negligent acts) or agreed to in writing, shall any Contributor be
-liable to You for damages, including any direct, indirect, special,
-incidental, or consequential damages of any character arising as a
-result of this License or out of the use or inability to use the
-Work (including but not limited to damages for loss of goodwill,
-work stoppage, computer failure or malfunction, or any and all
-other commercial damages or losses), even if such Contributor
-has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
-the Work or Derivative Works thereof, You may choose to offer,
-and charge a fee for, acceptance of support, warranty, indemnity,
-or other liability obligations and/or rights consistent with this
-License. However, in accepting such obligations, You may act only
-on Your own behalf and on Your sole responsibility, not on behalf
-of any other Contributor, and only if You agree to indemnify,
-defend, and hold each Contributor harmless for any liability
-incurred by, or claims asserted against, such Contributor by reason
-of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Flora License to your work
-
-To apply the Flora License to your work, attach the following
-boilerplate notice, with the fields enclosed by brackets "[]"
-replaced with your own identifying information. (Don't include
-the brackets!) The text should be enclosed in the appropriate
-comment syntax for the file format. We also recommend that a
-file or class name and description of purpose be included on the
-same "printed page" as the copyright notice for easier
-identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Flora License, Version 1.1 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://floralicense.org/license/
-
- 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.
-
-Copyright (c) Samsung Electronics Co., Ltd. All rights reserved.
-Except as noted, this software is licensed under Flora License, Version 1.1.
-Please, see the LICENSE.flora file for Flora License, Version 1.1 terms and conditions.
-
+Copyright (c) 2000 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <Ecore_X.h>
+#include <Eina.h>
+#include <vconf.h>
+
+#include "common.h"
+#include "box.h"
+#include "icon.h"
+#include "list.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "plmn.h"
+#include "message.h"
+#include "log.h"
+
+#define FIXED_BOX_PART_NAME "elm.swallow.fixed"
+#define SYSTEM_BOX_PART_NAME "elm.swallow.system"
+#define MINICTRL_BOX_PART_NAME "elm.swallow.minictrl"
+#define NOTI_BOX_PART_NAME "elm.swallow.noti"
+#define DIGIT_BOX_PART_NAME "percentage.digit.box"
+
+#define CORRECTION 10
+#define MORE_NOTI "more_notify"
+
+Eina_List *_view_fixed_list;
+Eina_List *_view_system_list;
+Eina_List *_view_minictrl_list;
+Eina_List *_view_noti_list;
+Eina_List *_view_alarm_list;
+
+/* FIXME */
+#if 0
+win_info *_win;
+#endif
+static int icon_show_state = 0;
+int previous_noti_count = 0;
+
+
+
+static Evas_Object *_box_add(Evas_Object * parent)
+{
+ Evas_Object *obj = NULL;
+
+ retv_if(!parent, NULL);
+
+ obj = elm_box_add(parent);
+ retv_if(!obj, NULL);
+ evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_fill_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ /* Align to left-top */
+ elm_box_horizontal_set(obj, EINA_TRUE);
+ evas_object_show(obj);
+
+ return obj;
+}
+
+
+#if 0
+static void _update_window(win_info *win)
+{
+ int root_w, root_h;
+ Ecore_X_Window xwin, root;
+
+ retif(win == NULL, , "Invalid parameter!");
+
+ xwin = elm_win_xwindow_get(win->win);
+ if (!xwin) return;
+ root = ecore_x_window_root_get(xwin);
+ if (!root) return;
+ ecore_x_window_size_get(root, &root_w, &root_h);
+
+ if (win->angle == 0 || win->angle == 180) win->w = root_w;
+ else win->w = root_h;
+
+ switch (win->angle) {
+ case 0:
+ ecore_x_window_shape_input_rectangle_set(xwin, root_w - win->w, 0, win->w, win->h);
+ break;
+ case 90:
+ ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->h, win->w);
+ break;
+ case 180:
+ ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->w, win->h);
+ break;
+ case 270:
+ ecore_x_window_shape_input_rectangle_set(xwin, 0, root_h - win->w, win->h, win->w);
+ break;
+ default:
+ break;
+ }
+}
+#endif
+
+#if 0
+void box_delete_noti_icon_all(win_info *win)
+{
+ icon_s *icon;
+ Eina_List *l;
+
+ elm_box_unpack_all(win->_noti_box);
+
+ EINA_LIST_FOREACH(_view_noti_list, l, icon) {
+ if (icon->obj_exist == EINA_TRUE) {
+ if (icon_del(icon) == EINA_TRUE) {
+ icon->obj_exist = EINA_FALSE;
+ }
+ }
+ }
+}
+#endif
+
+
+static void _fixed_box_pack_icon(win_info *win, icon_s *icon)
+{
+ ret_if(!win);
+ ret_if(!icon);
+
+ switch (icon->type) {
+ case INDICATOR_IMG_ICON:
+ evas_object_show(icon->img_obj.obj);
+ elm_box_pack_start(win->_fixed_box[icon->priority], icon->img_obj.obj);
+ break;
+ case INDICATOR_TXT_ICON:
+ break;
+ case INDICATOR_TXT_WITH_IMG_ICON:
+ break;
+ case INDICATOR_DIGIT_ICON:
+ switch(icon->digit_area) {
+ case DIGIT_UNITY:
+ evas_object_show(icon->img_obj.obj);
+ elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+ break;
+ case DIGIT_DOZENS:
+ evas_object_show(icon->img_obj.obj);
+ elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+ break;
+ case DIGIT_DOZENS_UNITY:
+ evas_object_show(icon->img_obj.obj);
+ elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+ break;
+ case DIGIT_HUNDREDS:
+ evas_object_show(icon->img_obj.obj);
+ elm_box_pack_end(win->_digit_box, icon->img_obj.obj);
+ break;
+ default:
+ _E("default");
+ break;
+ }
+ break;
+ default:
+ _E("default");
+ break;
+ }
+#ifdef _SUPPORT_SCREEN_READER
+ util_icon_access_register(icon);
+#endif
+}
+
+
+
+static void _box_pack_icon(icon_s *icon, Evas_Object *box)
+{
+ ret_if(!icon);
+ ret_if(!box);
+
+ switch (icon->type) {
+ case INDICATOR_IMG_ICON:
+ evas_object_show(icon->img_obj.obj);
+ elm_box_pack_end(box, icon->img_obj.obj);
+ break;
+ case INDICATOR_TXT_ICON:
+ break;
+ case INDICATOR_TXT_WITH_IMG_ICON:
+ break;
+ case INDICATOR_DIGIT_ICON:
+ evas_object_show(icon->img_obj.obj);
+ elm_box_pack_end(box, icon->img_obj.obj);
+ break;
+ default:
+ _E("default");
+ break;
+ }
+#ifdef _support_screen_reader
+ util_icon_access_register(icon);
+#endif
+ if (icon->area == INDICATOR_ICON_AREA_NOTI || icon->area == INDICATOR_ICON_AREA_ALARM) {
+ util_start_noti_ani(icon);
+ }
+}
+
+
+
+static void _create_img_obj(icon_s *icon)
+{
+ Evas_Object *img_eo = NULL;
+
+ ret_if(!icon);
+
+ img_eo = evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+ evas_object_size_hint_min_set(img_eo, ELM_SCALE_SIZE(icon->img_obj.width), ELM_SCALE_SIZE(icon->img_obj.height));
+ box_handle_animated_gif(icon);
+}
+
+
+
+static void _update_icon(win_info *win, Eina_List *list)
+{
+ icon_s *icon;
+ Eina_List *l;
+
+ ret_if(!win);
+ ret_if(!list);
+
+ EINA_LIST_FOREACH(list, l, icon) {
+ if (icon->obj_exist == EINA_FALSE) {
+ icon_add(win, icon);
+ }
+
+ if (icon->obj_exist == EINA_TRUE) {
+ if (icon->area == INDICATOR_ICON_AREA_FIXED
+ && icon->priority <= INDICATOR_PRIORITY_FIXED_MAX) {
+ _create_img_obj(icon);
+ _fixed_box_pack_icon(win, icon);
+ }
+ if (icon->area == INDICATOR_ICON_AREA_SYSTEM
+ && icon->priority >= INDICATOR_PRIORITY_SYSTEM_MIN
+ && icon->priority <= INDICATOR_PRIORITY_SYSTEM_MAX) {
+ _create_img_obj(icon);
+ _box_pack_icon(icon, win->_non_fixed_box);
+ }
+ if (icon->area == INDICATOR_ICON_AREA_MINICTRL
+ && icon->priority >= INDICATOR_PRIORITY_MINICTRL_MIN
+ && icon->priority <= INDICATOR_PRIORITY_MINICTRL_MAX) {
+ _create_img_obj(icon);
+ _box_pack_icon(icon, win->_minictrl_box);
+ }
+ if (icon->area == INDICATOR_ICON_AREA_NOTI) {
+ _create_img_obj(icon);
+ _box_pack_icon(icon, win->_noti_box);
+ }
+ if (icon->area == INDICATOR_ICON_AREA_ALARM) {
+ _create_img_obj(icon);
+ _box_pack_icon(icon, win->_alarm_box);
+ }
+ }
+ }
+}
+
+
+
+extern unsigned int box_get_count(Box_List list)
+{
+ int count = 0;
+
+ switch (list) {
+ case FIXED_LIST:
+ count = eina_list_count(_view_fixed_list);
+ break;
+ case SYSTEM_LIST:
+ count = eina_list_count(_view_system_list);
+ break;
+ case MINICTRL_LIST:
+ count = eina_list_count(_view_minictrl_list);
+ break;
+ case NOTI_LIST:
+ count = eina_list_count(_view_noti_list);
+ break;
+ default:
+ _D("List dose not exist");
+ break;
+ }
+
+ return count;
+}
+
+
+
+static void _update_display(win_info *win)
+{
+ int i = 0;
+
+ ret_if(!win);
+
+ if (box_get_count(SYSTEM_LIST)) {
+ util_signal_emit(win->data, "indicator.system.show", "indicator.prog");
+ } else {
+ util_signal_emit(win->data, "indicator.system.hide", "indicator.prog");
+ }
+
+ if (box_get_count(MINICTRL_LIST)) {
+ util_signal_emit(win->data, "indicator.minictrl.show", "indicator.prog");
+ } else {
+ util_signal_emit(win->data, "indicator.minictrl.hide", "indicator.prog");
+ }
+
+ if (box_get_count(NOTI_LIST)) {
+ util_signal_emit(win->data, "indicator.noti.show", "indicator.prog");
+ } else {
+ util_signal_emit(win->data, "indicator.noti.hide", "indicator.prog");
+ }
+
+
+ if (message_ani_playing_check() == 1) {
+ return;
+ }
+
+ for (i = 0; i < FIXED_COUNT; ++i) {
+ elm_box_unpack_all(win->_fixed_box[i]);
+ }
+
+ elm_box_unpack_all(win->_non_fixed_box);
+ elm_box_unpack_all(win->_minictrl_box);
+ elm_box_unpack_all(win->_noti_box);
+ elm_box_unpack_all(win->_alarm_box);
+ elm_box_unpack_all(win->_digit_box);
+
+ _update_icon(win, _view_fixed_list);
+ _update_icon(win, _view_system_list);
+ _update_icon(win, _view_minictrl_list);
+ _update_icon(win, _view_noti_list);
+ _update_icon(win, _view_alarm_list);
+
+#if 0
+ if (win) _update_window(win);
+#endif
+}
+
+
+
+extern void box_update_display(win_info *win)
+{
+ ret_if(!win);
+
+#if 0
+ _update_window(win);
+#endif
+ icon_reset_list();
+ _update_display(win);
+ icon_handle_more_notify_icon(win);
+}
+
+
+
+extern int box_pack(icon_s *icon)
+{
+ struct appdata *ad = NULL;
+ int noti_count = 0;
+
+ retv_if(!icon, 0);
+
+ ad = (struct appdata*)icon->ad;
+
+ if (box_exist_icon(icon)) return OK;
+
+ if (INDICATOR_ICON_AREA_FIXED == icon->area) {
+ icon->exist_in_view = EINA_TRUE;
+ _view_fixed_list = eina_list_append(_view_fixed_list, icon);
+ } else if(INDICATOR_ICON_AREA_SYSTEM == icon->area) {
+ icon_s *data;
+ Eina_List *l = NULL;
+
+ EINA_LIST_FOREACH(_view_system_list, l, data) {
+ if (data->priority <= icon->priority) {
+ icon->exist_in_view = EINA_TRUE;
+ _view_system_list = eina_list_append_relative_list(_view_system_list, icon, l);
+ DBG("System (eina_list_append_relative_list) %s",icon->name);
+ goto __CATCH;
+ }
+ }
+
+ /* if finding condition is failed, append it at tail */
+ icon->exist_in_view = EINA_TRUE;
+ _view_system_list = eina_list_prepend(_view_system_list, icon);
+ DBG("System prepend (Priority low) : %s",icon->name);
+ } else if(INDICATOR_ICON_AREA_MINICTRL == icon->area) {
+ INFO("Pack to MINICTRL list : %s", icon->name);
+ icon_s *data;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(_view_minictrl_list, l, data) {
+ if (data->priority <= icon->priority) {
+ icon->exist_in_view = EINA_TRUE;
+ _view_minictrl_list = eina_list_append_relative_list(_view_minictrl_list, icon, l);
+ goto __CATCH;
+ }
+ }
+
+ /* if finding condition is failed, append it at tail */
+ icon->exist_in_view = EINA_TRUE;
+ _view_minictrl_list = eina_list_append(_view_minictrl_list, icon);
+ } else if(INDICATOR_ICON_AREA_NOTI == icon->area) {
+ if(strncmp(icon->name, MORE_NOTI, strlen(MORE_NOTI))==0)
+ {
+ icon->exist_in_view = EINA_TRUE;
+ _view_noti_list = eina_list_prepend(_view_noti_list, icon);
+ goto __CATCH;
+ }
+
+ /* if finding condition is failed, append it at tail */
+ icon->exist_in_view = EINA_TRUE;
+ _view_noti_list = eina_list_append(_view_noti_list, icon);
+ } else {
+ icon->exist_in_view = EINA_TRUE;
+ _view_alarm_list = eina_list_append(_view_alarm_list, icon);
+ }
+
+__CATCH:
+ previous_noti_count = noti_count;
+ if (icon->area == INDICATOR_ICON_AREA_NOTI
+ || icon->area == INDICATOR_ICON_AREA_SYSTEM
+ || icon->area == INDICATOR_ICON_AREA_MINICTRL) {
+ int bDisplay = 0;
+ bDisplay = 1;
+
+ if (ad->opacity_mode == INDICATOR_OPACITY_TRANSPARENT
+ && bDisplay == 1) {
+ util_send_status_message_start(ad,2.5);
+ }
+ }
+
+ return OK;
+}
+
+
+
+extern int box_pack_append(icon_s *icon)
+{
+ Eina_List *l;
+ icon_s *data;
+
+ retv_if(!icon, 0);
+
+ if (box_exist_icon(icon)) return OK;
+
+ switch (icon->area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ icon->exist_in_view = EINA_TRUE;
+ _view_fixed_list = eina_list_append(_view_fixed_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ icon->exist_in_view = EINA_TRUE;
+ _view_system_list = eina_list_append(_view_system_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_MINICTRL:
+ icon->exist_in_view = EINA_TRUE;
+ _view_minictrl_list = eina_list_append(_view_minictrl_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ EINA_LIST_FOREACH(_view_noti_list, l, data) {
+ if (strncmp(data->name, MORE_NOTI, strlen(MORE_NOTI)) == 0) {
+ icon->exist_in_view = EINA_TRUE;
+ _view_noti_list = eina_list_append_relative_list(_view_noti_list, icon, l);
+ return OK;
+ }
+ }
+ icon->exist_in_view = EINA_TRUE;
+ _view_noti_list = eina_list_append(_view_noti_list, icon);
+ break;
+ default:
+ _D("Icon area does not exists");
+ break;
+ }
+
+ return OK;
+}
+
+
+
+int box_unpack(icon_s *icon)
+{
+ retv_if(!icon, 0);
+
+ SECURE_DBG("[box_unpack] %s!",icon->name);
+ switch (icon->area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ icon->exist_in_view = EINA_FALSE;
+ _view_fixed_list = eina_list_remove(_view_fixed_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ icon->exist_in_view = EINA_FALSE;
+ _view_system_list = eina_list_remove(_view_system_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_MINICTRL:
+ icon->exist_in_view = EINA_FALSE;
+ _view_minictrl_list = eina_list_remove(_view_minictrl_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ icon->exist_in_view = EINA_FALSE;
+ _view_noti_list = eina_list_remove(_view_noti_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_ALARM:
+ icon->exist_in_view = EINA_FALSE;
+ _view_alarm_list = eina_list_remove(_view_alarm_list, icon);
+ break;
+ default:
+ _D("icon area dose not exists");
+ break;
+ }
+
+#if 0
+ int noti_count = 0;
+
+ noti_count = box_get_count(NOTI_LIST);
+ if (noti_count > 0) {
+ util_signal_emit(_win->data, "indicator.noti.show", "indicator.prog");
+ } else {
+ DBG("Need to stop blink animation and hide icon");
+ util_signal_emit_by_win(_win->data,"indicator.noti.hide", "indicator.prog");
+ }
+#endif
+#ifdef _SUPPORT_SCREEN_READER
+ util_icon_access_unregister(icon);
+#endif
+
+ if (icon->obj_exist == EINA_TRUE) {
+ if (icon_del(icon) == EINA_TRUE) {
+ icon->obj_exist = EINA_FALSE;
+ }
+ }
+
+ return OK;
+}
+
+
+
+extern void box_init(win_info *win)
+{
+ char *str_text = NULL;
+ int i = 0;
+
+ ret_if(!win);
+
+ /* Make Fixed Box Object */
+ for (i = 0; i < FIXED_COUNT; ++i) {
+ if (win->_fixed_box[i] == NULL) {
+ win->_fixed_box[i] = _box_add(win->layout);
+ ret_if(!(win->_fixed_box[i]));
+
+ Eina_Strbuf *temp_str = eina_strbuf_new();
+ eina_strbuf_append_printf(temp_str, "%s%d", FIXED_BOX_PART_NAME, i);
+ str_text = eina_strbuf_string_steal(temp_str);
+
+ edje_object_part_swallow(elm_layout_edje_get(win->layout), str_text, win->_fixed_box[i]);
+ eina_strbuf_free(temp_str);
+ free(str_text);
+ }
+ }
+
+ /* Make Non Fixed Box(SYSTEM) Object */
+ win->_non_fixed_box = _box_add(win->layout);
+ ret_if(!(win->_non_fixed_box));
+
+ evas_object_size_hint_align_set(win->_non_fixed_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ edje_object_part_swallow(elm_layout_edje_get(win->layout), SYSTEM_BOX_PART_NAME, win->_non_fixed_box);
+
+ /* Make Non Fixed Box(MINICTRL) Object */
+ win->_minictrl_box = _box_add(win->layout);
+ ret_if(!(win->_minictrl_box));
+
+ evas_object_size_hint_align_set(win->_minictrl_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ edje_object_part_swallow(elm_layout_edje_get(win->layout), MINICTRL_BOX_PART_NAME, win->_minictrl_box);
+
+ /* Make Non Fixed Box(NOTI) Box Object */
+ win->_noti_box = _box_add(win->layout);
+ ret_if(!(win->_noti_box));
+
+ evas_object_size_hint_align_set(win->_noti_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ edje_object_part_swallow(elm_layout_edje_get(win->layout), NOTI_BOX_PART_NAME, win->_noti_box);
+
+ win->_alarm_box = _box_add(win->layout);
+ ret_if(!(win->_alarm_box));
+
+ evas_object_size_hint_align_set(win->_alarm_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ edje_object_part_swallow(elm_layout_edje_get(win->layout), "indicator.alarm.icon", win->_alarm_box);
+
+ win->_digit_box = _box_add(win->layout);
+ ret_if(!(win->_digit_box));
+
+ evas_object_size_hint_align_set(win->_digit_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ edje_object_part_swallow(elm_layout_edje_get(win->layout), DIGIT_BOX_PART_NAME, win->_digit_box);
+
+ return;
+}
+
+
+
+
+extern void box_fini(win_info *win)
+{
+ int i = 0;
+
+ ret_if(!win);
+ ret_if(!(win->layout));
+
+ if (win->_digit_box != NULL) {
+ edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_digit_box);
+ elm_box_unpack_all(win->_digit_box);
+ evas_object_del(win->_digit_box);
+ win->_digit_box = NULL;
+ }
+
+ if (win->_non_fixed_box != NULL) {
+ edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_non_fixed_box);
+ elm_box_unpack_all(win->_non_fixed_box);
+ evas_object_del(win->_non_fixed_box);
+ win->_non_fixed_box = NULL;
+ }
+
+ if (win->_minictrl_box != NULL) {
+ edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_minictrl_box);
+ elm_box_unpack_all(win->_minictrl_box);
+ evas_object_del(win->_minictrl_box);
+ win->_minictrl_box = NULL;
+ }
+
+ if (win->_noti_box != NULL) {
+ edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_noti_box);
+ elm_box_unpack_all(win->_noti_box);
+ evas_object_del(win->_noti_box);
+ win->_noti_box = NULL;
+ }
+
+ if (win->_alarm_box != NULL) {
+ edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_alarm_box);
+ elm_box_unpack_all(win->_alarm_box);
+ evas_object_del(win->_alarm_box);
+ win->_alarm_box = NULL;
+ }
+
+ for (i = 0; i < FIXED_COUNT; ++i) {
+ if (win->_fixed_box[i] != NULL) {
+ edje_object_part_unswallow(elm_layout_edje_get(win->layout), win->_fixed_box[i]);
+ elm_box_unpack_all(win->_fixed_box[i]);
+ evas_object_del(win->_fixed_box[i]);
+ win->_fixed_box[i] = NULL;
+ }
+ }
+
+ return;
+}
+
+
+
+unsigned int box_get_count_in_noti_list_except_minictrl(void)
+{
+ icon_s *data;
+ Eina_List *l;
+ int count = 0;
+
+ EINA_LIST_FOREACH(_view_noti_list, l, data) {
+ if (data->priority != INDICATOR_PRIORITY_NOTI_1) {
+ count++;
+ }
+ }
+ return count;
+
+}
+
+
+
+int box_get_enabled_noti_count(void)
+{
+ int enabled_noti_cnt = 0;
+
+ int system_cnt = box_get_count(SYSTEM_LIST);
+ int minictrl_cnt = box_get_count(MINICTRL_LIST);
+ DBG("System Count : %d, Minictrl Count : %d", system_cnt, minictrl_cnt);
+
+ enabled_noti_cnt = MAX_NOTI_ICONS_PORT - system_cnt - minictrl_cnt;
+ if(enabled_noti_cnt <= 0) {
+ enabled_noti_cnt = 1; // Notification icon must show at least 1.
+ }
+
+ DBG("Notification icon enabled_noti_cnt %d",enabled_noti_cnt);
+
+ return enabled_noti_cnt;
+}
+
+
+
+int box_get_enabled_system_count(void)
+{
+ int system_cnt = 0;
+ int noti_cnt = box_get_count(NOTI_LIST);
+ int minictrl_cnt = box_get_count(MINICTRL_LIST);
+
+ _D("Noti count : %d , MiniCtrl count : %d", noti_cnt, minictrl_cnt);
+
+ system_cnt = PORT_SYSTEM_ICON_COUNT; // MAX = 5.
+
+ if(noti_cnt > 0) {
+ system_cnt--; // Notification icon must show at least 1.
+ }
+
+ if(minictrl_cnt > 0) {
+ system_cnt--; // Minictrl icon must show at least 1.
+ }
+
+ return system_cnt;
+}
+
+
+
+int box_get_minictrl_list(void)
+{
+ int icon_count = 0;
+ int noti_count = box_get_count(NOTI_LIST);
+ int system_count = box_get_count(SYSTEM_LIST);
+
+ icon_count = PORT_MINICTRL_ICON_COUNT; // = 2. MIN (1) / MAX (3)
+
+ if(noti_count) { // noti_count >= 1
+ if(system_count >= 3) {
+ icon_count--; // icon_count = 2 -> 1
+ } else if(system_count <= 1) {
+ icon_count++; // icon_count = 2 -> 3
+ }
+ } else { // noti_count == 0
+ if(system_count >= 4) {
+ icon_count--; // icon_count = 2 -> 1
+ } else if(system_count <= 2) {
+ icon_count++; // icon_count = 2 -> 3
+ }
+ }
+
+ _D("Noti count : %d, System count : %d, Minictrl count : %d", noti_count, system_count, icon_count);
+
+ return icon_count;
+}
+
+
+
+int box_get_max_count_in_non_fixed_list(void)
+{
+ int added_count = 0;
+ int icon_count = 0;
+ int status = 0;
+
+ if (OK != vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status)) {
+ _E("Fail to get vconfkey");
+ }
+
+ if (status == EINA_TRUE) {
+ added_count = BATTERY_TEXT_ON_COUNT;
+ } else {
+ added_count = BATTERY_TEXT_OFF_COUNT;
+ }
+
+ icon_count = PORT_NONFIXED_ICON_COUNT + added_count;
+
+ return icon_count;
+}
+
+
+
+Icon_AddType box_is_enable_to_insert_in_non_fixed_list(icon_s *obj)
+{
+ icon_s *icon;
+ Eina_List *l;
+
+ int higher_cnt = 0;
+ int same_cnt = 0;
+ int same_top_cnt = 0;
+ int lower_cnt = 0;
+ int noti_cnt = box_get_count(NOTI_LIST);
+ Eina_List * tmp_list = NULL;
+
+ retv_if(!obj, 0);
+
+ switch (obj->area) {
+ case INDICATOR_ICON_AREA_SYSTEM:
+ tmp_list = _view_system_list;
+ break;
+ case INDICATOR_ICON_AREA_MINICTRL:
+ tmp_list = _view_minictrl_list;
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ tmp_list = _view_noti_list;
+ break;
+ default:
+ _D("obj area does not exists");
+ break;
+ }
+
+ EINA_LIST_FOREACH(tmp_list, l, icon) {
+ /* If same Icon exist in non-fixed view list, it need not to add icon */
+ if (!strcmp(icon->name, obj->name)) {
+ return CANNOT_ADD;
+ }
+
+ if (icon->priority > obj->priority) {
+ ++higher_cnt;
+ } else if (icon->priority == obj->priority) {
+ ++same_cnt;
+ if (icon->always_top == EINA_TRUE) {
+ ++same_top_cnt;
+ }
+ } else {
+ lower_cnt++;
+ }
+ }
+
+ if (obj->area == INDICATOR_ICON_AREA_SYSTEM) {
+ if (higher_cnt + same_cnt + lower_cnt >= box_get_enabled_system_count()) {
+ if (obj->always_top == EINA_TRUE) {
+ if(same_top_cnt >= box_get_enabled_system_count()) {
+ return CANNOT_ADD;
+ } else {
+ return CAN_ADD_WITH_DEL_SYSTEM;
+ }
+ } else {
+ if (higher_cnt >= box_get_enabled_system_count()) {
+ return CANNOT_ADD;
+ } else if (higher_cnt+same_cnt >= box_get_enabled_system_count()) {
+ return CAN_ADD_WITH_DEL_SYSTEM;
+ } else {
+ return CAN_ADD_WITH_DEL_SYSTEM;
+ }
+ }
+ } else {
+ return CAN_ADD_WITHOUT_DEL;
+ }
+ } else if (obj->area == INDICATOR_ICON_AREA_MINICTRL) {
+ if (higher_cnt + same_cnt + lower_cnt >= box_get_minictrl_list()) {
+ if (obj->always_top == EINA_TRUE) {
+ if (same_top_cnt >= box_get_minictrl_list()) {
+ return CANNOT_ADD;
+ } else {
+ return CAN_ADD_WITH_DEL_MINICTRL;
+ }
+ } else {
+ if (higher_cnt >= box_get_minictrl_list()) {
+ return CANNOT_ADD;
+ } else if (higher_cnt+same_cnt >= box_get_minictrl_list()) {
+ return CAN_ADD_WITH_DEL_MINICTRL;
+ } else {
+ return CAN_ADD_WITH_DEL_MINICTRL;
+ }
+ }
+ } else {
+ return CAN_ADD_WITHOUT_DEL;
+ }
+ } else {
+ if (noti_cnt > MAX_NOTI_ICONS_PORT) {
+ return CAN_ADD_WITH_DEL_NOTI;
+ } else {
+ return CAN_ADD_WITHOUT_DEL;
+ }
+ }
+
+ return CANNOT_ADD;
+}
+
+
+
+int box_get_priority_in_move_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+ Evas_Coord x, y, h, w;
+
+ /* Home Area Check for launching home */
+ evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED1], &x, &y, &h, &w);
+
+ if (curr_x >= x - CORRECTION && curr_x <= x+h + CORRECTION) {
+ if (curr_y == -1) {
+ return INDICATOR_PRIORITY_FIXED1;
+ } else if (curr_y >= y - CORRECTION && curr_y <= y+h + CORRECTION) {
+ return INDICATOR_PRIORITY_FIXED1;
+ }
+ }
+
+ /* Non Fixed Area check for show/hide quickpanel */
+ return -1;
+}
+
+
+
+int box_check_indicator_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+ Evas_Coord x, y, w, h;
+
+ /* Home Area Check for launching home */
+ evas_object_geometry_get(win->layout, &x, &y, &w, &h);
+
+ if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h) {
+ return 1;
+ }
+
+ return 0;
+}
+
+
+
+int box_check_home_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+ Evas_Coord x, y, w, h;
+
+ /* Home Area Check for launching home */
+ evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED7], &x, &y, &w, &h);
+
+ if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h) {
+ return 1;
+ }
+
+ return 0;
+}
+
+
+
+int box_check_more_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
+{
+ Evas_Coord x, y, w, h;
+
+ /* Home Area Check for launching home */
+ evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED11], &x, &y, &w, &h);
+
+ if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h) {
+ return 1;
+ }
+
+ return 0;
+}
+
+
+
+void box_icon_state_set(int bShow, char* file, int line)
+{
+ icon_show_state = bShow;
+}
+
+
+
+int box_icon_state_get(void)
+{
+ return icon_show_state;
+}
+
+
+
+extern Eina_Bool box_exist_icon(icon_s *obj)
+{
+ retv_if(!obj, ECORE_CALLBACK_CANCEL);
+
+ switch (obj->area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ if (eina_list_data_find(_view_fixed_list, obj)) {
+ return EINA_TRUE;
+ } else {
+ return EINA_FALSE;
+ }
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ if (eina_list_data_find(_view_system_list, obj)) {
+ return EINA_TRUE;
+ } else {
+ return EINA_FALSE;
+ }
+ break;
+ case INDICATOR_ICON_AREA_MINICTRL:
+ if (eina_list_data_find(_view_minictrl_list, obj)) {
+ return EINA_TRUE;
+ } else {
+ return EINA_FALSE;
+ }
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ if (eina_list_data_find(_view_noti_list, obj)) {
+ return EINA_TRUE;
+ } else {
+ return EINA_FALSE;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return EINA_FALSE;
+}
+
+
+
+int box_handle_animated_gif(icon_s *icon)
+{
+ int bPlay = TRUE;
+ int val = 0;
+ Evas_Object *icon_eo = evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+
+ retif(icon == NULL, FAIL, "Invalid parameter!");
+
+ if (elm_image_animated_available_get(icon_eo) == EINA_FALSE) {
+ return FALSE;
+ }
+
+ if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
+ return FALSE;
+ }
+
+ switch (val) {
+ case VCONFKEY_PM_STATE_LCDOFF : //LCD OFF
+ bPlay = FALSE;
+ break;
+ case VCONFKEY_PM_STATE_NORMAL : //LCD ON
+ bPlay = TRUE;
+ break;
+ default:
+ bPlay = TRUE;
+ break;
+ }
+
+ if (bPlay == TRUE) {
+ if (elm_image_animated_get(icon_eo)==EINA_FALSE) {
+ elm_image_animated_set(icon_eo,EINA_TRUE);
+ }
+
+ if (elm_image_animated_play_get(icon_eo) == EINA_FALSE) {
+ elm_image_animated_play_set(icon_eo, EINA_TRUE);
+ }
+ } else {
+ if(elm_image_animated_play_get(icon_eo) == EINA_TRUE) {
+ elm_image_animated_play_set(icon_eo, EINA_FALSE);
+ }
+ }
+
+ return TRUE;
+}
+
+
+
+void box_noti_ani_handle(int bStart)
+{
+ icon_s *icon;
+ Eina_List *l;
+
+ EINA_LIST_FOREACH(_view_noti_list, l, icon) {
+ if (icon->obj_exist == EINA_TRUE) {
+ if (bStart == 1) {
+ util_start_noti_ani(icon);
+ } else {
+ util_stop_noti_ani(icon);
+ }
+ }
+ }
+}
+
+/* End of file */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_BOX_UTIL_H__
+#define __INDICATOR_BOX_UTIL_H__
+
+#include <Elementary.h>
+
+#include "indicator.h"
+
+typedef enum _Icon_AddType {
+ CANNOT_ADD = -1,
+ CAN_ADD_WITH_DEL_SYSTEM,
+ CAN_ADD_WITH_DEL_MINICTRL,
+ CAN_ADD_WITH_DEL_NOTI,
+ CAN_ADD_WITHOUT_DEL,
+} Icon_AddType;
+
+typedef enum _Icon_Display_Count {
+ BATTERY_TEXT_ON_COUNT = 0,
+ BATTERY_TEXT_OFF_COUNT = 0,
+ PORT_NONFIXED_ICON_COUNT = 7,
+ LAND_NONFIXED_ICON_COUNT = 11,
+ PORT_SYSTEM_ICON_COUNT = 5, // MIN : (1), MAX : (5)
+ LAND_SYSTEM_ICON_COUNT = 6,
+ PORT_MINICTRL_ICON_COUNT = 2, // MIN : (1), MAX : (3)
+ LAND_MINICTRL_ICON_COUNT = 2,
+} Icon_Display_Count;
+
+typedef enum Box_List {
+ FIXED_LIST = 0,
+ SYSTEM_LIST,
+ MINICTRL_LIST,
+ NOTI_LIST
+} Box_List;
+
+extern int box_pack(icon_s *icon);
+extern int box_pack_append(icon_s *icon);
+extern int box_unpack(icon_s *icon);
+extern void box_init(win_info *win);
+extern void box_fini(win_info *win);
+extern unsigned int box_get_count(Box_List list);
+extern int box_get_max_count_in_non_fixed_list(void);
+extern Icon_AddType box_is_enable_to_insert_in_non_fixed_list(icon_s *obj);
+extern int box_get_priority_in_move_area(win_info *win, Evas_Coord, Evas_Coord);
+extern int box_check_indicator_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y);
+extern int box_check_home_icon_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y);
+extern Eina_Bool box_exist_icon(icon_s *obj);
+extern int box_handle_animated_gif(icon_s *icon);
+extern void box_noti_ani_handle(int bStart);
+extern void box_icon_state_set(int bShow,char* file,int line);
+extern int box_icon_state_get(void);
+extern unsigned int box_get_count_in_noti_list_except_minictrl(void);
+extern int box_get_enabled_noti_count(void);
+extern int box_check_more_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y);
+extern void box_update_display(win_info *win);
+extern int box_get_enabled_system_count(void);
+extern int box_get_minictrl_list(void);
+
+#endif /*__INDICATOR_BOX_UTIL_H__*/
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 __DEF_common_H_
#define __DEF_common_H_
#define FAIL (-1)
#ifdef _DLOG_USED
-#define LOG_TAG "indicator"
+//#define LOG_TAG "INDICATOR"
#include <dlog.h>
#define ERR(str, args...) LOGE("%s[%d]\t " #str "\n", \
#define DBG(str, args...) LOGD("%s[%d]\t " #str "\n", \
__func__, __LINE__, ##args)
#define INFO(str, args...) LOGI(#str"\n", ##args)
+
+#define SECURE_ERR(str, args...) SECURE_LOGE("%s[%d]\t " #str "\n", \
+ __func__, __LINE__, ##args)
+#define SECURE_DBG(str, args...) SECURE_LOGD("%s[%d]\t " #str "\n", \
+ __func__, __LINE__, ##args)
+#define SECURE_INFO(str, args...) SECURE_LOGI(#str"\n", ##args)
+
#elif FILE_DEBUG /*_DLOG_USED*/
#include "indicator_debug_util.h"
#define ERR(str, args...) debug_printf("%s[%d]\t " #str "\n", \
return ret;\
} \
} while (0);
+#define ECORE_FILE_MONITOR_DELIF(p) ({if (p) {ecore_file_monitor_del(p); p = NULL; }})
#define gotoif(cond, target, str, args...) do {\
if (cond) { \
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <Eina.h>
+#include <vconf.h>
+#include <app_preference.h>
+
+#include "common.h"
+#include "box.h"
+#include "icon.h"
+#include "list.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "log.h"
+
+#define PRIVATE_DATA_KEY_ICON_B_ANI "p_i_ba"
+
+extern int current_angle;
+
+#define ON_TIMER_ICON_ANIMATION_FRAME_TIME 0.3
+#define UPLOAD_ICON_ANIMATION_SIGNAL "indicator.ani.uploading.%d"
+#define DOWNLOAD_ICON_ANIMATION_SIGNAL "indicator.ani.downloading.%d"
+
+static unsigned int update_icon_flag = 1; // For battery problem
+
+
+
+static void _reset_on_timer_icon_animation(icon_s *icon)
+{
+ ret_if(!icon);
+
+ if (icon->p_animation_timer) {
+ ecore_timer_del(icon->p_animation_timer);
+ icon->p_animation_timer = NULL;
+ }
+ icon->animation_in_progress = EINA_FALSE;
+ icon->last_animation_timestamp = ecore_time_unix_get();
+ icon->signal_to_emit_prefix[0] = '\0';
+ icon->animation_state = UD_ICON_ANI_STATE_0;
+}
+
+
+
+static Eina_Bool _animate_on_timer_cb(void *data)
+{
+ icon_s *icon = NULL;
+
+ retv_if(!data, ECORE_CALLBACK_CANCEL);
+
+ icon = (icon_s *)data;
+
+ if (icon->animation_in_progress == EINA_FALSE) {
+ icon->p_animation_timer = NULL;
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ if ((ecore_time_unix_get() - icon->last_animation_timestamp) < ON_TIMER_ICON_ANIMATION_FRAME_TIME) {
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ Evas_Object *img_edje = elm_layout_edje_get(icon->img_obj.obj);
+ retv_if(!img_edje, ECORE_CALLBACK_CANCEL);
+
+ char signal_to_emit[32] = {'\0',};
+ sprintf(signal_to_emit,icon->signal_to_emit_prefix,icon->animation_state);
+
+ edje_object_signal_emit(img_edje, signal_to_emit,"prog");
+
+ if (icon->animation_state == UD_ICON_ANI_STATE_MAX) {
+ icon->animation_state = UD_ICON_ANI_STATE_0;
+ } else {
+ icon->animation_state++;
+ }
+ icon->last_animation_timestamp = ecore_time_unix_get();
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+
+
+static const char *_icon_ani_type_set_send_signal(icon_s *icon, Icon_Ani_Type type)
+{
+ retv_if(!icon, NULL);
+
+ const char *BLINK_SIGNAL = "icon,state,blink";
+ const char *ROATATE_SIGNAL = "icon,state,rotate";
+ const char *METRONOME_SIGNAL = "icon,state,metronome";
+ const char *DEFAULT = "icon,state,default";
+ const char *send_signal = DEFAULT;
+
+ switch (type) {
+ case ICON_ANI_BLINK:
+ send_signal = BLINK_SIGNAL;
+ break;
+ case ICON_ANI_ROTATE:
+ send_signal = ROATATE_SIGNAL;
+ break;
+ case ICON_ANI_METRONOME:
+ send_signal = METRONOME_SIGNAL;
+ break;
+ case ICON_ANI_DOWNLOADING:
+ case ICON_ANI_UPLOADING:
+ /* If this icon is already animated during download/upload we don't have to set timer again */
+ if (icon->animation_in_progress == EINA_FALSE) {
+ _reset_on_timer_icon_animation(icon);
+ send_signal = "dummy.signal";
+
+ if (type == ICON_ANI_DOWNLOADING) {
+ strncpy(icon->signal_to_emit_prefix, DOWNLOAD_ICON_ANIMATION_SIGNAL, sizeof(DOWNLOAD_ICON_ANIMATION_SIGNAL));
+ }
+
+ if (type == ICON_ANI_UPLOADING) {
+ strncpy(icon->signal_to_emit_prefix, UPLOAD_ICON_ANIMATION_SIGNAL,sizeof(UPLOAD_ICON_ANIMATION_SIGNAL));
+ }
+ icon->animation_in_progress = EINA_TRUE;
+ icon->p_animation_timer = ecore_timer_add(ON_TIMER_ICON_ANIMATION_FRAME_TIME,_animate_on_timer_cb, icon);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return send_signal;
+}
+
+
+
+void icon_ani_set(icon_s *icon, Icon_Ani_Type type)
+{
+ Evas_Object *img_edje = NULL;
+ const char *send_signal = NULL;
+
+ ret_if(!icon);
+
+ icon->ani = type;
+
+ if (!icon->obj_exist) return;
+
+ send_signal = _icon_ani_type_set_send_signal(icon, type);
+ ret_if(!send_signal);
+
+ switch (icon->type) {
+ case INDICATOR_IMG_ICON:
+ img_edje = elm_layout_edje_get(icon->img_obj.obj);
+ edje_object_signal_emit(img_edje, send_signal,"elm.swallow.icon");
+ break;
+ case INDICATOR_TXT_ICON:
+ break;
+ case INDICATOR_TXT_WITH_IMG_ICON:
+ break;
+ case INDICATOR_DIGIT_ICON:
+ img_edje = elm_layout_edje_get(icon->img_obj.obj);
+ edje_object_signal_emit(img_edje, send_signal,"elm.swallow.icon");
+ break;
+ default:
+ break;
+ }
+}
+
+
+
+static void _fixed_icon_layout_file_set(icon_s *icon, Evas_Object *ly)
+{
+ ret_if(!icon);
+ ret_if(!ly);
+
+ if(icon->type == INDICATOR_DIGIT_ICON && icon->digit_area == DIGIT_DOZENS) {
+ elm_layout_file_set(ly, ICON_THEME_FILE,"elm/indicator/icon/dozen_digit");
+ } else {
+ elm_layout_file_set(ly, ICON_THEME_FILE,"elm/indicator/icon/base");
+ }
+}
+
+
+
+static void _noti_ani_icon_layout_file_set(int noti_is_ani, Evas_Object *ly)
+{
+ ret_if(!ly);
+
+ if (noti_is_ani) {
+ evas_object_data_set(ly, PRIVATE_DATA_KEY_ICON_B_ANI, (void *) 1);
+ elm_layout_file_set(ly, ICON_NONFIXED_THEME_ANI_FILE, "elm/indicator/icon/base");
+ } else {
+ elm_layout_file_set(ly, ICON_NONFIXED_THEME_FILE, "elm/indicator/icon/base");
+ }
+}
+
+
+
+static Evas_Object *_img_icon_add(win_info *win, icon_s *icon)
+{
+ char path[PATH_MAX];
+ Evas_Object *evas_icon;
+ Evas_Object *ly;
+ char *imgpath = NULL;
+ int noti_is_ani = 0;
+ int b_ani = 0;
+
+ retv_if(!win, NULL);
+ retv_if(!icon, NULL);
+
+ imgpath = (char *) icon->img_obj.data;
+
+ _reset_on_timer_icon_animation(icon);
+
+ if (icon->img_obj.width <= 0) {
+ icon->img_obj.width = DEFAULT_ICON_WIDTH;
+ }
+
+ if (icon->img_obj.height <= 0) {
+ icon->img_obj.height = DEFAULT_ICON_HEIGHT;
+ }
+
+ memset(path, 0x00, sizeof(path));
+
+ ly = elm_layout_add(win->layout);
+ retv_if(!ly, NULL);
+
+ if (icon->area == INDICATOR_ICON_AREA_FIXED) {
+ _fixed_icon_layout_file_set(icon, ly);
+ } else {
+ noti_is_ani = util_check_noti_ani(imgpath);
+ _noti_ani_icon_layout_file_set(noti_is_ani, ly);
+ }
+
+ evas_icon = elm_image_add(ly);
+ retv_if(!evas_icon, NULL);
+
+ b_ani = (int) evas_object_data_get(ly, PRIVATE_DATA_KEY_ICON_B_ANI);
+ if (!b_ani) {
+ /* Absolute path? */
+ if (strncmp(imgpath, "/", 1) != 0) {
+ snprintf(path, sizeof(path), "%s/%s", util_get_icon_dir(), imgpath);
+ } else {
+ strncpy(path, imgpath, sizeof(path)-1);
+ }
+
+ if (!ecore_file_exists(path)) {
+ _E("icon file does not exist : %s", path);
+ }
+ elm_image_file_set(evas_icon, path, NULL);
+ }
+
+ evas_object_size_hint_min_set(evas_icon, ELM_SCALE_SIZE(icon->img_obj.width), ELM_SCALE_SIZE(icon->img_obj.height));
+ elm_object_part_content_set(ly, "elm.swallow.icon", evas_icon);
+
+ evas_object_data_set(ly, DATA_KEY_IMG_ICON, evas_icon);
+ evas_object_size_hint_min_set(ly, ELM_SCALE_SIZE(icon->img_obj.width), ELM_SCALE_SIZE(icon->img_obj.height));
+ evas_object_hide(ly);
+
+ return ly;
+}
+
+
+
+char *icon_label_set(const char *buf, char *font_name, char *font_style, int font_size, void *data)
+{
+ Eina_Strbuf *temp_buf = NULL;
+ char *ret_str = NULL;
+ char *label_font = ICON_FONT_NAME;
+ char *label_font_style = ICON_FONT_STYLE;
+ int label_font_size = ICON_FONT_SIZE;
+ Eina_Bool buf_result = EINA_FALSE;
+
+ retif(data == NULL || buf == NULL, NULL, "Invalid parameter!");
+
+ temp_buf = eina_strbuf_new();
+ if (font_name != NULL)
+ label_font = font_name;
+ if (font_style != NULL)
+ label_font_style = font_style;
+ if (font_size > 0)
+ label_font_size = font_size;
+
+ buf_result = eina_strbuf_append_printf(temp_buf, CUSTOM_LABEL_STRING,
+ label_font, label_font_style,
+ label_font_size, buf);
+
+ if (buf_result != EINA_FALSE)
+ ret_str = eina_strbuf_string_steal(temp_buf);
+
+ eina_strbuf_free(temp_buf);
+
+ return ret_str;
+}
+
+
+
+Eina_Bool icon_add(win_info *win, icon_s *icon)
+{
+ retv_if(!icon, EINA_FALSE);
+
+ switch (icon->type) {
+ case INDICATOR_TXT_ICON:
+ break;
+ case INDICATOR_IMG_ICON:
+ icon->img_obj.obj = _img_icon_add(win, icon);
+ break;
+ case INDICATOR_TXT_WITH_IMG_ICON:
+ break;
+ case INDICATOR_DIGIT_ICON:
+ icon->img_obj.obj = _img_icon_add(win, icon);
+ break;
+ default:
+ _E("Icon type check error!");
+ return EINA_FALSE;
+ }
+ icon->obj_exist = EINA_TRUE;
+
+ return EINA_TRUE;
+}
+
+
+
+Eina_Bool icon_del(icon_s *icon)
+{
+ Evas_Object *icon_obj;
+ retif(icon == NULL, EINA_FALSE, "Invalid parameter!");
+
+ _reset_on_timer_icon_animation(icon);
+
+ if (icon->obj_exist != EINA_FALSE) {
+ if (icon->img_obj.obj) {
+ icon_obj =
+ evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+ evas_object_del(icon_obj);
+ evas_object_del(icon->img_obj.obj);
+ icon->img_obj.obj = NULL;
+ }
+ }
+ return EINA_TRUE;
+}
+
+
+
+/******************************************************************************
+ *
+ * Static functions : util functions - check priority
+ *
+ *****************************************************************************/
+
+static int _show_others_in_same_priority(icon_s *icon)
+{
+ icon_s *wish_add_icon;
+ int area = icon->area;
+ retif(icon == NULL, FAIL, "Invalid parameter!");
+
+ wish_add_icon = list_try_to_find_icon_to_show(icon->area, icon->priority);
+ if (wish_add_icon == NULL)
+ {
+ return OK;
+ }
+
+ if (box_exist_icon(wish_add_icon))
+ {
+ /* Already shown icon */
+ return OK;
+ }
+
+ if(area ==INDICATOR_ICON_AREA_NOTI)
+ {
+ box_pack_append(wish_add_icon);
+ }
+ else
+ {
+ box_pack(wish_add_icon);
+ }
+
+ return OK;
+}
+
+
+
+static int _hide_others_in_view_list(icon_s *icon)
+{
+ icon_s *wish_remove_icon = NULL;
+ retif(icon == NULL, FAIL, "Invalid parameter!");
+
+ if (INDICATOR_ICON_AREA_SYSTEM == icon->area || INDICATOR_ICON_AREA_NOTI == icon->area || INDICATOR_ICON_AREA_MINICTRL == icon->area)
+ {
+ Icon_AddType ret;
+
+ /* In Case of Nonfixed icon, remove same or
+ * lower priority icon. Check count of non-fixed view list
+ * to insert icon
+ */
+ ret = box_is_enable_to_insert_in_non_fixed_list(icon);
+ icon->wish_to_show = EINA_TRUE;
+ list_update(icon);
+
+ switch (ret) {
+ case CAN_ADD_WITH_DEL_NOTI:
+ wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_NOTI,0);
+ box_unpack(wish_remove_icon);
+
+ retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_NOTI");
+ break;
+ case CAN_ADD_WITH_DEL_SYSTEM:
+ wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_SYSTEM,0);
+
+ box_unpack(wish_remove_icon);
+ retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_SYSTEM");
+ break;
+ case CAN_ADD_WITH_DEL_MINICTRL:
+ wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_MINICTRL,0);
+
+ box_unpack(wish_remove_icon);
+ retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_MINICTRL");
+ break;
+ case CAN_ADD_WITHOUT_DEL:
+ break;
+ case CANNOT_ADD:
+ return FAIL;
+ break;
+ }
+
+ return OK;
+ }
+ else if (INDICATOR_ICON_AREA_FIXED == icon->area)
+ {
+ /* In Case of fixed icon, remove same priority icon */
+ wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_FIXED,icon->priority);
+
+ /* First icon in the priority */
+ if (wish_remove_icon == NULL)
+ {
+ return OK;
+ }
+
+ /* Already shown icon */
+ if (wish_remove_icon == icon)
+ {
+ return FAIL;
+ }
+
+ icon->wish_to_show = EINA_TRUE;
+ list_update(icon);
+
+ /* Wish_remove_icon is always_top icon */
+ if (wish_remove_icon->always_top)
+ {
+ return FAIL;
+ }
+
+ /* Other Icon of Same Priority should remove in view list */
+ box_unpack(wish_remove_icon);
+ }
+
+ return OK;
+}
+
+
+
+/******************************************************************************
+ *
+ * Util Functions : external
+ *
+ *****************************************************************************/
+
+#if 0
+int icon_width_set(icon_s *icon)
+{
+ return 0;
+}
+#endif
+
+
+static int _icon_update(icon_s *icon)
+{
+ struct appdata *ad = NULL;
+ Evas_Object *img_eo;
+ char buf[PATH_MAX];
+
+ retif(icon == NULL || icon->ad == NULL, FAIL, "Invalid parameter!");
+ ad = icon->ad;
+
+ memset(buf, 0x00, sizeof(buf));
+
+ if (icon->type == INDICATOR_IMG_ICON || icon->type == INDICATOR_TXT_WITH_IMG_ICON || icon->type == INDICATOR_DIGIT_ICON) {
+ if (icon->area== INDICATOR_ICON_AREA_FIXED) {
+ if(icon->type == INDICATOR_DIGIT_ICON && icon->digit_area == DIGIT_DOZENS) {
+ elm_layout_file_set(icon->img_obj.obj, ICON_THEME_FILE,"elm/indicator/icon/dozen_digit");
+ } else {
+ elm_layout_file_set(icon->img_obj.obj, ICON_THEME_FILE,"elm/indicator/icon/base");
+ }
+ } else {
+ if(util_check_noti_ani(icon->img_obj.data)) {
+ elm_layout_file_set(icon->img_obj.obj, ICON_NONFIXED_THEME_ANI_FILE,"elm/indicator/icon/base");
+ } else{
+ elm_layout_file_set(icon->img_obj.obj, ICON_NONFIXED_THEME_FILE,"elm/indicator/icon/base");
+ }
+ }
+
+ img_eo = evas_object_data_get(icon->img_obj.obj, DATA_KEY_IMG_ICON);
+
+ util_start_noti_ani(icon);
+
+ /* Check absolute path */
+ retif(icon->img_obj.data == NULL, FAIL,"Invalid parameter!");
+
+ if (strncmp(icon->img_obj.data, "/", 1) != 0) {
+ snprintf(buf, sizeof(buf), "%s/%s", util_get_icon_dir(),icon->img_obj.data);
+ elm_image_file_set(img_eo, buf, NULL);
+ } else {
+ retif(icon->img_obj.data[0] == '\0', FAIL,"Invalid parameter!");
+ elm_image_file_set(img_eo, icon->img_obj.data, NULL);
+ }
+
+ if (icon->img_obj.width >= 0 && icon->img_obj.height>=0) {
+ evas_object_size_hint_min_set(img_eo,
+ ELM_SCALE_SIZE(icon->img_obj.width),
+ ELM_SCALE_SIZE(icon->img_obj.height));
+ } else {
+ evas_object_size_hint_min_set(img_eo, ELM_SCALE_SIZE(DEFAULT_ICON_WIDTH), ELM_SCALE_SIZE(DEFAULT_ICON_HEIGHT));
+ }
+ }
+
+ if (icon->area == INDICATOR_ICON_AREA_SYSTEM) {
+ int bDisplay = 0;
+ bDisplay = 1;
+ if(ad->opacity_mode == INDICATOR_OPACITY_TRANSPARENT && bDisplay == 1) {
+ util_send_status_message_start(ad,2.5);
+ }
+ }
+
+ return OK;
+}
+
+
+
+void icon_show(icon_s *icon)
+{
+ struct appdata *ad = NULL;
+
+ ret_if(!icon);
+ ret_if(!(icon->ad));
+
+ ad = (struct appdata *)icon->ad;
+
+ if (icon->obj_exist != EINA_FALSE) {
+ if (icon->priority == INDICATOR_PRIORITY_NOTI_2) {
+ box_unpack(icon);
+ box_pack(icon);
+ box_update_display(&(ad->win));
+ } else {
+ _icon_update(icon);
+ }
+ }
+
+ if (_hide_others_in_view_list(icon) == FAIL) {
+ return;
+ }
+
+ box_pack(icon);
+
+ box_update_display(&(ad->win));
+}
+
+void icon_hide(icon_s *icon)
+{
+ int ret;
+
+ retif(icon == NULL, , "Invalid parameter!");
+ struct appdata *ad = (struct appdata *)icon->ad;
+
+ icon->wish_to_show = EINA_FALSE;
+
+ if (icon->exist_in_view == EINA_TRUE) {
+ ret = box_unpack(icon);
+
+ if (ret == FAIL)
+ SECURE_ERR("Failed to unpack %s!", icon->name);
+
+ _show_others_in_same_priority(icon);
+
+ box_update_display(&(ad->win));
+
+ }
+}
+
+
+#if 0
+void icon_event_count_set(int count, void *data)
+{
+ static int _cnt = -1;
+ char buf[1024];
+
+ retif(data == NULL, , "Cannot get layout!");
+
+ if (_cnt != count) {
+ memset(buf, 0x00, sizeof(buf));
+ if (count) {
+ snprintf(buf, sizeof(buf), "%d", count);
+ util_signal_emit(data,"badge,show,1","elm.image.badge");
+ } else {
+ util_signal_emit(data,"badge,hide,1","elm.image.badge");
+ }
+
+ util_part_text_emit(data,"elm.text.badge", buf);
+ _cnt = count;
+ }
+}
+#endif
+
+
+unsigned int icon_get_update_flag(void)
+{
+ return update_icon_flag;
+}
+
+
+
+void icon_set_update_flag(unsigned int val)
+{
+ DBG("SET UPDATE FLAG %d",val);
+ update_icon_flag = val;
+}
+
+
+
+void icon_reset_list(void)
+{
+ int system_cnt = box_get_count(SYSTEM_LIST);
+
+ if (system_cnt > box_get_enabled_system_count()) {
+ while(system_cnt > box_get_enabled_system_count()) {
+ icon_s *wish_remove_icon = NULL;
+ wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_SYSTEM, 0);
+
+ if (wish_remove_icon == NULL) {
+ break;
+ }
+
+ box_unpack(wish_remove_icon);
+ system_cnt = box_get_count(SYSTEM_LIST);
+ SECURE_DBG("system remove %s %d",wish_remove_icon->name,system_cnt);
+ }
+ } else {
+ while (system_cnt < box_get_enabled_system_count()) {
+ icon_s *wish_add_icon = NULL;
+ wish_add_icon = list_try_to_find_icon_to_show(INDICATOR_ICON_AREA_SYSTEM, 0);
+ if (wish_add_icon == NULL) {
+ break;
+ }
+
+ if (box_exist_icon(wish_add_icon)) {
+ break;
+ }
+
+ box_pack_append(wish_add_icon);
+ system_cnt = box_get_count(SYSTEM_LIST);
+ SECURE_DBG("system insert %s %d",wish_add_icon->name,system_cnt);
+ if(system_cnt == box_get_enabled_system_count()) {
+ SECURE_DBG("quit adding %d %d",system_cnt,box_get_enabled_system_count());
+ break;
+ }
+ }
+ }
+
+ int minictrl_cnt = box_get_count(MINICTRL_LIST);
+
+ if (minictrl_cnt > box_get_minictrl_list()) {
+ DBG("11 minictrl_cnt : %d // box_get_minictrl_list : %d", minictrl_cnt, box_get_minictrl_list());
+ while (minictrl_cnt > box_get_minictrl_list()) {
+ DBG("22 minictrl_cnt : %d // box_get_minictrl_list : %d", minictrl_cnt, box_get_minictrl_list());
+ icon_s *wish_remove_icon = NULL;
+ wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_MINICTRL,0);
+
+ if (wish_remove_icon == NULL) {
+ DBG("icon_reset_list NULL!");
+ break;
+ }
+
+ box_unpack(wish_remove_icon);
+ minictrl_cnt = box_get_count(MINICTRL_LIST);
+ SECURE_DBG("minictrl remove %s %d",wish_remove_icon->name,minictrl_cnt);
+ }
+ } else {
+ while (minictrl_cnt < box_get_minictrl_list()) {
+ icon_s *wish_add_icon = NULL;
+ wish_add_icon = list_try_to_find_icon_to_show(INDICATOR_ICON_AREA_MINICTRL, 0);
+ if (wish_add_icon == NULL) {
+ break;
+ }
+
+ if (box_exist_icon(wish_add_icon)) {
+ break;
+ }
+
+ box_pack_append(wish_add_icon);
+ minictrl_cnt = box_get_count(MINICTRL_LIST);
+ SECURE_DBG("minictrl insert %s %d",wish_add_icon->name,minictrl_cnt);
+ if(minictrl_cnt==box_get_minictrl_list()) {
+ SECURE_DBG("quit adding %d %d", minictrl_cnt, box_get_minictrl_list());
+ break;
+ }
+ }
+ }
+
+ int noti_cnt = box_get_count(NOTI_LIST);
+
+ if (noti_cnt > box_get_enabled_noti_count()) {
+ while (noti_cnt > box_get_enabled_noti_count()) {
+ icon_s *wish_remove_icon = NULL;
+ wish_remove_icon = list_try_to_find_icon_to_remove(INDICATOR_ICON_AREA_NOTI, 0);
+
+ if (wish_remove_icon == NULL) {
+ break;
+ }
+
+ box_unpack(wish_remove_icon);
+ noti_cnt = box_get_count(NOTI_LIST);
+ SECURE_DBG("remove %s %d",wish_remove_icon->name,noti_cnt);
+ }
+ } else {
+ while (noti_cnt < box_get_enabled_noti_count()) {
+ icon_s *wish_add_icon = NULL;
+ wish_add_icon = list_try_to_find_icon_to_show(INDICATOR_ICON_AREA_NOTI, 0);
+ if (wish_add_icon == NULL) {
+ break;
+ }
+
+ if (box_exist_icon(wish_add_icon)) {
+ break;
+ }
+
+ box_pack_append(wish_add_icon);
+ noti_cnt = box_get_count(NOTI_LIST);
+ SECURE_DBG("insert %s %d", wish_add_icon->name, noti_cnt);
+ if(noti_cnt==box_get_enabled_noti_count()) {
+ SECURE_DBG("quit adding %d %d", noti_cnt, box_get_enabled_noti_count());
+ break;
+ }
+ }
+ }
+}
+
+
+
+static void _show_hide_more_noti(win_info* win,int val)
+{
+ static int bShow = 0;
+
+ if (bShow == val) {
+ return;
+ }
+
+ bShow = val;
+
+ if (val == 1) {
+ preference_set_int(INDICATOR_SHOW_MORE_NOTI_PORT, 1);
+ } else {
+ preference_set_int(INDICATOR_SHOW_MORE_NOTI_PORT, 0);
+ }
+}
+
+
+
+void icon_handle_more_notify_icon(win_info* win)
+{
+ retif(win == NULL, , "Invalid parameter!");
+ DBG("icon_handle_more_notify_icon called !!");
+/* int system_cnt = box_get_count(SYSTEM_LIST);
+ int minictrl_cnt = box_get_count(MINICTRL_LIST);
+ int noti_cnt = list_get_noti_count();
+
+ DBG("System count : %d, Minictrl count : %d, Notification count : %d", system_cnt, minictrl_cnt, noti_cnt);
+ if(win->type == INDICATOR_WIN_PORT)
+ {
+ DBG("PORT :: %d", (system_cnt + minictrl_cnt + noti_cnt));
+ if((system_cnt + minictrl_cnt + noti_cnt) > MAX_NOTI_ICONS_PORT)
+ {
+ _show_hide_more_noti(win,1);
+ DBG("PORT :: handle_more_notify_show");
+ }
+ else
+ {*/
+ _show_hide_more_noti(win,0);
+ DBG("PORT :: handle_more_notify_hide");
+ /*}
+ }*/
+}
+
+
+
+void* icon_util_make(void* input)
+{
+ icon_s *icon = (icon_s *)input;
+
+ retif(input == NULL,NULL, "Invalid parameter!");
+
+ icon_s *obj = NULL;
+ obj = calloc(1, sizeof(icon_s));
+
+ if (obj) {
+ memset(obj, 0, sizeof(icon_s));
+ memcpy(obj,input,sizeof(icon_s));
+ obj->name = strdup(icon->name);
+ }
+
+ return obj;
+}
+
+
+
+/* End of file */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_ICON_UTIL_H__
+#define __INDICATOR_ICON_UTIL_H__
+
+#include <Elementary.h>
+
+#include "indicator.h"
+#include "main.h"
+
+#define MAX_NOTI_ICONS_PORT 5
+#define MAX_NOTI_ICONS_LAND 11
+
+enum {
+ ICON_STATE_HIDDEN = 0,
+ ICON_STATE_SHOWN
+};
+
+enum indicator_view_mode {
+ INDICATOR_KEEP_VIEW = -1,
+ INDICATOR_FULL_VIEW,
+ INDICATOR_CLOCK_VIEW
+};
+
+extern void icon_show(icon_s *obj);
+extern void icon_hide(icon_s *obj);
+extern void icon_ani_set(icon_s *icon, enum indicator_icon_ani type);
+extern char *icon_label_set(const char *buf, char *font_name,
+ char *font_style, int font_size,
+ void *data);
+extern Eina_Bool icon_add(win_info *win,icon_s *icon);
+extern Eina_Bool icon_del(icon_s *icon);
+extern unsigned int icon_get_update_flag(void);
+extern void icon_set_update_flag(unsigned int val);
+extern void icon_reset_list(void);
+extern void icon_handle_more_notify_icon(win_info* win);
+extern void* icon_util_make(void* input);
+
+#endif /*__INDICATOR_ICON_UTIL_H__*/
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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.
+ *
*/
#define __INDICATOR_H__
#include <Elementary.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
+#include <Ecore_File.h>
#include <Eina.h>
+#include <glib-object.h>
-#ifndef VCONFKEY_INDICATOR_STARTED
-#define VCONFKEY_INDICATOR_STARTED "memory/private/"PACKAGE_NAME"/started"
-#endif
-#define VCONFKEY_APPTRAY_STATE "file/private/com.samsung.app-tray/is_top"
+#define INDICATOR_SHOW_MORE_NOTI_PORT "memory/private/"PACKAGE_NAME"/show_more_noti_port"
+#define VCONFKEY_APPTRAY_STATE "file/private/org.tizen.app-tray/is_top"
-#define VCONFKEY_BATTERY_DISP_STATE "memory/private/"PACKAGE_NAME"/battery_disp"
+#define FIXED_COUNT 11
+#define INDICATOR_HEIGHT 36
-#define _FIXED_COUNT 5
+#define _INDICATOR_FEATURE_LITE
+#define _INDICATOR_REMOVE_SEARCH
+#define DATA_KEY_IMG_ICON "i_i"
+#define DATA_KEY_BASE_RECT "dkbr"
+#define DATA_KEY_TICKER_TEXT "dktt"
enum indicator_win_mode{
INDICATOR_WIN_PORT = 0,
- INDICATOR_WIN_LAND,
- INDICATOR_WIN_MAX
};
enum {
+ /* Value is allocated from Left side in status bar */
INDICATOR_PRIORITY_FIXED_MIN = 0,
- INDICATOR_PRIORITY_FIXED1 = INDICATOR_PRIORITY_FIXED_MIN,
- INDICATOR_PRIORITY_FIXED2,
- INDICATOR_PRIORITY_FIXED3,
- INDICATOR_PRIORITY_FIXED4,
- INDICATOR_PRIORITY_FIXED5,
- INDICATOR_PRIORITY_FIXED6,
- INDICATOR_PRIORITY_FIXED_MAX = INDICATOR_PRIORITY_FIXED6,
+ INDICATOR_PRIORITY_FIXED1 = INDICATOR_PRIORITY_FIXED_MIN,/* Always */
+ INDICATOR_PRIORITY_FIXED2, /* RSSI1 (elm.swallow.fixed1) */
+ INDICATOR_PRIORITY_FIXED3, /* RSSI2 (elm.swallow.fixed2) */
+ INDICATOR_PRIORITY_FIXED4, /* SimCard-Icon(DualSim) (elm.swallow.fixed3) */
+ INDICATOR_PRIORITY_FIXED5, /* Connection (elm.swallow.fixed4) */
+ INDICATOR_PRIORITY_FIXED6, /* Wifi (elm.swallow.fixed5) */
+ INDICATOR_PRIORITY_FIXED7, /* CONNECTION1 - BT (elm.swallow.fixed6) */
+ INDICATOR_PRIORITY_FIXED8, /* CONNECTION2 - WIFI DIRECT (elm.swallow.fixed7)*/
+ INDICATOR_PRIORITY_FIXED9, /* Battery (elm.swallow.fixed8)*/
+ INDICATOR_PRIORITY_FIXED10, /* Search*/
+ INDICATOR_PRIORITY_FIXED11, /* more */
+ INDICATOR_PRIORITY_FIXED_MAX = INDICATOR_PRIORITY_FIXED11,
+
+ /* Right Side */
INDICATOR_PRIORITY_SYSTEM_MIN,
+ INDICATOR_PRIORITY_SYSTEM_1 = INDICATOR_PRIORITY_SYSTEM_MIN, /* SYSTEM - Alarm */
+ INDICATOR_PRIORITY_SYSTEM_2, /* SYSTEM - Call divert */
+ INDICATOR_PRIORITY_SYSTEM_3, /* SYSTEM - MMC */
+ INDICATOR_PRIORITY_SYSTEM_4, /* SYSTEM - GPS */
+ INDICATOR_PRIORITY_SYSTEM_5, /* SYSTEM - Private mode */
+ INDICATOR_PRIORITY_SYSTEM_6, /* SYSTEM - Sound profile */
+ INDICATOR_PRIORITY_SYSTEM_MAX = INDICATOR_PRIORITY_SYSTEM_6,
+
+ INDICATOR_PRIORITY_MINICTRL_MIN,
+ INDICATOR_PRIORITY_MINICTRL1 = INDICATOR_PRIORITY_MINICTRL_MIN, /* MINICTRL - Voice recorder */
+ INDICATOR_PRIORITY_MINICTRL2, /* MINICTRL - Music/FM Radio */
+ INDICATOR_PRIORITY_MINICTRL3, /* MINICTRL - Call *//* MINICTRL - Voice recorder */
+ INDICATOR_PRIORITY_MINICTRL_MAX = INDICATOR_PRIORITY_MINICTRL3,
- INDICATOR_PRIORITY_SYSTEM_7 = INDICATOR_PRIORITY_SYSTEM_MIN,
- INDICATOR_PRIORITY_SYSTEM_6,
- INDICATOR_PRIORITY_SYSTEM_5,
- INDICATOR_PRIORITY_SYSTEM_4,
- INDICATOR_PRIORITY_SYSTEM_3,
- INDICATOR_PRIORITY_SYSTEM_2,
- INDICATOR_PRIORITY_SYSTEM_1,
- INDICATOR_PRIORITY_SYSTEM_MAX = INDICATOR_PRIORITY_SYSTEM_1,
INDICATOR_PRIORITY_NOTI_MIN,
- INDICATOR_PRIORITY_NOTI_2 = INDICATOR_PRIORITY_NOTI_MIN,
- INDICATOR_PRIORITY_NOTI_1,
+ INDICATOR_PRIORITY_NOTI_1 = INDICATOR_PRIORITY_NOTI_MIN,
+ INDICATOR_PRIORITY_NOTI_2, /* Ongoing/Normal notification */
INDICATOR_PRIORITY_NOTI_MAX = INDICATOR_PRIORITY_NOTI_2
};
enum indicator_icon_type {
INDICATOR_IMG_ICON = 0,
INDICATOR_TXT_ICON,
- INDICATOR_TXT_WITH_IMG_ICON
+ INDICATOR_TXT_WITH_IMG_ICON,
+ INDICATOR_DIGIT_ICON,
};
enum indicator_icon_area_type {
INDICATOR_ICON_AREA_FIXED = 0,
INDICATOR_ICON_AREA_SYSTEM,
- INDICATOR_ICON_AREA_NOTI
+ INDICATOR_ICON_AREA_MINICTRL,
+ INDICATOR_ICON_AREA_NOTI,
+ INDICATOR_ICON_AREA_ALARM
};
-enum indicator_icon_ani {
+typedef enum indicator_icon_ani {
ICON_ANI_NONE = 0,
ICON_ANI_BLINK,
ICON_ANI_ROTATE,
ICON_ANI_METRONOME,
+ ICON_ANI_DOWNLOADING,
+ ICON_ANI_UPLOADING,
ICON_ANI_MAX
+} Icon_Ani_Type;
+
+enum indicator_digit_area {
+ DIGIT_UNITY = 0,
+ DIGIT_DOZENS,
+ DIGIT_DOZENS_UNITY,
+ DIGIT_HUNDREDS
+};
+
+/* Upload/download animation states 0-6 */
+enum ud_indicator_icon_ani_state
+{
+ UD_ICON_ANI_STATE_0 = 0,
+ UD_ICON_ANI_STATE_1,
+ UD_ICON_ANI_STATE_2,
+ UD_ICON_ANI_STATE_3,
+ UD_ICON_ANI_STATE_4,
+ UD_ICON_ANI_STATE_5,
+ UD_ICON_ANI_STATE_6,
+ UD_ICON_ANI_STATE_MAX
+};
+
+enum {
+ TRANSFER_MIN = 0,
+ TRANSFER_NONE = TRANSFER_MIN,
+ TRANSFER_UP,
+ TRANSFER_DOWN,
+ TRANSFER_UPDOWN,
+ TRANSFER_MAX
};
typedef struct _Text_Icon_Info {
typedef struct _ind_win_info
{
Evas *evas;
- Evas_Object* win_main;
- Evas_Object* layout_main;
+ Evas_Object* win;
+ Evas_Object* layout;
int w;
int h;
+ int port_w;
+ int land_w;
int angle;
- int type;
- Evas_Object *_fixed_box[_FIXED_COUNT];
+ Evas_Object *_fixed_box[FIXED_COUNT];
Evas_Object *_non_fixed_box;
+ Evas_Object *_minictrl_box;
Evas_Object *_noti_box;
+ Evas_Object *_dynamic_box;
+ Evas_Object *_dynamic_box_noti;
+ Evas_Object *_alarm_box;
+ Evas_Object *_digit_box;
struct {
- Eina_Bool trigger;
- int x;
- int y;
+ int x;
+ int y;
} mouse_event;
-#ifdef HOME_KEY_EMULATION
- Ecore_X_Atom atom_hwkey;
- Ecore_X_Window win_hwkey;
-#endif /* HOME_KEY_EMULATION */
void* data;
}win_info;
-
typedef struct Indicator_Icon {
char *name;
enum indicator_icon_type type;
enum indicator_icon_area_type area;
int priority;
- Eina_Bool always_top;
+ Eina_Bool always_top; /* Only for SOS messsage */
+ enum ud_indicator_icon_ani_state animation_state;
+ Eina_Bool animation_in_progress;
+ Ecore_Timer *p_animation_timer;
+ char signal_to_emit_prefix [32];
+ double last_animation_timestamp;
+ /* Func */
int (*init) (void *);
int (*fini) (void);
- int (*hib_enter) (void);
- int (*hib_leave) (void *);
int (*lang_changed) (void *);
int (*region_changed) (void *);
int (*minictrl_control) (int, const char *, void *);
int (*wake_up) (void *);
+ /* do not modify this area */
+ /* internal data */
void *ad;
Eina_Bool obj_exist;
- Text_Icon_Info txt_obj;
Img_Icon_Info img_obj;
Eina_Bool wish_to_show;
Eina_Bool exist_in_view;
-
- int win_type;
enum indicator_icon_ani ani;
-} Indicator_Icon_Object;
+
+#ifdef _SUPPORT_SCREEN_READER
+ int (*register_tts) (void*, int);
+ char *(*access_cb)(void *, Evas_Object *);
+ int tts_enable;
+#endif
+ int digit_area;
+} icon_s;
+
+//int rssi_get_sim_number(TapiHandle *handle_obj);
#endif /*__INDICATOR_H__*/
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <Ecore_X.h>
-#include <Eina.h>
-#include "common.h"
-#include "indicator_box_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_icon_list.h"
-#include "indicator_ui.h"
-#include "indicator_gui.h"
-#include "indicator_util.h"
-#include <vconf.h>
-
-#define DEFAULT_SIZE (CLOCK_WIDTH + (PADDING_WIDTH * 2))
-#define _FIXED_BOX_PART_NAME "elm.swallow.fixed"
-#define _NON_FIXED_BOX_PART_NAME "elm.swallow.nonfixed"
-#define _NOTI_BOX_PART_NAME "elm.swallow.noti"
-
-#define _FIXED_COUNT 5
-#define CORRECTION 10
-
-Eina_List *_view_fixed_list[INDICATOR_WIN_MAX];
-Eina_List *_view_system_list[INDICATOR_WIN_MAX];
-Eina_List *_view_noti_list[INDICATOR_WIN_MAX];
-
-extern int indicator_icon_show_state[INDICATOR_WIN_MAX];
-
-static Evas_Object *indicator_box_add(Evas_Object * parent)
-{
- Evas_Object *obj;
-
- retif(parent == NULL, NULL, "Invalid parameter!");
-
- obj = elm_box_add(parent);
- evas_object_size_hint_weight_set(obj, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_fill_set(obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- elm_box_horizontal_set(obj, EINA_TRUE);
- evas_object_show(obj);
-
- return obj;
-}
-
-static void _update_window(win_info *win)
-{
-
- int root_w, root_h;
- Ecore_X_Window xwin, root;
-
- retif(win == NULL, , "Invalid parameter!");
-
- INFO("_update_window");
-
- xwin = elm_win_xwindow_get(win->win_main);
- if (!xwin)
- return;
- root = ecore_x_window_root_get(xwin);
- if (!root)
- return;
- ecore_x_window_size_get(root, &root_w, &root_h);
-
- if (win->angle == 0 || win->angle == 180)
- win->w = root_w;
- else
- win->w = root_h;
-
- switch (win->angle) {
- case 0:
- ecore_x_window_shape_input_rectangle_set(xwin, root_w - win->w,
- 0, win->w, win->h);
- break;
- case 90:
- ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->h,
- win->w);
- break;
- case 180:
- ecore_x_window_shape_input_rectangle_set(xwin, 0, 0, win->w,
- win->h);
- break;
- case 270:
- ecore_x_window_shape_input_rectangle_set(xwin,
- 0, root_h - win->w,
- win->h, win->w);
- break;
- default:
- break;
- }
-
-}
-
-static void _update_display(win_info *win)
-{
- Indicator_Icon_Object *icon;
- Eina_List *l;
- int i = 0;
-
- retif(win == NULL, , "Invalid parameter!");
-
- for (i = 0; i < _FIXED_COUNT; ++i)
- elm_box_unpack_all(win->_fixed_box[i]);
-
- elm_box_unpack_all(win->_non_fixed_box);
- elm_box_unpack_all(win->_noti_box);
-
- DBG("win->type:%d",win->type);
-
- EINA_LIST_FOREACH(_view_fixed_list[win->type], l, icon) {
- if (icon->obj_exist == EINA_FALSE) {
- if (indicator_util_icon_add(win,icon) == EINA_TRUE)
- icon->obj_exist = EINA_TRUE;
- }
-
- if (icon->obj_exist == EINA_TRUE) {
- if (icon->area == INDICATOR_ICON_AREA_FIXED
- && icon->priority < INDICATOR_PRIORITY_FIXED_MAX) {
-
- Evas_Coord x, y, h, w;
-
- Evas_Object *img_eo =
- evas_object_data_get(icon->img_obj.obj,
- "imgicon");
- evas_object_size_hint_min_set(img_eo,
- icon->img_obj.width * elm_config_scale_get(),
- icon->img_obj.height * elm_config_scale_get());
-
- indicator_util_handle_animated_gif(icon);
-
- switch (icon->type) {
- case INDICATOR_IMG_ICON:
- evas_object_show(icon->img_obj.obj);
- elm_box_pack_start(win->_fixed_box
- [icon->priority],
- icon->img_obj.obj);
- break;
- case INDICATOR_TXT_ICON:
- evas_object_show(icon->txt_obj.obj);
- elm_box_pack_start(win->_fixed_box
- [icon->priority],
- icon->txt_obj.obj);
- break;
- case INDICATOR_TXT_WITH_IMG_ICON:
- evas_object_show(icon->txt_obj.obj);
- evas_object_show(icon->img_obj.obj);
- elm_box_pack_start(win->_fixed_box
- [icon->priority],
- icon->img_obj.obj);
- elm_box_pack_start(win->_fixed_box
- [icon->priority],
- icon->txt_obj.obj);
- break;
- }
-
- evas_object_geometry_get(
- win->_fixed_box[icon->priority],
- &x, &y, &h, &w);
-
- INFO("Fixed Icon : %s %d %d %d %d",
- icon->name, x, y, h, w);
- }
- }
- }
-
- EINA_LIST_FOREACH(_view_system_list[win->type], l, icon) {
- if (icon->obj_exist == EINA_FALSE) {
- if (indicator_util_icon_add(win,icon) == EINA_TRUE)
- icon->obj_exist = EINA_TRUE;
- }
- if (icon->obj_exist == EINA_TRUE) {
- if (icon->area == INDICATOR_ICON_AREA_SYSTEM
- && icon->priority >= INDICATOR_PRIORITY_SYSTEM_MIN
- && icon->priority <= INDICATOR_PRIORITY_SYSTEM_MAX) {
-
- Evas_Coord x, y, h, w;
-
- Evas_Object *img_eo =
- evas_object_data_get(icon->img_obj.obj,
- "imgicon");
- evas_object_size_hint_min_set(img_eo,
- icon->img_obj.width * elm_config_scale_get(),
- icon->img_obj.height * elm_config_scale_get());
-
- indicator_util_handle_animated_gif(icon);
-
- switch (icon->type) {
- case INDICATOR_IMG_ICON:
- evas_object_show(icon->img_obj.obj);
- elm_box_pack_end(win->_non_fixed_box,
- icon->img_obj.obj);
- break;
- case INDICATOR_TXT_ICON:
- evas_object_show(icon->txt_obj.obj);
- elm_box_pack_end(win->_non_fixed_box,
- icon->txt_obj.obj);
- break;
- case INDICATOR_TXT_WITH_IMG_ICON:
- evas_object_show(icon->txt_obj.obj);
- evas_object_show(icon->img_obj.obj);
- elm_box_pack_end(win->_non_fixed_box,
- icon->txt_obj.obj);
- elm_box_pack_end(win->_non_fixed_box,
- icon->img_obj.obj);
- break;
- }
- evas_object_geometry_get(win->_non_fixed_box,
- &x, &y, &h, &w);
- INFO("Non-Fixed Icon : %s %d %d %d %d",
- icon->name, x, y, h, w);
- }
-
-
- }
- }
-
- EINA_LIST_FOREACH(_view_noti_list[win->type], l, icon) {
- if (icon->obj_exist == EINA_FALSE) {
- if (indicator_util_icon_add(win,icon) == EINA_TRUE)
- icon->obj_exist = EINA_TRUE;
- }
- if (icon->obj_exist == EINA_TRUE) {
- if (icon->area == INDICATOR_ICON_AREA_NOTI) {
- Evas_Coord x, y, h, w;
-
- Evas_Object *img_eo =
- evas_object_data_get(icon->img_obj.obj,
- "imgicon");
- evas_object_size_hint_min_set(img_eo,
- icon->img_obj.width * elm_config_scale_get(),
- icon->img_obj.height * elm_config_scale_get());
-
- indicator_util_handle_animated_gif(icon);
-
- switch (icon->type) {
- case INDICATOR_IMG_ICON:
- evas_object_show(icon->img_obj.obj);
- elm_box_pack_end(win->_noti_box,
- icon->img_obj.obj);
- break;
- case INDICATOR_TXT_ICON:
- evas_object_show(icon->txt_obj.obj);
- elm_box_pack_end(win->_noti_box,
- icon->txt_obj.obj);
- break;
- case INDICATOR_TXT_WITH_IMG_ICON:
- evas_object_show(icon->txt_obj.obj);
- evas_object_show(icon->img_obj.obj);
- elm_box_pack_end(win->_noti_box,
- icon->txt_obj.obj);
- elm_box_pack_end(win->_noti_box,
- icon->img_obj.obj);
- break;
- }
- evas_object_geometry_get(win->_noti_box,
- &x, &y, &h, &w);
- INFO("Non-Fixed Notification Icon : %s %d %d %d %d",
- icon->name, x, y, h, w);
- }
-
-
- }
- }
-
- if (win)
- _update_window(win);
-}
-
-void indicator_util_update_display(win_info *win)
-{
- retif(win == NULL, , "Invalid parameter!");
-
- _update_window(win);
-
- _update_display(win);
-}
-
-int icon_box_pack(Indicator_Icon_Object *icon)
-{
- retif(icon == NULL, FAIL, "Invalid parameter!");
-
- if (indicator_util_is_show_icon(icon))
- return OK;
-
- INFO("[icon_box_pack] %s %d!",icon->name, icon->win_type);
-
- if (INDICATOR_ICON_AREA_FIXED == icon->area)
- {
- icon->exist_in_view = EINA_TRUE;
- _view_fixed_list[icon->win_type] = eina_list_append(_view_fixed_list[icon->win_type], icon);
- }
- else if(INDICATOR_ICON_AREA_SYSTEM == icon->area)
- {
- Indicator_Icon_Object *data;
- Eina_List *l;
-
- EINA_LIST_FOREACH(_view_system_list[icon->win_type], l, data) {
- if (data->priority <= icon->priority) {
- icon->exist_in_view = EINA_TRUE;
- _view_system_list[icon->win_type] =
- eina_list_prepend_relative_list(
- _view_system_list[icon->win_type], icon, l);
- DBG("System prepend %s",icon->name);
- return OK;
- }
- }
-
- icon->exist_in_view = EINA_TRUE;
- _view_system_list[icon->win_type] =
- eina_list_append(_view_system_list[icon->win_type], icon);
- DBG("System append %s",icon->name);
- }
- else
- {
- Indicator_Icon_Object *data;
- Eina_List *l;
-
- EINA_LIST_FOREACH(_view_noti_list[icon->win_type], l, data) {
- if (data->priority <= icon->priority)
- {
- icon->exist_in_view = EINA_TRUE;
- _view_noti_list[icon->win_type] =
- eina_list_prepend_relative_list(
- _view_noti_list[icon->win_type], icon, l);
- DBG("Noti prepend %s",icon->name);
- return OK;
- }
- }
-
- icon->exist_in_view = EINA_TRUE;
- _view_noti_list[icon->win_type] =
- eina_list_append(_view_noti_list[icon->win_type], icon);
- DBG("Noti append %s",icon->name);
- }
-
- return OK;
-}
-
-int icon_box_pack_append(Indicator_Icon_Object *icon)
-{
- retif(icon == NULL, FAIL, "Invalid parameter!");
-
- if (indicator_util_is_show_icon(icon))
- return OK;
-
- INFO("[icon_box_pack_append] %s!",icon->name);
-
- if (INDICATOR_ICON_AREA_FIXED == icon->area)
- {
- icon->exist_in_view = EINA_TRUE;
- _view_fixed_list[icon->win_type] = eina_list_append(_view_fixed_list[icon->win_type], icon);
- }
- else if(INDICATOR_ICON_AREA_SYSTEM == icon->area)
- {
- icon->exist_in_view = EINA_TRUE;
- _view_system_list[icon->win_type] =
- eina_list_append(_view_system_list[icon->win_type], icon);
- }
- else
- {
- icon->exist_in_view = EINA_TRUE;
- _view_noti_list[icon->win_type] =
- eina_list_append(_view_noti_list[icon->win_type], icon);
- DBG("Noti append %s",icon->name);
- }
-
- return OK;
-}
-
-
-int icon_box_unpack(Indicator_Icon_Object *icon)
-{
- retif(icon == NULL, FAIL, "Invalid parameter!");
-
- INFO("[icon_box_unpack] %s!",icon->name);
-
- if (INDICATOR_ICON_AREA_FIXED == icon->area)
- {
- icon->exist_in_view = EINA_FALSE;
- _view_fixed_list[icon->win_type] = eina_list_remove(_view_fixed_list[icon->win_type], icon);
- }
- else if(INDICATOR_ICON_AREA_SYSTEM == icon->area)
- {
- icon->exist_in_view = EINA_FALSE;
- _view_system_list[icon->win_type] =
- eina_list_remove(_view_system_list[icon->win_type], icon);
- }
- else
- {
- icon->exist_in_view = EINA_FALSE;
- _view_noti_list[icon->win_type] =
- eina_list_remove(_view_noti_list[icon->win_type], icon);
- }
-
- if (icon->obj_exist == EINA_TRUE) {
- if (indicator_util_icon_del(icon) == EINA_TRUE) {
- icon->obj_exist = EINA_FALSE;
- INFO("%s icon object is freed!", icon->name);
- }
- }
-
- return OK;
-}
-
-int icon_box_init(win_info *win)
-{
- char *str_text = NULL;
- int i = 0;
- retif(win == NULL, FAIL, "Invalid parameter!");
-
- for (i = 0; i < _FIXED_COUNT; ++i) {
- if (win->_fixed_box[i] == NULL) {
- Eina_Bool ret;
-
- win->_fixed_box[i] = indicator_box_add(win->layout_main);
- retif(win->_fixed_box[i] == NULL, FAIL,
- "Failed to add _fixed_box object!");
-
- Eina_Strbuf *temp_str = eina_strbuf_new();
- eina_strbuf_append_printf(temp_str, "%s%d",
- _FIXED_BOX_PART_NAME, i);
- str_text = eina_strbuf_string_steal(temp_str);
-
- ret = edje_object_part_swallow(elm_layout_edje_get
- (win->layout_main), str_text,
- win->_fixed_box[i]);
- INFO("[ICON INIT] : %d %s %d " , i, str_text, ret);
- eina_strbuf_free(temp_str);
- free(str_text);
- }
- }
-
- win->_non_fixed_box = indicator_box_add(win->layout_main);
- retif(win->_non_fixed_box == NULL, FAIL,
- "Failed to create _non_fixed_box object!");
- evas_object_size_hint_align_set(win->_non_fixed_box,
- EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- edje_object_part_swallow(elm_layout_edje_get
- (win->layout_main), _NON_FIXED_BOX_PART_NAME,
- win->_non_fixed_box);
-
- win->_noti_box = indicator_box_add(win->layout_main);
- retif(win->_noti_box == NULL, FAIL,
- "Failed to create _non_fixed_box object!");
- evas_object_size_hint_align_set(win->_noti_box,
- EVAS_HINT_FILL, EVAS_HINT_FILL);
-
- edje_object_part_swallow(elm_layout_edje_get
- (win->layout_main), _NOTI_BOX_PART_NAME,
- win->_noti_box);
-
- indicator_util_update_display(win);
-
- return 0;
-}
-
-int icon_box_fini(win_info *win)
-{
- int i = 0;
-
- retif(win == NULL || win->layout_main == NULL,
- FAIL, "Invalid parameter!");
-
- if (win->_non_fixed_box != NULL) {
- edje_object_part_unswallow(elm_layout_edje_get(win->layout_main),
- win->_non_fixed_box);
- elm_box_unpack_all(win->_non_fixed_box);
- evas_object_del(win->_non_fixed_box);
- win->_non_fixed_box = NULL;
- }
-
- if (win->_noti_box != NULL) {
- edje_object_part_unswallow(elm_layout_edje_get(win->layout_main),
- win->_noti_box);
- elm_box_unpack_all(win->_noti_box);
- evas_object_del(win->_noti_box);
- win->_noti_box = NULL;
- }
-
- for (i = 0; i < _FIXED_COUNT; ++i) {
- if (win->_fixed_box[i] != NULL) {
- edje_object_part_unswallow(elm_layout_edje_get
- (win->layout_main),
- win->_fixed_box[i]);
- elm_box_unpack_all(win->_fixed_box[i]);
- evas_object_del(win->_fixed_box[i]);
- win->_fixed_box[i] = NULL;
- }
- }
- return 0;
-}
-
-unsigned int indicator_get_count_in_fixed_list(int type)
-{
- int r = eina_list_count(_view_fixed_list[type]);
- DBG("Fixed Count : %d",r);
- return r;
-}
-unsigned int indicator_get_count_in_system_list(int type)
-{
- int r = eina_list_count(_view_system_list[type]);
- DBG("System Count : %d",r);
- return r;
-}
-unsigned int indicator_get_count_in_noti_list(int type)
-{
- int r = eina_list_count(_view_noti_list[type]);
- DBG("Notification Count : %d",r);
- return r;
-}
-
-void indicator_set_count_in_non_fixed_list(int angle, int status)
-{
-
-}
-
-int indicator_get_noti_list_index_count(int type)
-{
- int added_count = 0;
- int ret = 0;
- int status = 0;
-
- ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
- if (ret != OK)
- {
- ERR("Fail to get vconfkey : %s",
- VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL);
- }
-
- if (status == EINA_TRUE)
- added_count = BATTERY_TEXT_ON_COUNT;
- else
- added_count = BATTERY_TEXT_OFF_COUNT;
-
- if(type == INDICATOR_WIN_PORT)
- {
- ret = PORT_NOTI_ICON_COUNT + added_count;
- }
- else
- {
- ret = LAND_NOTI_ICON_COUNT + added_count;
- }
-
- return ret;
-}
-
-int indicator_get_system_list_index_count(int type)
-{
- int ret = 0;
-
- if(type == INDICATOR_WIN_PORT)
- {
- ret = PORT_SYSTEM_ICON_COUNT;
- }
- else
- {
- ret = LAND_SYSTEM_ICON_COUNT;
- }
-
- return ret;
-}
-
-int indicator_get_max_count_in_non_fixed_list(int type)
-{
- int added_count = 0;
- int ret = 0;
- int status = 0;
-
- ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
- if (ret != OK)
- {
- ERR("Fail to get vconfkey : %s",
- VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL);
- }
-
- if (status == EINA_TRUE)
- added_count = BATTERY_TEXT_ON_COUNT;
- else
- added_count = BATTERY_TEXT_OFF_COUNT;
-
- if(type == INDICATOR_WIN_PORT)
- {
- ret = PORT_NONFIXED_ICON_COUNT + added_count;
- }
- else
- {
- ret = LAND_NONFIXED_ICON_COUNT + added_count;
- }
-
- return ret;
-}
-
-Icon_AddType indicator_is_enable_to_insert_in_non_fixed_list(Indicator_Icon_Object *obj)
-{
- Indicator_Icon_Object *icon;
- Eina_List *l;
-
- int higher_cnt = 0;
- int same_cnt = 0;
- int same_top_cnt = 0;
- int lower_cnt = 0;
- int system_cnt = indicator_get_count_in_system_list(obj->win_type);
- int noti_cnt = indicator_get_count_in_noti_list(obj->win_type);
- int total_cnt = system_cnt + noti_cnt;
- Eina_List * tmpList = NULL;
-
- if(obj->area == INDICATOR_ICON_AREA_SYSTEM )
- {
- tmpList = _view_system_list[obj->win_type];
- }
- else if(obj->area == INDICATOR_ICON_AREA_NOTI)
- {
- tmpList = _view_noti_list[obj->win_type];
- }
-
- EINA_LIST_FOREACH(tmpList, l, icon) {
- if (!strcmp(icon->name, obj->name))
- return CANNOT_ADD;
-
- if (icon->priority > obj->priority)
- ++higher_cnt;
-
- else if (icon->priority == obj->priority) {
- ++same_cnt;
- if (icon->always_top == EINA_TRUE)
- ++same_top_cnt;
- } else
- lower_cnt++;
- }
-
- INFO("[INSERT ENABLE] : %d %d %d %d %d %d",
- higher_cnt, lower_cnt, same_cnt, same_top_cnt,
- indicator_get_max_count_in_non_fixed_list(obj->win_type), system_cnt);
- INFO("[INSERT ENABLE2] : %d %d %d",
- obj->area, system_cnt, noti_cnt);
-
- if(obj->area == INDICATOR_ICON_AREA_SYSTEM )
- {
- if (higher_cnt + same_cnt + lower_cnt >= indicator_get_system_list_index_count(obj->win_type))
- {
- if (obj->always_top == EINA_TRUE)
- {
- if(same_top_cnt>=indicator_get_system_list_index_count(obj->win_type))
- {
- DBG("[CANNOT_ADD] %d",same_top_cnt);
- return CANNOT_ADD;
- }
- else
- {
- DBG("[CAN_ADD_WITH_DEL_SYSTEM]");
- return CAN_ADD_WITH_DEL_SYSTEM;
- }
- }
- else
- {
- if(higher_cnt >= indicator_get_system_list_index_count(obj->win_type))
- {
- DBG("[CANNOT_ADD]");
- return CANNOT_ADD;
- }
- else if(higher_cnt+same_cnt >= indicator_get_system_list_index_count(obj->win_type))
- {
- DBG("[CAN_ADD_WITH_DEL_SYSTEM]");
- return CAN_ADD_WITH_DEL_SYSTEM;
- }
- else
- {
- DBG("[CAN_ADD_WITH_DEL_SYSTEM]");
- return CAN_ADD_WITH_DEL_SYSTEM;
- }
- }
- }
- else
- {
- return CAN_ADD_WITHOUT_DEL;
- }
- }
- else
- {
- if(noti_cnt>=indicator_get_noti_list_index_count(obj->win_type))
- {
-
- DBG("[CAN_ADD_WITH_DEL_NOTI]");
- return CAN_ADD_WITH_DEL_NOTI;
- }
- else
- {
- INFO("[CAN_ADD_WITHOUT_DEL]");
- return CAN_ADD_WITHOUT_DEL;
- }
- }
-
- return CANNOT_ADD;
-}
-
-int indicator_util_get_priority_in_move_area(win_info *win, Evas_Coord curr_x,
- Evas_Coord curr_y)
-{
- Evas_Coord x, y, h, w;
-
- evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED1],
- &x, &y, &h, &w);
- INFO("[Current Location] %d %d %d %d %d %d",
- x, y, h, w, curr_x, curr_y);
-
- if (curr_x >= x - CORRECTION && curr_x <= x+h + CORRECTION) {
- if (curr_y == -1)
- return INDICATOR_PRIORITY_FIXED1;
- else if (curr_y >= y - CORRECTION && curr_y <= y+h + CORRECTION)
- return INDICATOR_PRIORITY_FIXED1;
- }
-
-
- return -1;
-}
-
-int indicator_util_check_indicator_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
-{
- Evas_Coord x, y, w, h;
-
- evas_object_geometry_get(win->layout_main,
- &x, &y, &w, &h);
-
- INFO("[indicator area] [%d, %d] [wxh][%dx%d], cur[%d, %d]",
- x, y, w, h, curr_x, curr_y);
-
- if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h)
- return 1;
-
- return 0;
-}
-
-int indicator_util_check_home_icon_area(win_info *win, Evas_Coord curr_x, Evas_Coord curr_y)
-{
- Evas_Coord x, y, w, h;
-
- evas_object_geometry_get(win->_fixed_box[INDICATOR_PRIORITY_FIXED5],
- &x, &y, &w, &h);
-
- INFO("[Home icon area] [%d, %d] [wxh][%dx%d], cur[%d, %d]",
- x, y, w, h, curr_x, curr_y);
-
- if (curr_x >= x && curr_x < x + w && curr_y >= y && curr_y < y + h)
- return 1;
-
- return 0;
-}
-
-static void indicator_util_icon_state(int win_type, int bShow)
-{
- DBG("win_type(%d) Show(%d)",win_type,bShow);
- indicator_icon_show_state[win_type] = bShow;
-}
-
-void indicator_util_show_hide_icons(void* data,int bShow, int bEffect)
-{
- win_info *win = (win_info *)data;
- retif(data == NULL, , "Invalid parameter!");
-
- if(bShow)
- {
- indicator_util_icon_state(win->type,1);
- }
- else
- {
- indicator_util_icon_state(win->type,0);
- }
-
- if(bEffect)
- {
- if(bShow)
- {
- indicator_signal_emit_by_win(data,"indicator.clip.show", "indicator.prog");
- indicator_signal_emit_by_win(data,"indicator.noti.show", "indicator.prog");
- }
- else
- {
- indicator_signal_emit_by_win(data,"indicator.clip.hide", "indicator.prog");
- indicator_signal_emit_by_win(data,"indicator.noti.hide", "indicator.prog");
- }
- }
- else
- {
- if(bShow)
- {
- indicator_signal_emit_by_win(data,"indicator.clip.show.noeffect", "indicator.prog");
- indicator_signal_emit_by_win(data,"indicator.noti.show.noeffect", "indicator.prog");
- }
- else
- {
- indicator_signal_emit_by_win(data,"indicator.clip.hide.noeffect", "indicator.prog");
- indicator_signal_emit_by_win(data,"indicator.noti.hide.noeffect", "indicator.prog");
- }
- }
-}
-
-Eina_Bool indicator_util_is_show_icon(Indicator_Icon_Object *obj)
-{
- retif(obj == NULL, FAIL, "Invalid parameter!");
-
- if (obj->area == INDICATOR_ICON_AREA_FIXED)
- {
- if (eina_list_data_find(_view_fixed_list[obj->win_type], obj))
- return 1;
- else
- return 0;
- }
- else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
- {
- if (eina_list_data_find(_view_system_list[obj->win_type], obj))
- return 1;
- else
- return 0;
- }
-
- else {
- if (eina_list_data_find(_view_noti_list[obj->win_type], obj))
- return 1;
- else
- return 0;
- }
-}
-int indicator_util_handle_animated_gif(Indicator_Icon_Object *icon)
-{
- int bPlay = TRUE;
- int val = 0;
-
- retif(icon == NULL, FAIL, "Invalid parameter!");
- Evas_Object *icon_eo = evas_object_data_get(icon->img_obj.obj, "imgicon");
-
- if(elm_image_animated_available_get(icon_eo)== EINA_FALSE)
- {
- return FALSE;
- }
-
- if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
- ERR("Cannot get VCONFKEY_PM_STATE");
- return FALSE;
- }
-
- switch(val)
- {
- case VCONFKEY_PM_STATE_LCDOFF :
- bPlay = FALSE;
- break;
- case VCONFKEY_PM_STATE_NORMAL :
- bPlay = TRUE;
- break;
- default:
- bPlay = TRUE;
- break;
- }
-
- if(bPlay == TRUE)
- {
- if(elm_image_animated_get(icon_eo)==EINA_FALSE)
- {
- elm_image_animated_set(icon_eo,EINA_TRUE);
- }
-
- if(elm_image_animated_play_get(icon_eo) == EINA_FALSE)
- {
- elm_image_animated_play_set(icon_eo, EINA_TRUE);
- INFO("PLAY ANIMATED GIF ICON(%s)",icon->name);
- }
- }
- else
- {
- if(elm_image_animated_play_get(icon_eo) == EINA_TRUE)
- {
- elm_image_animated_play_set(icon_eo, EINA_FALSE);
- INFO("STOP ANIMATED GIF ICON(%s)",icon->name);
- }
- }
-
- return TRUE;
-}
-
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 __INDICATOR_BOX_UTIL_H__
-#define __INDICATOR_BOX_UTIL_H__
-
-#include <Elementary.h>
-#include "indicator.h"
-
-typedef enum _Icon_AddType {
- CANNOT_ADD = -1,
- CAN_ADD_WITH_DEL_SYSTEM,
- CAN_ADD_WITH_DEL_NOTI,
- CAN_ADD_WITHOUT_DEL,
-} Icon_AddType;
-
-typedef enum _Icon_Display_Count {
- BATTERY_TEXT_ON_COUNT = 0,
- BATTERY_TEXT_OFF_COUNT = 0,
- PORT_NONFIXED_ICON_COUNT = 6,
- LAND_NONFIXED_ICON_COUNT = 14,
- PORT_NOTI_ICON_COUNT = 4,
- LAND_NOTI_ICON_COUNT = 9,
- PORT_SYSTEM_ICON_COUNT = 2,
- LAND_SYSTEM_ICON_COUNT = 5,
-} Icon_Display_Count;
-
-extern int icon_box_pack(Indicator_Icon_Object *icon);
-extern int icon_box_pack_append(Indicator_Icon_Object *icon);
-extern int icon_box_unpack(Indicator_Icon_Object *icon);
-extern int icon_box_init(win_info *win);
-extern int icon_box_fini(win_info *win);
-extern void indicator_util_update_display(win_info *win);
-extern unsigned int indicator_get_count_in_fixed_list(int type);
-extern unsigned int indicator_get_count_in_system_list(int type);
-extern unsigned int indicator_get_count_in_noti_list(int type);
-extern void indicator_set_count_in_non_fixed_list(int angle, int status);
-extern int indicator_get_max_count_in_non_fixed_list(int type);
-extern Icon_AddType indicator_is_enable_to_insert_in_non_fixed_list(Indicator_Icon_Object *obj);
-extern int indicator_util_get_priority_in_move_area(win_info *win, Evas_Coord, Evas_Coord);
-int indicator_util_check_indicator_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y);
-int indicator_util_check_home_icon_area(win_info *win,Evas_Coord curr_x, Evas_Coord curr_y);
-void indicator_util_show_hide_icons(void* data, int bShow, int bEffect);
-extern Eina_Bool indicator_util_is_show_icon(Indicator_Icon_Object *obj);
-int indicator_util_handle_animated_gif(Indicator_Icon_Object *icon);
-
-#endif /*__INDICATOR_BOX_UTIL_H__*/
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 "common.h"
-#include "indicator.h"
-#include "indicator_icon_list.h"
-#include "indicator_icon_util.h"
-
-static Eina_List *fixed_icon_list[INDICATOR_WIN_MAX] = {NULL,};
-static Eina_List *system_icon_list[INDICATOR_WIN_MAX] = {NULL,};
-static Eina_List *noti_icon_list[INDICATOR_WIN_MAX] = {NULL,};
-
-
-void indicator_icon_object_free(Indicator_Icon_Object *icon)
-{
- if (icon) {
- DBG("%s!",icon->name);
- if (icon->obj_exist == EINA_TRUE) {
- if (indicator_util_icon_del(icon) == EINA_TRUE) {
- icon->obj_exist = EINA_FALSE;
- icon->txt_obj.obj = NULL;
- icon->img_obj.obj = NULL;
- }
- }
- }
-}
-
-static int indicator_icon_list_free(Eina_List *list)
-{
- Eina_List *l;
- Eina_List *l_next;
- Indicator_Icon_Object *data;
-
- retif(list == NULL, OK, "Empty List!");
-
- EINA_LIST_FOREACH_SAFE(list, l, l_next, data) {
- indicator_icon_object_free(data);
- list = eina_list_remove_list(list, l);
- if (eina_error_get())
- return FAIL;
- }
- eina_list_free(list);
- list = NULL;
- return eina_error_get();
-}
-
-int indicator_icon_all_list_free(void)
-{
- int i = 0;
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- indicator_icon_list_free(fixed_icon_list[i]);
- indicator_icon_list_free(system_icon_list[i]);
- indicator_icon_list_free(noti_icon_list[i]);
- }
-
- return TRUE;
-}
-
-int indicator_icon_list_update(Indicator_Icon_Object *obj)
-{
- Eina_List *l;
-
- Indicator_Icon_Object *data;
-
- retif(obj == NULL, FAIL, "Invalid parameter!");
-
- DBG("%s",obj->name);
-
- if (obj->area == INDICATOR_ICON_AREA_FIXED)
- {
- fixed_icon_list[obj->win_type] = eina_list_remove(fixed_icon_list[obj->win_type], obj);
-
- EINA_LIST_REVERSE_FOREACH(fixed_icon_list[obj->win_type], l, data) {
- if (data->priority == obj->priority
- &&data->always_top == EINA_TRUE)
- continue;
-
- if (data->priority <= obj->priority) {
- fixed_icon_list[obj->win_type] = eina_list_append_relative_list(
- fixed_icon_list[obj->win_type], obj, l);
- return eina_error_get();
- }
- }
-
- fixed_icon_list[obj->win_type] = eina_list_prepend(fixed_icon_list[obj->win_type], obj);
- }
- else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
- {
- system_icon_list[obj->win_type] = eina_list_remove(system_icon_list[obj->win_type], obj);
-
- EINA_LIST_REVERSE_FOREACH(system_icon_list[obj->win_type], l, data) {
- if (data->priority == obj->priority
- &&data->always_top == EINA_TRUE) {
- continue;
- }
- if (data->priority <= obj->priority) {
- system_icon_list[obj->win_type] =
- eina_list_append_relative_list(
- system_icon_list[obj->win_type], obj, l);
- return eina_error_get();
- }
- }
-
- system_icon_list[obj->win_type] = eina_list_prepend(system_icon_list[obj->win_type], obj);
- }
- else
- {
- noti_icon_list[obj->win_type] = eina_list_remove(noti_icon_list[obj->win_type], obj);
-
- EINA_LIST_REVERSE_FOREACH(noti_icon_list[obj->win_type], l, data) {
- if (data->priority == obj->priority
- &&data->always_top == EINA_TRUE) {
- continue;
- }
- if (data->priority >= obj->priority) {
- noti_icon_list[obj->win_type] =
- eina_list_append_relative_list(
- noti_icon_list[obj->win_type], obj, l);
- return eina_error_get();
- }
- }
-
- noti_icon_list[obj->win_type] = eina_list_prepend(noti_icon_list[obj->win_type], obj);
- }
-
- return eina_error_get();
-}
-
-int indicator_icon_list_insert(Indicator_Icon_Object *obj)
-{
- Eina_List *l;
- Indicator_Icon_Object *data;
-
- retif(obj == NULL || obj->name == NULL, FAIL, "Invalid parameter!");
-
- DBG("%s!",obj->name);
-
- if (obj->area == INDICATOR_ICON_AREA_FIXED)
- {
- EINA_LIST_REVERSE_FOREACH(fixed_icon_list[obj->win_type], l, data) {
- retif(data->name == obj->name, FAIL,
- "%s is already exist in the list!", obj->name);
- }
-
- obj->wish_to_show = EINA_FALSE;
-
- EINA_LIST_REVERSE_FOREACH(fixed_icon_list[obj->win_type], l, data) {
- if (data->priority == obj->priority
- && data->always_top == EINA_TRUE)
- continue;
-
- if (data->priority <= obj->priority) {
- fixed_icon_list[obj->win_type] = eina_list_append_relative_list(
- fixed_icon_list[obj->win_type], obj, l);
- return eina_error_get();
- }
- }
- fixed_icon_list[obj->win_type] = eina_list_prepend(fixed_icon_list[obj->win_type], obj);
- }
- else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
- {
- EINA_LIST_REVERSE_FOREACH(system_icon_list[obj->win_type], l, data) {
- retif(data->name == obj->name, FAIL,
- "%s is already exist in the list!", obj->name);
- }
-
- obj->wish_to_show = EINA_FALSE;
-
- EINA_LIST_REVERSE_FOREACH(system_icon_list[obj->win_type], l, data) {
- if (data->priority == obj->priority &&
- data->always_top == EINA_TRUE)
- continue;
-
- if (data->priority <= obj->priority) {
- system_icon_list[obj->win_type] =
- eina_list_append_relative_list(
- system_icon_list[obj->win_type], obj, l);
- return eina_error_get();
- }
- }
-
- system_icon_list[obj->win_type] = eina_list_prepend(system_icon_list[obj->win_type], obj);
- }
- else
- {
- EINA_LIST_REVERSE_FOREACH(noti_icon_list[obj->win_type], l, data) {
- retif(data->name == obj->name, FAIL,
- "%s is already exist in the list!", obj->name);
- }
-
- obj->wish_to_show = EINA_FALSE;
-
- EINA_LIST_REVERSE_FOREACH(noti_icon_list[obj->win_type], l, data) {
- if (data->priority == obj->priority &&
- data->always_top == EINA_TRUE)
- continue;
-
- if (data->priority >= obj->priority) {
- noti_icon_list[obj->win_type] =
- eina_list_append_relative_list(
- noti_icon_list[obj->win_type], obj, l);
- DBG("Append");
- return eina_error_get();
- }
- }
- noti_icon_list[obj->win_type] = eina_list_prepend(noti_icon_list[obj->win_type], obj);
- DBG("Prepend");
- }
-
- return eina_error_get();
-}
-
-int indicator_icon_list_remove(Indicator_Icon_Object *obj)
-{
- DBG("%s!",obj->name);
-
- if (obj->area == INDICATOR_ICON_AREA_FIXED)
- {
- retif(fixed_icon_list[obj->win_type] == NULL
- || obj == NULL, FAIL, "Invalid parameter!");
- fixed_icon_list[obj->win_type] = eina_list_remove(fixed_icon_list[obj->win_type], obj);
- }
- else if(obj->area == INDICATOR_ICON_AREA_SYSTEM)
- {
- retif(system_icon_list[obj->win_type] == NULL
- || obj == NULL, FAIL, "Invalid parameter!");
- system_icon_list[obj->win_type] = eina_list_remove(system_icon_list[obj->win_type], obj);
- }
- else
- {
- retif(noti_icon_list[obj->win_type] == NULL
- || obj == NULL, FAIL, "Invalid parameter!");
- noti_icon_list[obj->win_type] = eina_list_remove(noti_icon_list[obj->win_type], obj);
- }
-
- return eina_error_get();
-}
-
-Indicator_Icon_Object
-*indicator_get_wish_to_show_icon(int win_type, int area, int priority)
-{
- Eina_List *l;
- Indicator_Icon_Object *data = NULL;
- Indicator_Icon_Object *ret = NULL;
-
- if (area == INDICATOR_ICON_AREA_FIXED)
- {
- EINA_LIST_REVERSE_FOREACH(fixed_icon_list[win_type], l, data) {
- if (data->priority == priority
- && data->wish_to_show == EINA_TRUE
- && data->exist_in_view == EINA_FALSE)
- {
- ret = data;
- break;
- }
- }
-
- }
- else if(area == INDICATOR_ICON_AREA_SYSTEM)
- {
- EINA_LIST_REVERSE_FOREACH(system_icon_list[win_type], l, data) {
- if (data->wish_to_show == EINA_TRUE
- && data->exist_in_view == EINA_FALSE)
- {
- ret = data;
- break;
- }
- }
-
- }
- else
- {
- EINA_LIST_REVERSE_FOREACH(noti_icon_list[win_type], l, data) {
- if (data->wish_to_show == EINA_TRUE
- && data->exist_in_view == EINA_FALSE)
- {
- ret = data;
- break;
- }
- }
-
- }
-
- if(ret != NULL)
- DBG("%d,%s",area, ret->name);
- else
- ret = NULL;
-
- return ret;
-}
-
-Indicator_Icon_Object
-*indicator_get_wish_to_remove_icon(int win_type, int area, int priority)
-{
- Eina_List *l;
- Indicator_Icon_Object *data = NULL;
- Indicator_Icon_Object *ret = NULL;
-
- if (area == INDICATOR_ICON_AREA_FIXED)
- {
- EINA_LIST_REVERSE_FOREACH(fixed_icon_list[win_type], l, data) {
- if (data->priority == priority
- && data->wish_to_show == EINA_TRUE)
- {
- ret = data;
- break;
- }
- }
- }
- else if (area == INDICATOR_ICON_AREA_SYSTEM)
- {
- EINA_LIST_FOREACH(system_icon_list[win_type], l, data) {
- if (data->wish_to_show == EINA_TRUE
- && data->always_top == EINA_FALSE
- && data->exist_in_view == EINA_TRUE)
- {
- ret = data;
- break;
- }
- }
- }
- else
- {
- EINA_LIST_FOREACH(noti_icon_list[win_type], l, data) {
- if (data->wish_to_show == EINA_TRUE
- && data->always_top == EINA_FALSE
- && data->exist_in_view == EINA_TRUE)
- {
- ret = data;
- break;
- }
- }
- }
-
-
- return ret;
-}
-
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 __INDICATOR_ICON_LIST_H__
-#define __INDICATOR_ICON_LIST_H__
-
-#include "indicator.h"
-extern void indicator_icon_object_free(Indicator_Icon_Object *icon);
-extern int indicator_icon_all_list_free(void);
-extern int indicator_icon_list_insert(Indicator_Icon_Object *obj);
-extern int indicator_icon_list_remove(Indicator_Icon_Object *obj);
-extern int indicator_icon_list_update(Indicator_Icon_Object *obj);
-extern Indicator_Icon_Object
-*indicator_get_wish_to_show_icon(int win_type, int area, int priority);
-extern Indicator_Icon_Object
-*indicator_get_wish_to_remove_icon(int win_type, int area, int priority);
-extern Indicator_Icon_Object
-*indicator_get_lowest_priority_icon_in_non_fixed_list(int area);
-#endif /*__INDICATOR_ICON_LIST_H__*/
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <Eina.h>
-#include "common.h"
-#include "indicator_box_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_icon_list.h"
-#include "indicator_ui.h"
-#include "indicator_gui.h"
-#include "indicator_util.h"
-
-static unsigned int update_icon_flag = 1;
-
-static void _animation_set(Indicator_Icon_Object *icon, int type)
-{
- Evas_Object *img_edje, *txt_edje;
-
- retif(icon == NULL, , "Invalid parameter!");
-
- const char *BLINK_SIGNAL = "icon,state,blink";
- const char *ROATATE_SIGNAL = "icon,state,roate";
- const char *METRONOME_SIGNAL = "icon,state,metronome";
- const char *DEFAULT = "icon,state,default";
-
- const char *send_signal = DEFAULT;
-
- switch (type) {
- case ICON_ANI_BLINK:
- send_signal = BLINK_SIGNAL;
- break;
- case ICON_ANI_ROTATE:
- send_signal = ROATATE_SIGNAL;
- break;
- case ICON_ANI_METRONOME:
- send_signal = METRONOME_SIGNAL;
- break;
- default:
- break;
- }
-
- switch (icon->type) {
- case INDICATOR_IMG_ICON:
- img_edje = elm_layout_edje_get(icon->img_obj.obj);
- edje_object_signal_emit(img_edje, send_signal,
- "elm.swallow.icon");
- break;
- case INDICATOR_TXT_ICON:
- txt_edje = elm_layout_edje_get(icon->txt_obj.obj);
- edje_object_signal_emit(txt_edje, send_signal,
- "elm.swallow.icon");
- break;
- case INDICATOR_TXT_WITH_IMG_ICON:
- txt_edje = elm_layout_edje_get(icon->txt_obj.obj);
- img_edje = elm_layout_edje_get(icon->img_obj.obj);
- edje_object_signal_emit(txt_edje, send_signal,
- "elm.swallow.lefticon");
- edje_object_signal_emit(img_edje, send_signal,
- "elm.swallow.righticon");
- break;
- default:
- break;
- }
-}
-
-void indicator_util_icon_animation_set(Indicator_Icon_Object *icon,
- enum indicator_icon_ani type)
-{
- retif(icon == NULL, , "Invalid parameter!");
-
- icon->ani = type;
- if (icon->obj_exist)
- {
- _animation_set(icon, type);
- }
-}
-
-static Evas_Object *_img_icon_add(win_info *win, Indicator_Icon_Object *icon)
-{
- struct appdata *ad = NULL;
- char path[PATH_MAX];
- Evas_Object *evas_icon;
- Evas_Object *ly;
- int area = 0;
- char *imgpath = NULL;
- int width = 0;
- int height = 0;
-
- retif(icon == NULL , NULL, "Invalid parameter!");
- retif(icon->ad == NULL || icon->img_obj.data == NULL, NULL, "Invalid parameter!");
- retif(win == NULL || win->layout_main == NULL, NULL, "Invalid parameter!");
-
- ad = icon->ad;
- area = icon->area;
- imgpath = icon->img_obj.data;
-
- if (icon->img_obj.width <= 0)
- width = icon->img_obj.width = DEFAULT_ICON_WIDTH;
- if (icon->img_obj.height<= 0)
- height = icon->img_obj.height = DEFAULT_ICON_HEIGHT;
-
- memset(path, 0x00, sizeof(path));
-
- ly = elm_layout_add(win->layout_main);
- retif(ly == NULL, NULL, "Cannot create layout object!");
-
- if (area == INDICATOR_ICON_AREA_FIXED)
- elm_layout_file_set(ly, ICON_THEME_FILE,
- "elm/indicator/icon/base");
- else
- elm_layout_file_set(ly, ICON_NONFIXED_THEME_FILE,
- "elm/indicator/icon/base");
-
- evas_icon = elm_image_add(ly);
- retif(evas_icon == NULL, NULL, "Cannot create elm icon object!");
-
- if (strncmp(imgpath, "/", 1) != 0) {
- snprintf(path, sizeof(path), "%s/%s", get_icon_dir(), imgpath);
- } else {
- strncpy(path,imgpath,sizeof(path)-1);
- }
-
- if (!ecore_file_exists(path))
- {
- ERR("icon file does not exist!!: %s",path);
- }
-
- elm_image_file_set(evas_icon, path, NULL);
-
- evas_object_size_hint_min_set(evas_icon, width * elm_config_scale_get(),
- height * elm_config_scale_get());
-
- elm_object_part_content_set(ly, "elm.swallow.icon", evas_icon);
-
- evas_object_data_set(ly, "imgicon", evas_icon);
- evas_object_size_hint_min_set(ly, width * elm_config_scale_get(),
- height * elm_config_scale_get());
- evas_object_hide(ly);
- return ly;
-}
-
-static Evas_Object *_txt_icon_add(win_info *win, Indicator_Icon_Object *icon)
-{
- struct appdata *ad = NULL;
- char *color_added_str = NULL;
- Evas_Object *evas_icon;
- Evas_Object *ly;
- char *txt = NULL;
-
- retif(icon == NULL , NULL, "Invalid parameter!");
- retif(icon->ad == NULL || icon->txt_obj.data == NULL, NULL, "Invalid parameter!");
- retif(win == NULL || win->layout_main == NULL, NULL, "Invalid parameter!");
-
- ad = icon->ad;
- txt = icon->txt_obj.data;
-
- ly = elm_layout_add(win->layout_main);
- elm_layout_file_set(ly, ICON_THEME_FILE, "elm/indicator/icon/base");
-
- evas_icon = elm_label_add(ly);
- color_added_str = (char *)set_label_text_color(txt);
-
- elm_object_text_set(evas_icon, color_added_str);
- evas_object_size_hint_align_set(evas_icon, 0.5, 0.5);
-
- elm_object_part_content_set(ly, "elm.swallow.icon", evas_icon);
-
- evas_object_data_set(ly, "txticon", evas_icon);
- evas_object_hide(ly);
-
- return ly;
-}
-
-char *indicator_util_icon_label_set(const char *buf, char *font_name,
- char *font_style, int font_size, void *data)
-{
- Eina_Strbuf *temp_buf = NULL;
- char *ret_str = NULL;
- char *label_font = ICON_FONT_NAME;
- char *label_font_style = ICON_FONT_STYLE;
- int label_font_size = ICON_FONT_SIZE;
- Eina_Bool buf_result = EINA_FALSE;
-
- retif(data == NULL || buf == NULL, NULL, "Invalid parameter!");
-
- temp_buf = eina_strbuf_new();
- if (font_name != NULL)
- label_font = font_name;
- if (font_style != NULL)
- label_font_style = font_style;
- if (font_size > 0)
- label_font_size = font_size;
-
- buf_result = eina_strbuf_append_printf(temp_buf, CUSTOM_LABEL_STRING,
- label_font, label_font_style,
- label_font_size, buf);
-
- if (buf_result != EINA_FALSE)
- ret_str = eina_strbuf_string_steal(temp_buf);
-
- eina_strbuf_free(temp_buf);
-
- return ret_str;
-}
-
-Eina_Bool indicator_util_icon_add(win_info *win, Indicator_Icon_Object *icon)
-{
- retif(icon == NULL, EINA_FALSE, "Invalid parameter!");
-
- switch (icon->type) {
- case INDICATOR_TXT_ICON:
- icon->txt_obj.obj = _txt_icon_add(win, icon);
- break;
- case INDICATOR_IMG_ICON:
- icon->img_obj.obj = _img_icon_add(win, icon);
- break;
- case INDICATOR_TXT_WITH_IMG_ICON:
- icon->txt_obj.obj = _txt_icon_add(win, icon);
- icon->img_obj.obj = _img_icon_add(win, icon);
- break;
-
- default:
- ERR("Icon type check error!");
- return EINA_FALSE;
- }
- _animation_set(icon, icon->ani);
- return EINA_TRUE;
-}
-
-Eina_Bool indicator_util_icon_del(Indicator_Icon_Object *icon)
-{
- Evas_Object *icon_obj;
- retif(icon == NULL, EINA_FALSE, "Invalid parameter!");
-
- if (icon->obj_exist != EINA_FALSE) {
- if (icon->txt_obj.obj) {
- icon_obj =
- evas_object_data_get(icon->txt_obj.obj, "txticon");
- evas_object_del(icon_obj);
- evas_object_del(icon->txt_obj.obj);
- icon->txt_obj.obj = NULL;
- }
- if (icon->img_obj.obj) {
- icon_obj =
- evas_object_data_get(icon->img_obj.obj, "imgicon");
- evas_object_del(icon_obj);
- evas_object_del(icon->img_obj.obj);
- icon->img_obj.obj = NULL;
- }
- }
- return EINA_TRUE;
-}
-
-
-static int show_other_icon_in_same_priority(Indicator_Icon_Object *icon)
-{
- Indicator_Icon_Object *wish_add_icon;
- int area = icon->area;
- retif(icon == NULL, FAIL, "Invalid parameter!");
-
- wish_add_icon = indicator_get_wish_to_show_icon(icon->win_type, icon->area,icon->priority);
- if (wish_add_icon == NULL)
- {
- DBG("wish_add_icon NULL!");
- return OK;
- }
-
- if (indicator_util_is_show_icon(wish_add_icon))
- {
- DBG("Wish Icon is alreay shown!");
- return OK;
- }
-
- if(wish_add_icon!=NULL)
- {
- DBG("%s icon is shown!", wish_add_icon->name);
- }
-
- if(area ==INDICATOR_ICON_AREA_NOTI)
- {
- icon_box_pack_append(wish_add_icon);
- }
- else
- {
- icon_box_pack(wish_add_icon);
- }
-
- return OK;
-}
-
-static int hide_other_icons_in_view_list(Indicator_Icon_Object *icon)
-{
- Indicator_Icon_Object *wish_remove_icon = NULL;
- retif(icon == NULL, FAIL, "Invalid parameter!");
-
- if (INDICATOR_ICON_AREA_SYSTEM == icon->area || INDICATOR_ICON_AREA_NOTI == icon->area)
- {
- Icon_AddType ret;
- Eina_Error err;
-
- ret = indicator_is_enable_to_insert_in_non_fixed_list(icon);
- icon->wish_to_show = EINA_TRUE;
- err = indicator_icon_list_update(icon);
-
- switch (ret) {
- case CAN_ADD_WITH_DEL_NOTI:
- wish_remove_icon = indicator_get_wish_to_remove_icon(icon->win_type, INDICATOR_ICON_AREA_NOTI,0);
-
- icon_box_unpack(wish_remove_icon);
-
- retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_NOTI");
- break;
- case CAN_ADD_WITH_DEL_SYSTEM:
- wish_remove_icon = indicator_get_wish_to_remove_icon(icon->win_type, INDICATOR_ICON_AREA_SYSTEM,0);
-
- icon_box_unpack(wish_remove_icon);
- retif(wish_remove_icon == NULL, FAIL, "Unexpected Error : CAN_ADD_WITH_DEL_SYSTEM");
- break;
- case CAN_ADD_WITHOUT_DEL:
- break;
- case CANNOT_ADD:
- DBG("[ICON UTIL SYSTEM] %s icon CANNOT_ADD!",icon->name);
- return FAIL;
- break;
- }
-
- return OK;
- }
- else if (INDICATOR_ICON_AREA_FIXED == icon->area)
- {
- wish_remove_icon = indicator_get_wish_to_remove_icon(icon->win_type, INDICATOR_ICON_AREA_FIXED,icon->priority);
-
- if (wish_remove_icon == NULL)
- {
- DBG("[ICON UTIL FIXED] NULL!");
- return OK;
- }
-
- if (wish_remove_icon == icon)
- {
- return FAIL;
- }
-
- icon->wish_to_show = EINA_TRUE;
- indicator_icon_list_update(icon);
-
- if (wish_remove_icon->always_top)
- {
- DBG("[ICON UTIL FIXED] %s!", wish_remove_icon->name);
- return FAIL;
- }
-
- DBG("[ICON UTIL FIXED] %s icon is hidden!",
- wish_remove_icon->name);
- icon_box_unpack(wish_remove_icon);
- }
- return OK;
-}
-
-int indicator_util_layout_del(win_info *win)
-{
- return icon_box_fini(win);
-}
-
-int indicator_util_layout_add(win_info *win)
-{
- retif(win == NULL
- || win->layout_main == NULL, FAIL, "Invalid parameter!");
- indicator_util_layout_del(win);
- return icon_box_init(win);
-}
-
-
-int indicator_util_icon_width_set(Indicator_Icon_Object *icon)
-{
- return 0;
-}
-
-static int _icon_update(Indicator_Icon_Object *icon)
-{
- struct appdata *ad = NULL;
- Evas_Object *txt_eo, *img_eo;
- char buf[PATH_MAX];
-
- retif(icon == NULL || icon->ad == NULL, FAIL, "Invalid parameter!");
- ad = icon->ad;
-
- memset(buf, 0x00, sizeof(buf));
-
- if (icon->type == INDICATOR_IMG_ICON
- || icon->type == INDICATOR_TXT_WITH_IMG_ICON) {
- img_eo = evas_object_data_get(icon->img_obj.obj, "imgicon");
-
- if (strncmp(icon->img_obj.data, "/", 1) != 0) {
- snprintf(buf, sizeof(buf), "%s/%s", get_icon_dir(),
- icon->img_obj.data);
- elm_image_file_set(img_eo, buf, NULL);
- } else {
- retif(icon->img_obj.data[0] == '\0', FAIL,
- "Invalid parameter!");
- elm_image_file_set(img_eo, icon->img_obj.data, NULL);
- }
-
- if (icon->img_obj.width >= 0 && icon->img_obj.height>=0) {
- evas_object_size_hint_min_set(img_eo,
- icon->img_obj.width * elm_config_scale_get(),
- icon->img_obj.height * elm_config_scale_get());
- } else {
- evas_object_size_hint_min_set(img_eo,
- DEFAULT_ICON_WIDTH * elm_config_scale_get(),
- DEFAULT_ICON_HEIGHT * elm_config_scale_get());
- }
- }
-
- if (icon->type == INDICATOR_TXT_ICON
- || icon->type == INDICATOR_TXT_WITH_IMG_ICON) {
- char *color_added_str = NULL;
- txt_eo = evas_object_data_get(icon->txt_obj.obj, "txticon");
- color_added_str =
- (char *)set_label_text_color(icon->txt_obj.data);
- elm_object_text_set(txt_eo, color_added_str);
- free(color_added_str);
- }
- return OK;
-}
-
-void indicator_util_icon_show(Indicator_Icon_Object *icon)
-{
- struct appdata *ad = (struct appdata *)icon->ad;
-
- retif(icon == NULL, , "Invalid parameter!");
-
- if (icon->obj_exist != EINA_FALSE)
- {
- _icon_update(icon);
- }
-
- if (hide_other_icons_in_view_list(icon) == FAIL)
- {
- return;
- }
-
- icon->wish_to_show = EINA_TRUE;
- DBG("[ICON UTIL] %s %d icon is shown!", icon->name, icon->win_type);
-
- icon_box_pack(icon);
-
- indicator_util_update_display(&(ad->win[icon->win_type]));
-}
-
-void indicator_util_icon_hide(Indicator_Icon_Object *icon)
-{
- int ret;
-
- retif(icon == NULL, , "Invalid parameter!");
-
- icon->wish_to_show = EINA_FALSE;
-
- DBG("%s icon is hidden!", icon->name);
-
- if (icon->exist_in_view == EINA_TRUE) {
- ret = icon_box_unpack(icon);
-
- if (ret == FAIL)
- ERR("Failed to unpack %s!", icon->name);
-
- show_other_icon_in_same_priority(icon);
- }
-
- struct appdata *ad = (struct appdata *)icon->ad;
-
- indicator_util_update_display(&(ad->win[icon->win_type]));
-}
-
-void indicator_util_event_count_set(int count, void *data)
-{
- static int _cnt = -1;
- char buf[1024];
-
- retif(data == NULL, , "Cannot get layout!");
-
- if (_cnt != count) {
- memset(buf, 0x00, sizeof(buf));
- if (count) {
- snprintf(buf, sizeof(buf), "%d", count);
- indicator_signal_emit(data,"badge,show,1","elm.image.badge");
- } else {
- indicator_signal_emit(data,"badge,hide,1","elm.image.badge");
- }
-
- indicator_part_text_emit(data,"elm.text.badge", buf);
- _cnt = count;
- }
-}
-
-unsigned int indicator_util_max_visible_event_count(int type)
-{
- return indicator_get_max_count_in_non_fixed_list(type);
-}
-
-unsigned int indicator_util_get_update_flag(void)
-{
- return update_icon_flag;
-}
-
-void indicator_util_set_update_flag(unsigned int val)
-{
- INFO("SET UPDATE FLAG %d",val);
- update_icon_flag = val;
-}
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 __INDICATOR_ICON_UTIL_H__
-#define __INDICATOR_ICON_UTIL_H__
-
-#include <Elementary.h>
-#include "indicator.h"
-#include "indicator_ui.h"
-
-enum {
- ICON_STATE_HIDDEN = 0,
- ICON_STATE_SHOWN
-};
-
-enum indicator_view_mode {
- INDICATOR_KEEP_VIEW = -1,
- INDICATOR_FULL_VIEW,
- INDICATOR_CLOCK_VIEW
-};
-
-extern int indicator_util_layout_add(win_info *win);
-extern int indicator_util_layout_del(win_info *win);
-
-extern void indicator_util_icon_show(Indicator_Icon_Object *obj);
-extern void indicator_util_icon_hide(Indicator_Icon_Object *obj);
-extern void indicator_util_icon_animation_set(Indicator_Icon_Object *icon,
- enum indicator_icon_ani type);
-extern int indicator_util_icon_width_set(Indicator_Icon_Object *icon);
-extern char *indicator_util_icon_label_set(const char *buf, char *font_name,
- char *font_style, int font_size,
- void *data);
-extern Eina_Bool indicator_util_icon_add(win_info *win,Indicator_Icon_Object *icon);
-extern Eina_Bool indicator_util_icon_del(Indicator_Icon_Object *icon);
-
-extern void indicator_util_event_count_set(int count, void *data);
-extern unsigned int indicator_util_max_visible_event_count(int type);
-extern unsigned int indicator_util_get_update_flag(void);
-void indicator_util_set_update_flag(unsigned int val);
-
-#endif /*__INDICATOR_ICON_UTIL_H__*/
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <stdio.h>
-#include <app.h>
-#include <Ecore_X.h>
-#include <vconf.h>
-#include <unistd.h>
-#include <privilege-control.h>
-#include <app_manager.h>
-#include <signal.h>
-#include <minicontrol-monitor.h>
-#include <feedback.h>
-
-#include "common.h"
-#include "indicator_box_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_ui.h"
-#include "indicator_gui.h"
-#include "modules.h"
-#include "indicator_util.h"
-
-#define GRP_MAIN "indicator"
-
-#define WIN_TITLE "Illume Indicator"
-
-#define VCONF_PHONE_STATUS "memory/startapps/sequence"
-
-#define UNLOCK_ENABLED 0
-#define TIMEOUT 5
-
-#ifdef HOME_KEY_EMULATION
-
-#define PROP_HWKEY_EMULATION "_HWKEY_EMULATION"
-#define KEY_MSG_PREFIX_PRESS "P:"
-#define KEY_MSG_PREFIX_RELEASE "R:"
-#define KEY_MSG_PREFIX_PRESS_C "PC"
-#define KEY_MSG_PREFIX_RELEASE_C "RC"
-
-#ifndef KEY_HOME
-#define KEY_HOME "XF86Phone"
-#endif
-#endif
-
-#define MENUSCREEN_PKG_NAME "com.samsung.menuscreen"
-#define APP_TRAY_PKG_NAME "com.samsung.app-tray"
-
-static Eina_Bool home_button_pressed = EINA_FALSE;
-static Eina_Bool show_hide_pressed[INDICATOR_WIN_MAX] = {EINA_FALSE,EINA_FALSE};
-static Ecore_Timer *hide_timer = NULL;
-
-int indicator_icon_show_state[INDICATOR_WIN_MAX] = {0,};
-int indicator_icon_backup_state[INDICATOR_WIN_MAX] = {0,};
-
-static int is_quickpanel_opened = 0;
-static int is_apptray_opened = 0;
-static int current_angle = 0;
-Evas_Coord_Point indicator_press_coord = {0,0};
-
-#define STR_ATOM_MV_INDICATOR_GEOMETRY "_E_MOVE_INDICATOR_GEOMETRY"
-
-static void _change_home_padding(void *data, int angle);
-static void _change_nonfixed_icon_padding(void *data, Eina_Bool status);
-static void _change_max_nonfixed_icon_count(void *data,
- Eina_Bool status, int angle);
-static Eina_Bool _change_view(Ecore_X_Window win, void *data);
-static int check_system_status(void);
-
-static int indicator_window_new(void *data);
-static int indicator_window_del(void *data);
-
-static void _indicator_check_battery_percent_on_cb(keynode_t *node, void *data);
-static void _indicator_low_bat_cb(void *data);
-static void _indicator_lang_changed_cb(void *data);
-static void _indicator_region_changed_cb(void *data);
-static void _indicator_window_delete_cb(void *data, Evas_Object * obj,
- void *event);
-static Eina_Bool _indicator_client_message_cb(void *data, int type,
- void *event);
-static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj,
- void *event);
-static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj,
- void *event);
-static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj,
- void *event);
-
-
-
-static void _change_nonfixed_icon_padding(void *data, Eina_Bool status)
-{
- retif(data == NULL, , "Invalid parameter!");
-
- if (status == EINA_TRUE)
- indicator_signal_emit(data, "change,padding,1", "elm.rect.*");
- else
- indicator_signal_emit(data, "change,padding,2", "elm.rect.*");
-}
-
-
-static void _change_max_nonfixed_icon_count(void *data,
- Eina_Bool status, int angle)
-{
- struct appdata *ad = (struct appdata *)data;
-
- retif(data == NULL, , "Invalid parameter!");
-
- DBG("Current angle : %d", ad->angle);
-
- indicator_set_count_in_non_fixed_list(ad->angle, status);
-}
-
-static int check_system_status(void)
-{
- int ret, value = -1;
-
- ret = vconf_get_int(VCONFKEY_PWLOCK_STATE, &value);
- if (ret == OK &&
- (value == VCONFKEY_PWLOCK_BOOTING_LOCK ||
- value == VCONFKEY_PWLOCK_RUNNING_LOCK))
- return FAIL;
-
- return OK;
-}
-
-static void _change_top_win(enum _win_type type, void *data)
-{
- struct appdata *ad = data;
- int i = 0;
- retif(data == NULL, , "Invalid parameter!");
-
- DBG("Current Top Window : %d", type);
- ad->top_win = type;
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- indicator_util_update_display(&(ad->win[i]));
- }
-}
-
-static char *_get_top_window_name(void *data)
-{
- Ecore_X_Window topwin = ecore_x_window_root_first_get();
- Ecore_X_Window active;
- static Eina_Strbuf *temp_buf = NULL;
-
- char *pkgname = NULL;
- char *win_name = NULL;
- char *ret_name = NULL;
-
- int pid;
-
- retif(data == NULL, NULL, "Invalid parameter!");
-
- if (ecore_x_window_prop_xid_get(topwin, ECORE_X_ATOM_NET_ACTIVE_WINDOW,
- ECORE_X_ATOM_WINDOW, &active,
- 1) == FAIL)
- return NULL;
-
- if (ecore_x_netwm_pid_get(active, &pid) == EINA_FALSE) {
- Ecore_X_Atom atom;
- unsigned char *in_pid;
- int num;
-
- atom = ecore_x_atom_get("X_CLIENT_PID");
- if (ecore_x_window_prop_property_get(topwin,
- atom, ECORE_X_ATOM_CARDINAL,
- sizeof(int), &in_pid, &num) == EINA_FALSE) {
- DBG("Failed to get PID from a window 0x%X", topwin);
-
- if(in_pid != NULL)
- free(in_pid);
-
- return NULL;
- }
- pid = *(int *)in_pid;
- free(in_pid);
- }
-
- DBG("Window (0x%X) PID is %d", topwin, pid);
-
- if (app_manager_get_package(pid,&pkgname) != APP_MANAGER_ERROR_NONE)
- {
- if (ecore_x_netwm_name_get(active, &win_name) == EINA_FALSE)
- return NULL;
- else
- return win_name;
- }
-
- DBG("Pkgname : %s", pkgname);
-
- temp_buf = eina_strbuf_new();
- eina_strbuf_append_printf(temp_buf, "%s", pkgname);
- ret_name = eina_strbuf_string_steal(temp_buf);
- eina_strbuf_free(temp_buf);
-
- if(pkgname != NULL)
- free(pkgname);
-
- return ret_name;
-}
-
-static Eina_Bool _change_view(Ecore_X_Window win, void *data)
-{
- char *top_win_name = NULL;
- enum _win_type type;
-
- if (data == NULL)
- return EINA_FALSE;
-
- top_win_name = _get_top_window_name(data);
-
- if (top_win_name != NULL) {
- Eina_Bool ret = EINA_TRUE;
-
- INFO("TOP WINDOW NAME = %s", top_win_name);
-
- if (!strncmp(top_win_name, QUICKPANEL_NAME,
- strlen(top_win_name))) {
- type = TOP_WIN_QUICKPANEL;
- ret = EINA_FALSE;
- } else if (!strncmp(top_win_name, HOME_SCREEN_NAME,
- strlen(top_win_name)))
- type = TOP_WIN_HOME_SCREEN;
- else if (!strncmp(top_win_name, LOCK_SCREEN_NAME,
- strlen(top_win_name)))
- type = TOP_WIN_LOCK_SCREEN;
- else if (!strncmp(top_win_name, MENU_SCREEN_NAME,
- strlen(top_win_name)))
- type = TOP_WIN_MENU_SCREEN;
- else if (!strncmp(top_win_name, CALL_NAME,
- strlen(top_win_name)))
- type = TOP_WIN_CALL;
- else if (!strncmp(top_win_name, VTCALL_NAME,
- strlen(top_win_name)))
- type = TOP_WIN_CALL;
- else
- type = TOP_WIN_NORMAL;
-
- free(top_win_name);
- _change_top_win(type, data);
-
- return ret;
- } else {
- type = TOP_WIN_NORMAL;
- }
- _change_top_win(type, data);
- return EINA_TRUE;
-}
-
-static void _indicator_check_battery_percent_on_cb(keynode_t *node, void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- int ret = FAIL;
- int status = 0;
- retif(data == NULL, , "Invalid parameter!");
-
- ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
- if (ret == OK) {
- _change_nonfixed_icon_padding(data, status);
- _change_max_nonfixed_icon_count(data, status, ad->angle);
- } else
- ERR("Fail to get vconfkey : %s",
- VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL);
-}
-
-static void _indicator_low_bat_cb(void *data)
-{
- INFO("LOW_BATTERY!");
-}
-
-static void _indicator_lang_changed_cb(void *data)
-{
- INFO("CHANGE LANGUAGE!");
- indicator_lang_changed_modules(data);
-}
-
-static void _indicator_region_changed_cb(void *data)
-{
- INFO("CHANGE REGION!");
- indicator_region_changed_modules(data);
-}
-
-static void _indicator_window_delete_cb(void *data, Evas_Object * obj,
- void *event)
-{
- struct appdata *ad = (struct appdata *)data;
- retif(data == NULL, , "Invalid parameter!");
-
- indicator_window_del(ad);
-}
-
-static void _indicator_notify_pm_state_cb(keynode_t * node, void *data)
-{
-
- int val = -1;
-
- if (data == NULL) {
- ERR("lockd is NULL");
- return;
- }
-
- if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) {
- ERR("Cannot get VCONFKEY_PM_STATE");
- return;
- }
-
- DBG("PM state Notification!!(%d)",val);
-
- switch(val)
- {
- case VCONFKEY_PM_STATE_LCDOFF:
- case VCONFKEY_PM_STATE_SLEEP:
- indicator_util_set_update_flag(0);
- break;
- case VCONFKEY_PM_STATE_NORMAL:
- indicator_util_set_update_flag(1);
- indicator_wake_up_modules(data);
- break;
- case VCONFKEY_PM_STATE_LCDDIM:
- default:
- break;
- }
-
-}
-
-static void _indicator_notify_apptray_state_cb(keynode_t * node, void *data)
-{
-
- struct appdata *ad = (struct appdata *)data;
- int val = -1;
-
- if (data == NULL) {
- ERR("lockd is NULL");
- return;
- }
-
- if (vconf_get_bool(VCONFKEY_APPTRAY_STATE, &val) < 0) {
- ERR("Cannot get VCONFKEY_APPTRAY_STATE");
- return;
- }
-
- DBG("_indicator_notify_apptray_state_cb!!(%d)",val);
-
- switch(val)
- {
- case 0:
- is_apptray_opened = 0;
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,1);
- if (hide_timer != NULL) {
- ecore_timer_del(hide_timer);
- hide_timer = NULL;
- }
- break;
- case 1:
- is_apptray_opened = 1;
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),1,0);
- if (hide_timer != NULL) {
- ecore_timer_del(hide_timer);
- hide_timer = NULL;
- }
- break;
- default:
- break;
- }
-
-}
-
-static void _indicator_power_off_status_cb(keynode_t * node, void *data)
-{
-
- struct appdata *ad = (struct appdata *)data;
- int val = -1;
-
- if (data == NULL) {
- ERR("data is NULL");
- return;
- }
-
- if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) < 0) {
- ERR("Cannot get VCONFKEY_SYSMAN_POWER_OFF_STATUS");
- return;
- }
-
- DBG("_indicator_power_off_status_cb!!(%d)",val);
-
- switch(val)
- {
- case VCONFKEY_SYSMAN_POWER_OFF_DIRECT:
- case VCONFKEY_SYSMAN_POWER_OFF_RESTART:
- DBG("_indicator_power_off_status_cb : Terminated...");
- app_efl_exit();
- break;
- default:
- break;
- }
-
-}
-
-static void _rotate_window(void *data, int new_angle)
-{
- retif(data == NULL, , "Invalid parameter!");
-
- struct appdata *ad = (struct appdata *)data;
-
- DBG("_rotate_window = %d",new_angle);
-
- current_angle = new_angle;
-
- switch (new_angle)
- {
- case 0:
- case 180:
- {
- if (hide_timer != NULL)
- {
- ecore_timer_del(hide_timer);
- hide_timer = NULL;
- }
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0);
-
- if(is_quickpanel_opened == 1)
- {
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,0);
- }
-
- indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_PORT]),0,1);
- }
- break;
- case 90:
- case 270:
- if(is_quickpanel_opened == 0&&is_apptray_opened==0)
- {
- DBG("hide indicator = %d %d",is_quickpanel_opened,is_apptray_opened);
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0);
- indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_LAND]),1,2);
- if (hide_timer != NULL)
- {
- ecore_timer_del(hide_timer);
- hide_timer = NULL;
- }
- }
- else
- {
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),1,0);
- indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_LAND]),0,1);
- }
- break;
- default:
- break;
- }
-}
-
-#ifdef INDICATOR_SUPPORT_OPACITY_MODE
-static void _change_opacity(void *data, enum indicator_opacity_mode mode)
-{
- struct appdata *ad = NULL;
- const char *signal = NULL;
- retif(data == NULL, , "Invalid parameter!");
-
- ad = data;
-
- switch (mode) {
- case INDICATOR_OPACITY_OPAQUE:
- signal = "bg.opaque";
- ad->opacity_mode = mode;
- break;
- case INDICATOR_OPACITY_TRANSLUCENT:
- signal = "bg.translucent";
- ad->opacity_mode = mode;
- break;
- case INDICATOR_OPACITY_TRANSPARENT:
- signal = "bg.transparent";
- ad->opacity_mode = mode;
- break;
- default:
- ERR("unknown mode : %d", mode);
- signal = "bg.opaque";
- ad->opacity_mode = INDICATOR_OPACITY_OPAQUE;
- break;
-
- }
- ad->opacity_mode = mode;
-
- indicator_signal_emit(data,signal, "indicator.prog");
-
- DBG("send signal [%s] to indicator layout", signal);
-}
-
-static void _indicator_quickpanel_changed(void *data, int is_open)
-{
- struct appdata *ad = NULL;
-
- retif(data == NULL, , "Invalid parameter!");
-
- DBG("_indicator_quickpanel_changed %d %d\n", is_open, current_angle);
-
- ad = data;
-
- if (is_open)
- {
- if(is_quickpanel_opened==0)
- {
- is_quickpanel_opened = 1;
-
- if( current_angle==0 || current_angle == 180)
- {
- if(indicator_icon_backup_state[INDICATOR_WIN_PORT]==0)
- {
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,1);
- }
- else
- {
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,0);
- }
- }
- else
- {
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),1,0);
- }
-
- vconf_set_int(VCONFKEY_BATTERY_DISP_STATE,2);
-
- if (hide_timer != NULL) {
- ecore_timer_del(hide_timer);
- hide_timer = NULL;
- }
- }
- }
- else
- {
- if(is_quickpanel_opened==1)
- {
- is_quickpanel_opened = 0;
-
- if( current_angle==0 || current_angle == 180)
- {
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,0);
-
- if(indicator_icon_backup_state[INDICATOR_WIN_PORT]==0)
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),0,1);
- else
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_PORT]),1,0);
- }
- else
- {
- indicator_util_show_hide_icons(&(ad->win[INDICATOR_WIN_LAND]),0,1);
- indicator_send_evas_ecore_message(&(ad->win[INDICATOR_WIN_LAND]),1,2);
- }
- }
- }
-}
-#endif
-
-static Eina_Bool _indicator_client_message_cb(void *data, int type, void *event)
-{
- Ecore_X_Event_Client_Message *ev =
- (Ecore_X_Event_Client_Message *) event;
-
- retif(data == NULL
- || event == NULL, ECORE_CALLBACK_RENEW, "Invalid parameter!");
-
-
- if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) {
- if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON)
- _indicator_quickpanel_changed(data, 1);
- else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF)
- _indicator_quickpanel_changed(data, 0);
-
- }
-
- return ECORE_CALLBACK_RENEW;
-}
-
-
-static Eina_Bool _property_changed_cb(void *data, int type, void *event)
-{
- Ecore_X_Event_Window_Property *ev = event;
-
- if (ev == NULL || ev->atom != ECORE_X_ATOM_NET_ACTIVE_WINDOW)
- return EINA_FALSE;
-
- return EINA_TRUE;
-}
-
-static void _mctrl_monitor_cb(minicontrol_action_e action,
- const char *name, unsigned int width,
- unsigned int height,
- minicontrol_priority_e priority,
- void *data)
-{
- retif(!data, , "data is NULL");
- retif(!name, , "name is NULL");
-
- indicator_minictrl_control_modules(action,name,data);
-}
-
-static void
-_indicator_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
-{
- DBG("Receive msg from clien msg_domain=%x msg_id=%x size=%d\n", msg_domain, msg_id, size);
- retif(!data, , "data is NULL");
-
- if (msg_domain == MSG_DOMAIN_CONTROL_INDICATOR)
- {
- struct appdata *ad = (struct appdata *)ecore_evas_data_get(ee,"indicator_app_data");
-
- if ((msg_id == MSG_ID_INDICATOR_ROTATION) && (size == sizeof(int)))
- {
- int *rot = data;
- DBG("Receive msg is portrait rotation . rot=%d \n", *rot);
- _rotate_window(ad,*rot);
- }
- if ((msg_id == MSG_ID_INDICATOR_OPACITY) && (size == sizeof(Elm_Win_Indicator_Opacity_Mode)))
- {
- Elm_Win_Indicator_Opacity_Mode *omod;
- int trans_mode;
- omod = data;
- DBG("Receive msg is opacity . opacity=%d \n", *omod);
- switch(*omod)
- {
- case ELM_WIN_INDICATOR_OPAQUE:
- trans_mode = INDICATOR_OPACITY_OPAQUE;
- break;
- case ELM_WIN_INDICATOR_TRANSLUCENT:
- trans_mode = INDICATOR_OPACITY_TRANSLUCENT;
- break;
- case ELM_WIN_INDICATOR_TRANSPARENT:
- trans_mode = INDICATOR_OPACITY_TRANSPARENT;
- break;
- default:
- trans_mode = INDICATOR_OPACITY_OPAQUE;
- break;
- }
- }
- }
-
-}
-
-static void
-_indicator_port_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
-{
- DBG("PORT : Receive msg from clien msg_domain=%x msg_id=%x size=%d\n", msg_domain, msg_id, size);
- retif(!data, , "data is NULL");
-
- _indicator_ecore_evas_msg_parent_handle(ee,msg_domain,msg_id,data,size);
-}
-
-static void
-_indicator_land_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
-{
- DBG("LAND : Receive msg from clien msg_domain=%x msg_id=%x size=%d\n", msg_domain, msg_id, size);
- retif(!data, , "data is NULL");
-
- _indicator_ecore_evas_msg_parent_handle(ee,msg_domain,msg_id,data,size);
-}
-
-static void _register_event_handler_both(win_info *win, void *data)
-{
- Ecore_Evas *ee;
-
- retif(win == NULL, , "Invalid parameter!");
-
- ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win_main));
-
- evas_object_smart_callback_add(win->win_main,
- "delete,request",
- _indicator_window_delete_cb, data);
- evas_object_event_callback_add(win->layout_main,
- EVAS_CALLBACK_MOUSE_DOWN,
- _indicator_mouse_down_cb, win);
-
- evas_object_event_callback_add(win->layout_main,
- EVAS_CALLBACK_MOUSE_MOVE,
- _indicator_mouse_move_cb, win);
-
- evas_object_event_callback_add(win->layout_main,
- EVAS_CALLBACK_MOUSE_UP,
- _indicator_mouse_up_cb, win);
- if(win->type == INDICATOR_WIN_PORT)
- {
- ecore_evas_callback_msg_parent_handle_set(ee, _indicator_port_ecore_evas_msg_parent_handle);
- }
- else
- {
- ecore_evas_callback_msg_parent_handle_set(ee, _indicator_land_ecore_evas_msg_parent_handle);
- }
- ecore_evas_data_set(ee,"indicator_app_data",data);
-
-}
-
-static void register_event_handler(void *data)
-{
- int ret;
- int i = 0;
- struct appdata *ad = data;
- Ecore_Event_Handler *hdl = NULL;
- retif(data == NULL, , "Invalid parameter!");
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- _register_event_handler_both(&(ad->win[i]),data);
- }
- hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
- _indicator_client_message_cb, (void *)ad);
- retif(hdl == NULL, , "Failed to register ecore_event_handler!");
- ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
-
- hdl = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY,
- _property_changed_cb, data);
- retif(hdl == NULL, , "Failed to register ecore_event_handler!");
- ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
-
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
- _indicator_check_battery_percent_on_cb, (void *)ad);
-
- if (ret == -1) {
- ERR("noti start is failed\n");
- return;
- }
-
- if (vconf_notify_key_changed
- (VCONFKEY_PM_STATE, _indicator_notify_pm_state_cb, (void *)ad) != 0) {
- ERR("Fail vconf_notify_key_changed : VCONFKEY_PM_STATE");
- }
-
- ret = vconf_notify_key_changed(VCONFKEY_APPTRAY_STATE,
- _indicator_notify_apptray_state_cb, (void *)ad);
-
- if (ret == -1) {
- ERR("VCONFKEY_APPTRAY_STATE is failed\n");
- return;
- }
-
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
- _indicator_power_off_status_cb, (void *)ad);
-
- if (ret == -1) {
- ERR("VCONFKEY_SYSMAN_POWER_OFF_STATUS is failed\n");
- return;
- }
-
- ret = minicontrol_monitor_start(_mctrl_monitor_cb, data);
- if (ret != MINICONTROL_ERROR_NONE) {
- ERR("fail to minicontrol_monitor_start()- %d", ret);
- return;
- }
-
-}
-
-static void _unregister_event_handler_both(win_info *win)
-{
- retif(win == NULL, , "Invalid parameter!");
-
- evas_object_smart_callback_del(win->win_main,
- "delete-request",
- _indicator_window_delete_cb);
-
- evas_object_event_callback_del(win->layout_main,
- EVAS_CALLBACK_MOUSE_DOWN,
- _indicator_mouse_down_cb);
-
- evas_object_event_callback_del(win->layout_main,
- EVAS_CALLBACK_MOUSE_MOVE,
- _indicator_mouse_move_cb);
-
- evas_object_event_callback_del(win->layout_main,
- EVAS_CALLBACK_MOUSE_UP,
- _indicator_mouse_up_cb);
-
-}
-
-static int unregister_event_handler(void *data)
-{
- struct appdata *ad = (struct appdata *)data;
- int i = 0;
-
- retif(data == NULL, FAIL, "Invalid parameter!");
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- _unregister_event_handler_both(&(ad->win[i]));
- }
-
- vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
- _indicator_check_battery_percent_on_cb);
-
- vconf_ignore_key_changed(VCONFKEY_PM_STATE,
- _indicator_notify_pm_state_cb);
-
- vconf_ignore_key_changed(VCONFKEY_APPTRAY_STATE,
- _indicator_notify_apptray_state_cb);
-
- vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS,
- _indicator_power_off_status_cb);
-
- Ecore_Event_Handler *hdl = NULL;
- EINA_LIST_FREE(ad->evt_handlers, hdl) {
- if (hdl)
- ecore_event_handler_del(hdl);
- }
-
- minicontrol_monitor_stop();
-
- return OK;
-}
-
-static Evas_Object *load_edj(Evas_Object * parent, const char *file,
- const char *group)
-{
- Evas_Object *eo;
- int r;
-
- eo = elm_layout_add(parent);
- if (eo) {
- r = elm_layout_file_set(eo, file, group);
- if (!r) {
- evas_object_del(eo);
- return NULL;
- }
-
- evas_object_size_hint_weight_set(eo,
- EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- elm_win_resize_object_add(parent, eo);
- }
-
- return eo;
-}
-
-static void create_win(void* data,int type)
-{
- char *indi_name = NULL;
-
- struct appdata *ad = data;
- Ecore_X_Window xwin;
- Ecore_X_Window zone;
- Ecore_X_Window_State states[2];
- int root_w;
- int root_h;
- Ecore_X_Window root;
-
- root = ecore_x_window_root_first_get();
- ecore_x_window_size_get(root, &root_w, &root_h);
- INFO("xwin_size = %d %d", root_w, root_h);
-
- ad->scale = elm_config_scale_get();
- INFO("scale = %f", ad->scale);
-
-
- switch(type)
- {
- case INDICATOR_WIN_PORT:
- ad->win[type].win_main = elm_win_add(NULL, "portrait_indicator", ELM_WIN_SOCKET_IMAGE);
- indi_name = "elm_indicator_portrait";
- elm_win_title_set(ad->win[type].win_main, "win sock test:port");
- ad->win[type].w = root_w;
- break;
- case INDICATOR_WIN_LAND:
- ad->win[type].win_main = elm_win_add(NULL, "win_socket_test:land", ELM_WIN_SOCKET_IMAGE);
- indi_name = "elm_indicator_landscape";
- elm_win_title_set(ad->win[type].win_main, "win sock test:land");
- ad->win[type].w = root_h;
- break;
- default :
- break;
- }
-
- retif(ad->win[type].win_main == NULL, , "elm_win_add failed!");
-
- if (!elm_win_socket_listen(ad->win[type].win_main , indi_name, 0, EINA_FALSE))
- {
- printf("fail to elm_win_socket_listen():port \n");
- evas_object_del(ad->win[type].win_main);
- return;
- }
- elm_win_alpha_set(ad->win[type].win_main , EINA_TRUE);
-
- elm_win_borderless_set(ad->win[type].win_main , EINA_TRUE);
-
- evas_object_size_hint_fill_set(ad->win[type].win_main , EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(ad->win[type].win_main , 1.0, 0.5);
-
- xwin = elm_win_xwindow_get(ad->win[type].win_main );
- ecore_x_icccm_hints_set(xwin, 0, 0, 0, 0, 0, 0, 0);
- states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
- states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
- ecore_x_netwm_window_state_set(xwin, states, 2);
-
- zone = ecore_x_e_illume_zone_get(xwin);
- ecore_x_event_mask_set(zone, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE);
-
- ad->win[type].evas = evas_object_evas_get(ad->win[type].win_main );
-
- switch(type)
- {
- case INDICATOR_WIN_PORT:
- ad->win[type].layout_main = load_edj(ad->win[type].win_main , EDJ_FILE0, GRP_MAIN);
- break;
- case INDICATOR_WIN_LAND:
- ad->win[type].layout_main = load_edj(ad->win[type].win_main , EDJ_FILE1, GRP_MAIN);
- break;
- default :
- break;
- }
-
- retif(ad->win[type].layout_main == NULL, , "Failed to get layout main!");
-
- ad->win[type].h = (int)(INDICATOR_HEIGHT * ad->scale);
- evas_object_resize(ad->win[type].win_main , ad->win[type].w, ad->win[type].h);
- evas_object_move(ad->win[type].win_main , 0, 0);
- INFO("win_size = %d, %d", ad->win[type].w, ad->win[type].h);
-
- ad->win[type].type = type;
-
-#ifdef HOME_KEY_EMULATION
- int ret = 0;
- ad->win[type].atom_hwkey = ecore_x_atom_get(PROP_HWKEY_EMULATION);
- ret = ecore_x_window_prop_window_get(root, ad->win[type].atom_hwkey,
- &ad->win[type].win_hwkey, 1);
- if (ret <= 0)
- ERR("Failed to get window property ! (ret=%d)", ret);
-#endif
-
- indicator_util_layout_add(&(ad->win[type]));
-
- ad->win[type].data = data;
-
- evas_object_show(ad->win[type].layout_main);
- evas_object_show(ad->win[type].win_main);
- return ;
-}
-
-static void create_overlay_win(void* data)
-{
-
- struct appdata *ad = data;
- Evas_Object *conform = NULL;
-
- Evas_Object *eo;
- int w, h;
- int indi_h;
- Ecore_X_Window xwin;
- Ecore_X_Window zone;
- Ecore_X_Window_State states[2];
- Ecore_X_Atom ATOM_MV_INDICATOR_GEOMETRY = 0;
-
- indi_h = (int)(INDICATOR_HEIGHT * ad->scale);
-
- eo = elm_win_add(NULL, "INDICATOR", ELM_WIN_BASIC);
- elm_win_title_set(eo, "INDICATOR");
- elm_win_borderless_set(eo, EINA_TRUE);
- ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
- evas_object_resize(eo, w, (int)(INDICATOR_HEIGHT * ad->scale));
- evas_object_move(eo , 0, 0);
- elm_win_alpha_set(eo, EINA_TRUE);
-
- elm_win_indicator_mode_set(eo, ELM_WIN_INDICATOR_SHOW);
- elm_win_indicator_opacity_set(eo, ELM_WIN_INDICATOR_OPAQUE);
-
- conform = elm_conformant_add(eo);
-
- evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);
- elm_win_resize_object_add(eo, conform);
- evas_object_show(conform);
-
- xwin = elm_win_xwindow_get(eo);
- ecore_x_icccm_hints_set(xwin, 0, 0, 0, 0, 0, 0, 0);
- states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
- states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
- ecore_x_netwm_window_state_set(xwin, states, 2);
-
- ecore_x_icccm_name_class_set(xwin, "INDICATOR", "INDICATOR");
-
- ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_DOCK);
-
- unsigned int ind_gio_val[16] = { 0, 0, w, indi_h,
- 0, 0, indi_h, h,
- 0, h-indi_h, w, indi_h,
- w-indi_h, 0, indi_h, h };
-
- ATOM_MV_INDICATOR_GEOMETRY = ecore_x_atom_get(STR_ATOM_MV_INDICATOR_GEOMETRY);
-
- ecore_x_window_prop_card32_set(xwin,
- ATOM_MV_INDICATOR_GEOMETRY,
- ind_gio_val,
- 16);
-
- zone = ecore_x_e_illume_zone_get(xwin);
- ecore_x_event_mask_set(zone, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE);
- evas_object_show(eo);
-
- ad->win_overlay = eo;
-
- return ;
-}
-
-static void _indicator_init_wininfo(void * data)
-{
- int i = 0;
- struct appdata *ad = data;
- retif(data == NULL, , "Invalid parameter!");
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- memset(&(ad->win[i]),0x00,sizeof(win_info));
- }
-
- ad->win_overlay = NULL;
-}
-
-static int indicator_window_new(void *data)
-{
- int i = 0;
- struct appdata *ad = data;
-
- retif(data == NULL, FAIL, "Invalid parameter!");
-
- _indicator_init_wininfo(data);
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- create_win(data,i);
- indicator_util_show_hide_icons(&(ad->win[i]),0,0);
- }
-
- create_overlay_win(data);
- register_event_handler(ad);
-
- return OK;
-}
-
-static int indicator_window_del(void *data)
-{
- int i = 0;
- struct appdata *ad = (struct appdata *)data;
-
- retif(data == NULL, FAIL, "Invalid parameter!");
-
- indicator_fini_modules(data);
- unregister_event_handler(ad);
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- indicator_util_layout_del(&(ad->win[i]));
- evas_image_cache_flush(ad->win[i].evas);
- evas_object_del(ad->win[i].layout_main);
- ad->win[i].layout_main = NULL;
- evas_object_del(ad->win[i].win_main);
- ad->win[i].win_main = NULL;
- }
-
- evas_object_del(ad->win_overlay);
- ad->win_overlay = NULL;
-
- if (ad)
- free(ad);
-
- elm_exit();
- return OK;
-}
-
-static inline int _indicator_home_icon_action(void *data, int press)
-{
- return OK;
-}
-
-#ifdef HOME_KEY_EMULATION
-static Eina_Bool _indicator_hw_home_key_press(void *data)
-{
- win_info *win = NULL;
- char message[20] = {'\0', };
-
- retif(!data, EINA_FALSE, "data is NULL");
-
- win = (win_info *)data;
-
- retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
- snprintf(message, sizeof(message), "%s%s",
- KEY_MSG_PREFIX_PRESS, KEY_HOME);
-
- return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
- message, strlen(message));
-}
-
-static Eina_Bool _indicator_hw_home_key_release(void *data)
-{
- char message[20] = {'\0', };
- win_info *win = (win_info*)data;
-
- retif(!data, EINA_FALSE, "data is NULL");
-
- retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
-
- snprintf(message, sizeof(message), "%s%s",
- KEY_MSG_PREFIX_RELEASE, KEY_HOME);
-
- return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
- message, strlen(message));
-}
-static Eina_Bool _indicator_hw_home_key_press_cancel(void *data)
-{
- win_info *win = (win_info*)data;
- char message[20] = {'\0', };
-
- retif(!data, EINA_FALSE, "data is NULL");
-
- retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
- snprintf(message, sizeof(message), "%s%s",
- KEY_MSG_PREFIX_PRESS_C, KEY_HOME);
-
- return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
- message, strlen(message));
-}
-
-static Eina_Bool _indicator_hw_home_key_release_cancel(void *data)
-{
- win_info *win = (win_info*)data;
- char message[20] = {'\0', };
-
- retif(!data, EINA_FALSE, "data is NULL");
-
- retif(!win->win_hwkey, EINA_FALSE, "window for hw emulation is NULL");
-
-
- snprintf(message, sizeof(message), "%s%s",
- KEY_MSG_PREFIX_RELEASE_C, KEY_HOME);
-
- return ecore_x_client_message8_send(win->win_hwkey, win->atom_hwkey,
- message, strlen(message));
-}
-
-#endif
-
-static void __indicator_launch_apptray(void* data)
-{
- int lock_state = VCONFKEY_IDLE_UNLOCK;
- int lock_ret = -1;
- service_h service;
- int ret = SERVICE_ERROR_NONE;
-
- lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,
- &lock_state);
- DBG("Check Lock State : %d %d", lock_ret, lock_state);
-
- if (lock_ret == 0 && lock_state == VCONFKEY_IDLE_LOCK)
- {
- goto __CATCH;
- }
-
- INFO("[Home Button Released]");
-
- if (check_system_status() == FAIL)
- {
- INFO("check_system_status failed");
- goto __CATCH;
- }
-
- service_create(&service);
-
- service_set_operation(service, SERVICE_OPERATION_DEFAULT);
-
- service_set_app_id(service, APP_TRAY_PKG_NAME);
-
- service_add_extra_data(service, "LONG_PRESS", "0");
-
- ret = service_send_launch_request(service, NULL, NULL);
-
- if(ret != SERVICE_ERROR_NONE)
- {
- ERR("Cannot launch app");
- }
-
- service_destroy(service);
-
-__CATCH:
- _indicator_home_icon_action(data, 0);
- home_button_pressed = EINA_FALSE;
-}
-
-static void __indicator_hide_icon_timer_cb(void* data)
-{
- if (hide_timer != NULL) {
- ecore_timer_del(hide_timer);
- hide_timer = NULL;
- }
-
- indicator_util_show_hide_icons(data,0,1);
- indicator_send_evas_ecore_message(data,1,2);
-
-}
-
-static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj,
- void *event)
-{
- win_info *win = (win_info*)data;
- Evas_Event_Mouse_Down *ev = NULL;
-
- retif(data == NULL || event == NULL, , "Invalid parameter!");
- ev = event;
-
- win->mouse_event.x = ev->canvas.x;
- win->mouse_event.y = ev->canvas.y;
-
- DBG("_indicator_mouse_down_cb : %d %d", ev->canvas.x, ev->canvas.y);
-
-#ifdef HOME_KEY_EMULATION
- if(indicator_util_check_indicator_area(win, ev->canvas.x, ev->canvas.y))
- {
- if( is_quickpanel_opened == 0 )
- {
- show_hide_pressed[win->type] = EINA_TRUE;
- }
- else
- {
- show_hide_pressed[win->type] = EINA_FALSE;
- DBG("quick panel is opened : %d", is_quickpanel_opened);
- }
- indicator_press_coord.x = ev->canvas.x;
- indicator_press_coord.y = ev->canvas.y;
- }
-
-__CATCH :
- return;
-#else
- int mouse_down_prio = -1;
- mouse_down_prio =
- indicator_util_get_priority_in_move_area(win, win->mouse_event.x,
- win->mouse_event.y);
-
- if (mouse_down_prio > -1) {
- switch (mouse_down_prio) {
- case INDICATOR_PRIORITY_FIXED1:
- {
- int lock_state = VCONFKEY_IDLE_UNLOCK;
- int lock_ret = -1;
-
- lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,
- &lock_state);
- DBG("Check Lock State : %d %d", lock_ret, lock_state);
-
- if (lock_ret == 0
- && lock_state == VCONFKEY_IDLE_UNLOCK) {
- if (!_indicator_home_icon_action(win, 1))
- home_button_pressed = EINA_TRUE;
- }
- }
- break;
- }
- }
-#endif
-}
-
-static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj,
- void *event)
-{
- Evas_Event_Mouse_Move *ev = NULL;
- win_info* win = (win_info*)data;
-
- retif(data == NULL || event == NULL, , "Invalid parameter!");
-
- ev = event;
-
- if(win->type == INDICATOR_WIN_PORT)
- {
- if (show_hide_pressed[win->type]) {
- if (!indicator_util_check_indicator_area(win,ev->cur.canvas.x,ev->cur.canvas.y)
- || indicator_util_check_home_icon_area(win,ev->cur.canvas.x,ev->cur.canvas.y))
- {
- show_hide_pressed[win->type] = FALSE;
- DBG("cancel show/hide key");
- }
- }
- }
- else
- {
- if(ev->cur.canvas.y - indicator_press_coord.y >= INDICATOR_HIDE_TRIGER_H*elm_config_scale_get())
- {
- DBG("ev->cur.canvas.x(%d) ev->cur.canvas.y(%d)",ev->cur.canvas.x,ev->cur.canvas.y);
- DBG("indicator_press_coord.x(%d) indicator_press_coord.y(%d)",indicator_press_coord.x,indicator_press_coord.y);
-
- if(show_hide_pressed[win->type] == EINA_TRUE)
- {
- if(indicator_icon_show_state[win->type] == 0)
- {
- indicator_util_show_hide_icons(win,1,1);
- indicator_send_evas_ecore_message(win,0,1);
- if (hide_timer != NULL) {
- ecore_timer_del(hide_timer);
- hide_timer = NULL;
- }
-
- hide_timer = ecore_timer_add(3, (void *)__indicator_hide_icon_timer_cb,data);
-
- show_hide_pressed[win->type] = EINA_FALSE;
- }
- }
- }
- }
-}
-
-static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj,
- void *event)
-{
-
- Evas_Event_Mouse_Up *ev = NULL;
- win_info *win = (win_info *)data;
-
- retif(data == NULL || event == NULL, , "Invalid parameter!");
-
- ev = event;
-
- DBG("_indicator_mouse_up_cb : %d %d", ev->canvas.x, ev->canvas.y);
-
-#ifdef HOME_KEY_EMULATION
- if(indicator_util_check_indicator_area(win, ev->canvas.x, ev->canvas.y))
- {
-
- if(win->type == INDICATOR_WIN_PORT)
- {
- if(show_hide_pressed[win->type] == EINA_TRUE)
- {
- if(indicator_icon_show_state[win->type] == 0)
- {
- indicator_icon_backup_state[win->type] = 1;
- indicator_util_show_hide_icons(win,1,1);
- }
- else
- {
- indicator_icon_backup_state[win->type] = 0;
- indicator_util_show_hide_icons(win,0,1);
- }
-
- vconf_set_int(VCONFKEY_BATTERY_DISP_STATE,win->type);
- feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
- }
- }
-
- }
-
- home_button_pressed = EINA_FALSE;
- show_hide_pressed[win->type] = EINA_FALSE;
-#else
- int mouse_up_prio = -1;
- int mouse_down_prio = -1;
-
- if (home_button_pressed == EINA_TRUE) {
- _indicator_home_icon_action(data, 0);
- home_button_pressed = EINA_FALSE;
- }
-
- mouse_down_prio =
- indicator_util_get_priority_in_move_area(win,win->mouse_event.x,
- win->mouse_event.y);
- mouse_up_prio = indicator_util_get_priority_in_move_area(win,ev->canvas.x,
- ev->canvas.y);
-
- if (mouse_down_prio > -1 && mouse_up_prio > -1
- && mouse_down_prio == mouse_up_prio) {
- switch (mouse_down_prio) {
- case INDICATOR_PRIORITY_FIXED1:
- {
- int lock_state = VCONFKEY_IDLE_UNLOCK;
- int lock_ret = -1;
-
- lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,
- &lock_state);
- DBG("Check Lock State : %d %d", lock_ret, lock_state);
-
- if (lock_ret == 0 && lock_state == VCONFKEY_IDLE_LOCK)
- break;
-
- char *package = NULL;
- char *top_win_name = NULL;
-
- INFO("[Home Button Released]");
-
- if (check_system_status() == FAIL)
- break;
-
- package = vconf_get_str("db/menuscreen/pkgname");
- if (package) {
- service_h service;
- int ret = SERVICE_ERROR_NONE;
-
- service_create(&service);
-
- service_set_operation(service, SERVICE_OPERATION_DEFAULT);
-
- service_set_package(service, package);
-
- top_win_name = _get_top_window_name(data);
-
- if (top_win_name != NULL
- && !strncmp(top_win_name, package,
- strlen(package)))
- {
-
- DBG("service_send_launch_request : %s",
- top_win_name);
-
- ret = service_send_launch_request(service, NULL, NULL);
-
- if(ret != SERVICE_ERROR_NONE)
- {
- ERR("Cannot launch app");
- }
-
- }
- else
- {
- DBG("app_manager_resume_app : %s",
- top_win_name);
-
- ret = app_manager_resume_app(service);
- if(ret != APP_MANAGER_ERROR_NONE)
- {
- ERR("Cannot resume app");
- }
- }
-
- if (top_win_name)
- free(top_win_name);
-
- free(package);
-
- service_destroy(service);
-
- } else
- ERR("Cannot get vconf");
- }
- break;
- }
- }
-#endif
- win->mouse_event.x = 0;
- win->mouse_event.y = 0;
-}
-
-static int register_indicator_modules(void *data)
-{
- indicator_init_modules(data);
- return OK;
-}
-
-static void _signal_handler(int signum, siginfo_t *info, void *unused)
-{
- DBG("_signal_handler : Terminated...");
- app_efl_exit();
-}
-
-static bool app_create(void *data)
-{
- pid_t pid;
- int ret;
-
- struct sigaction act;
- memset(&act,0x00,sizeof(struct sigaction));
- act.sa_sigaction = _signal_handler;
- act.sa_flags = SA_SIGINFO;
-
- ret = sigemptyset(&act.sa_mask);
- if (ret < 0) {
- ERR("Failed to sigemptyset[%s]", strerror(errno));
- }
- ret = sigaddset(&act.sa_mask, SIGTERM);
- if (ret < 0) {
- ERR("Failed to sigaddset[%s]", strerror(errno));
- }
- ret = sigaction(SIGTERM, &act, NULL);
- if (ret < 0) {
- ERR("Failed to sigaction[%s]", strerror(errno));
- }
-
- pid = setsid();
- if (pid < 0)
- fprintf(stderr, "[INDICATOR] Failed to set session id!");
-
- ret = nice(2);
- if (ret == -1)
- ERR("Failed to set nice value!");
- return true;
-}
-
-static void app_terminate(void *data)
-{
- int i = 0;
- struct appdata *ad = data;
- indicator_fini_modules(data);
- unregister_event_handler(ad);
-
- feedback_deinitialize();
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- indicator_util_layout_del(&(ad->win[i]));
- evas_image_cache_flush(ad->win[i].evas);
- evas_object_del(ad->win[i].layout_main);
- evas_object_del(ad->win[i].win_main);
- }
-
- INFO(" >>>>>>>>>>>>> INDICATOR IS TERMINATED!! <<<<<<<<<<<<<< ");
-
-}
-
-static void app_pause(void *data)
-{
-
-}
-
-static void app_resume(void *data)
-{
-
-}
-
-static void app_service(service_h service, void *data)
-{
- struct appdata *ad = data;
- int ret;
- int i = 0;
-
- INFO("[INDICATOR IS STARTED]");
- ret = indicator_window_new(data);
- retif(ret != OK, , "Failed to create a new window!");
-
- _change_view(ecore_x_window_root_first_get(), data);
-
- _indicator_check_battery_percent_on_cb(NULL, data);
- register_indicator_modules(data);
-
- feedback_initialize();
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- if (ad->win[i].win_main)
- elm_win_activate(ad->win[i].win_main);
- }
-
-}
-
-int main(int argc, char *argv[])
-{
-
- struct appdata ad;
-
- app_event_callback_s event_callback;
-
- int ret = 0;
-
- DBG("Start indicator");
-
- ret = control_privilege();
- if (ret != 0) {
- ERR("[INDICATOR] Failed to control privilege!");
- }
-
- event_callback.create = app_create;
- event_callback.terminate = app_terminate;
- event_callback.pause = app_pause;
- event_callback.resume = app_resume;
- event_callback.service = app_service;
- event_callback.low_memory = NULL;
- event_callback.low_battery = _indicator_low_bat_cb;
- event_callback.device_orientation = NULL;
- event_callback.language_changed = _indicator_lang_changed_cb;
- event_callback.region_format_changed = _indicator_region_changed_cb;
-
- memset(&ad, 0x0, sizeof(struct appdata));
-
- return app_efl_main(&argc, &argv, &event_callback, &ad);
-
-}
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 __DEF_indicator_H_
-#define __DEF_indicator_H_
-
-#include <Elementary.h>
-#include <Ecore_X.h>
-#include "indicator.h"
-
-#if !defined(PACKAGE)
-# define PACKAGE "indicator"
-#endif
-
-#if !defined(LOCALEDIR)
-# define LOCALEDIR "/usr/apps/com.samsung.indicator/res/locale"
-#endif
-
-#if !defined(EDJDIR)
-# define EDJDIR "/usr/apps/com.samsung.indicator/res/edje"
-#endif
-
-#if !defined(ICONDIR)
-# define ICONDIR "/usr/apps/com.samsung.indicator/res/icons"
-#endif
-
-#define EDJ_FILE0 EDJDIR"/"PACKAGE"_port.edj"
-#define EDJ_FILE1 EDJDIR"/"PACKAGE"_land.edj"
-#define ICON_THEME_FILE EDJDIR"/"PACKAGE"_icon_theme.edj"
-#define ICON_NONFIXED_THEME_FILE EDJDIR"/"PACKAGE"_icon_nonfixed_theme.edj"
-
-#define _S(str) dgettext("sys_string", str)
-#define _(str) gettext(str)
-
-#define HOME_SCREEN_NAME "com.samsung.live-magazine"
-#define MENU_SCREEN_NAME "com.samsung.menu-screen"
-#define LOCK_SCREEN_NAME "com.samsung.idle-lock"
-#define QUICKPANEL_NAME "E Popup"
-#define CALL_NAME "com.samsung.call"
-#define VTCALL_NAME "com.samsung.vtmain"
-
-#define MSG_DOMAIN_CONTROL_INDICATOR 0x10001
-#define MSG_ID_INDICATOR_REPEAT_EVENT 0x10002
-#define MSG_ID_INDICATOR_ROTATION 0x10003
-#define MSG_ID_INDICATOR_OPACITY 0X1004
-#define MSG_ID_INDICATOR_TYPE 0X1005
-
-enum _win_type {
- TOP_WIN_NORMAL = 0,
- TOP_WIN_LOCK_SCREEN,
- TOP_WIN_CALL,
- TOP_WIN_MENU_SCREEN,
- TOP_WIN_HOME_SCREEN,
- TOP_WIN_QUICKPANEL
-};
-
-enum indicator_opacity_mode{
- INDICATOR_OPACITY_OPAQUE = 0,
- INDICATOR_OPACITY_TRANSLUCENT,
- INDICATOR_OPACITY_TRANSPARENT,
-};
-
-struct appdata {
-
- win_info win[INDICATOR_WIN_MAX];
- Evas_Object* win_overlay;
-
- double xscale;
- double yscale;
- double scale;
- int angle;
-
- Eina_Bool lock;
- Eina_Bool menu;
- Eina_Bool quickpanel;
-
- Eina_List *evt_handlers;
-
- enum indicator_opacity_mode opacity_mode;
-
- enum _win_type top_win;
-
- void (*update_display) (int);
-};
-
-#endif
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <Ecore.h>
-#include <Ecore_X.h>
-#include "common.h"
-#include "indicator.h"
-#include "indicator_ui.h"
-#include "indicator_gui.h"
-#include "indicator_util.h"
-#include "indicator_icon_util.h"
-#include "indicator_box_util.h"
-#include <vconf.h>
-
-#define DEFAULT_DIR ICONDIR
-#define DIR_PREFIX "Theme_%02d_"
-#define LABEL_STRING "<color=#%02x%02x%02x%02x>%s</color>"
-
-static char *_icondir;
-
-char *set_label_text_color(const char *txt)
-{
- Eina_Strbuf *temp_buf = NULL;
- Eina_Bool buf_result = EINA_FALSE;
- char *ret_str = NULL;
-
- retif(txt == NULL, NULL, "Invalid parameter!");
-
- temp_buf = eina_strbuf_new();
- buf_result = eina_strbuf_append_printf(temp_buf,
- LABEL_STRING, FONT_COLOR, txt);
-
- if (buf_result == EINA_FALSE)
- INFO("Failed to make label string!");
- else
- ret_str = eina_strbuf_string_steal(temp_buf);
-
- eina_strbuf_free(temp_buf);
- return ret_str;
-}
-
-const char *get_icon_dir(void)
-{
- if (_icondir == NULL)
- _icondir = DEFAULT_DIR;
-
- return (const char *)_icondir;
-}
-
-static int _set_icon_dir(char *newdir)
-{
- char *new_icon_dir = NULL;
-
- char dirname[PATH_MAX];
- int r;
-
- retif(!newdir, FAIL, "Invalid parameter!");
- memset(dirname, 0x00, sizeof(dirname));
- r = snprintf(dirname, sizeof(dirname), ICONDIR "/%s", newdir);
- if (r < 0) {
- ERR("Failed to set new dir name!");
- return FAIL;
- }
-
- new_icon_dir = strdup(dirname);
- _icondir = new_icon_dir;
-
- return 0;
-}
-
-void indicator_signal_emit(void* data, const char *emission, const char *source)
-{
- struct appdata *ad = (struct appdata *)data;
- retif(data == NULL, , "Invalid parameter!");
- Evas_Object *edje;
- int i = 0;
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- retif(ad->win[i].layout_main == NULL, , "Invalid parameter!");
- edje = elm_layout_edje_get(ad->win[i].layout_main);
- edje_object_signal_emit(edje, emission, source);
- }
-}
-
-void indicator_part_text_emit(void* data, const char *part, const char *text)
-{
- struct appdata *ad = (struct appdata *)data;
- retif(data == NULL, , "Invalid parameter!");
- Evas_Object *edje;
- int i = 0;
-
- for(i=0;i<INDICATOR_WIN_MAX;i++)
- {
- retif(ad->win[i].layout_main == NULL, , "Invalid parameter!");
- edje = elm_layout_edje_get(ad->win[i].layout_main);
- edje_object_part_text_set(edje, part, text);
- }
-}
-
-void indicator_signal_emit_by_win(void* data, const char *emission, const char *source)
-{
- win_info *win = (win_info*)data;
- retif(data == NULL, , "Invalid parameter!");
- Evas_Object *edje;
-
- retif(win->layout_main == NULL, , "Invalid parameter!");
- edje = elm_layout_edje_get(win->layout_main);
- edje_object_signal_emit(edje, emission, source);
-}
-
-void indicator_part_text_emit_by_win(void* data, const char *part, const char *text)
-{
- win_info *win = (win_info*)data;
- retif(data == NULL, , "Invalid parameter!");
- Evas_Object *edje;
-
- retif(win->layout_main == NULL, , "Invalid parameter!");
- edje = elm_layout_edje_get(win->layout_main);
- edje_object_part_text_set(edje, part, text);
-}
-
-void indicator_send_evas_ecore_message(void* data, int bRepeat, int bType)
-{
- Ecore_Evas *ee_port;
- win_info* win = (win_info*)data;
- retif(data == NULL, , "Invalid parameter!");
-
- DBG("win(%d),bRepeat(%d),bType(%d)",win->type, bRepeat, bType);
- ee_port = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win_main));
- ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_REPEAT_EVENT, &bRepeat, sizeof(int));
- ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_TYPE, &bType, sizeof(int));
-
-}
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 __INDICATOR_UTIL_H__
-#define __INDICATOR_UTIL_H__
-
-extern char *set_label_text_color(const char *txt);
-extern const char *get_icon_dir(void);
-void indicator_signal_emit(void* data, const char *emission, const char *source);
-void indicator_part_text_emit(void* data, const char *part, const char *text);
-void indicator_signal_emit_by_win(void* data, const char *emission, const char *source);
-void indicator_part_text_emit_by_win(void* data, const char *part, const char *text);
-void indicator_send_evas_ecore_message(void* data, int bRepeat, int bType);
-
-#endif
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 "indicator.h"
+#include "log.h"
+#include "util.h"
+#include "list.h"
+#include "icon.h"
+
+static Eina_List *fixed_icon_list = NULL;
+static Eina_List *system_icon_list = NULL;
+static Eina_List *noti_icon_list = NULL;
+static Eina_List *alarm_icon_list = NULL;
+
+
+
+extern void icon_free(icon_s *icon)
+{
+ if (icon) {
+ if (icon->obj_exist == EINA_TRUE) {
+ if (icon_del(icon) == EINA_TRUE) {
+ icon->obj_exist = EINA_FALSE;
+ icon->img_obj.obj = NULL;
+ }
+ }
+ }
+}
+
+
+
+static void _list_free(Eina_List *list)
+{
+ Eina_List *l;
+ Eina_List *l_next;
+ icon_s *data;
+
+ ret_if(!list);
+
+ EINA_LIST_FOREACH_SAFE(list, l, l_next, data) {
+ icon_free(data);
+ list = eina_list_remove_list(list, l);
+ }
+ eina_list_free(list);
+ list = NULL;
+
+ return;
+}
+
+
+
+extern int list_free_all(void)
+{
+ _list_free(fixed_icon_list);
+ _list_free(system_icon_list);
+ _list_free(noti_icon_list);
+ _list_free(alarm_icon_list);
+
+ return TRUE;
+}
+
+
+
+static Eina_List *_insert_icon_to_list(Eina_List *list, icon_s *icon)
+{
+ Eina_List *l;
+ icon_s *data;
+
+ retv_if(!list, NULL);
+ retv_if(!icon, NULL);
+
+ /* Insert icon to list */
+ EINA_LIST_REVERSE_FOREACH(list, l, data) {
+ if (data->priority == icon->priority
+ && data->always_top == EINA_TRUE)
+ continue;
+
+ if (data->priority <= icon->priority) {
+ list = eina_list_append_relative_list(list, icon, l);
+ return list;
+ }
+ }
+
+ /* If finding condition is failed, append it at tail */
+ list = eina_list_prepend(list, icon);
+ return list;
+}
+
+
+
+extern void list_update(icon_s *icon)
+{
+ ret_if(!icon);
+
+ switch (icon->area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ fixed_icon_list = eina_list_remove(fixed_icon_list, icon);
+ fixed_icon_list = _insert_icon_to_list(fixed_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ system_icon_list = eina_list_remove(system_icon_list, icon);
+ system_icon_list = _insert_icon_to_list(system_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ noti_icon_list = eina_list_remove(noti_icon_list, icon);
+ noti_icon_list = _insert_icon_to_list(noti_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_ALARM:
+ alarm_icon_list = eina_list_remove(alarm_icon_list, icon);
+ alarm_icon_list = _insert_icon_to_list(alarm_icon_list, icon);
+ break;
+ default:
+ break;
+ }
+
+ return;
+}
+
+
+
+static indicator_error_e _icon_exist_in_list(Eina_List *list, icon_s *icon)
+{
+ Eina_List *l;
+ icon_s *data;
+
+ /* Check name */
+ EINA_LIST_REVERSE_FOREACH(fixed_icon_list, l, data) {
+ if (data->name == icon->name) {
+ _D("[%s] is already exist in the list", icon->name);
+ return INDICATOR_ERROR_FAIL;
+ }
+ }
+ return INDICATOR_ERROR_NONE;
+}
+
+
+extern void list_insert_icon(icon_s *icon)
+{
+ ret_if(!icon);
+ ret_if(!icon->name);
+
+ switch (icon->area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ if (INDICATOR_ERROR_NONE != _icon_exist_in_list(fixed_icon_list, icon)) return;
+
+ /* Set internal data */
+ icon->wish_to_show = EINA_FALSE;
+ fixed_icon_list = _insert_icon_to_list(fixed_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ if (INDICATOR_ERROR_NONE != _icon_exist_in_list(system_icon_list, icon)) return;
+
+ /* Set internal data */
+ icon->wish_to_show = EINA_FALSE;
+ system_icon_list = _insert_icon_to_list(system_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ if (INDICATOR_ERROR_NONE != _icon_exist_in_list(noti_icon_list, icon)) return;
+
+ /* Set internal data */
+ icon->wish_to_show = EINA_FALSE;
+ noti_icon_list = _insert_icon_to_list(noti_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_ALARM:
+ if (INDICATOR_ERROR_NONE != _icon_exist_in_list(alarm_icon_list, icon)) return;
+
+ /* Set internal data */
+ icon->wish_to_show = EINA_FALSE;
+ alarm_icon_list = eina_list_append(alarm_icon_list, icon);
+ break;
+ default:
+ break;
+ }
+
+ return;
+}
+
+
+extern void list_remove_icon(icon_s *icon)
+{
+ ret_if(!icon);
+
+ switch (icon->area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ ret_if(!fixed_icon_list);
+ fixed_icon_list = eina_list_remove(fixed_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ ret_if(!system_icon_list);
+ system_icon_list = eina_list_remove(system_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ ret_if(!noti_icon_list);
+ noti_icon_list = eina_list_remove(noti_icon_list, icon);
+ break;
+ case INDICATOR_ICON_AREA_ALARM:
+ ret_if(!alarm_icon_list);
+ alarm_icon_list = eina_list_remove(alarm_icon_list, icon);
+ break;
+ default:
+ _E("default");
+ break;
+ }
+}
+
+
+extern icon_s *list_try_to_find_icon_to_show(int area, int priority)
+{
+ Eina_List *l;
+ icon_s *data = NULL;
+ icon_s *icon = NULL;
+
+ switch (area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ EINA_LIST_REVERSE_FOREACH(fixed_icon_list, l, data) {
+ if (data->priority == priority
+ && data->wish_to_show == EINA_TRUE
+ && data->exist_in_view == EINA_FALSE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ EINA_LIST_REVERSE_FOREACH(system_icon_list, l, data) {
+ if (data->wish_to_show == EINA_TRUE
+ && data->exist_in_view == EINA_FALSE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ EINA_LIST_REVERSE_FOREACH(noti_icon_list, l, data) {
+ if (data->wish_to_show == EINA_TRUE
+ && data->exist_in_view == EINA_FALSE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ case INDICATOR_ICON_AREA_ALARM:
+ EINA_LIST_REVERSE_FOREACH(alarm_icon_list, l, data) {
+ if (data->wish_to_show == EINA_TRUE
+ && data->exist_in_view == EINA_FALSE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ default:
+ _E("default");
+ break;
+ }
+
+ retv_if(!icon, NULL);
+
+ return icon;
+}
+
+
+
+extern icon_s *list_try_to_find_icon_to_remove(int area, int priority)
+{
+ Eina_List *l;
+ icon_s *data = NULL;
+ icon_s *icon = NULL;
+
+
+ switch (area) {
+ case INDICATOR_ICON_AREA_FIXED:
+ EINA_LIST_REVERSE_FOREACH(fixed_icon_list, l, data) {
+ if (data->priority == priority
+ && data->wish_to_show == EINA_TRUE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ case INDICATOR_ICON_AREA_SYSTEM:
+ /* Find lowest priority of icon */
+ EINA_LIST_FOREACH(system_icon_list, l, data) {
+ if (data->wish_to_show == EINA_TRUE
+ && data->always_top == EINA_FALSE
+ && data->exist_in_view == EINA_TRUE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ case INDICATOR_ICON_AREA_NOTI:
+ /* Find lowest priority of icon */
+ EINA_LIST_REVERSE_FOREACH(noti_icon_list, l, data) {
+ if (data->wish_to_show == EINA_TRUE
+ && data->always_top == EINA_FALSE
+ && data->exist_in_view == EINA_TRUE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ case INDICATOR_ICON_AREA_ALARM:
+ /* Find lowest priority of icon */
+ EINA_LIST_FOREACH(alarm_icon_list, l, data) {
+ if (data->wish_to_show == EINA_TRUE
+ && data->always_top == EINA_FALSE
+ && data->exist_in_view == EINA_TRUE) {
+ icon = data;
+ break;
+ }
+ }
+ break;
+ default:
+ _E("default");
+ break;
+ }
+
+ retv_if(!icon, NULL);
+
+ return icon;
+}
+
+
+
+extern unsigned int list_get_noti_count(void)
+{
+ Eina_List *l;
+ icon_s *data = NULL;
+ int cnt = 0;
+
+ EINA_LIST_FOREACH(noti_icon_list, l, data) {
+ if (data->wish_to_show == EINA_TRUE
+ || data->exist_in_view == EINA_TRUE) {
+ if (!strcmp(data->name, "more_notify")) continue; // Except more noti
+ cnt++;
+ }
+ }
+
+ return cnt;
+}
+
+/* End of file */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_ICON_LIST_H__
+#define __INDICATOR_ICON_LIST_H__
+
+extern void icon_free(icon_s *icon);
+extern int list_free_all(void);
+extern void list_update(icon_s *obj);
+extern void list_insert_icon(icon_s *obj);
+extern void list_remove_icon(icon_s *obj);
+extern icon_s *list_try_to_find_icon_to_show(int area, int priority);
+extern icon_s *list_try_to_find_icon_to_remove(int area, int priority);
+extern unsigned int list_get_noti_count(void);
+
+#endif /*__INDICATOR_ICON_LIST_H__*/
--- /dev/null
+/*
+ * Samsung API
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd.
+ *
+ * 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/license/
+ *
+ * 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 __SAMPLE_APP_LOG_H__
+#define __SAMPLE_APP_LOG_H__
+
+#include <unistd.h>
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "INDICATOR"
+
+#if !defined(_D)
+#define _D(fmt, arg...) LOGD(fmt"\n", ##arg)
+#endif
+
+#if !defined(_W)
+#define _W(fmt, arg...) LOGW(fmt"\n", ##arg)
+#endif
+
+#if !defined(_E)
+#define _E(fmt, arg...) LOGE(fmt"\n", ##arg)
+#endif
+
+#define retvm_if(expr, val, fmt, arg...) do { \
+ if(expr) { \
+ _E(fmt, ##arg); \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return val; \
+ } \
+} while (0)
+
+#define retv_if(expr, val) do { \
+ if(expr) { \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return (val); \
+ } \
+} while (0)
+
+#define retm_if(expr, fmt, arg...) do { \
+ if(expr) { \
+ _E(fmt, ##arg); \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+} while (0)
+
+#define ret_if(expr) do { \
+ if(expr) { \
+ _E("(%s) -> %s() return", #expr, __FUNCTION__); \
+ return; \
+ } \
+} while (0)
+
+#define goto_if(expr, val) do { \
+ if(expr) { \
+ _E("(%s) -> goto", #expr); \
+ goto val; \
+ } \
+} while (0)
+
+#define break_if(expr) { \
+ if(expr) { \
+ _E("(%s) -> break", #expr); \
+ break; \
+ } \
+}
+
+#define continue_if(expr) { \
+ if(expr) { \
+ _E("(%s) -> continue", #expr); \
+ continue; \
+ } \
+}
+
+#endif /* __SAMPLE_APP_LOG_H__ */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <app.h>
+//#include <Ecore_X.h>
+#include <vconf.h>
+#include <unistd.h>
+#include <privilege-control.h>
+#include <app_manager.h>
+#include <signal.h>
+#include <minicontrol-monitor.h>
+#include <feedback.h>
+#include <notification.h>
+//#include <notification_internal.h>
+#include <app_preference.h>
+#include <wifi.h>
+#if 0
+#include <app_manager_product.h>
+#endif
+
+#include "common.h"
+#include "box.h"
+#include "icon.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "modules.h"
+#include "util.h"
+#include "plmn.h"
+#include "message.h"
+#include "tts.h"
+#include "log.h"
+#include "indicator.h"
+#include "ticker.h"
+
+#define GRP_MAIN "indicator"
+#define WIN_TITLE "Illume Indicator"
+#define VCONF_PHONE_STATUS "memory/startapps/sequence"
+
+#define BUS_NAME "org.tizen.system.deviced"
+#define PATH_NAME "/Org/Tizen/System/DeviceD/Display"
+#define INTERFACE_NAME BUS_NAME".display"
+#define MEMBER_NAME "LCDOn"
+
+#define MP_APP_ID "org.tizen.music-player-lite"
+#define FMRADIO_APP_ID "org.tizen.fm-radio-lite"
+#define VR_APP_ID "org.tizen.voicerecorder-lite"
+
+#define STR_ATOM_MV_INDICATOR_GEOMETRY "_E_MOVE_INDICATOR_GEOMETRY"
+
+#define HIBERNATION_ENTER_NOTI "HIBERNATION_ENTER"
+#define HIBERNATION_LEAVE_NOTI "HIBERNATION_LEAVE"
+
+#define UNLOCK_ENABLED 0
+#define TIMEOUT 5
+
+#ifdef HOME_KEY_EMULATION
+/* Predefine string */
+#define PROP_HWKEY_EMULATION "_HWKEY_EMULATION"
+#define KEY_MSG_PREFIX_PRESS "P:"
+#define KEY_MSG_PREFIX_RELEASE "R:"
+#define KEY_MSG_PREFIX_PRESS_C "PC"
+#define KEY_MSG_PREFIX_RELEASE_C "RC"
+
+#ifndef KEY_HOME
+#define KEY_HOME "XF86Phone"
+#endif /* KEY_HOME */
+#endif /* HOME_KEY_EMULATION */
+
+//static E_DBus_Connection *edbus_conn=NULL;
+//static E_DBus_Signal_Handler *edbus_handler=NULL;
+static Eina_Bool home_button_pressed = EINA_FALSE;
+static Eina_Bool show_hide_pressed = EINA_FALSE;
+Evas_Coord_Point indicator_press_coord = {0,0};
+Ecore_Timer *clock_timer;
+static Ecore_Timer *listen_timer = NULL;
+int is_transparent = 0;
+int current_angle = 0;
+int current_state = 0;
+static int bFirst_opacity = 1;
+
+static int _window_new(void *data);
+static int _window_del(void *data);
+static void _indicator_low_bat_cb(app_event_info_h event_info, void *data);
+static void _indicator_lang_changed_cb(app_event_info_h event_info, void *data);
+static void _indicator_region_changed_cb(app_event_info_h event_info, void *data);
+static void _indicator_window_delete_cb(void *data, Evas_Object * obj, void *event);
+//static Eina_Bool _indicator_client_message_cb(void *data, int type, void *event);
+static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj, void *event);
+static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj, void *event);
+static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj, void *event);
+
+
+static void _indicator_low_bat_cb(app_event_info_h event_info, void *data)
+{
+}
+
+static void _indicator_lang_changed_cb(app_event_info_h event_info, void *data)
+{
+ modules_lang_changed(data);
+}
+
+static void _indicator_region_changed_cb(app_event_info_h event_info, void *data)
+{
+ modules_region_changed(data);
+}
+
+static void _indicator_window_delete_cb(void *data, Evas_Object * obj, void *event)
+{
+ ret_if(!data);
+
+ _window_del((struct appdata *)data);
+}
+
+static void _indicator_notify_pm_state_cb(keynode_t * node, void *data)
+{
+ static int nMove = 0;
+ static int nIndex = 1;
+ int val = -1;
+
+ ret_if(!data);
+
+ if (vconf_get_int(VCONFKEY_PM_STATE, &val) < 0) return;
+
+ switch (val) {
+ case VCONFKEY_PM_STATE_LCDOFF:
+ if (clock_timer != NULL) {
+ ecore_timer_del(clock_timer);
+ clock_timer = NULL;
+ }
+ case VCONFKEY_PM_STATE_SLEEP: // lcd off 2
+ /* FIXME */
+ nMove = nMove+nIndex;
+ if(nMove>=4)
+ nIndex = -1;
+ else if(nMove<=0)
+ nIndex = 1;
+ {
+ char temp[30] = {0,};
+ sprintf(temp,"indicator.padding.resize.%d",nMove);
+ util_signal_emit(data,temp,"indicator.prog");
+ }
+ icon_set_update_flag(0);
+ box_noti_ani_handle(0);
+ break;
+ case VCONFKEY_PM_STATE_NORMAL:
+ if (!icon_get_update_flag()) {
+ icon_set_update_flag(1);
+ box_noti_ani_handle(1);
+ modules_wake_up(data);
+ }
+ break;
+ case VCONFKEY_PM_STATE_LCDDIM:
+ default:
+ break;
+ }
+}
+
+static void _indicator_power_off_status_cb(keynode_t * node, void *data)
+{
+ int val = -1;
+
+ ret_if(!data);
+
+ if (vconf_get_int(VCONFKEY_SYSMAN_POWER_OFF_STATUS, &val) < 0) return;
+
+ switch (val) {
+ case VCONFKEY_SYSMAN_POWER_OFF_DIRECT:
+ case VCONFKEY_SYSMAN_POWER_OFF_RESTART:
+ ui_app_exit();
+ break;
+ default:
+ break;
+ }
+
+}
+
+static void _indicator_lock_status_cb(keynode_t * node, void *data)
+{
+ static int lockstate = 0;
+ extern int clock_mode;
+ int val = -1;
+
+ ret_if(!data);
+
+ if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) return;
+ if (val == lockstate) return;
+
+ lockstate = val;
+
+ switch (val) {
+ case VCONFKEY_IDLE_UNLOCK:
+ if (!clock_mode) util_signal_emit(data,"clock.font.12","indicator.prog");
+ else util_signal_emit(data,"clock.font.24","indicator.prog");
+ break;
+ case VCONFKEY_IDLE_LOCK:
+ /*case VCONFKEY_IDLE_LAUNCHING_LOCK:
+ util_signal_emit(data,"clock.invisible","indicator.prog");
+ break;*/
+ default:
+ break;
+ }
+
+}
+
+static void _rotate_window(struct appdata *ad, int new_angle)
+{
+ ret_if(!ad);
+
+ _D("Indicator angle is %d degree", new_angle);
+
+ current_angle = new_angle;
+
+ switch (new_angle) {
+ case 0:
+ case 180:
+ evas_object_resize(ad->win.win, ad->win.port_w, ad->win.h);
+ break;
+ case 90:
+ case 270:
+ evas_object_resize(ad->win.win, ad->win.land_w, ad->win.h);
+ break;
+ default:
+ break;
+ }
+}
+
+#ifdef INDICATOR_SUPPORT_OPACITY_MODE
+static void _change_opacity(void *data, enum indicator_opacity_mode mode)
+{
+ struct appdata *ad = NULL;
+ const char *signal = NULL;
+ retif(data == NULL, , "Invalid parameter!");
+
+ ad = data;
+
+ if (bFirst_opacity==1) bFirst_opacity = 0;
+
+ switch (mode) {
+ case INDICATOR_OPACITY_OPAQUE:
+ signal = "bg.opaque";
+ ad->opacity_mode = mode;
+ break;
+ case INDICATOR_OPACITY_TRANSLUCENT:
+ signal = "bg.translucent";
+ ad->opacity_mode = mode;
+ break;
+ case INDICATOR_OPACITY_TRANSPARENT:
+ signal = "bg.transparent";
+ ad->opacity_mode = mode;
+ break;
+ default:
+ _E("unknown mode : %d", mode);
+ signal = "bg.opaque";
+ ad->opacity_mode = INDICATOR_OPACITY_OPAQUE;
+ break;
+
+ }
+ util_signal_emit_by_win(&(ad->win),signal, "indicator.prog");
+}
+#if 0
+static void _indicator_quickpanel_changed(void *data, int is_open)
+{
+ int val = 0;
+
+ ret_if(!data);
+
+ if (vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &val) < 0) return;
+ if (val == VCONFKEY_IDLE_LOCK) return;
+}
+#endif
+#endif /* INDICATOR_SUPPORT_OPACITY_MODE */
+
+#if 0
+static Eina_Bool _indicator_client_message_cb(void *data, int type, void *event)
+{
+ Ecore_X_Event_Client_Message *ev = (Ecore_X_Event_Client_Message *) event;
+ struct appdata *ad = NULL;
+ ad = data;
+
+ retv_if(data == NULL || event == NULL, ECORE_CALLBACK_RENEW);
+ if (ev->message_type == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_STATE) {
+ if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_ON) {
+ _indicator_quickpanel_changed(data, 1);
+ } else if (ev->data.l[0] == ECORE_X_ATOM_E_ILLUME_QUICKPANEL_OFF) {
+ _indicator_quickpanel_changed(data, 0);
+ }
+ }
+
+ if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
+ int new_angle = 0;
+ if(ev->win != ad->active_indi_win) {
+ return ECORE_CALLBACK_RENEW;
+ }
+ new_angle = ev->data.l[0];
+ _rotate_window(ad, new_angle);
+ }
+ return EINA_TRUE;
+}
+#endif
+
+static Eina_Bool _active_indicator_handle(void* data,int type)
+{
+ int trans_mode = 0;
+ int angle = 0;
+// Ecore_X_Illume_Indicator_Opacity_Mode illume_opacity = 0;
+
+ retv_if(!data, EINA_FALSE);
+
+ struct appdata *ad = (struct appdata *)data;
+ switch (type) {
+ /* Opacity */
+ case 1:
+#if 0
+ illume_opacity = ecore_x_e_illume_indicator_opacity_get(ad->active_indi_win);
+
+ switch(illume_opacity) {
+ case ECORE_X_ILLUME_INDICATOR_OPAQUE:
+ trans_mode = INDICATOR_OPACITY_OPAQUE;
+ break;
+ case ECORE_X_ILLUME_INDICATOR_TRANSLUCENT:
+ trans_mode = INDICATOR_OPACITY_TRANSLUCENT;
+ break;
+ case ECORE_X_ILLUME_INDICATOR_TRANSPARENT:
+ trans_mode = INDICATOR_OPACITY_TRANSPARENT;
+ break;
+ default:
+ trans_mode = INDICATOR_OPACITY_OPAQUE;
+ break;
+ }
+#endif
+ _change_opacity(ad, trans_mode);
+ break;
+ /* Rotate */
+ case 2:
+ util_win_prop_angle_get(ad->active_indi_win, &angle);
+ _rotate_window(ad, angle);
+ break;
+ default :
+ break;
+ }
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool _property_changed_cb(void *data, int type, void *event)
+{
+#if 0
+// Ecore_X_Event_Window_Property *ev = event;
+ struct appdata *ad = NULL;
+
+ ad = data;
+ retv_if(!data, EINA_FALSE);
+// retv_if(!ev, EINA_FALSE);
+ if (ev->atom == ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE) {
+ if (ev->win == ad->active_indi_win) {
+ _active_indicator_handle(data, 2);
+ }
+ } else if (ev->atom == ECORE_X_ATOM_E_ILLUME_INDICATOR_OPACITY_MODE) {
+ if (ev->win == ad->active_indi_win) {
+ _active_indicator_handle(data, 1);
+ }
+ } else if (ev->atom == ad->atom_active) {
+ int ret = 0;
+
+ Ecore_X_Window active_win;
+
+ ret = ecore_x_window_prop_window_get(elm_win_xwindow_get(ad->win_overlay), ad->atom_active, &(active_win), 1);
+ if (ret == -1) return EINA_FALSE;
+
+ if (active_win != ad->active_indi_win) {
+ if (ad->active_indi_win != -1) {
+ ecore_x_window_unsniff(ad->active_indi_win);
+ _D("UNSNIFF API %x", ad->active_indi_win);
+ }
+ ad->active_indi_win = active_win;
+
+ ecore_x_window_sniff(ad->active_indi_win);
+ if (indicator_message_retry_check()) {
+ indicator_message_display_trigger();
+ }
+ }
+
+ _active_indicator_handle(data, 1);
+ _active_indicator_handle(data, 2);
+ }
+#endif
+ return EINA_TRUE;
+}
+
+#if 0
+static void _mctrl_monitor_cb(minicontrol_action_e action, const char *name, unsigned int width, unsigned int height, minicontrol_priority_e priority, void *data)
+{
+ ret_if(!data);
+ ret_if(!name);
+
+ modules_minictrl_control(action,name,data);
+}
+#endif
+
+static void _indicator_ecore_evas_msg_parent_handle(Ecore_Evas *ee, int msg_domain, int msg_id, void *data, int size)
+{
+ ret_if(!data);
+
+#ifdef _SUPPORT_SCREEN_READER
+ if (msg_domain == MSG_DOMAIN_CONTROL_ACCESS) {
+ struct appdata *ad = (struct appdata *)ecore_evas_data_get(ee,"indicator_app_data");
+
+ ret_if(!ad);
+
+ Elm_Access_Action_Info *action_info;
+ Evas_Object* win = NULL;
+ action_info = data;
+
+ win = ad->win.win;
+
+ if (msg_id == ELM_ACCESS_ACTION_ACTIVATE) {
+ elm_access_action(win, action_info->action_type,action_info);
+ } else if (msg_id == ELM_ACCESS_ACTION_HIGHLIGHT_NEXT) {
+ action_info->highlight_cycle = EINA_TRUE;
+ elm_access_action(win,action_info->action_type,action_info);
+ } else if (msg_id == ELM_ACCESS_ACTION_HIGHLIGHT_PREV) {
+ action_info->highlight_cycle = EINA_TRUE;
+ elm_access_action(win,action_info->action_type,action_info);
+ } else if (msg_id == ELM_ACCESS_ACTION_UNHIGHLIGHT) {
+ elm_access_action(win,action_info->action_type,action_info);
+ } else if (msg_id == ELM_ACCESS_ACTION_READ) {
+ elm_access_action(win,action_info->action_type,action_info);
+ }
+ }
+#endif /* _SUPPORT_SCREEN_READER */
+}
+
+#if 0
+static void on_changed_receive(void *data, DBusMessage *msg)
+{
+ int r;
+
+ r = dbus_message_is_signal(msg, INTERFACE_NAME, MEMBER_NAME);
+ ret_if(!r);
+
+ _D("LCD On handling");
+
+ if (!icon_get_update_flag()) {
+ icon_set_update_flag(1);
+ box_noti_ani_handle(1);
+ modules_wake_up(data);
+ }
+}
+
+static void edbus_cleaner(void)
+{
+ if (!edbus_conn) {
+ _D("already unregistered");
+ return;
+ }
+
+ if (edbus_handler) {
+ e_dbus_signal_handler_del(edbus_conn, edbus_handler);
+ edbus_handler = NULL;
+ }
+
+ if (edbus_conn) {
+ e_dbus_connection_close(edbus_conn);
+ edbus_conn = NULL;
+ }
+
+ e_dbus_shutdown();
+}
+
+static int edbus_listener(void* data)
+{
+ if (edbus_conn != NULL) {
+ _D("alreay exist");
+ return -1;
+ }
+
+ e_dbus_init();
+
+ edbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+ if (!edbus_conn) {
+ _E("e_dbus_bus_get error");
+ return -1;
+ }
+
+ edbus_handler = e_dbus_signal_handler_add(edbus_conn, NULL, PATH_NAME, INTERFACE_NAME, MEMBER_NAME, on_changed_receive, data);
+ if (!edbus_handler) {
+ _E("e_dbus_signal_handler_add error");
+ return -1;
+ }
+
+ return 0;
+}
+#endif
+
+static void _register_event_handler_both(win_info *win, void *data)
+{
+ Ecore_Evas *ee;
+
+ ret_if(!win);
+
+ ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win));
+
+ evas_object_smart_callback_add(win->win,"delete,request", _indicator_window_delete_cb, data);
+ evas_object_event_callback_add(win->layout, EVAS_CALLBACK_MOUSE_DOWN, _indicator_mouse_down_cb, win);
+ evas_object_event_callback_add(win->layout, EVAS_CALLBACK_MOUSE_MOVE, _indicator_mouse_move_cb, win);
+ evas_object_event_callback_add(win->layout, EVAS_CALLBACK_MOUSE_UP,_indicator_mouse_up_cb, win);
+ ecore_evas_callback_msg_parent_handle_set(ee, _indicator_ecore_evas_msg_parent_handle);
+ ecore_evas_data_set(ee,"indicator_app_data",data);
+}
+
+static void register_event_handler(void *data)
+{
+ struct appdata *ad = data;
+// Ecore_Event_Handler *hdl = NULL;
+ ret_if(!data);
+
+ _register_event_handler_both(&(ad->win),data);
+
+#if 0
+ hdl = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE, _indicator_client_message_cb, (void *)ad);
+ ret_if(!hdl);
+ ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
+
+ hdl = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _property_changed_cb, data);
+ ret_if(!hdl);
+ ad->evt_handlers = eina_list_append(ad->evt_handlers, hdl);
+#endif
+ if (vconf_notify_key_changed(VCONFKEY_PM_STATE, _indicator_notify_pm_state_cb, (void *)ad) != 0) {
+ _E("Fail to set callback for VCONFKEY_PM_STATE");
+ }
+
+ if (vconf_notify_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _indicator_power_off_status_cb, (void *)ad) < 0) {
+ _E("Failed to set callback for VCONFKEY_SYSMAN_POWER_OFF_STATUS");
+ }
+
+ if (vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, _indicator_lock_status_cb, (void *)ad) < 0) {
+ _E("Failed to set callback for VCONFKEY_IDLE_LOCK_STATE");
+ }
+
+// edbus_listener(data);
+}
+
+static void _unregister_event_handler_both(win_info *win)
+{
+ ret_if(!win);
+
+ evas_object_smart_callback_del(win->win, "delete-request", _indicator_window_delete_cb);
+ evas_object_event_callback_del(win->layout, EVAS_CALLBACK_MOUSE_DOWN, _indicator_mouse_down_cb);
+ evas_object_event_callback_del(win->layout, EVAS_CALLBACK_MOUSE_MOVE, _indicator_mouse_move_cb);
+ evas_object_event_callback_del(win->layout, EVAS_CALLBACK_MOUSE_UP, _indicator_mouse_up_cb);
+}
+
+static int unregister_event_handler(void *data)
+{
+ struct appdata *ad = (struct appdata *)data;
+
+ retv_if(!data, 0);
+
+ _unregister_event_handler_both(&(ad->win));
+
+ vconf_ignore_key_changed(VCONFKEY_PM_STATE, _indicator_notify_pm_state_cb);
+ vconf_ignore_key_changed(VCONFKEY_SYSMAN_POWER_OFF_STATUS, _indicator_power_off_status_cb);
+ vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _indicator_lock_status_cb);
+
+ Ecore_Event_Handler *hdl = NULL;
+ EINA_LIST_FREE(ad->evt_handlers, hdl) {
+ if (hdl) ecore_event_handler_del(hdl);
+ }
+
+// edbus_cleaner();
+
+ return OK;
+}
+
+static Evas_Object *_create_layout(Evas_Object * parent, const char *file, const char *group)
+{
+ Evas_Object *layout = NULL;
+ int ret;
+
+ layout = elm_layout_add(parent);
+ if (layout) {
+ ret = elm_layout_file_set(layout, file, group);
+ if (!ret) {
+ evas_object_del(layout);
+ return NULL;
+ }
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(parent, layout);
+ }
+
+ return layout;
+}
+
+static void _indicator_listen_timer_cb(void* data)
+{
+ char *indi_name = NULL;
+ win_info *win = NULL;
+
+ ret_if(!data);
+
+ win = (win_info*)data;
+ indi_name = "elm_indicator";
+
+ if (listen_timer != NULL) {
+ ecore_timer_del(listen_timer);
+ listen_timer = NULL;
+ }
+
+ if (!elm_win_socket_listen(win->win , indi_name, 0, EINA_FALSE)) {
+ _E("faile to elm_win_socket_listen() %x", win->win);
+ listen_timer = ecore_timer_add(3, (void *)_indicator_listen_timer_cb, win);
+ } else {
+ _D("listen success");
+ }
+}
+
+static void _create_box(win_info *win)
+{
+ ret_if(!win);
+
+ /* First, clear layout */
+ box_fini(win);
+
+ box_init(win);
+
+ return;
+}
+
+#define qHD_RESOLUTION_WIDTH 540
+#define INDICATOR_HEIGHT_HD 48
+#define INDICATOR_HEIGHT_qHD 38
+#define INDICATOR_HEIGHT_WVGA 36
+static void _create_win(void* data)
+{
+ char *indi_name = NULL;
+ struct appdata *ad = NULL;
+ Ecore_X_Window xwin;
+// Ecore_X_Window zone;
+// Ecore_X_Window_State states[2];
+ int root_w;
+ int root_h;
+// Ecore_X_Window root;
+
+ ret_if(!data);
+
+ _D("Window created");
+
+ ad = data;
+
+// root = ecore_x_window_root_first_get();
+// ecore_x_window_size_get(root, &root_w, &root_h);
+
+ if (root_w > qHD_RESOLUTION_WIDTH) { // HD
+ _D("Window w, h (%d,%d)", root_w, root_h);
+ ad->win.port_w = root_w;
+ ad->win.land_w = root_h;
+ ad->win.h = INDICATOR_HEIGHT_HD;
+ } else if (root_w < qHD_RESOLUTION_WIDTH) { // WVGA
+ _D("Window w, h (%d,%d)", root_w, root_h);
+ ad->win.port_w = root_w;
+ ad->win.land_w = root_h;
+ ad->win.h = INDICATOR_HEIGHT_WVGA;
+ } else { // qHD
+ _D("Window w, h (%d,%d)", root_w, root_h);
+ ad->win.port_w = root_w;
+ ad->win.land_w = root_h;
+ ad->win.h = INDICATOR_HEIGHT_qHD;
+ }
+
+ /* Create socket window */
+ ad->win.win = elm_win_add(NULL, "portrait_indicator", ELM_WIN_SOCKET_IMAGE);
+ indi_name = "elm_indicator";
+ elm_win_title_set(ad->win.win, "win sock test:port");
+ ad->win.w = root_w;
+
+ ret_if(!(ad->win.win));
+
+ if (!elm_win_socket_listen(ad->win.win , indi_name, 0, EINA_FALSE)) {
+ _E("failed 1st to elm_win_socket_listen() %x", ad->win.win);
+ /* Start timer */
+ if (listen_timer != NULL) {
+ ecore_timer_del(listen_timer);
+ listen_timer = NULL;
+ }
+ listen_timer = ecore_timer_add(3, (void *)_indicator_listen_timer_cb, &(ad->win));
+ }
+ elm_win_alpha_set(ad->win.win , EINA_TRUE);
+ elm_win_borderless_set(ad->win.win , EINA_TRUE);
+ evas_object_size_hint_fill_set(ad->win.win , EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(ad->win.win , 1.0, 0.5);
+
+ /* make illume2 recognize indicator window */
+ xwin = elm_win_xwindow_get(ad->win.win );
+// ecore_x_icccm_hints_set(xwin, 0, 0, 0, 0, 0, 0, 0);
+// states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
+// states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
+// ecore_x_netwm_window_state_set(xwin, states, 2);
+
+// zone = ecore_x_e_illume_zone_get(xwin);
+// ecore_x_event_mask_set(zone, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE);
+ ad->win.evas = evas_object_evas_get(ad->win.win);
+
+ ad->win.layout = _create_layout(ad->win.win, EDJ_FILE0, GRP_MAIN);
+ ret_if(!(ad->win.layout));
+
+ _D("win_size = Original(%d, %d), Scaled(%lf, %lf)", ad->win.port_w, ad->win.h, ELM_SCALE_SIZE(ad->win.port_w), ELM_SCALE_SIZE(ad->win.h));
+
+ evas_object_resize(ad->win.win, ad->win.port_w, ad->win.h);
+ evas_object_move(ad->win.win, 0, 0);
+
+ _create_box(&(ad->win));
+
+ ad->win.data = data;
+
+ evas_object_show(ad->win.layout);
+ evas_object_show(ad->win.win);
+
+ return;
+}
+
+
+
+static void create_overlay_win(void* data)
+{
+ struct appdata *ad = data;
+
+ Evas_Object *eo;
+ int w, h;
+ int indi_h;
+// int id = -1;
+ Ecore_X_Window xwin;
+// Ecore_X_Window zone;
+// Ecore_X_Window_State states[2];
+// Ecore_X_Atom ATOM_MV_INDICATOR_GEOMETRY = 0;
+
+ indi_h = (int)ELM_SCALE_SIZE(INDICATOR_HEIGHT);
+
+ ad->active_indi_win = -1;
+
+ eo = elm_win_add(NULL, "INDICATOR", ELM_WIN_BASIC);
+ /*id = elm_win_aux_hint_add(eo, "wm.policy.win.user.geometry", "1");
+ if(id == -1) {
+ _E("Cannot add user.geometry");
+ return;
+ }*/
+ elm_win_title_set(eo, "INDICATOR");
+ elm_win_borderless_set(eo, EINA_TRUE);
+ //ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
+
+ _D("win_size = Original(%d, %d), Scaled(%lf, %lf)", 2,2, ELM_SCALE_SIZE(2), ELM_SCALE_SIZE(2));
+ evas_object_resize(eo, ELM_SCALE_SIZE(2), ELM_SCALE_SIZE(2));
+
+ evas_object_move(eo , 0, 0);
+ elm_win_alpha_set(eo, EINA_TRUE);
+
+ xwin = elm_win_xwindow_get(eo);
+// ecore_x_icccm_hints_set(xwin, 0, 0, 0, 0, 0, 0, 0);
+// states[0] = ECORE_X_WINDOW_STATE_SKIP_TASKBAR;
+// states[1] = ECORE_X_WINDOW_STATE_SKIP_PAGER;
+// ecore_x_netwm_window_state_set(xwin, states, 2);
+
+// ecore_x_icccm_name_class_set(xwin, "INDICATOR", "INDICATOR");
+
+// ecore_x_netwm_window_type_set(xwin, ECORE_X_WINDOW_TYPE_DOCK);
+
+ unsigned int ind_gio_val[16] = { 0, 0, w, indi_h, /* angle 0 (x,y,w,h) */
+ 0, 0, indi_h, h, /* angle 90 (x,y,w,h) */
+ 0, h-indi_h, w, indi_h, /* angle 180 (x,y,w,h) */
+ w-indi_h, 0, indi_h, h /* angle 270 (x,y,w,h) */ };
+
+// ATOM_MV_INDICATOR_GEOMETRY = ecore_x_atom_get(STR_ATOM_MV_INDICATOR_GEOMETRY);
+
+// ecore_x_window_prop_card32_set(xwin, ATOM_MV_INDICATOR_GEOMETRY, ind_gio_val, 16);
+
+// zone = ecore_x_e_illume_zone_get(xwin);
+// ecore_x_event_mask_set(zone, ECORE_X_EVENT_MASK_WINDOW_CONFIGURE);
+ evas_object_show(eo);
+
+ ad->win_overlay = eo;
+// ad->atom_active = ecore_x_atom_get("_E_ACTIVE_INDICATOR_WIN");
+
+ return ;
+}
+
+
+
+static void _init_win_info(void * data)
+{
+ struct appdata *ad = data;
+ retif(data == NULL, , "Invalid parameter!");
+
+ memset(&(ad->win),0x00,sizeof(win_info));
+
+ ad->win_overlay = NULL;
+}
+
+
+
+static void _init_tel_info(void * data)
+{
+ int i = 0;
+ struct appdata *ad = data;
+ retif(data == NULL, , "Invalid parameter!");
+
+ for(i = 0; i < SIM_CNT_MAX; i++) {
+ memset(&(ad->tel_info[i]),0x00,sizeof(telephony_info));
+ }
+}
+
+
+
+static int _window_new(void *data)
+{
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ _init_win_info(data);
+ _init_tel_info(data);
+
+ /* Create indicator window */
+ _create_win(data);
+
+ return INDICATOR_ERROR_NONE;
+}
+
+
+
+static int _window_del(void *data)
+{
+ struct appdata *ad = (struct appdata *)data;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ modules_fini(data);
+ unregister_event_handler(ad);
+
+ box_fini(&(ad->win));
+ evas_image_cache_flush(ad->win.evas);
+ evas_object_del(ad->win.layout);
+ ad->win.layout = NULL;
+
+ evas_object_del(ad->win.win);
+ ad->win.win = NULL;
+
+ evas_object_del(ad->win_overlay);
+ ad->win_overlay = NULL;
+
+ if (ad) free(ad);
+
+ elm_exit();
+ return OK;
+}
+
+static void __indicator_set_showhide_press(int value, int line)
+{
+ show_hide_pressed = value;
+}
+
+static void _indicator_mouse_down_cb(void *data, Evas * e, Evas_Object * obj, void *event)
+{
+ win_info *win = (win_info*)data;
+ Evas_Event_Mouse_Down *ev = NULL;
+
+ retif(data == NULL || event == NULL, , "Invalid parameter!");
+ ev = event;
+
+ win->mouse_event.x = ev->canvas.x;
+ win->mouse_event.y = ev->canvas.y;
+
+ if (ev->button != 1) {
+ return;
+ }
+
+#ifdef HOME_KEY_EMULATION
+ if (box_check_indicator_area(win, ev->canvas.x, ev->canvas.y)) {
+ int lock_state = VCONFKEY_IDLE_UNLOCK;
+ int ps_state = -1;
+ int ret = -1;
+
+ /* if (indicator_message_disp_check(win->type) == 1) {
+ return;
+ }*/
+ ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,&lock_state);
+
+ if (ret != 0 || lock_state == VCONFKEY_IDLE_LOCK) {
+ return;
+ }
+ ret = vconf_get_int(VCONFKEY_SETAPPL_PSMODE,&ps_state);
+
+ if (ret != 0 || ps_state == SETTING_PSMODE_EMERGENCY) {
+ return;
+ }
+
+ if (box_check_home_icon_area(win, ev->canvas.x, ev->canvas.y)) {
+
+ if (util_check_system_status() == FAIL) {
+ _D("util_check_system_status failed");
+ return;
+ }
+ home_button_pressed = EINA_TRUE;
+ }
+ indicator_press_coord.x = ev->canvas.x;
+ indicator_press_coord.y = ev->canvas.y;
+ }
+#endif
+}
+
+
+
+static void _indicator_mouse_move_cb(void *data, Evas * e, Evas_Object * obj, void *event)
+{
+ Evas_Event_Mouse_Move *ev = NULL;
+ win_info* win = (win_info*)data;
+
+ retif(data == NULL || event == NULL, , "Invalid parameter!");
+
+ ev = event;
+
+ if (home_button_pressed) {
+ if (!box_check_home_icon_area(win,ev->cur.canvas.x,ev->cur.canvas.y)) {
+ home_button_pressed = FALSE;
+ }
+
+ }
+ if (show_hide_pressed == 1) {
+ if (!box_check_more_icon_area(win,ev->cur.canvas.x,ev->cur.canvas.y)) {
+ __indicator_set_showhide_press(EINA_FALSE, __LINE__);
+ }
+ }
+}
+
+static void _indicator_mouse_up_cb(void *data, Evas * e, Evas_Object * obj, void *event)
+{
+ Evas_Event_Mouse_Up *ev = NULL;
+ win_info *win = (win_info *)data;
+
+ retif(data == NULL || event == NULL, , "Invalid parameter!");
+
+ ev = event;
+
+#ifdef HOME_KEY_EMULATION
+ if (box_check_indicator_area(win, ev->canvas.x, ev->canvas.y)) {
+
+ if (box_check_home_icon_area(win, ev->canvas.x, ev->canvas.y)) {
+ if (home_button_pressed == EINA_TRUE) {
+ util_launch_search(win->data);
+ feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
+ }
+
+ } else if (box_check_more_icon_area(win, ev->canvas.x, ev->canvas.y)) {
+ if(show_hide_pressed == EINA_TRUE) {
+ DBG("pressed area");
+ feedback_play_type(FEEDBACK_TYPE_SOUND, FEEDBACK_PATTERN_TAP);
+ }
+ }
+ }
+
+ home_button_pressed = EINA_FALSE;
+ __indicator_set_showhide_press(EINA_FALSE, __LINE__);
+
+#else /* HOME_REMOVE_LONGPRESS */
+ int mouse_up_prio = -1;
+ int mouse_down_prio = -1;
+
+ if (home_button_pressed == EINA_TRUE) {
+ home_button_pressed = EINA_FALSE;
+ }
+
+ mouse_down_prio =
+ box_get_priority_in_move_area(win,win->mouse_event.x,
+ win->mouse_event.y);
+ mouse_up_prio = box_get_priority_in_move_area(win,ev->canvas.x,
+ ev->canvas.y);
+
+ if (mouse_down_prio > -1 && mouse_up_prio > -1
+ && mouse_down_prio == mouse_up_prio) {
+ switch (mouse_down_prio) {
+ case INDICATOR_PRIORITY_FIXED1:
+ int lock_state = VCONFKEY_IDLE_UNLOCK;
+ int lock_ret = -1;
+
+ lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,
+ &lock_state);
+
+ /* In Lock Screen, home button don't have to do */
+ if (lock_ret == 0 && lock_state == VCONFKEY_IDLE_LOCK)
+ break;
+
+ char *top_win_name = NULL;
+
+ if (util_check_system_status() == FAIL)
+ break;
+ break;
+ }
+ }
+#endif /* HOME_KEY_EMULATION */
+ win->mouse_event.x = 0;
+ win->mouse_event.y = 0;
+}
+
+#if 0
+static void _app_terminate_cb(app_context_h app_context, app_context_status_e status, void *data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+ DBG("_app_terminate_cb");
+ char *app_id = NULL;
+ app_context_get_app_id(app_context, &app_id);
+ if (app_id == NULL) {
+ ERR("app_id is null!!");
+ return;
+ } else {
+ DBG("_app_terminate_cb %s",app_id);
+ }
+
+ if (status == APP_CONTEXT_STATUS_TERMINATED) {
+ if (strcmp(MP_APP_ID,app_id) == 0) {
+ DBG("hide music icon");
+ hide_mp_icon();
+ } else if(strcmp(FMRADIO_APP_ID,app_id) == 0) {
+ DBG("hide fm radio icon");
+ hide_fm_radio_icon();
+ } else if(strcmp(VR_APP_ID,app_id) == 0) {
+ DBG("hide voice recorder icon");
+ hide_voice_recorder_icon();
+ }
+ }
+ if (app_id!=NULL) {
+ free(app_id);
+ app_id = NULL;
+ }
+}
+
+static void register_app_terminate_cb(void* data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+ app_manager_set_app_context_status_cb(_app_terminate_cb, MP_APP_ID, data);
+ app_manager_set_app_context_status_cb(_app_terminate_cb, FMRADIO_APP_ID, data);
+ app_manager_set_app_context_status_cb(_app_terminate_cb, VR_APP_ID, data);
+}
+#endif
+
+static void _signal_handler(int signum, siginfo_t *info, void *unused)
+{
+ ui_app_exit();
+}
+
+static bool app_create(void *data)
+{
+ struct appdata *ad = NULL;
+ int ret;
+
+ ad = data;
+ elm_app_base_scale_set(1.7);
+
+ /* Signal handler */
+ struct sigaction act;
+ memset(&act,0x00,sizeof(struct sigaction));
+ act.sa_sigaction = _signal_handler;
+ act.sa_flags = SA_SIGINFO;
+
+ ret = sigemptyset(&act.sa_mask);
+ if (ret < 0) {
+ ERR("Failed to sigemptyset[%s]", strerror(errno));
+ }
+ ret = sigaddset(&act.sa_mask, SIGTERM);
+ if (ret < 0) {
+ ERR("Failed to sigaddset[%s]", strerror(errno));
+ }
+ ret = sigaction(SIGTERM, &act, NULL);
+ if (ret < 0) {
+ ERR("Failed to sigaction[%s]", strerror(errno));
+ }
+
+ ret = _window_new(ad);
+ if (ret != INDICATOR_ERROR_NONE) {
+ _D("Failed to create a new window!");
+ }
+
+ /* Set nonfixed-list size for display */
+ modules_init_first(ad);
+
+ if (ad->win.win) {
+ elm_win_activate(ad->win.win);
+ }
+ evas_object_show(ad->win.layout);
+ evas_object_show(ad->win.win);
+
+ return true;
+}
+
+static void app_terminate(void *data)
+{
+ struct appdata *ad = data;
+ modules_fini(data);
+ ticker_fini(ad);
+ indicator_message_fini();
+#ifdef _SUPPORT_SCREEN_READER2
+ indicator_service_tts_fini(data);
+#endif
+
+ unregister_event_handler(ad);
+
+ feedback_deinitialize();
+
+ box_fini(&(ad->win));
+ evas_image_cache_flush(ad->win.evas);
+ evas_object_del(ad->win.layout);
+ evas_object_del(ad->win.win);
+
+ _D("INDICATOR IS TERMINATED");
+}
+
+static void app_pause(void *data)
+{
+}
+
+static void app_resume(void *data)
+{
+}
+
+static void app_service(app_control_h service, void *data)
+{
+ struct appdata *ad = data;
+
+ _D("INDICATOR IS STARTED");
+
+ create_overlay_win(data);
+ register_event_handler(ad);
+ modules_init(data);
+#ifdef _SUPPORT_SCREEN_READER
+ modules_register_tts(data);
+#endif
+ feedback_initialize();
+ indicator_message_init(data);
+ if (INDICATOR_ERROR_NONE != ticker_init(ad)) {
+ _E("Ticker cannot initialize");
+ }
+#ifdef _SUPPORT_SCREEN_READER2
+ indicator_service_tts_init(data);
+#endif
+ _indicator_lock_status_cb(NULL,data);
+#if 0
+ register_app_terminate_cb(data);
+#endif
+}
+
+int main(int argc, char *argv[])
+{
+ struct appdata ad;
+
+ ui_app_lifecycle_callback_s event_callback = {0,};
+ app_event_handler_h handlers[5] = {NULL, };
+
+ int ret = 0;
+
+ _D("Start indicator");
+
+ ret = perm_app_set_privilege("org.tizen.", NULL, NULL);
+ if (ret != PC_OPERATION_SUCCESS) {
+ _E("[INDICATOR] Failed to set privilege (%d)", ret);
+ }
+
+ event_callback.create = app_create;
+ event_callback.terminate = app_terminate;
+ event_callback.pause = app_pause;
+ event_callback.resume = app_resume;
+ event_callback.app_control = app_service;
+
+ ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, NULL, NULL);
+ ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, _indicator_low_bat_cb, NULL);
+ ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, NULL, NULL);
+ ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, _indicator_lang_changed_cb, &ad);
+ ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, _indicator_region_changed_cb, NULL);
+
+ memset(&ad, 0x0, sizeof(struct appdata));
+
+ ret = ui_app_main(argc, argv, &event_callback, &ad);
+ if (ret != APP_ERROR_NONE) {
+ _E("app_main() is failed. err = %d", ret);
+ }
+
+ return ret;
+}
+
+/* End of file */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __DEF_indicator_H_
+#define __DEF_indicator_H_
+
+#include <Elementary.h>
+//#include <Ecore_X.h>
+#include <efl_assist.h>
+#include "indicator.h"
+
+#if !defined(PACKAGE)
+# define PACKAGE "indicator"
+#endif
+
+#if !defined(PACKAGEID)
+# define PACKAGEID "org.tizen.indicator"
+#endif
+
+#if !defined(LOCALEDIR)
+# define LOCALEDIR "/usr/apps/org.tizen.indicator/res/locale"
+#endif
+
+#if !defined(EDJDIR)
+# define EDJDIR "/usr/apps/org.tizen.indicator/res/edje"
+#endif
+
+#if !defined(ICONDIR)
+# define ICONDIR "/usr/apps/org.tizen.indicator/res/icons"
+#endif
+
+#if !defined(CHANGEABLEDIR)
+# define CHANGEABLEDIR "/usr/apps/org.tizen.indicator/shared/res/tables"
+#endif
+
+#define EDJ_FILE0 EDJDIR"/"PACKAGE"_port.edj"
+#define EDJ_FILE1 EDJDIR"/"PACKAGE"_land.edj"
+#define ICON_THEME_FILE EDJDIR"/"PACKAGE"_icon_theme.edj"
+#define ICON_NONFIXED_THEME_FILE EDJDIR"/"PACKAGE"_icon_nonfixed_theme.edj"
+#define ICON_NONFIXED_THEME_ANI_FILE EDJDIR"/"PACKAGE"_icon_animation.edj"
+#define ICON_NONFIXED_THEME_SYNC_FILE EDJDIR"/"PACKAGE"_icon_activesync.edj"
+
+#define CHANGEABLE_COLOR_FILE CHANGEABLEDIR"/"PACKAGEID"_ChangeableColorInfo.xml"
+#define CHANGEABLE_FONT_FILE CHANGEABLEDIR"/"PACKAGEID"_ChangeableFontInfo.xml"
+
+
+#define _S(str) dgettext("sys_string", str)
+
+#define HOME_SCREEN_NAME "org.tizen.live-magazine"
+#define MENU_SCREEN_NAME "org.tizen.menu-screen"
+#define LOCK_SCREEN_NAME "org.tizen.idle-lock"
+#define QUICKPANEL_NAME "E Popup"
+#define CALL_NAME "org.tizen.call-ui"
+#define VTCALL_NAME "org.tizen.vtmain"
+
+#define MENUSCREEN_PKG_NAME "org.tizen.menuscreen"
+#define APP_TRAY_PKG_NAME "org.tizen.app-tray"
+#define SEARCH_PKG_NAME "org.tizen.sfinder"
+
+#define MSG_DOMAIN_CONTROL_INDICATOR 0x10001
+#define MSG_ID_INDICATOR_REPEAT_EVENT 0x10002
+#define MSG_ID_INDICATOR_ROTATION 0x10003
+#define MSG_ID_INDICATOR_OPACITY 0X1004
+#define MSG_ID_INDICATOR_TYPE 0X1005
+#define MSG_ID_INDICATOR_OPACITY_OSP 0X10061
+#define MSG_ID_INDICATOR_ANI_START 0x10006
+
+#define MSG_DOMAIN_CONTROL_ACCESS (int)ECORE_X_ATOM_E_ILLUME_ACCESS_CONTROL
+
+#define SIM_CNT_MAX 2
+
+enum _win_type {
+ /* Clock view */
+ TOP_WIN_NORMAL = 0,
+ TOP_WIN_LOCK_SCREEN,
+ /* Full line of indicator */
+ /* CAUTION: Don't change order! */
+ TOP_WIN_CALL,
+ TOP_WIN_MENU_SCREEN,
+ TOP_WIN_HOME_SCREEN,
+ TOP_WIN_QUICKPANEL
+};
+
+enum indicator_opacity_mode{
+ INDICATOR_OPACITY_OPAQUE = 0,
+ INDICATOR_OPACITY_TRANSLUCENT,
+ INDICATOR_OPACITY_TRANSPARENT,
+};
+
+typedef struct _telephony_info
+{
+ int network_service_type;
+ int network_ps_type;
+ int roaming_status;
+ int signal_level;
+ int prefered_data;
+ int prefered_voice;
+ int default_network;
+ int sim_status;
+ int call_forward;
+
+ void* data;
+}telephony_info;
+
+struct appdata {
+
+ win_info win;
+ telephony_info tel_info[SIM_CNT_MAX];
+ int prefered_data; // Data prefered
+ Evas_Object* win_overlay;
+
+ double scale;
+ int angle;
+
+ Eina_List *evt_handlers;
+
+ enum indicator_opacity_mode opacity_mode;
+
+ Ecore_X_Atom atom_active;
+ Ecore_X_Window active_indi_win;
+ //Ea_Theme_Color_Table *color_table;
+ Eina_List *font_table;
+
+ void (*update_display) (int);
+};
+
+int isSimShowing; // For Simcard Icon
+int isRSSI1Showing; // For RSSI1 Icon
+int isRSSI2Showing; // For RSSI2 Icon
+int isSilentShowing; // For Silent Icon
+int isWifiDirectShowing; // For WiFi Direct Icon
+
+#endif /* __DEF_indicator_H__ */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <notification.h>
+//#include <notification_status_internal.h>
+
+#include "main.h"
+#include "common.h"
+#include "util.h"
+#include "tts.h"
+#include "box.h"
+
+
+#define MSG_TIMEOUT 3
+#define STR_BUF_SIZE 256
+#define QUEUE_TIMEOUT 1
+#define QUEUE_TIMEOUT2 5
+#define QUEUE_SIZE 5
+
+#define MESSAGE_LINE1 "message.text"
+#define MESSAGE_LINE2 "message.text2"
+
+
+typedef struct _str_buf {
+ char *data;
+ int index;
+ double timer_val;
+} MsgBuf;
+
+
+static int msg_type = 0;
+static Ecore_Timer *msg_timer = NULL;
+static Ecore_Timer *ani_temp_timer = NULL;
+
+extern int current_angle;
+static int block_width = 0;
+static int string_width = 0;
+static char* message_buf = NULL;
+static Ecore_Timer *retry_timer=NULL;
+static int msg_retry = 0;
+static struct appdata *app_data = NULL;
+static Ecore_Timer *queue_timer=NULL;
+static int current_buf_index = 0;
+static int current_buf_cnt = 0;
+static MsgBuf msg_queue[QUEUE_SIZE];
+
+
+
+static Eina_Bool _ani_temp_timeout_cb(void *data)
+{
+ retif(data == NULL, ECORE_CALLBACK_CANCEL, "Invalid parameter!");
+
+ if (ani_temp_timer)
+ {
+ ecore_timer_del(ani_temp_timer);
+ ani_temp_timer = NULL;
+ }
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+
+
+void start_temp_ani_timer(void* data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+ win_info* win = (win_info*)data;
+
+ if(ani_temp_timer != NULL)
+ {
+ ecore_timer_del(ani_temp_timer);
+ ani_temp_timer = NULL;
+ }
+ ani_temp_timer = ecore_timer_add(0.3, (Ecore_Task_Cb)_ani_temp_timeout_cb, (void*)win);
+
+}
+
+
+
+static void _hide_message(void* data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+ win_info* win = NULL;
+ win = (win_info*)data;
+
+ box_update_display(win);
+
+ start_temp_ani_timer(data);
+ util_signal_emit_by_win(win,"message.hide", "indicator.prog");
+}
+
+
+
+static void _hide_message_all(void* data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+
+ util_signal_emit(data,"message.line2.hide.noeffect","indicator.prog");
+}
+
+
+
+static void _show_message(void* data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+ win_info* win = NULL;
+ win = (win_info*)data;
+ struct appdata* ad = (struct appdata*)win->data;
+
+ start_temp_ani_timer(data);
+ if(ad->opacity_mode==INDICATOR_OPACITY_TRANSPARENT)
+ {
+ DBG("Transparent");
+ util_signal_emit_by_win(win,"message.show.noeffect", "indicator.prog");
+ evas_object_show(win->win);
+ }
+ else
+ {
+ util_signal_emit_by_win(win,"message.show", "indicator.prog");
+ }
+}
+
+
+
+static void _show_message_line2(void* data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+ win_info* win = NULL;
+ win = (win_info*)data;
+
+ if (win)
+ {
+ util_signal_emit_by_win(win,"message.line2.show", "indicator.prog");
+ }
+}
+
+
+
+static Eina_Bool _msg_timeout_cb(void *data)
+{
+ retif(data == NULL, ECORE_CALLBACK_CANCEL, "Invalid parameter!");
+
+ win_info* win = (win_info*)data;
+
+ if(msg_type == 1)
+ {
+ msg_timer = NULL;
+ _hide_message(win);
+ return ECORE_CALLBACK_CANCEL;
+ }
+ else if(msg_type == 2)
+ {
+
+ msg_type = 0;
+ if (msg_timer)
+ {
+ ecore_timer_del(msg_timer);
+ }
+ msg_timer = ecore_timer_add(3, (Ecore_Task_Cb)_msg_timeout_cb, (void*)win);
+ _show_message_line2(win);
+ return ECORE_CALLBACK_CANCEL;
+ }
+ else
+ {
+ msg_type = 0;
+ msg_timer = NULL;
+ _hide_message(win);
+ return ECORE_CALLBACK_CANCEL;
+ }
+}
+
+
+
+static Eina_Bool _retry_timeout_cb(void *data)
+{
+ retif(data == NULL,TRUE , "Invalid parameter!");
+
+ if(message_buf!=NULL)
+ {
+ free(message_buf);
+ message_buf = NULL;
+ }
+
+ if (retry_timer!=NULL)
+ {
+ ecore_timer_del(retry_timer);
+ retry_timer = NULL;
+ }
+ return TRUE;
+
+}
+
+
+
+static int __get_block_width(void* data, const char* part)
+{
+ Evas_Object * eo = NULL;
+ int geo_dx = 0;
+ int geo_dy = 0;
+ retif(data == NULL,-1, "Invalid parameter!");
+ retif(part == NULL,-1, "Invalid parameter!");
+
+ win_info* win = (win_info*)data;
+
+ eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+ evas_object_geometry_get(eo, NULL, NULL, &geo_dx, &geo_dy);
+
+ return geo_dx;
+}
+
+
+
+static int __get_string_width(void* data, const char* part)
+{
+ Evas_Object * eo = NULL;
+ int text_dx = 0;
+ int text_dy = 0;
+ retif(data == NULL,-1, "Invalid parameter!");
+ retif(part == NULL,-1, "Invalid parameter!");
+
+ win_info* win = (win_info*)data;
+
+ eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+ evas_object_textblock_size_formatted_get(eo, &text_dx, &text_dy);
+
+ return text_dx;
+}
+
+
+
+static void __handle_2line(win_info* win,char* origin, char* part1, char* part2)
+{
+ retif(origin == NULL, , "Invalid parameter!");
+ retif(part1 == NULL, , "Invalid parameter!");
+ retif(part2 == NULL, , "Invalid parameter!");
+ int index = 0;
+ Eina_Unicode *uni_out = NULL;
+ Eina_Unicode buf[STR_BUF_SIZE] = {0,};
+ int len = 0;
+ int len2 = 0;
+ Eina_Unicode temp1[STR_BUF_SIZE] = {0,};
+ Eina_Unicode temp2[STR_BUF_SIZE] = {0,};
+ char* out1 = NULL;
+ char* out2 = NULL;
+ int char_len1 = 0;
+ int char_len2 = 0;
+
+ uni_out = eina_unicode_utf8_to_unicode(origin, &len);
+
+ if(len >= STR_BUF_SIZE)
+ {
+ len2 = STR_BUF_SIZE-1;
+ }
+ else
+ {
+ len2 = len;
+ }
+
+ eina_unicode_strncpy(buf,uni_out,len2);
+
+ int exceed_index = len2 * block_width / string_width;
+ {
+ int i = 0;
+ for(i=0;i<100;i++)
+ {
+ Eina_Unicode temp1[STR_BUF_SIZE] = {0,};
+ int char_len1 = 0;
+ char* out1 = NULL;
+ int width = 0;
+ eina_unicode_strncpy(temp1,buf,exceed_index);
+ out1 = eina_unicode_unicode_to_utf8(temp1,&char_len1);
+ util_part_text_emit_by_win(win,"message.text.compare", out1);
+
+ width = __get_string_width(win,"message.text.compare");
+
+ if(width > block_width)
+ {
+ exceed_index = exceed_index -1;
+ DBG("reduce exceed index(%d)",exceed_index,width);
+ }
+ else
+ {
+ if(out1!=NULL)
+ free(out1);
+ break;
+ }
+
+ if(out1!=NULL)
+ free(out1);
+ }
+ for(i=0;i<100;i++)
+ {
+ Eina_Unicode temp1[STR_BUF_SIZE] = {0,};
+ int char_len1 = 0;
+ char* out1 = NULL;
+ int width = 0;
+ eina_unicode_strncpy(temp1,buf,exceed_index);
+ out1 = eina_unicode_unicode_to_utf8(temp1,&char_len1);
+ util_part_text_emit_by_win(win,"message.text.compare", out1);
+
+ width = __get_string_width(win,"message.text.compare");
+
+ if(width < block_width)
+ {
+ exceed_index = exceed_index +1;
+ DBG("increase exceed index(%d)",exceed_index,width);
+ }
+ else
+ {
+ exceed_index = exceed_index -1;
+ if(out1)
+ free(out1);
+ break;
+ }
+
+ if(out1)
+ free(out1);
+ }
+
+ }
+
+ if(exceed_index<0)
+ {
+ ERR("INDEX %d",exceed_index);
+ goto __CATCH;
+ }
+
+ int i = exceed_index;
+
+ while(i>0)
+ {
+ if(buf[i-1]==' ')
+ {
+ index = i-1;
+ break;
+ }
+ i--;
+ }
+
+ if(index>0)
+ {
+ Eina_Unicode *temp3 = NULL;
+ eina_unicode_strncpy(temp1,buf,index);
+ temp3 = &(buf[index]);
+ eina_unicode_strncpy(temp2,temp3,len2-index);
+ }
+ else
+ {
+ Eina_Unicode *temp3 = NULL;
+ eina_unicode_strncpy(temp1,buf,exceed_index);
+ temp3 = &(buf[exceed_index]);
+ eina_unicode_strncpy(temp2,temp3,len2-exceed_index);
+ }
+
+ out1 = eina_unicode_unicode_to_utf8(temp1,&char_len1);
+ out2 = eina_unicode_unicode_to_utf8(temp2,&char_len2);
+
+ if(char_len1>=STR_BUF_SIZE)
+ char_len1 = STR_BUF_SIZE-1;
+ if(char_len2>=STR_BUF_SIZE)
+ char_len2 = STR_BUF_SIZE-1;
+ strncpy(part1,out1,char_len1);
+ strncpy(part2,out2,char_len2);
+
+__CATCH:
+ if(uni_out!=NULL)
+ free(uni_out);
+ if(out1!=NULL)
+ free(out1);
+ if(out2!=NULL)
+ free(out2);
+}
+
+
+
+static void _handle_message_by_win(char *message, void *data)
+{
+ win_info* win = NULL;
+ char part1[256] = {0,};
+ char part2[256] = {0,};
+ char *text = NULL;
+ double time_clk = 0;
+ char* temp = NULL;
+ retif(message == NULL, , "Invalid parameter!");
+ retif(data == NULL, , "Invalid parameter!");
+
+ win = data;
+
+ if (msg_timer)
+ {
+ ecore_timer_del(msg_timer);
+ }
+ msg_type = 0;
+
+ SECURE_DBG("message %s", message);
+
+ temp = strdup(message);
+
+ util_char_replace(temp,'\n',' ');
+
+ text = evas_textblock_text_utf8_to_markup(NULL, temp);
+ if (!text)
+ {
+ if(temp)
+ free(temp);
+
+ return;
+ }
+ block_width = __get_block_width(win,"message.text");
+ util_part_text_emit_by_win(win,"message.text.compare", text);
+ string_width = __get_string_width(win,"message.text.compare");
+
+ if(block_width > string_width)
+ {
+ msg_type = 1;
+ }
+ else
+ {
+ msg_type = 2;
+ }
+
+ DBG("msg_type %d", msg_type);
+
+ _show_message(win);
+
+ if(msg_type == 1)
+ {
+ time_clk = 3;
+ util_part_text_emit_by_win(win,"message.text", text);
+ util_send_status_message_start(win,2.5);
+ }
+ else
+ {
+ time_clk = 2.5;
+ __handle_2line(win,text,part1,part2);
+ util_part_text_emit_by_win(win,"message.text", part1);
+ util_part_text_emit_by_win(win,"message.line2.text", part2);
+ util_send_status_message_start(win,5);
+ }
+
+ if(text!=NULL)
+ free(text);
+
+ msg_timer = ecore_timer_add(time_clk, (Ecore_Task_Cb)_msg_timeout_cb, (void*)win);
+
+ if(temp!=NULL)
+ free(temp);
+}
+
+
+
+static void __message_callback(const char *message, void *data)
+{
+ struct appdata *ad = NULL;
+ win_info* win = NULL;
+
+ if (!data)
+ return;
+
+ ad = data;
+
+ char buf[256] = {0,};
+ strncpy(buf,message,256-1);
+#ifdef _SUPPORT_SCREEN_READER2
+ indicator_service_tts_play(buf);
+#endif
+
+ if(message_buf!=NULL)
+ {
+ free(message_buf);
+ message_buf = NULL;
+ }
+
+ message_buf = strdup(message);
+ msg_retry = 0;
+
+ _hide_message_all(data);
+
+ win = &(ad->win);
+ _handle_message_by_win(message_buf,win);
+
+ if(retry_timer!=NULL)
+ {
+ ecore_timer_del(retry_timer);
+ }
+ retry_timer = ecore_timer_add(0.5, (Ecore_Task_Cb)_retry_timeout_cb, (void*)win);
+
+}
+
+
+
+static void _buf_timeout_callback(void* data)
+{
+
+ if(current_buf_index<QUEUE_SIZE)
+ if(msg_queue[current_buf_index].data!=NULL)
+ {
+ DBG("index %d,%s",current_buf_index,msg_queue[current_buf_index].data);
+ __message_callback(msg_queue[current_buf_index].data,data);
+ if(msg_queue[current_buf_index].data!=NULL)
+ {
+ free(msg_queue[current_buf_index].data);
+ msg_queue[current_buf_index].data = NULL;
+ }
+ if(current_buf_index+1<QUEUE_SIZE)
+ {
+ if(msg_queue[current_buf_index+1].data!=NULL)
+ {
+ if(queue_timer!=NULL)
+ {
+ ecore_timer_del(queue_timer);
+ queue_timer = NULL;
+ }
+ current_buf_index = current_buf_index+1;
+ queue_timer = ecore_timer_add(msg_queue[current_buf_index].timer_val, (Ecore_Task_Cb)_buf_timeout_callback, data);
+ return;
+ }
+ }
+ }
+
+ if(queue_timer!=NULL)
+ {
+ ecore_timer_del(queue_timer);
+ queue_timer = NULL;
+ }
+ current_buf_cnt = 0;
+ current_buf_index = 0;
+ DBG("quit buffering..");
+}
+
+
+
+static void __buffer_msg_callback(const char *message, void *data)
+{
+ struct appdata *ad = NULL;
+ retif(data == NULL, , "Invalid parameter!");
+ ad = data;
+
+ win_info *win = NULL;
+ double timer_val;
+
+ win = &(ad->win);
+
+ block_width = __get_block_width(win,"message.text");
+ util_part_text_emit_by_win(win,"message.text.compare", message);
+ string_width = __get_string_width(win,"message.text.compare");
+
+ if(block_width > string_width)
+ {
+ timer_val = QUEUE_TIMEOUT;
+ }
+ else
+ {
+ timer_val = QUEUE_TIMEOUT2;
+ }
+
+ if(queue_timer!=NULL)
+ {
+ if(current_buf_cnt>=QUEUE_SIZE)
+ {
+ ERR("QUEUE FULL");
+ return;
+ }
+ SECURE_DBG("buffering... %d,%s",current_buf_cnt,message);
+ if(msg_queue[current_buf_cnt].data!=NULL)
+ {
+ free(msg_queue[current_buf_cnt].data);
+ msg_queue[current_buf_cnt].data = NULL;
+ }
+ msg_queue[current_buf_cnt].data = strdup(message);
+ msg_queue[current_buf_cnt].index = current_buf_cnt;
+ msg_queue[current_buf_cnt].timer_val = timer_val;
+ current_buf_cnt++;
+ return;
+ }
+
+ queue_timer = ecore_timer_add(timer_val, (Ecore_Task_Cb)_buf_timeout_callback, data);
+ __message_callback(message,data);
+}
+
+
+
+int indicator_message_disp_check(void)
+{
+ if (msg_timer != NULL)
+ return 1;
+ else
+ return 0;
+}
+
+
+
+int message_ani_playing_check(void)
+{
+ if(ani_temp_timer != NULL)
+ return 1;
+ else
+ return 0;
+}
+
+
+
+int indicator_message_retry_check(void)
+{
+ if(retry_timer!=NULL)
+ return 1;
+ else
+ return 0;
+}
+
+
+
+void indicator_message_display_trigger(void)
+{
+ win_info* win = NULL;
+
+ if(msg_retry==1)
+ {
+ return;
+ }
+
+ DBG("retry message");
+
+ msg_retry = 1;
+
+ win = &(app_data->win);
+ _handle_message_by_win(message_buf,win);
+
+}
+
+
+
+int indicator_message_init(void *data)
+{
+ int ret = 0;
+ int i =0;
+ for(i=0;i<QUEUE_SIZE;i++)
+ {
+ memset(&msg_queue[i],0x00,sizeof(MsgBuf));
+ }
+ ret = notification_status_monitor_message_cb_set(__buffer_msg_callback, data);
+ app_data = data;
+
+
+ return ret;
+}
+
+
+
+int indicator_message_fini(void)
+{
+ int ret = 0;
+
+ ret = notification_status_monitor_message_cb_unset();
+
+ return ret;
+}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_MESSAGE_H_DEF__
+#define __INDICATOR_MESSAGE_H_DEF__
+
+int indicator_message_init(void *data);
+int indicator_message_fini(void);
+int indicator_message_disp_check(void);
+int indicator_message_retry_check(void);
+void indicator_message_display_trigger(void);
+int message_ani_playing_check(void);
+
+
+#endif /* __INDICATOR_MESSAGE_H_DEF__ */
--- /dev/null
+/*
+ * 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 <Elementary.h>
+//#include <Ecore_X.h>
+//#include <utilX.h>
+#include <unicode/uloc.h>
+#include <unicode/udat.h>
+#include <unicode/udatpg.h>
+#include <unicode/ustring.h>
+#include <runtime_info.h>
+#include <system_settings.h>
+#include <efl_util.h>
+
+#include "log.h"
+#include "indicator.h"
+#include "common.h"
+#include "main.h"
+#include "noti_win.h"
+
+/* Using this macro to emphasize that some portion like stacking and
+rotation handling are implemented for X based platform */
+#ifndef __UNUSED__
+#define __UNUSED__ __attribute__((unused))
+#endif
+
+struct Internal_Data {
+ Evas_Object *content;
+ Ecore_Event_Handler *rotation_event_handler;
+ Evas_Coord w;
+ Evas_Coord h;
+ int angle;
+};
+
+#define PRIVATE_DATA_KEY_DATA "pdk_data"
+
+static void _content_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ Evas_Coord h;
+ struct Internal_Data *wd = evas_object_data_get(data, PRIVATE_DATA_KEY_DATA);
+
+ ret_if(!wd);
+
+ evas_object_size_hint_min_get(obj, NULL, &h);
+ if ((h > 0)) {
+ wd->h = h;
+ evas_object_size_hint_min_set(obj, wd->w, wd->h);
+ evas_object_size_hint_min_set(data, wd->w, wd->h);
+ }
+}
+
+static void _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
+{
+ struct Internal_Data *wd = evas_object_data_get(obj, PRIVATE_DATA_KEY_DATA);
+ Evas_Object *sub = event_info;
+
+ ret_if(!wd);
+
+ if (sub == wd->content) {
+ evas_object_event_callback_del(wd->content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints);
+ wd->content = NULL;
+ }
+}
+
+static void _noti_win_destroy(void *data __UNUSED__, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ Evas_Object *win = NULL;
+ struct Internal_Data *wd = NULL;
+
+ ret_if(!obj);
+
+ win = obj;
+
+ wd = evas_object_data_del(win, PRIVATE_DATA_KEY_DATA);
+ ret_if(!wd);
+
+ if (wd->rotation_event_handler) {
+ ecore_event_handler_del(wd->rotation_event_handler);
+ }
+ free(wd);
+#if 0
+ quickpanel_dbus_ticker_visibility_send(0);
+#endif
+}
+
+static void _rotate_cb(void *data, Evas_Object *obj, void *event)
+{
+ struct appdata *ad = data;
+ struct Internal_Data *wd = NULL;
+ Evas_Object *base = NULL;
+ int angle = 0;
+
+ ret_if(!obj);
+
+ wd = evas_object_data_get(obj, PRIVATE_DATA_KEY_DATA);
+ ret_if(!wd);
+
+ base = evas_object_data_get(obj, DATA_KEY_BASE_RECT);
+ ret_if(!base);
+
+ angle = elm_win_rotation_get(obj);
+ angle %= 360;
+ if (angle < 0) {
+ angle += 360;
+ }
+ _D("Ticker angle is %d degree", angle);
+
+ switch (angle) {
+ case 0:
+ case 180:
+ evas_object_resize(base, ad->win.port_w, wd->h);
+ evas_object_size_hint_min_set(base, ad->win.port_w, wd->h);
+ evas_object_resize(obj, ad->win.port_w, wd->h);
+ evas_object_move(obj, 0, 0);
+ break;
+ case 90:
+ evas_object_resize(base, ad->win.land_w, wd->h);
+ evas_object_size_hint_min_set(base, ad->win.land_w, wd->h);
+ evas_object_resize(obj, ad->win.land_w, wd->h);
+ evas_object_move(obj, 0, 0);
+ break;
+ case 270:
+ evas_object_resize(base, ad->win.land_w, wd->h);
+ evas_object_size_hint_min_set(base, ad->win.land_w, wd->h);
+ evas_object_resize(obj, ad->win.land_w, wd->h);
+ evas_object_move(obj, ad->win.port_w - wd->h, 0);
+ break;
+ default:
+ _E("cannot reach here");
+ }
+
+ wd->angle = angle;
+}
+
+Evas_Object *noti_win_add(Evas_Object *parent, struct appdata *ad)
+{
+ Evas_Object *win = NULL;
+ struct Internal_Data *wd = NULL;
+
+ _D("A window is created for ticker notifications");
+ win = elm_win_add (NULL, "noti_win", ELM_WIN_NOTIFICATION);
+ retv_if(!win, NULL);
+
+ elm_win_alpha_set(win, EINA_FALSE);
+ elm_win_title_set(win, "noti_win");
+ elm_win_borderless_set(win, EINA_TRUE);
+ elm_win_autodel_set(win, EINA_TRUE);
+ //efl_util_set_notification_window_level(win, EFL_UTIL_NOTIFICATION_LEVEL_HIGH);
+ elm_win_prop_focus_skip_set(win, EINA_TRUE);
+ /* you can use evas_object_resize() and evas_object_move() by using elm_win_aux_hint_add().
+ elm_win_aux_hint_add() makes it possible to set the size and location of the notification window freely.
+ if you do not use elm_win_aux_hint_add(), notification window is displayed full screen. */
+// elm_win_aux_hint_add(win, "wm.policy.win.user.geometry", "1");
+ evas_object_resize(win, ad->win.w, ad->win.h);
+ evas_object_move(win, 0, 0);
+ evas_object_show(win);
+
+ if (elm_win_wm_rotation_supported_get(win)) {
+ int rots[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(win, rots, 4);
+ }
+ evas_object_smart_callback_add(win, "wm,rotation,changed", _rotate_cb, ad);
+
+ wd = (struct Internal_Data *) calloc(1, sizeof(struct Internal_Data));
+ if (!wd) {
+ if (win) evas_object_del(win);
+ return NULL;
+ }
+ evas_object_data_set(win, PRIVATE_DATA_KEY_DATA, wd);
+
+ wd->angle = 0;
+ wd->w = ad->win.w;
+ wd->h = ad->win.h;
+
+ evas_object_smart_callback_add(win, "sub-object-del", _sub_del, NULL);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _noti_win_destroy, NULL);
+
+ return win;
+}
+
+void noti_win_content_set(Evas_Object *obj, Evas_Object *content)
+{
+ struct Internal_Data *wd;
+
+ ret_if (!obj);
+
+ wd = evas_object_data_get(obj, PRIVATE_DATA_KEY_DATA);
+ ret_if (!wd);
+
+ if (wd->content && content != NULL) {
+ evas_object_del(content);
+ content = NULL;
+ }
+
+ wd->content = content;
+ if (content) {
+ evas_object_show(wd->content);
+ evas_object_event_callback_add(wd->content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _content_changed_size_hints, obj);
+ }
+}
+/*End of file */
--- /dev/null
+/*
+ * 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 __NOTI_WIN_H__
+#define __NOTI_WIN_H__
+
+#include <Evas.h>
+
+typedef enum _indicator_animated_icon_type {
+ INDICATOR_ANIMATED_ICON_NONE = -1,
+ INDICATOR_ANIMATED_ICON_DOWNLOAD = 1,
+ INDICATOR_ANIMATED_ICON_UPLOAD,
+ INDICATOR_ANIMATED_ICON_INSTALL,
+} indicator_animated_icon_type;
+
+typedef struct _QP_Module {
+ char *name;
+ /* func */
+ int (*init) (void *);
+ void (*init_job_cb) (void *);
+ int (*fini) (void *);
+ int (*suspend) (void *);
+ int (*resume) (void *);
+ int (*hib_enter) (void *);
+ int (*hib_leave) (void *);
+ void (*lang_changed) (void *);
+ void (*refresh) (void *);
+ unsigned int (*get_height) (void *);
+ void (*qp_opened) (void *);
+ void (*qp_closed) (void *);
+ void (*mw_enabled) (void *);
+ void (*mw_disabled) (void *);
+
+ /* do not modify this area */
+ /* internal data */
+ Eina_Bool state;
+} QP_Module;
+
+extern Evas_Object *noti_win_add(Evas_Object *parent, struct appdata *ad);
+extern void noti_win_content_set(Evas_Object *obj, Evas_Object *content);
+
+#endif
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 "main.h"
+#include "common.h"
+#include "util.h"
+#include "icon.h"
+#include "box.h"
+#include "log.h"
+
+
+#define MSG_TIMEOUT 3.0
+
+int plmn_disp_type = 0;
+
+
+
+static void disp_handle(void *data,int status)
+{
+ struct appdata *ad = NULL;
+
+ ret_if(!data);
+
+ ad = (struct appdata *)data;
+
+ if(status == 1)
+ {
+ if(util_dynamic_state_get()==1)
+ {
+ util_signal_emit(ad,"indicator.plmn2.show","indicator.prog");
+ util_signal_emit(ad,"indicator.plmn.hide","indicator.prog");
+ }
+ else
+ {
+ util_signal_emit(ad,"indicator.plmn.show","indicator.prog");
+ util_signal_emit(ad,"indicator.plmn2.hide","indicator.prog");
+ }
+
+ if(plmn_disp_type==1)
+ {
+ return;
+ }
+ plmn_disp_type = 1;
+
+ box_update_display(&(ad->win));
+
+ }
+ else
+ {
+ if(plmn_disp_type==0)
+ {
+ return;
+ }
+ plmn_disp_type = 0;
+ if(util_dynamic_state_get()==1)
+ util_signal_emit(ad,"indicator.plmn2.hide","indicator.prog");
+ else
+ util_signal_emit(ad,"indicator.plmn.hide","indicator.prog");
+ box_update_display(&(ad->win));
+
+ }
+}
+
+
+
+static void disp_plmn(const char *plmn, void *data)
+{
+ if(!util_is_orf())
+ {
+ disp_handle(data,0);
+ return;
+ }
+
+ int disp = 0;
+ int plmn_val = 0;
+
+ retif(plmn == NULL, , "invalid plmn!");
+ retif(data == NULL, , "invalid plmn!");
+
+ vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION, &disp);
+
+ if(disp == VCONFKEY_TELEPHONY_DISP_INVALID || disp == VCONFKEY_TELEPHONY_DISP_SPN)
+ {
+ disp_handle(data,0);
+ return;
+ }
+
+ vconf_get_int(VCONFKEY_TELEPHONY_PLMN,&plmn_val);
+
+ if(plmn_val!=20801 && plmn_val!=20802)
+ {
+ disp_handle(data,0);
+ return;
+ }
+
+ if(strcmp(plmn,"OrangeF")!=0)
+ {
+ return;
+ }
+
+ disp_handle(data,1);
+}
+
+
+
+void indicator_plmn_display(void *data)
+{
+ char* text = NULL;
+ text = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
+ if(text!=NULL)
+ {
+ }
+
+ disp_plmn(text,data);
+}
+
+
+
+static void indicator_plmn_nwname_cb(keynode_t *node, void *data)
+{
+ char* text = NULL;
+ text = vconf_get_str(VCONFKEY_TELEPHONY_NWNAME);
+ if(text!=NULL)
+ {
+ SECURE_DBG("indicator_plmn_nwname_cb %s",text);
+ }
+
+ disp_plmn(text,data);
+}
+
+
+
+static void indicator_plmn_disp_cond_cb(keynode_t *node, void *data)
+{
+ int ret = 0;
+ int status = 0;
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,&status);
+ if(ret == -1)
+ {
+ return;
+ }
+
+ SECURE_DBG("indicator_plmn_disp_cond_cb %d",status);
+
+ indicator_plmn_display(data);
+}
+
+
+
+static void indicator_plmn_cb(keynode_t *node, void *data)
+{
+ int ret = 0;
+ int status = 0;
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_PLMN,&status);
+ if(ret == -1)
+ {
+ return;
+ }
+
+ SECURE_DBG("indicator_plmn_cb %d",status);
+
+ indicator_plmn_display(data);
+}
+
+
+
+int indicator_plmn_init(void *data)
+{
+ int r = 0, ret = -1;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+ indicator_plmn_nwname_cb, data);
+ if (ret != OK) {
+ r = ret;
+ }
+
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_PLMN,
+ indicator_plmn_cb, data);
+ if (ret != OK) {
+ r = ret;
+ }
+
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+ indicator_plmn_disp_cond_cb, data);
+ if (ret != OK) {
+ r = r | ret;
+ }
+
+ indicator_plmn_display(data);
+
+ return ret;
+}
+
+
+
+int indicator_plmn_fini(void)
+{
+ int ret;
+
+ ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_NWNAME,
+ indicator_plmn_nwname_cb);
+
+ ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_PLMN,
+ indicator_plmn_cb);
+
+ ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SPN_DISP_CONDITION,
+ indicator_plmn_disp_cond_cb);
+
+ return ret;
+}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_PLMN_H_DEF__
+#define __INDICATOR_PLMN_H_DEF__
+
+int indicator_plmn_init(void *data);
+
+int indicator_plmn_fini(void);
+void indicator_plmn_display(void *data);
+
+#endif /* __INDICATOR_PLMN_H_DEF__ */
--- /dev/null
+/*
+ * 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 <Elementary.h>
+//#include <Ecore_X.h>
+#include <appcore-common.h>
+#include <vconf.h>
+#include <app_control.h>
+//#include <notification_internal.h>
+#include <feedback.h>
+#include <system_settings.h>
+#include <player.h>
+#include <sound_manager.h>
+#include <metadata_extractor.h>
+#include <notification.h>
+//#include <notification_text_domain.h>
+#include <pkgmgr-info.h>
+
+#include "common.h"
+#include "main.h"
+#include "noti_win.h"
+#include "util.h"
+#include "log.h"
+#include "indicator.h"
+#include "ticker.h"
+
+#define _SPACE ' '
+#define TICKERNOTI_DURATION 3
+#define QP_TICKER_DETAIL_DURATION 6
+#define QP_PLAY_DURATION_LIMIT 15
+#define TICKER_MSG_LEN 1024
+#define TICKER_PHONE_NUMBER_MAX_LEN 40
+
+#define DEFAULT_ICON ICONDIR "/quickpanel_icon_default.png"
+
+#define FORMAT_1LINE "<font_size=29><color=#F4F4F4FF>%s</color></font_size>"
+#define FORMAT_2LINE "<font_size=26><color=#BABABAFF>%s</color></font_size><br/><font_size=29><color=#F4F4F4FF>%s</color></font_size>"
+
+#define PRIVATE_DATA_KEY_APPDATA "pdka"
+#define PRIVATE_DATA_KEY_DETAIL "pdkd"
+#define PRIVATE_DATA_KEY_TICKERNOTI_EXECUTED "pdkte"
+#define PRIVATE_DATA_KEY_ANI_ICON_TYPE "pdkait"
+#define PRIVATE_DATA_KEY_ICON "pdki"
+#define PRIVATE_DATA_KEY_BOX "pdkb"
+#define PRIVATE_DATA_KEY_TICKER_INFO "pdkti"
+#define PRIVATE_DATA_KEY_NOTI "pdkn"
+
+#define PATH_DOWNLOAD "reserved://quickpanel/ani/downloading"
+#define PATH_UPLOAD "reserved://quickpanel/ani/uploading"
+#define PATH_INSTALL "reserved://quickpanel/ani/install"
+
+static void _create_tickernoti(notification_h noti, struct appdata *ad, ticker_info_s *ticker_info);
+static void _destroy_tickernoti(ticker_info_s *ticker_info);
+
+static inline int _is_text_exist(const char *text)
+{
+ if (text != NULL) {
+ if (strlen(text) > 0) {
+ if (strcmp(text, "") != 0) {
+ return 1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int _is_security_lockscreen_launched(void)
+{
+ int ret = 0;
+ int is_lock_launched = 0;
+
+ if ((ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &is_lock_launched)) == 0) {
+ if (is_lock_launched == VCONFKEY_IDLE_LOCK && (ret = vconf_get_int(VCONFKEY_SETAPPL_SCREEN_LOCK_TYPE_INT, &is_lock_launched)) == 0) {
+ /* if (is_lock_launched != SETTING_SCREEN_LOCK_TYPE_NONE && is_lock_launched != SETTING_SCREEN_LOCK_TYPE_SWIPE) {
+ return 1;
+ }*/
+ }
+ }
+
+ return 0;
+}
+
+static int _check_is_noti_from_email(char *pkgname)
+{
+ retv_if(!pkgname, 0);
+
+ if (strcmp(pkgname, VENDOR".email") == 0 || strcmp(pkgname, "/usr/bin/eas-engine") == 0) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+static int _check_is_noti_from_message(char *pkgname)
+{
+ retv_if(!pkgname, 0);
+
+ if (strcmp(pkgname, VENDOR".message") == 0 || strcmp(pkgname, "/usr/bin/msg-server") == 0) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+static int _check_is_noti_from_im(char *pkgname)
+{
+ retv_if(!pkgname, 0);
+
+ if (strcmp(pkgname, "xnq5eh9vop.ChatON") == 0) {
+ return 1;
+ } else {
+ return 0;
+ }
+}
+
+static notification_h _get_instant_latest_message_from_list(ticker_info_s *ticker_info)
+{
+ int count = 0;
+ notification_h noti = NULL;
+
+ count = eina_list_count(ticker_info->ticker_list);
+ if (count > 1) {
+ noti = eina_list_nth(ticker_info->ticker_list, count-1);
+ }
+ eina_list_free(ticker_info->ticker_list);
+ ticker_info->ticker_list = NULL;
+
+ return noti;
+}
+
+static int _ticker_check_ticker_off(notification_h noti)
+{
+ char *pkgname = NULL;
+
+ notification_get_pkgname(noti, &pkgname);
+
+ if (pkgname == NULL) return 1; /* Ticker is not displaying. */
+
+ return 0;
+}
+
+static int _ticker_check_displaying_contents_off(notification_h noti)
+{
+ char *pkgname = NULL;
+ int ret = 0;
+ int boolval = 0;
+
+ notification_get_pkgname(noti, &pkgname);
+
+ if (pkgname == NULL) return 0; /* Ticker is not displaying. */
+
+ /* FIXME : we have to confirm architecture for communiating with message or email */
+ if (_check_is_noti_from_message(pkgname) == 1) {
+ ret = vconf_get_bool(VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_MESSASGES, &boolval);
+ if (ret == 0 && boolval == 0) return 1;
+
+ } else if (_check_is_noti_from_email(pkgname) == 1) {
+ ret = vconf_get_bool(VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_EMAIL, &boolval);
+ if (ret == 0 && boolval == 0) return 1;
+
+ } else if (_check_is_noti_from_im(pkgname) == 1) {
+ ret = vconf_get_bool(VCONFKEY_TICKER_NOTI_DISPLAY_CONTENT_IM, &boolval);
+ if (ret == 0 && boolval == 0) return 1;
+
+ }
+
+ return 0;
+}
+
+static inline void __ticker_only_noti_del(notification_h noti)
+{
+ int applist = NOTIFICATION_DISPLAY_APP_ALL;
+
+ ret_if(!noti);
+
+ notification_get_display_applist(noti, &applist);
+ if ((applist & NOTIFICATION_DISPLAY_APP_TICKER) || (applist & NOTIFICATION_DISPLAY_APP_INDICATOR)) {
+ char *pkgname = NULL;
+ int priv_id = 0;
+
+ notification_get_pkgname(noti, &pkgname);
+ notification_get_id(noti, NULL, &priv_id);
+ notification_delete_by_priv_id(pkgname, NOTIFICATION_TYPE_NONE, priv_id);
+ }
+}
+
+static Eina_Bool _timeout_cb(void *data)
+{
+ ticker_info_s *ticker_info = NULL;
+ int h_page = 0;
+ int v_page = 0;
+ int h_last_page = 0;
+ int v_last_page = 0;
+
+ retv_if(!data, EINA_FALSE);
+
+ _D("message is timeout");
+
+ ticker_info = data;
+
+ /* If count is 1, self*/
+ if (ticker_info->ticker_list && eina_list_count(ticker_info->ticker_list) > 1) {
+ if (ticker_info->timer) {
+ ecore_timer_del(ticker_info->timer);
+ ticker_info->timer = NULL;
+ }
+ _destroy_tickernoti(ticker_info);
+
+ return ECORE_CALLBACK_CANCEL;
+ }
+
+ elm_scroller_last_page_get(ticker_info->scroller, &h_last_page, &v_last_page);
+ elm_scroller_current_page_get(ticker_info->scroller, &h_page, &v_page);
+
+ if (v_last_page > v_page) {
+ elm_scroller_page_bring_in(ticker_info->scroller, h_page, v_page + 1);
+
+ return ECORE_CALLBACK_RENEW;
+ }
+
+ if (ticker_info->timer) {
+ ecore_timer_del(ticker_info->timer);
+ ticker_info->timer = NULL;
+ }
+ _destroy_tickernoti(ticker_info);
+
+ return ECORE_CALLBACK_CANCEL;
+}
+
+static indicator_animated_icon_type _animated_type_get(const char *path)
+{
+ retv_if(path == NULL, INDICATOR_ANIMATED_ICON_NONE);
+
+ if (strncasecmp(path, PATH_DOWNLOAD, MIN(strlen(PATH_DOWNLOAD), strlen(path))) == 0) {
+ return INDICATOR_ANIMATED_ICON_DOWNLOAD;
+ } else if (strncasecmp(path, PATH_UPLOAD, MIN(strlen(PATH_UPLOAD), strlen(path))) == 0) {
+ return INDICATOR_ANIMATED_ICON_UPLOAD;
+ } else if (strncasecmp(path, PATH_INSTALL, MIN(strlen(PATH_INSTALL), strlen(path))) == 0) {
+ return INDICATOR_ANIMATED_ICON_INSTALL;
+ }
+
+ return INDICATOR_ANIMATED_ICON_NONE;
+}
+
+#define DEFAULT_EDJ EDJDIR"/ticker_default.edj"
+/* FIXME : evas_object_del(icon), we have to unset PRIVATE_DATA_KEY_ANI_ICON_TYPE) */
+static Evas_Object *_animated_icon_get(Evas_Object *parent, const char *path)
+{
+ indicator_animated_icon_type type = INDICATOR_ANIMATED_ICON_NONE;
+
+ const char *layout_icon = NULL;
+ Evas_Object *layout = NULL;
+
+ retv_if(!parent, NULL);
+ retv_if(!path, NULL);
+
+ type = _animated_type_get(path);
+
+ if (type == INDICATOR_ANIMATED_ICON_DOWNLOAD) {
+ layout_icon = "quickpanel/animated_icon_download";
+ } else if (type == INDICATOR_ANIMATED_ICON_UPLOAD) {
+ layout_icon = "quickpanel/animated_icon_upload";
+ } else if (type == INDICATOR_ANIMATED_ICON_INSTALL) {
+ layout_icon = "quickpanel/animated_icon_install";
+ } else {
+ return NULL;
+ }
+
+ layout = elm_layout_add(parent);
+ if (layout != NULL) {
+ elm_layout_file_set(layout, DEFAULT_EDJ, layout_icon);
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_data_set(layout, PRIVATE_DATA_KEY_ANI_ICON_TYPE, (void *)type);
+ evas_object_show(layout);
+ }
+
+ return layout;
+}
+
+static char *_get_pkginfo_icon(const char *pkgid)
+{
+ int ret = 0;
+ char *icon_path = NULL;
+ char *icon_ret = NULL;
+ retif(pkgid == NULL, NULL, "invalid parameter");
+
+ pkgmgrinfo_appinfo_h appinfo_h = NULL;
+
+ ret = pkgmgrinfo_appinfo_get_appinfo(pkgid, &appinfo_h);
+ if (ret < 0) {
+ _E("pkgmgrinfo_appinfo_get_appinfo is failed %d", ret);
+ return NULL;
+ }
+
+ ret = pkgmgrinfo_appinfo_get_icon(appinfo_h, &icon_path);
+ if (ret < 0) {
+ _E("pkgmgrinfo_appinfo_get_icon is failed %d", ret);
+ }
+ if (icon_path) {
+ icon_ret = (char*)strdup(icon_path);
+ }
+ if (appinfo_h) {
+ pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h);
+ }
+
+ return icon_ret;
+}
+
+static Evas_Object *_ticker_create_icon(Evas_Object *parent, notification_h noti)
+{
+ char *pkgname = NULL;
+ char *icon_path = NULL;
+ char *icon_default = NULL;
+ Evas_Object *icon = NULL;
+
+ retif(noti == NULL || parent == NULL, NULL, "Invalid parameter!");
+
+ notification_get_pkgname(noti, &pkgname);
+ if (NOTIFICATION_ERROR_NONE != notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path)) {
+ _E("Cannot get image path");
+ return NULL;
+ }
+ if (icon_path) {
+ icon = _animated_icon_get(parent, icon_path);
+ if (icon == NULL) {
+ icon = elm_image_add(parent);
+ if (icon_path == NULL
+ || (elm_image_file_set(icon, icon_path, NULL) == EINA_FALSE)) {
+ icon_default = _get_pkginfo_icon(pkgname);
+ if (icon_default != NULL) {
+ elm_image_file_set(icon, icon_default, NULL);
+ elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+ free(icon_default);
+ } else {
+ elm_image_file_set(icon, DEFAULT_ICON, NULL);
+ elm_image_resizable_set(icon, EINA_TRUE, EINA_TRUE);
+ }
+ }
+ }
+ }
+
+ return icon;
+}
+
+static inline char *_get_text(notification_h noti, notification_text_type_e text_type)
+{
+ char *text = NULL;
+
+ notification_get_text(noti, text_type, &text);
+ if (text) {
+ return elm_entry_utf8_to_markup(text);
+ }
+
+ return NULL;
+}
+
+static inline void _strbuf_add(Eina_Strbuf *str_buf, char *text, const char *delimiter)
+{
+ if (text != NULL) {
+ if (strlen(text) > 0) {
+ if (delimiter != NULL) {
+ eina_strbuf_append(str_buf, delimiter);
+ }
+ eina_strbuf_append(str_buf, text);
+ }
+ }
+}
+
+static int _is_phone_number(const char *address)
+{
+ int digit_count = 0;
+ retif(address == NULL, 0, "address is NULL");
+
+ int addr_len = 0;
+ addr_len = strlen(address);
+
+ if (addr_len == 0) {
+ return 0;
+ }
+
+ /* length check phone address should be longer than 2 and shorter than 40 */
+ if (addr_len > 2 && addr_len <= TICKER_PHONE_NUMBER_MAX_LEN) {
+ const char *pszOneChar = address;
+
+ while (*pszOneChar) {
+ if (isdigit(*pszOneChar)) {
+ digit_count++;
+ }
+
+ ++pszOneChar;
+ }
+
+ pszOneChar = address;
+
+ if (*pszOneChar == '+') {
+ ++pszOneChar;
+ }
+
+ while (*pszOneChar) {
+ if (!isdigit(*pszOneChar)
+ && (*pszOneChar != '*') && (*pszOneChar != '#')
+ && (*pszOneChar != ' ')
+ && !((*pszOneChar == '-') && digit_count >= 7)) {
+ return 0;
+ }
+
+ ++pszOneChar;
+ }
+
+ return 1;
+ } else {
+ DBG("invalid address length [%d]", addr_len);
+ return 0;
+ }
+}
+
+static void _char_set(char *dst, char s, int index, int size)
+{
+ if (index < size) {
+ *(dst + index) = s;
+ }
+}
+
+static void _make_phone_number_tts(char *dst, const char *src, int size)
+{
+ retif(dst == NULL, , "invalid argument");
+ retif(src == NULL, , "invalid argument");
+
+ int no_op = 0;
+ int i = 0, j = 0, text_len = 0;
+
+ text_len = strlen(src);
+
+ for (i = 0, j= 0; i < text_len; i++) {
+ if (no_op == 1) {
+ _char_set(dst, *(src + i), j++, size);
+ } else {
+ if (isdigit(*(src + i))) {
+ if (i + 1 < text_len) {
+ if (*(src + i + 1) == '-' || *(src + i + 1) == _SPACE) {
+ _char_set(dst, *(src + i), j++, size);
+ } else {
+ _char_set(dst, *(src + i), j++, size);
+ _char_set(dst, _SPACE, j++, size);
+ }
+ } else {
+ _char_set(dst, *(src + i), j++, size);
+ _char_set(dst, _SPACE, j++, size);
+ }
+ } else if (*(src + i) == '-') {
+ no_op = 1;
+ _char_set(dst, *(src + i), j++, size);
+ } else {
+ _char_set(dst, *(src + i), j++, size);
+ }
+ }
+ }
+}
+
+static inline void _check_and_add_to_buffer(Eina_Strbuf *str_buf, char *text, int is_check_phonenumber)
+{
+ char buf_number[TICKER_PHONE_NUMBER_MAX_LEN * 2] = { 0, };
+
+ if (text != NULL) {
+ if (strlen(text) > 0) {
+ if (_is_phone_number(text) && is_check_phonenumber) {
+ _make_phone_number_tts(buf_number, text,
+ (TICKER_PHONE_NUMBER_MAX_LEN * 2) - 1);
+ eina_strbuf_append(str_buf, buf_number);
+ } else {
+ eina_strbuf_append(str_buf, text);
+ }
+ eina_strbuf_append_char(str_buf, '\n');
+ }
+ }
+}
+
+static char *_ticker_get_label_layout_default(notification_h noti, int is_screenreader, char **str_line1, char **str_line2)
+{
+ int len = 0;
+ int num_line = 0;
+ char *domain = NULL;
+ char *dir = NULL;
+ char *title_utf8 = NULL;
+ char *content_utf8 = NULL;
+ char *info1_utf8 = NULL;
+ char *info1_sub_utf8 = NULL;
+ char *info2_utf8 = NULL;
+ char *info2_sub_utf8 = NULL;
+ char *event_count_utf8 = NULL;
+ const char *tmp = NULL;
+ Eina_Strbuf *line1 = NULL;
+ Eina_Strbuf *line2 = NULL;
+ char buf[TICKER_MSG_LEN] = { 0, };
+
+ retif(noti == NULL, NULL, "Invalid parameter!");
+
+ notification_get_text_domain(noti, &domain, &dir);
+ if (domain != NULL && dir != NULL) {
+ bindtextdomain(domain, dir);
+ }
+
+ title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+ if (_ticker_check_displaying_contents_off(noti) == 1) {
+ content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF);
+ } else {
+ content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+ }
+ info1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+ info1_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1);
+ info2_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_2);
+ info2_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2);
+
+ if (is_screenreader == 0) {
+ line1 = eina_strbuf_new();
+ line2 = eina_strbuf_new();
+
+ if (line1 != NULL && line2 != NULL) {
+ if (_is_text_exist(title_utf8) && (_is_text_exist(content_utf8)
+ || _is_text_exist(event_count_utf8))) {
+ _strbuf_add(line1, title_utf8, NULL);
+ _strbuf_add(line2, content_utf8, NULL);
+ if (_is_text_exist(content_utf8)) {
+ _strbuf_add(line2, event_count_utf8, " ");
+ } else {
+ _strbuf_add(line2, event_count_utf8, "");
+ }
+ num_line = 2;
+ } else if (_is_text_exist(info1_utf8) && (_is_text_exist(content_utf8)
+ || _is_text_exist(event_count_utf8))) {
+ _strbuf_add(line1, content_utf8, NULL);
+ _strbuf_add(line1, event_count_utf8, " ");
+ _strbuf_add(line2, info1_utf8, NULL);
+ _strbuf_add(line2, info1_sub_utf8, " ");
+ num_line = 2;
+ } else if (_is_text_exist(info1_utf8) && _is_text_exist(info2_utf8)) {
+ _strbuf_add(line1, info1_utf8, NULL);
+ _strbuf_add(line1, info1_sub_utf8, " ");
+ _strbuf_add(line2, info2_utf8, NULL);
+ _strbuf_add(line2, info2_sub_utf8, " ");
+ num_line = 2;
+ } else if (_is_text_exist(title_utf8)) {
+ _strbuf_add(line1, title_utf8, NULL);
+ num_line = 1;
+ } else if (_is_text_exist(content_utf8)) {
+ _strbuf_add(line1, content_utf8, NULL);
+ num_line = 1;
+ }
+
+ if (num_line == 2) {
+ tmp = eina_strbuf_string_get(line1);
+ if (str_line1 != NULL && tmp != NULL) {
+ *str_line1 = strdup(tmp);
+ }
+
+ tmp = eina_strbuf_string_get(line2);
+ if (str_line2 != NULL && tmp != NULL) {
+ *str_line2 = strdup(tmp);
+ }
+ } else {
+ tmp = eina_strbuf_string_get(line1);
+ if (str_line1 != NULL && tmp != NULL) {
+ *str_line1 = strdup(tmp);
+ }
+ }
+
+ eina_strbuf_free(line1);
+ eina_strbuf_free(line2);
+ } else {
+ _E("failed to allocate string buffer");
+ }
+ } else {
+ if (title_utf8 == NULL
+ && event_count_utf8 == NULL
+ && content_utf8 == NULL
+ && info1_utf8 == NULL
+ && info1_sub_utf8 == NULL
+ && info2_utf8 == NULL
+ && info2_sub_utf8 == NULL) {
+ len = 0;
+ } else {
+ Eina_Strbuf *strbuf = eina_strbuf_new();
+ if (strbuf != NULL) {
+ eina_strbuf_append(strbuf, _("IDS_QP_BUTTON_NOTIFICATION"));
+ eina_strbuf_append_char(strbuf, '\n');
+ _check_and_add_to_buffer(strbuf, title_utf8, 1);
+ _check_and_add_to_buffer(strbuf, event_count_utf8, 0);
+ _check_and_add_to_buffer(strbuf, content_utf8, 1);
+ _check_and_add_to_buffer(strbuf, info1_utf8, 1);
+ _check_and_add_to_buffer(strbuf, info1_sub_utf8, 1);
+ _check_and_add_to_buffer(strbuf, info2_utf8, 1);
+ _check_and_add_to_buffer(strbuf, info2_sub_utf8, 1);
+
+ if (eina_strbuf_length_get(strbuf) > 0) {
+ len = snprintf(buf, sizeof(buf) - 1, "%s", eina_strbuf_string_get(strbuf));
+ }
+ eina_strbuf_free(strbuf);
+ }
+ }
+ }
+
+ if (title_utf8) {
+ free(title_utf8);
+ }
+
+ if (content_utf8) {
+ free(content_utf8);
+ }
+
+// if (event_count_utf8) {
+// free(event_count_utf8);
+// }
+
+ if (info1_utf8) {
+ free(info1_utf8);
+ }
+ if (info1_sub_utf8) {
+ free(info1_sub_utf8);
+ }
+ if (info2_utf8) {
+ free(info2_utf8);
+ }
+ if (info2_sub_utf8) {
+ free(info2_sub_utf8);
+ }
+ if (len > 0) {
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static char *_ticker_get_label_layout_single(notification_h noti, int is_screenreader, char **str_line1, char **str_line2)
+{
+ int num_line = 0;
+ int len = 0;
+ char *domain = NULL;
+ char *dir = NULL;
+ char *title_utf8 = NULL;
+ char *content_utf8 = NULL;
+ char *info1_utf8 = NULL;
+ char *info1_sub_utf8 = NULL;
+ char *info2_utf8 = NULL;
+ char *info2_sub_utf8 = NULL;
+ Eina_Strbuf *line1 = NULL;
+ Eina_Strbuf *line2 = NULL;
+ const char *tmp = NULL;
+ char buf[TICKER_MSG_LEN] = { 0, };
+
+ retif(noti == NULL, NULL, "Invalid parameter!");
+
+ notification_get_text_domain(noti, &domain, &dir);
+ if (domain != NULL && dir != NULL)
+ bindtextdomain(domain, dir);
+
+ title_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_TITLE);
+ if (_ticker_check_displaying_contents_off(noti) == 1) {
+ content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT_FOR_DISPLAY_OPTION_IS_OFF);
+ } else {
+ content_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_CONTENT);
+ }
+ info1_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_1);
+ info1_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_1);
+ info2_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_2);
+ info2_sub_utf8 = _get_text(noti, NOTIFICATION_TEXT_TYPE_INFO_SUB_2);
+
+ if (is_screenreader == 0) {
+ line1 = eina_strbuf_new();
+ line2 = eina_strbuf_new();
+
+ if (line1 != NULL && line2 != NULL) {
+ if (_is_text_exist(info1_utf8) && _is_text_exist(content_utf8)) {
+ _strbuf_add(line1, content_utf8, NULL);
+ _strbuf_add(line2, info1_utf8, NULL);
+ _strbuf_add(line2, info1_sub_utf8, " ");
+ num_line = 2;
+ } else if (_is_text_exist(title_utf8) && _is_text_exist(content_utf8)) {
+ _strbuf_add(line1, title_utf8, NULL);
+ _strbuf_add(line2, content_utf8, NULL);
+ num_line = 2;
+ } else if (_is_text_exist(title_utf8)) {
+ _strbuf_add(line1, title_utf8, NULL);
+ num_line = 1;
+ } else if (_is_text_exist(content_utf8)) {
+ _strbuf_add(line1, content_utf8, NULL);
+ num_line = 1;
+ }
+
+ if (num_line == 2) {
+ tmp = eina_strbuf_string_get(line1);
+ if (str_line1 != NULL && tmp != NULL) {
+ *str_line1 = strdup(tmp);
+ }
+
+ tmp = eina_strbuf_string_get(line2);
+ if (str_line2 != NULL && tmp != NULL) {
+ *str_line2 = strdup(tmp);
+ }
+ } else {
+ tmp = eina_strbuf_string_get(line1);
+ if (str_line1 != NULL && tmp != NULL) {
+ *str_line1 = strdup(tmp);
+ }
+ }
+
+ eina_strbuf_free(line1);
+ eina_strbuf_free(line2);
+ } else {
+ _E("failed to allocate string buffer");
+ }
+ } else {
+ if (title_utf8 == NULL
+ && content_utf8 == NULL
+ && info1_utf8 == NULL
+ && info1_sub_utf8 == NULL) {
+ len = 0;
+ } else {
+ Eina_Strbuf *strbuf = eina_strbuf_new();
+ if (strbuf != NULL) {
+ eina_strbuf_append(strbuf, _("IDS_QP_BUTTON_NOTIFICATION"));
+ eina_strbuf_append_char(strbuf, '\n');
+ if (info1_utf8 == NULL) {
+ _check_and_add_to_buffer(strbuf, title_utf8, 1);
+ _check_and_add_to_buffer(strbuf, content_utf8, 1);
+ } else {
+ if (content_utf8 == NULL) {
+ _check_and_add_to_buffer(strbuf, title_utf8, 1);
+ }
+ _check_and_add_to_buffer(strbuf, content_utf8, 1);
+ _check_and_add_to_buffer(strbuf, info1_utf8, 1);
+ _check_and_add_to_buffer(strbuf, info1_sub_utf8, 1);
+ }
+
+ if (eina_strbuf_length_get(strbuf) > 0) {
+ len = snprintf(buf, sizeof(buf) - 1, "%s", eina_strbuf_string_get(strbuf));
+ }
+ eina_strbuf_free(strbuf);
+ }
+ }
+ }
+
+ if (title_utf8) {
+ free(title_utf8);
+ }
+ if (content_utf8) {
+ free(content_utf8);
+ }
+ if (info1_utf8) {
+ free(info1_utf8);
+ }
+ if (info1_sub_utf8) {
+ free(info1_sub_utf8);
+ }
+ if (info2_utf8) {
+ free(info2_utf8);
+ }
+ if (info2_sub_utf8) {
+ free(info2_sub_utf8);
+ }
+ if (len > 0) {
+ return strdup(buf);
+ }
+ return NULL;
+}
+
+static char *_ticker_get_text(notification_h noti, int is_screenreader, char **line1, char **line2)
+{
+ char *result = NULL;
+ notification_ly_type_e layout;
+
+ retif(noti == NULL, NULL, "Invalid parameter!");
+
+ notification_get_layout(noti, &layout);
+
+ if (_ticker_check_displaying_contents_off(noti) == 1) {
+ result = _ticker_get_label_layout_default(noti, is_screenreader, line1, line2);
+ } else if (layout == NOTIFICATION_LY_NOTI_EVENT_SINGLE) {
+ result = _ticker_get_label_layout_single(noti, is_screenreader, line1, line2);
+ } else {
+ result = _ticker_get_label_layout_default(noti, is_screenreader, line1, line2);
+ }
+
+ return result;
+}
+
+static void _noti_hide_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ ticker_info_s *ticker_info = NULL;
+
+ ret_if(!data);
+
+ ticker_info = data;
+
+ if (ticker_info->timer) {
+ ecore_timer_del(ticker_info->timer);
+ ticker_info->timer = NULL;
+ }
+
+ _destroy_tickernoti(ticker_info);
+}
+
+static void _mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ _noti_hide_cb(data, NULL, NULL, NULL);
+}
+
+#define TICKER_EDJ EDJDIR"/ticker.edj"
+static void _create_tickernoti(notification_h noti, struct appdata *ad, ticker_info_s *ticker_info)
+{
+ Eina_Bool ret = EINA_FALSE;
+ Evas_Object *detail = NULL;
+ Evas_Object *base = NULL;
+ Evas_Object *icon = NULL;
+ Evas_Object *box = NULL;
+ Evas_Object *textblock = NULL;
+ char *line1 = NULL;
+ char *line2 = NULL;
+ int noti_height = 0;
+ int *is_ticker_executed = NULL;
+
+ ret_if(!ad);
+ ret_if(!ticker_info);
+
+ if (ticker_info->win != NULL) {
+ _E("ticker notification exists");
+ return;
+ }
+
+ _D("create ticker notification");
+
+ /* create window */
+ ticker_info->win = noti_win_add(NULL, ad);
+ ret_if(!ticker_info->win);
+ evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_APPDATA, ad);
+ evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_NOTI, noti);
+
+ /* create layout */
+ detail = elm_layout_add(ticker_info->win);
+ goto_if(!detail, ERROR);
+
+ ret = elm_layout_file_set(detail, TICKER_EDJ, "quickpanel/tickernoti/normal");
+ goto_if(ret == EINA_FALSE, ERROR);
+
+ elm_object_signal_callback_add(detail, "request,hide", "", _noti_hide_cb, ticker_info);
+ evas_object_event_callback_add(detail, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down_cb, ticker_info);
+ evas_object_size_hint_min_set(detail, 1, noti_height);
+ noti_win_content_set(ticker_info->win, detail);
+ evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_DETAIL, detail);
+
+ /* create base rectangle */
+ base = evas_object_rectangle_add(evas_object_evas_get(detail));
+ goto_if(!base, ERROR);
+ /* FIXME */
+ evas_object_color_set(base, 0, 0, 0, 0);
+ evas_object_resize(base, ad->win.w, ad->win.h);
+ evas_object_size_hint_min_set(base, ad->win.w, ad->win.h);
+ evas_object_show(base);
+ elm_object_part_content_set(detail, "base", base);
+ evas_object_data_set(ticker_info->win, DATA_KEY_BASE_RECT, base);
+
+ /* create icon */
+ icon = _ticker_create_icon(detail, noti);
+ if (icon) elm_object_part_content_set(detail, "icon", icon);
+ evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_ICON, icon);
+
+ /* create scroller */
+ ticker_info->scroller = elm_scroller_add(detail);
+ goto_if(!ticker_info->scroller, ERROR);
+
+ elm_scroller_policy_set(ticker_info->scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
+ elm_scroller_page_size_set(ticker_info->scroller, 434, INDICATOR_HEIGHT - 5);
+ elm_scroller_movement_block_set(ticker_info->scroller, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL|ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL);
+ elm_object_part_content_set(detail, "text_rect", ticker_info->scroller);
+
+ /* create box */
+ box = elm_box_add(ticker_info->scroller);
+ goto_if(!box, ERROR);
+
+ elm_object_content_set(ticker_info->scroller, box);
+ evas_object_show(box);
+ evas_object_data_set(ticker_info->win, PRIVATE_DATA_KEY_BOX, box);
+
+ /* create textblock */
+ textblock = elm_layout_add(box);
+ goto_if(!textblock, ERROR);
+
+ ret = elm_layout_file_set(textblock, TICKER_EDJ, "quickpanel/tickernoti/text");
+ goto_if(ret == EINA_FALSE, ERROR);
+
+ evas_object_show(textblock);
+
+ elm_box_pack_end(box, textblock);
+
+ /* get noti text */
+ _ticker_get_text(noti, 0, &line1, &line2);
+
+ if (line1 == NULL) {
+ if (line2 != NULL) {
+ elm_object_part_text_set(textblock, "elm.text", line2);
+ free(line2);
+ }
+ } else if (line2 == NULL) {
+ elm_object_part_text_set(textblock, "elm.text", line1);
+ free(line1);
+ } else {
+ Eina_Strbuf *buffer = eina_strbuf_new();
+
+ eina_strbuf_append(buffer, line1);
+ eina_strbuf_append(buffer, "<br/>");
+ eina_strbuf_append(buffer, line2);
+
+ elm_object_part_text_set(textblock, "elm.text", eina_strbuf_string_get(buffer));
+
+ free(line1);
+ free(line2);
+ eina_strbuf_free(buffer);
+ }
+ evas_object_data_set(ticker_info->win, DATA_KEY_TICKER_TEXT, textblock);
+
+ is_ticker_executed = (int *)malloc(sizeof(int));
+ if (is_ticker_executed != NULL) {
+ *is_ticker_executed = 0;
+ evas_object_data_set(detail, PRIVATE_DATA_KEY_TICKERNOTI_EXECUTED, is_ticker_executed);
+ }
+
+ /* When ticker noti is displayed, indicator window has to be hidden. */
+ if (ad) util_signal_emit_by_win(&ad->win, "message.show.noeffect", "indicator.prog");
+
+ ticker_info->timer = ecore_timer_add(TICKERNOTI_DURATION, _timeout_cb, ticker_info);
+
+ evas_object_data_set(ad->win.win, PRIVATE_DATA_KEY_TICKER_INFO, ticker_info);
+
+ return;
+
+ERROR:
+ if (ticker_info->win) _destroy_tickernoti(ticker_info);
+
+ return;
+}
+
+static void _destroy_tickernoti(ticker_info_s *ticker_info)
+{
+ struct appdata *ad = NULL;
+ Evas_Object *textblock = NULL;
+ Evas_Object *box = NULL;
+ Evas_Object *icon = NULL;
+ Evas_Object *detail = NULL;
+ Evas_Object *base = NULL;
+ int *is_ticker_executed = NULL;
+ notification_h noti;
+
+ ret_if(!ticker_info);
+ ret_if(!ticker_info->win);
+
+ _D("destroy ticker notification");
+
+ ad = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_APPDATA);
+ /* When ticker noti is hidden, indicator window has to be displayed. */
+ if (ad) util_signal_emit_by_win(&ad->win, "message.hide", "indicator.prog");
+
+ if (ticker_info->timer) {
+ ecore_timer_del(ticker_info->timer);
+ ticker_info->timer = NULL;
+ }
+
+ textblock = evas_object_data_del(ticker_info->win, DATA_KEY_TICKER_TEXT);
+ if (textblock) evas_object_del(textblock);
+
+ box = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_BOX);
+ if (box) evas_object_del(box);
+
+ if (ticker_info->scroller) ticker_info->scroller = NULL;
+
+ icon = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_ICON);
+ if (icon) evas_object_del(icon);
+
+ base = evas_object_data_del(ticker_info->win, DATA_KEY_BASE_RECT);
+ if (base) evas_object_del(base);
+
+ detail = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_DETAIL);
+ if (detail) {
+ is_ticker_executed = evas_object_data_del(detail, PRIVATE_DATA_KEY_TICKERNOTI_EXECUTED);
+ if (is_ticker_executed != NULL) {
+ free(is_ticker_executed);
+ }
+ evas_object_del(detail);
+ }
+
+ evas_object_del(ticker_info->win);
+ ticker_info->win = NULL;
+
+ noti = evas_object_data_del(ticker_info->win, PRIVATE_DATA_KEY_NOTI);
+ if (noti) {
+ __ticker_only_noti_del(noti);
+ notification_free(noti);
+ }
+
+ if (ticker_info->ticker_list) {
+ noti = _get_instant_latest_message_from_list(ticker_info);
+ if (noti) {
+ _create_tickernoti(noti, ad, ticker_info);
+ }
+ }
+}
+
+static void _ticker_noti_detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
+{
+ notification_h noti = NULL;
+ notification_h noti_from_master = NULL;
+ ticker_info_s *ticker_info = NULL;
+ int flags = 0;
+ int applist = NOTIFICATION_DISPLAY_APP_ALL;
+ int ret = 0;
+ int op_type = 0;
+ int priv_id = 0;
+
+ ret_if(!op_list);
+
+ _D("_ticker_noti_changed_cb");
+
+ ticker_info = calloc(1, sizeof(ticker_info_s));
+ ret_if(!ticker_info);
+
+ if (num_op == 1) {
+ notification_op_get_data(op_list, NOTIFICATION_OP_DATA_TYPE, &op_type);
+ notification_op_get_data(op_list, NOTIFICATION_OP_DATA_PRIV_ID, &priv_id);
+ notification_op_get_data(op_list, NOTIFICATION_OP_DATA_NOTI, ¬i_from_master);
+ DBG("op_type:%d", op_type);
+ DBG("op_priv_id:%d", priv_id);
+ DBG("noti:%p", noti_from_master);
+
+ if (op_type != NOTIFICATION_OP_INSERT &&
+ op_type != NOTIFICATION_OP_UPDATE) {
+ return;
+ }
+ if (noti_from_master == NULL) {
+ _E("failed to get a notification from master");
+ return;
+ }
+ if (notification_clone(noti_from_master, ¬i) != NOTIFICATION_ERROR_NONE) {
+ _E("failed to create a cloned notification");
+ return;
+ }
+#ifdef QP_EMERGENCY_MODE_ENABLE
+ if (quickpanel_emergency_mode_is_on()) {
+ if (quickpanel_emergency_mode_notification_filter(noti, 1)) {
+ DBG("notification filtered");
+ notification_free(noti);
+ return;
+ }
+ }
+#endif
+ }
+
+ ret_if(!noti);
+
+ notification_get_display_applist(noti, &applist);
+ if (!(applist & NOTIFICATION_DISPLAY_APP_TICKER
+ || applist & NOTIFICATION_DISPLAY_APP_INDICATOR)) {
+ DBG("displaying ticker option is off");
+ notification_free(noti);
+ return;
+ }
+
+ /* Check setting's event notification */
+ ret = _ticker_check_ticker_off(noti);
+ if (ret == 1) {
+ DBG("Disabled tickernoti ret : %d", ret);
+ /* delete temporary here only ticker noti display item */
+ __ticker_only_noti_del(noti);
+ notification_free(noti);
+
+ return;
+ }
+
+ /* Skip if previous ticker is still shown */
+/*
+ if (ticker_info->win != NULL) {
+ DBG("delete ticker noti");
+ _destroy_tickernoti();
+ ticker_info->win = NULL;
+ }
+*/
+
+ /* Check tickernoti flag */
+ notification_get_property(noti, &flags);
+
+ if (flags & NOTIFICATION_PROP_DISABLE_TICKERNOTI) {
+ DBG("NOTIFICATION_PROP_DISABLE_TICKERNOTI");
+ __ticker_only_noti_del(noti);
+ notification_free(noti);
+ } else if (applist & NOTIFICATION_DISPLAY_APP_TICKER
+ || applist & NOTIFICATION_DISPLAY_APP_INDICATOR) {
+ if (_is_security_lockscreen_launched()) {
+ _E("lockscreen or sview launched, creating a ticker canceled");
+ notification_free(noti);
+ return;
+ }
+
+ ticker_info->ticker_list = eina_list_append(ticker_info->ticker_list, noti);
+ /* wait when win is not NULL */
+ if (ticker_info->win == NULL) {
+ _create_tickernoti(noti, data, ticker_info);
+ }
+ if (ticker_info->win == NULL) {
+ _E("Fail to create tickernoti");
+ __ticker_only_noti_del(noti);
+ notification_free(noti);
+ return;
+ }
+ }
+}
+
+static Eina_Bool _tickernoti_callback_register_idler_cb(void *data)
+{
+ retv_if(!data, EINA_FALSE);
+
+ notification_register_detailed_changed_cb(_ticker_noti_detailed_changed_cb, data);
+
+ return EINA_FALSE;
+}
+
+int ticker_init(void *data)
+{
+ /* data is ad */
+ /* Register notification changed cb */
+ ecore_idler_add(_tickernoti_callback_register_idler_cb, data);
+
+ return INDICATOR_ERROR_NONE;
+}
+
+int ticker_fini(void *data)
+{
+ struct appdata *ad = NULL;
+ ticker_info_s *ticker_info = NULL;
+
+ retv_if(!data, 0);
+
+ ad = data;
+
+ ticker_info = evas_object_data_del(ad->win.win, PRIVATE_DATA_KEY_TICKER_INFO);
+ retv_if(!ticker_info, 0);
+
+ if (ticker_info->timer) {
+ ecore_timer_del(ticker_info->timer);
+ ticker_info->timer = NULL;
+ }
+
+ return INDICATOR_ERROR_NONE;
+}
+
+/* End of file */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_TICKER_H__
+#define __INDICATOR_TICKER_H__
+
+typedef struct ticker {
+ Evas_Object *win;
+ Evas_Object *scroller;
+ Ecore_Timer *timer;
+ Eina_List *ticker_list;
+} ticker_info_s;
+
+extern int ticker_init(void *data);
+extern int ticker_fini(void *data);
+
+#endif
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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.
+ *
+ */
+
+
+
+#ifdef _SUPPORT_SCREEN_READER2
+
+#include <tts.h>
+#include <tts_setting.h>
+#include <vconf.h>
+#include <vconf-keys.h>
+#include "main.h"
+#include "common.h"
+#include "tts.h"
+
+static void _tts_init(void);
+static void _tts_fini(void);
+
+static struct _s_info {
+ tts_h tts_handler;
+ Eina_List *list;
+} s_info = {
+ .tts_handler = NULL,
+ .list = NULL,
+};
+
+typedef struct _QP_TTS {
+ int id;
+ int done;
+ char *message;
+} QP_TTS_T;
+
+
+
+static QP_TTS_T * _tts_entry_new(int id, char *message)
+{
+ QP_TTS_T *entry = NULL;
+ retif(message == NULL, NULL, "NULL message");
+
+ entry = (QP_TTS_T *)calloc(1, sizeof(QP_TTS_T));
+ retif(entry == NULL, NULL, "failed to memory allocation");
+
+ entry->id = id;
+ entry->message = strdup(message);
+
+ return entry;
+}
+
+
+
+static void _tts_entry_del(QP_TTS_T *entry)
+{
+ retif(entry == NULL, ,"invalid parameter");
+
+ if (entry->message != NULL) {
+ free(entry->message);
+ }
+
+ free(entry);
+}
+
+
+
+static QP_TTS_T *_tts_list_get_first(void)
+{
+ return eina_list_nth(s_info.list, 0);
+}
+
+
+
+static void _tts_list_add(QP_TTS_T *entry)
+{
+ retif(entry == NULL, ,"invalid parameter");
+
+ s_info.list = eina_list_prepend(s_info.list, entry);
+}
+
+
+
+static void _tts_list_del(QP_TTS_T *entry)
+{
+ retif(entry == NULL, ,"invalid parameter");
+
+ s_info.list = eina_list_remove(s_info.list, entry);
+}
+
+
+
+static void _tts_list_clean(void)
+{
+ QP_TTS_T *entry = NULL;
+
+ while ((entry = _tts_list_get_first()) != NULL) {
+ _tts_list_del(entry);
+ _tts_entry_del(entry);
+ }
+}
+
+
+
+static int _is_screenreader_on(void)
+{
+ int ret = -1, status = 0;
+
+ ret = vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS, &status);
+ retif(ret != 0, 0, "failed to read VCONFKEY_SETAPPL_ACCESSIBILITY_TTS %d", ret);
+
+ return status;
+}
+
+
+
+static tts_state_e _tts_state_get(void)
+{
+ int ret = TTS_ERROR_NONE;
+ tts_state_e state = TTS_STATE_READY;
+
+ if (s_info.tts_handler != NULL) {
+ ret = tts_get_state(s_info.tts_handler, &state);
+ if (TTS_ERROR_NONE != ret){
+ ERR("get state error(%d)", ret);
+ return -1;
+ }
+
+ return state;
+ }
+
+ return -1;
+}
+
+
+
+static void _tts_play(const char *message)
+{
+ int utt = 0;
+ int ret = TTS_ERROR_NONE;
+
+ if (s_info.tts_handler == NULL) {
+ ERR("critical, TTS handler isn't initialized");
+ return;
+ }
+
+ DBG("adding %s", message);
+
+ ret = tts_add_text(s_info.tts_handler, message, NULL, TTS_VOICE_TYPE_AUTO, TTS_SPEED_AUTO, &utt);
+ if (TTS_ERROR_NONE != ret){
+ ERR("add text error!");
+ return;
+ }
+
+ ret = tts_play(s_info.tts_handler);
+ if(ret != TTS_ERROR_NONE) {
+ ERR("play error(%d) state(%d)", ret);
+ }
+}
+
+
+
+static void _tts_stop(void)
+{
+ int ret = TTS_ERROR_NONE;
+
+ if (s_info.tts_handler == NULL) {
+ ERR("critical, TTS handler isn't initialized");
+ return;
+ }
+
+ ret = tts_stop(s_info.tts_handler);
+ if (TTS_ERROR_NONE != ret){
+ ERR("failed to stop play:%d", ret);
+ return;
+ }
+}
+
+
+
+static void _tts_state_changed_cb(tts_h tts, tts_state_e previous, tts_state_e current, void* user_data)
+{
+ QP_TTS_T *entry = NULL;
+
+ DBG("_tts_state_changed_cb(%d => %d)", previous, current);
+
+ if(previous == TTS_STATE_CREATED && current == TTS_STATE_READY) {
+ entry = _tts_list_get_first();
+ if (entry != NULL) {
+ _tts_play(entry->message);
+ _tts_list_del(entry);
+ _tts_entry_del(entry);
+ }
+ _tts_list_clean();
+ }
+}
+
+
+
+static void _tts_utt_started_cb(tts_h tts, int utt_id, void *user_data)
+{
+ DBG("_tts_utt_started_cb");
+}
+
+
+
+static void _tts_utt_completed_cb(tts_h tts, int utt_id, void *user_data)
+{
+ DBG("_tts_utt_completed_cb");
+}
+
+
+
+static void _tts_error_cb(tts_h tts, int utt_id, tts_error_e reason, void* user_data)
+{
+ DBG("_tts_error_cb");
+}
+
+
+
+static int _tts_callback_set(tts_h tts, void* data)
+{
+ int ret = 0;
+
+ if (TTS_ERROR_NONE != (ret = tts_set_state_changed_cb(tts, _tts_state_changed_cb, tts))){
+ ERR("set interrupted callback error !!:%d", ret);
+ ret = -1;
+ }
+
+ if (TTS_ERROR_NONE != (ret = tts_set_utterance_started_cb(tts, _tts_utt_started_cb, data))) {
+ ERR("set utterance started callback error !!:%d", ret);
+ ret = -1;
+ }
+
+ if (TTS_ERROR_NONE != (ret = tts_set_utterance_completed_cb(tts, _tts_utt_completed_cb, data))) {
+ ERR("set utterance completed callback error !!:%d", ret);
+ ret = -1;
+ }
+
+ if (TTS_ERROR_NONE != (ret = tts_set_error_cb(tts, _tts_error_cb, data))) {
+ ERR("set error callback error !!:%d", ret);
+ ret = -1;
+ }
+
+ return ret;
+}
+
+
+
+static void _tts_init()
+{
+ tts_h tts = NULL;
+ int ret = TTS_ERROR_NONE;
+
+ if (s_info.tts_handler == NULL) {
+ ret = tts_create(&tts);
+ if(ret != TTS_ERROR_NONE) {
+ ERR("tts_create() failed");
+ return ;
+ }
+
+ ret = tts_set_mode(tts, TTS_MODE_NOTIFICATION);
+ if(ret != TTS_ERROR_NONE) {
+ ERR("tts_create() failed");
+ tts_destroy(s_info.tts_handler);
+ s_info.tts_handler = NULL;
+ return ;
+ }
+
+ if(_tts_callback_set(tts, NULL) != 0) {
+ ERR("_tts_callback_set() failed");
+ tts_destroy(s_info.tts_handler);
+ s_info.tts_handler = NULL;
+ return ;
+ }
+
+ ret = tts_prepare(tts);
+ if(ret != TTS_ERROR_NONE) {
+ ERR("tts_create() failed");
+ tts_destroy(s_info.tts_handler);
+ s_info.tts_handler = NULL;
+ return ;
+ }
+
+ s_info.tts_handler = tts;
+ }
+}
+
+
+
+static void _tts_fini(void)
+{
+ int ret = TTS_ERROR_NONE;
+
+ if (s_info.tts_handler != NULL) {
+ ret = tts_destroy(s_info.tts_handler);
+ if(ret != TTS_ERROR_NONE) {
+ ERR("tts_destroy() failed");
+ }
+ s_info.tts_handler = NULL;
+ }
+}
+
+
+
+static void _tts_vconf_cb(keynode_t *key, void *data){
+ if(_is_screenreader_on() == 0) {
+ DBG("TTS turned off");
+ _tts_fini();
+ }
+
+ _tts_list_clean();
+}
+
+
+
+void indicator_service_tts_init(void *data) {
+ int ret = 0;
+
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS,
+ _tts_vconf_cb, data);
+}
+
+
+
+void indicator_service_tts_fini(void *data) {
+ int ret = 0;
+
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_ACCESSIBILITY_TTS,
+ _tts_vconf_cb, data);
+
+ _tts_list_clean();
+}
+
+
+
+void indicator_service_tts_play(char *message) {
+ tts_state_e state = 0;
+ QP_TTS_T *entry = NULL;
+ retif(message == NULL, ,"invalid parameter");
+
+ if (_is_screenreader_on() == 1) {
+ _tts_init();
+
+ state = _tts_state_get();
+
+ if (state == TTS_STATE_CREATED) {
+ _tts_list_clean();
+ entry = _tts_entry_new(-1, message);
+ if (entry != NULL) {
+ _tts_list_add(entry);
+ }
+ } else if (state == TTS_STATE_PLAYING || state == TTS_STATE_PAUSED) {
+ _tts_stop();
+ _tts_play(message);
+ } else if (state == TTS_STATE_READY) {
+ _tts_play(message);
+ } else {
+ ERR("invalid status: %d", state);
+ }
+ }
+}
+#endif /* _SUPPORT_SCREEN_READER2 */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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.
+ *
+ */
+
+
+#ifdef _SUPPORT_SCREEN_READER2
+
+#ifndef __SERVICE_TTS_H__
+#define __SERVICE_TTS_H__
+
+void indicator_service_tts_init(void *data);
+void indicator_service_tts_fini(void *data);
+void indicator_service_tts_play(char *message);
+
+#endif
+#endif
+
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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.h>
+
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "icon.h"
+#include "box.h"
+#include "log.h"
+
+#define APP_CONTROL_OPERATION_POPUP_SEARCH "http://samsung.com/appcontrol/operation/search"
+
+#define DEFAULT_DIR ICONDIR
+#define DIR_PREFIX "Theme_%02d_"
+#define LABEL_STRING "<color=#%02x%02x%02x%02x>%s</color>"
+
+static char *_icondir;
+
+
+
+char *util_set_label_text_color(const char *txt)
+{
+ Eina_Strbuf *temp_buf = NULL;
+ Eina_Bool buf_result = EINA_FALSE;
+ char *ret_str = NULL;
+
+ retif(txt == NULL, NULL, "Invalid parameter!");
+
+ temp_buf = eina_strbuf_new();
+ buf_result = eina_strbuf_append_printf(temp_buf,
+ LABEL_STRING, FONT_COLOR, txt);
+
+ if (buf_result == EINA_FALSE)
+ DBG("Failed to make label string!");
+ else
+ ret_str = eina_strbuf_string_steal(temp_buf);
+
+ eina_strbuf_free(temp_buf);
+ return ret_str;
+}
+
+const char *util_get_icon_dir(void)
+{
+ if (_icondir == NULL)
+ _icondir = DEFAULT_DIR;
+
+ return (const char *)_icondir;
+}
+
+
+
+void util_signal_emit(void* data, const char *emission, const char *source)
+{
+ struct appdata *ad = NULL;
+ Evas_Object *edje = NULL;
+
+ ret_if(!data);
+
+ ad = (struct appdata *)data;
+
+ char *filter1 = "indicator.connection.updown";
+ char *filter2 = "indicator.wifi.updown";
+ if (strncmp(filter1, emission, strlen(filter1)) != 0
+ && strncmp(filter2, emission, strlen(filter2)) != 0) {
+ SECURE_DBG("emission %s",emission);
+ }
+
+ edje = elm_layout_edje_get(ad->win.layout);
+ ret_if(!edje);
+ edje_object_signal_emit(edje, emission, source);
+}
+
+
+
+void util_part_text_emit(void* data, const char *part, const char *text)
+{
+ struct appdata *ad = (struct appdata *)data;
+ retif(data == NULL, , "Invalid parameter!");
+ Evas_Object *edje;
+
+ retif(ad->win.layout == NULL, , "Invalid parameter!");
+ edje = elm_layout_edje_get(ad->win.layout);
+ edje_object_part_text_set(edje, part, text);
+}
+
+
+
+void util_signal_emit_by_win(void* data, const char *emission, const char *source)
+{
+ win_info *win = NULL;
+ Evas_Object *edje = NULL;
+
+ ret_if(!data);
+
+ win = (win_info*)data;
+ ret_if(!win->layout);
+
+ _D("emission %s", emission);
+
+ edje = elm_layout_edje_get(win->layout);
+ edje_object_signal_emit(edje, emission, source);
+}
+
+
+
+void util_part_text_emit_by_win(void* data, const char *part, const char *text)
+{
+ win_info *win = (win_info*)data;
+ retif(data == NULL, , "Invalid parameter!");
+ Evas_Object *edje;
+
+ retif(win->layout == NULL, , "Invalid parameter!");
+ edje = elm_layout_edje_get(win->layout);
+ edje_object_part_text_set(edje, part, text);
+}
+
+
+
+void util_battery_percentage_part_content_set(void* data, const char *part, const char *img_path)
+{
+ struct appdata *ad = (struct appdata *)data;
+ retif(data == NULL, , "Invalid parameter!");
+ Evas_Object *icon = NULL;
+ char path[PATH_MAX];
+
+ retif(ad->win.layout == NULL, , "Invalid parameter!");
+
+ icon = elm_image_add(ad->win.layout);
+ retif(!icon, , "Cannot create elm icon object!");
+
+ if (strncmp(img_path, "/", 1) != 0)
+ {
+ snprintf(path, sizeof(path), "%s/%s", util_get_icon_dir(), img_path);
+ }
+ else
+ {
+ strncpy(path, img_path, sizeof(path)-1);
+ }
+
+ if (!ecore_file_exists(path))
+ {
+ ERR("icon file does not exist!!: %s",path);
+ return;
+ }
+ elm_image_file_set(icon, path, NULL);
+ evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(ad->win.layout, part, icon);
+}
+
+
+
+void util_send_status_message_start(void* data,double duration)
+{
+ Ecore_Evas *ee_port;
+ win_info* win = (win_info*)data;
+ retif(data == NULL, , "Invalid parameter!");
+ struct appdata *ad = win->data;
+ Indicator_Data_Animation msg = {0,};
+
+ msg.xwin = ad->active_indi_win;
+ msg.duration = duration;
+
+ DBG("status start %x, %f",ad->active_indi_win,duration);
+ ee_port = ecore_evas_ecore_evas_get(evas_object_evas_get(win->win));
+ ecore_evas_msg_send(ee_port, MSG_DOMAIN_CONTROL_INDICATOR, MSG_ID_INDICATOR_ANI_START, &(msg), sizeof(Indicator_Data_Animation));
+
+}
+
+
+
+void util_launch_search(void* data)
+{
+ int lock_state = VCONFKEY_IDLE_UNLOCK;
+ int lock_ret = -1;
+ app_control_h service;
+ int ret = APP_CONTROL_ERROR_NONE;
+
+ lock_ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE,
+ &lock_state);
+
+ /* In Lock Screen, home button don't have to do */
+ if (lock_ret == 0 && lock_state == VCONFKEY_IDLE_LOCK)
+ {
+ return;
+ }
+
+ if (util_check_system_status() == FAIL)
+ {
+ DBG("util_check_system_status failed");
+ return;
+ }
+
+ app_control_create(&service);
+ app_control_set_operation(service, APP_CONTROL_OPERATION_MAIN);
+ app_control_set_app_id(service, SEARCH_PKG_NAME);
+
+ ret = app_control_send_launch_request(service, NULL, NULL);
+
+ if(ret != APP_CONTROL_ERROR_NONE)
+ {
+ ERR("Cannot launch app");
+ }
+
+ app_control_destroy(service);
+
+}
+
+
+
+int util_check_system_status(void)
+{
+ int ret, value = -1;
+
+ ret = vconf_get_int(VCONFKEY_PWLOCK_STATE, &value);
+ if (ret == OK &&
+ (value == VCONFKEY_PWLOCK_BOOTING_LOCK ||
+ value == VCONFKEY_PWLOCK_RUNNING_LOCK))
+ return FAIL;
+
+ return OK;
+}
+
+
+
+#ifdef _SUPPORT_SCREEN_READER
+Evas_Object *util_access_object_register(Evas_Object *object, Evas_Object *layout)
+{
+ if ((object == NULL) || (layout == NULL)) {
+ ERR("Access object doesn't exist!!! %x %x",object,layout);
+ return NULL;
+ }
+
+ return elm_access_object_register(object, layout);
+}
+
+
+
+void util_access_object_unregister(Evas_Object *object)
+{
+ if (object == NULL) {
+ ERR("Access object doesn't exist!!! %x",object);
+ return NULL;
+ }
+
+ elm_access_object_unregister(object);
+}
+
+
+
+void util_access_object_info_set(Evas_Object *object, int info_type, char *info_text)
+{
+ if ((object == NULL) || (info_text == NULL)) {
+ ERR("Access info set fails %x, %x!!!",object,info_text);
+ return;
+ }
+
+ elm_access_info_set(object, info_type, (const char *)info_text);
+}
+
+
+
+void util_access_object_activate_cb_set(Evas_Object *object, Elm_Access_Activate_Cb activate_cb, void *cb_data)
+{
+ if ((object == NULL) || (activate_cb == NULL)) {
+ ERR("Access activated cb set fails %x %x!!!",object,activate_cb);
+ return;
+ }
+
+ elm_access_activate_cb_set(object, activate_cb, cb_data);
+}
+
+
+
+void util_access_object_info_cb_set(Evas_Object *object, int type, Elm_Access_Info_Cb info_cb, void *cb_data)
+{
+ if ((object == NULL) || (info_cb == NULL)) {
+ ERR("Access info cb set fails %x %x!!!",object,info_cb);
+ return;
+ }
+
+ elm_access_info_cb_set(object, type, info_cb, cb_data);
+}
+
+
+
+void util_icon_access_register(icon_s *icon)
+{
+
+ if(icon == NULL)
+ {
+ ERR("ICON NULL");
+ return;
+ }
+
+ if(icon->tts_enable == EINA_TRUE && icon->ao==NULL)
+ {
+ Evas_Object *to = NULL;
+
+ to = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(icon->img_obj.obj), "elm.rect.icon.access");
+ icon->ao = util_access_object_register(to, icon->img_obj.obj);
+
+ if(icon->access_cb!=NULL)
+ {
+ util_access_object_info_cb_set(icon->ao,ELM_ACCESS_INFO,icon->access_cb,icon->ad);
+ }
+ }
+}
+
+
+
+void util_icon_access_unregister(icon_s *icon)
+{
+ if(icon == NULL)
+ {
+ ERR("ICON NULL");
+ return;
+ }
+
+ if(icon->tts_enable == EINA_TRUE&&icon->ao!=NULL)
+ {
+ util_access_object_unregister(icon->ao);
+ icon->ao = NULL;
+ }
+}
+#endif /* _SUPPORT_SCREEN_READER */
+
+
+
+static char* _get_timezone_from_vconf(void)
+{
+ char *szTimezone = NULL;
+ szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+ if(szTimezone == NULL)
+ {
+ ERR("Cannot get time zone.");
+ return strdup("N/A");
+ }
+
+ return szTimezone;
+}
+
+
+
+char* util_get_timezone_str(void)
+{
+ enum { BUFFERSIZE = 1024 };
+ char buf[BUFFERSIZE];
+ ssize_t len = readlink("/opt/etc/localtime", buf, sizeof(buf)-1);
+
+ if (len != -1)
+ {
+ buf[len] = '\0';
+ }
+ else
+ {
+ ERR("NO TIMEZONEINFO");
+ return _get_timezone_from_vconf();
+ }
+ return (char*)g_strdup(buf+20); // Asia/Seoul
+}
+
+
+
+Eina_Bool util_win_prop_angle_get(Ecore_X_Window win, int *req)
+{
+ Eina_Bool res = EINA_FALSE;
+#if 0
+ int ret, count;
+ int angle[2] = {-1, -1};
+ unsigned char* prop_data = NULL;
+ ret = ecore_x_window_prop_property_get(win, ECORE_X_ATOM_E_ILLUME_ROTATE_WINDOW_ANGLE, ECORE_X_ATOM_CARDINAL, 32, &prop_data, &count);
+ if (ret <= 0) {
+ if (prop_data) free(prop_data);
+ return res;
+ }
+
+ if (ret && prop_data) {
+ memcpy (&angle, prop_data, sizeof (int)*count);
+ if (count == 2) res = EINA_TRUE;
+ }
+
+ if (prop_data) free(prop_data);
+ *req = angle[0]; //current angle
+
+ if (angle[0] == -1 && angle[1] == -1) res = EINA_FALSE;
+#endif
+
+ return res;
+}
+
+
+#if 0
+int util_get_block_width(void* data, const char* part)
+{
+ Evas_Object * eo = NULL;
+ int geo_dx = 0;
+ int geo_dy = 0;
+ retif(data == NULL,-1, "Invalid parameter!");
+ retif(part == NULL,-1, "Invalid parameter!");
+
+ win_info* win = (win_info*)data;
+
+ eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+ evas_object_geometry_get(eo, NULL, NULL, &geo_dx, &geo_dy);
+
+ return geo_dx;
+}
+
+
+
+int util_get_string_width(void* data, const char* part)
+{
+ Evas_Object * eo = NULL;
+ int text_dx = 0;
+ int text_dy = 0;
+ retif(data == NULL,-1, "Invalid parameter!");
+ retif(part == NULL,-1, "Invalid parameter!");
+
+ win_info* win = (win_info*)data;
+
+ eo = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(win->layout), part);
+
+ evas_object_textblock_size_formatted_get(eo, &text_dx, &text_dy);
+
+ return text_dx;
+}
+#endif
+
+
+int util_is_orf(void)
+{
+ return 1;
+}
+
+
+
+int util_check_noti_ani(const char* path)
+{
+ retv_if(!path, 0);
+ if (!strcmp(path,"reserved://indicator/ani/downloading")
+ || !strcmp(path,"reserved://indicator/ani/uploading")) {
+ return 1;
+ }
+ return 0;
+}
+
+
+
+void util_start_noti_ani(void* data)
+{
+ icon_s *icon = (icon_s *)data;
+ retif(data == NULL, , "Invalid parameter!");
+
+ if(util_check_noti_ani(icon->img_obj.data))
+ {
+ DBG("%s",icon->name);
+ if(!strcmp(icon->img_obj.data,"reserved://indicator/ani/downloading"))
+ {
+ icon_ani_set(icon,ICON_ANI_DOWNLOADING);
+ }
+ else
+ {
+ icon_ani_set(icon,ICON_ANI_UPLOADING);
+ }
+ }
+}
+
+
+
+void util_stop_noti_ani(void* data)
+{
+ icon_s *icon = (icon_s *)data;
+ retif(data == NULL, , "Invalid parameter!");
+
+ if(util_check_noti_ani(icon->img_obj.data))
+ {
+ Evas_Object *img_edje;
+ img_edje = elm_layout_edje_get(icon->img_obj.obj);
+ DBG("%s",icon->name);
+ if(!strcmp(icon->img_obj.data,"reserved://indicator/ani/downloading"))
+ {
+ edje_object_signal_emit(img_edje, "indicator.ani.downloading.stop","elm.swallow.icon");
+ }
+ else
+ {
+ edje_object_signal_emit(img_edje, "indicator.ani.uploading.stop","elm.swallow.icon");
+ }
+ }
+}
+
+
+
+void util_char_replace(char *text, char s, char t)
+{
+ retif(text == NULL, , "invalid argument");
+
+ int i = 0, text_len = 0;
+
+ text_len = strlen(text);
+
+ for (i = 0; i < text_len; i++) {
+ if (*(text + i) == s) {
+ *(text + i) = t;
+ }
+ }
+}
+
+
+
+static bool _is_empty_str(const char *str)
+{
+ if (NULL == str || '\0' == str[0])
+ return TRUE;
+ return FALSE;
+}
+
+
+
+char *util_safe_str(const char *str, const char *strSearch)
+{
+ if (_is_empty_str(str))
+ return NULL;
+
+ return strstr(str, strSearch);
+}
+
+
+
+int util_dynamic_state_get(void)
+{
+ int val = 0;
+ //vconf_get_bool(VCONFKEY_SETAPPL_DYNAMIC_STATUS_BAR, &val);
+ return val;
+}
+
+
+
+Ecore_File_Monitor* util_file_monitor_add(const char* file_path, Ecore_File_Monitor_Cb callback_func, void *ad)
+{
+ SECURE_DBG("File path : %s", file_path);
+ Ecore_File_Monitor* pFileMonitor = NULL;
+ pFileMonitor = ecore_file_monitor_add(file_path, callback_func, ad);
+ if(pFileMonitor == NULL) SECURE_DBG("ecore_file_monitor_add return NULL !!");
+
+ return pFileMonitor;
+}
+
+
+
+void util_file_monitor_remove(Ecore_File_Monitor* pFileMonitor)
+{
+ if(pFileMonitor == NULL) return;
+
+ ecore_file_monitor_del(pFileMonitor);
+ pFileMonitor = NULL;
+}
+/* End of file */
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_UTIL_H__
+#define __INDICATOR_UTIL_H__
+#include <Ecore.h>
+//#include <Ecore_X.h>
+
+typedef enum {
+ INDICATOR_ERROR_NONE = 0,
+ INDICATOR_ERROR_FAIL = -1,
+ INDICATOR_ERROR_DB_FAILED = -2,
+ INDICATOR_ERROR_OUT_OF_MEMORY = -3,
+ INDICATOR_ERROR_INVALID_PARAMETER = -4,
+ INDICATOR_ERROR_NO_DATA = -5,
+} indicator_error_e;
+
+typedef struct _Indicator_Data_Animation Indicator_Data_Animation;
+
+struct _Indicator_Data_Animation
+{
+ Ecore_X_Window xwin;
+ double duration;
+};
+
+extern char *util_set_label_text_color(const char *txt);
+extern const char *util_get_icon_dir(void);
+extern void util_signal_emit(void* data, const char *emission, const char *source);
+extern void util_part_text_emit(void* data, const char *part, const char *text);
+extern void util_signal_emit_by_win(void* data, const char *emission, const char *source);
+extern void util_part_text_emit_by_win(void* data, const char *part, const char *text);
+extern void util_battery_percentage_part_content_set(void* data, const char *part, const char *img_path);
+extern void util_launch_search(void* data);
+extern int util_check_system_status(void);
+extern char* util_get_timezone_str(void);
+extern Eina_Bool util_win_prop_angle_get(Ecore_X_Window win, int *curr);
+extern int util_is_orf(void);
+extern int util_check_noti_ani(const char* path);
+extern void util_start_noti_ani(void* data);
+extern void util_stop_noti_ani(void* data);
+extern void util_send_status_message_start(void* data,double duration);
+extern void util_char_replace(char *text, char s, char t);
+extern int util_dynamic_state_get(void);
+
+extern Ecore_File_Monitor* util_file_monitor_add(const char* file_path, Ecore_File_Monitor_Cb callback_func, void *ad);
+extern void util_file_monitor_remove(Ecore_File_Monitor* pFileMonitor);
+extern char *util_safe_str(const char *str, const char *strSearch);
+
+#ifdef _SUPPORT_SCREEN_READER
+extern Evas_Object *util_access_object_register(Evas_Object *object, Evas_Object *layout);
+extern void util_access_object_unregister(Evas_Object *object);
+extern void util_access_object_info_set(Evas_Object *object, int info_type, char *info_text);
+extern void util_icon_access_register(icon_s *icon);
+extern void util_icon_access_unregister(icon_s *icon);
+#endif /* _SUPPORT_SCREEN_READER */
+
+#endif /* __INDICATOR_UTIL_H__ */
CONFIGURE_FILE(${PROJECT_NAME}.xml.in ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.xml)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}.xml DESTINATION ${MANIFESTXMLDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}_ChangeableColorInfo.xml DESTINATION ${CHANGEABLEDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.tizen.${PROJECT_NAME}_ChangeableFontInfo.xml DESTINATION ${CHANGEABLEDIR})
+
+CONFIGURE_FILE(${PROJECT_NAME}.sh.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME} DESTINATION /etc/init.d/)
+
ADD_SUBDIRECTORY(resource)
--- /dev/null
+@BINDIR@/@PROJECT_NAME@ &\r
+sleep 2\r
<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns="http://tizen.org/ns/packages" package="@PKGNAME@" version="0.1.72-1" install-location="internal-only">
- <label>@PROJECT_NAME@</label>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="2.3.1" package="org.tizen.indicator" version="0.2.53-1" install-location="internal-only">
+ <label>Indicator</label>
<author email="yjoo93.park@samsung.com" href="www.samsung.com">Youngjoo Park</author>
<author email="seungtaek.chung@samsung.com" href="www.samsung.com">seungtaek chung</author>
<author email="sung1103.park@samsung.com" href="www.samsung.com">Sung Park</author>
- <description>@PROJECT_NAME@</description>
+ <description>Indicator</description>
<ui-application appid="@PKGNAME@" exec="@BINDIR@/@PROJECT_NAME@" nodisplay="true" multiple="false" type="capp" taskmanage="false">
<icon>@PKGNAME@.png</icon>
- <label>@PROJECT_NAME@</label>
+ <label>Indicator</label>
</ui-application>
-</manifest>
\ No newline at end of file
+</manifest>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<ChangeableColorTables>
+ <ChangeableColorTable num="1">
+ <Theme style="Dark">
+ </Theme>
+ <Theme style="Light">
+ <ChangeableColorInfo id="AO001" inputColor="-" hue="0" saturation="0" value="12" alpha="100" />
+ <ChangeableColorInfo id="AO002" inputColor="1" hue="0" saturation="0" value="0" alpha="100" />
+ <ChangeableColorInfo id="AO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO004" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO004D" inputColor="-" hue="0" saturation="0" value="100" alpha="50" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO005" inputColor="-" hue="116" saturation="100" value="68" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO006" inputColor="-" hue="0" saturation="100" value="80" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO007" inputColor="-" hue="0" saturation="0" value="25" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO001" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO002" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO004" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO005" inputColor="-" hue="0" saturation="0" value="30" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ </Theme>
+ </ChangeableColorTable>
+ <ChangeableColorTable num="2">
+ <Theme style="Dark">
+ </Theme>
+ <Theme style="Light">
+ <ChangeableColorInfo id="AO001" inputColor="-" hue="0" saturation="0" value="12" alpha="100" />
+ <ChangeableColorInfo id="AO002" inputColor="1" hue="0" saturation="0" value="0" alpha="100" />
+ <ChangeableColorInfo id="AO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO004" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO004D" inputColor="-" hue="0" saturation="0" value="100" alpha="50" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO005" inputColor="-" hue="116" saturation="100" value="68" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO006" inputColor="-" hue="0" saturation="100" value="80" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO007" inputColor="-" hue="0" saturation="0" value="25" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO001" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO002" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO003" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO004" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO005" inputColor="-" hue="0" saturation="0" value="30" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ </Theme>
+ </ChangeableColorTable>
+ <ChangeableColorTable num="3">
+ <Theme style="Dark">
+ </Theme>
+ <Theme style="Light">
+ <ChangeableColorInfo id="AO001" inputColor="-" hue="0" saturation="0" value="12" alpha="100" />
+ <ChangeableColorInfo id="AO002" inputColor="1" hue="0" saturation="0" value="0" alpha="100" />
+ <ChangeableColorInfo id="AO003" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO004" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO004D" inputColor="-" hue="0" saturation="0" value="100" alpha="50" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO005" inputColor="-" hue="116" saturation="100" value="68" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO006" inputColor="-" hue="0" saturation="100" value="80" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="AO007" inputColor="-" hue="0" saturation="0" value="25" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO001" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO002" inputColor="-" hue="0" saturation="0" value="100" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO003" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO004" inputColor="-" hue="0" saturation="0" value="0" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ <ChangeableColorInfo id="ATO005" inputColor="-" hue="0" saturation="0" value="30" alpha="100" fixedHue="true" fixedSaturation="true" fixedValue="true" />
+ </Theme>
+ </ChangeableColorTable>
+</ChangeableColorTables>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<FontInfoTable>
+ <FontInfo id="ATO001" style="R" size="26" />
+ <FontInfo id="ATO002" style="R" size="25" />
+ <FontInfo id="ATO003" style="R" size="24" />
+ <FontInfo id="ATO004" style="R" size="30" />
+ <FontInfo id="ATO005" style="R" size="24" />
+</FontInfoTable>
+MESSAGE("EDJE_CC CUSTOM FLAG : ${EDJEFLAGS}")
+
ADD_CUSTOM_TARGET(indicator_port.edj
- COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
${CMAKE_CURRENT_SOURCE_DIR}/indicator_port.edc
${CMAKE_CURRENT_BINARY_DIR}/indicator_port.edj
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_port.edc
)
ADD_DEPENDENCIES(${PROJECT_NAME} indicator_port.edj)
-ADD_CUSTOM_TARGET(indicator_land.edj
- COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc
- ${CMAKE_CURRENT_SOURCE_DIR}/indicator_land.edc
- ${CMAKE_CURRENT_BINARY_DIR}/indicator_land.edj
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_land.edc
+ADD_CUSTOM_TARGET(ticker.edj
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
+ ${CMAKE_CURRENT_SOURCE_DIR}/ticker.edc
+ ${CMAKE_CURRENT_BINARY_DIR}/ticker.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ticker.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} ticker.edj)
+
+ADD_CUSTOM_TARGET(ticker_default.edj
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
+ ${CMAKE_CURRENT_SOURCE_DIR}/ticker_default.edc
+ ${CMAKE_CURRENT_BINARY_DIR}/ticker_default.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ticker_default.edc
)
-ADD_DEPENDENCIES(${PROJECT_NAME} indicator_land.edj)
+ADD_DEPENDENCIES(${PROJECT_NAME} ticker_default.edj)
+
+ADD_CUSTOM_TARGET(ticker_animated_icon.edj
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/animated_icon "${EDJEFLAGS}"
+ ${CMAKE_CURRENT_SOURCE_DIR}/ticker_animated_icon.edc
+ ${CMAKE_CURRENT_BINARY_DIR}/ticker_animated_icon.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ticker_animated_icon.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} ticker_animated_icon.edj)
ADD_CUSTOM_TARGET(indicator_icon_theme.edj
- COMMAND edje_cc
+ COMMAND edje_cc "${EDJEFLAGS}"
${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_theme.edc
${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_theme.edj
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_theme.edc
ADD_DEPENDENCIES(${PROJECT_NAME} indicator_icon_theme.edj)
ADD_CUSTOM_TARGET(indicator_icon_nonfixed_theme.edj
- COMMAND edje_cc
+ COMMAND edje_cc "${EDJEFLAGS}"
${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_nonfixed_theme.edc
${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_nonfixed_theme.edj
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_nonfixed_theme.edc
)
ADD_DEPENDENCIES(${PROJECT_NAME} indicator_icon_nonfixed_theme.edj)
+ADD_CUSTOM_TARGET(indicator_icon_animation.edj
+ COMMAND edje_cc -id ${CMAKE_CURRENT_SOURCE_DIR}/icons_edc "${EDJEFLAGS}"
+ ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_animation.edc
+ ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_animation.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/indicator_icon_animation.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} indicator_icon_animation.edj)
+
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_port.edj DESTINATION ${EDJDIR})
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_land.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ticker.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ticker_default.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/ticker_animated_icon.edj DESTINATION ${EDJDIR})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_theme.edj DESTINATION ${EDJDIR})
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_nonfixed_theme.edj DESTINATION ${EDJDIR})
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/indicator_icon_animation.edj DESTINATION ${EDJDIR})
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png")
INSTALL(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/icons DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.PNG")
--- /dev/null
+/*
+* Samsung API
+* Copyright (c) 2009-2015 Samsung Electronics Co., Ltd.
+*
+* 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/license/
+*
+* 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.
+*/
+
+color_classes {
+ color_class {
+ name: "AO001";
+ color: 30 30 30 255;
+ }
+ color_class {
+ name: "AO002";
+ color: 20 107 147 255;
+ }
+ color_class {
+ name: "AO003";
+ color: 255 255 255 255;
+ }
+ color_class {
+ name: "AO004";
+ color: 255 255 255 255;
+ }
+ color_class {
+ name: "AO004D";
+ color: 255 255 255 127;
+ }
+ color_class {
+ name: "AO005";
+ color: 11 173 0 255;
+ }
+ color_class {
+ name: "AO006";
+ color: 204 0 0 255;
+ }
+ color_class {
+ name: "AO007";
+ color: 63 63 63 255;
+ }
+ color_class {
+ name: "ATO001";
+ color: 255 255 255 255;
+ }
+ color_class {
+ name: "ATO002";
+ color: 255 255 255 255;
+ }
+ color_class {
+ name: "ATO003";
+ color: 255 255 255 255;
+ }
+ color_class {
+ name: "ATO004";
+ color: 0 0 0 255;
+ }
+ color_class {
+ name: "ATO005";
+ color: 76 76 76 255;
+ }
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 "color_classes.edc"
+
#define TEMP_SWALLOW_PART_FROM_LEFT( partName, rel_x, rel_y, MinWidth, MinHeight) \
part { \
name: partName; \
} \
} \
+#define SWALLOW_PART_FROM_LEFT_WITH_SPACE( partName, rel_x, rel_y, MinWidth, MinHeight) \
+ part {\
+ name : "rect."partName; \
+ type : RECT;\
+ scale : 1;\
+ description {\
+ state : "default" 0.0;\
+ rel1.to : partName;\
+ rel2.to : partName;\
+ color : 0 0 0 0;\
+ }\
+ }\
+ part { \
+ name: partName; \
+ type: SWALLOW; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: MinWidth MinHeight; \
+ fixed: 1 0; \
+ rel1 { relative: 1.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel2 { relative: 1.0 1.0; to_x: rel_x; to_y: rel_y; } \
+ align: 0.0 0.5; \
+ visible: 1; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ min: 0 MinHeight; \
+ fixed: 1 0; \
+ rel1 { relative: 1.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel2 { relative: 1.0 1.0; to_x: rel_x; to_y: rel_y; } \
+ align: 0.0 0.5; \
+ visible: 0; \
+ } \
+ } \
+
#define SWALLOW_PART_FROM_LEFT_WITH_EFFECT( partName, rel_x, rel_y, MinWidth, MinHeight) \
part { \
name: partName; \
type: SWALLOW; \
mouse_events: 0; \
- clip_to : slide_clip2; \
scale: 1; \
description { \
state: "default" 0.0; \
min: MinWidth MinHeight; \
fixed: 1 0; \
- rel1 { relative: 1.0 -1.0; to_x: rel_x; to_y: rel_y; } \
- rel2 { relative: 1.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel1 { relative: 1.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel2 { relative: 1.0 1.0; to_x: rel_x; to_y: rel_y; } \
align: 0.0 0.5; \
visible: 1; \
} \
name: partName; \
type: SWALLOW; \
mouse_events: 0; \
- clip_to : slide_clip2; \
scale: 1; \
description { \
state: "default" 0.0; \
rel1 { relative: 1.0 0.0; to_x: rel_x; to_y: rel_y; } \
rel2 { relative: 1.0 1.0; to_x: rel_x; to_y: rel_y; } \
align: 0.0 0.5; \
- visible: 0; \
+ visible: 1; \
} \
description { \
state: "show" 0.0; \
part { \
name: partName; \
type: SWALLOW; \
- mouse_events: 0; \
scale: 1; \
description { \
state: "default" 0.0; \
} \
} \
+#define SWALLOW_PART_FROM_RIGHT_WITH_SPACE( partName, rel_x, rel_y, MinWidth, MinHeight) \
+ part { \
+ name: partName; \
+ type: SWALLOW; \
+ scale: 1; \
+ description { \
+ state: "default" 0.0; \
+ min: MinWidth MinHeight; \
+ fixed: 1 0; \
+ rel1 { relative: 0.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel2 { relative: 0.0 1.0; to_x: rel_x; to_y: rel_y; } \
+ align: 1.0 0.5; \
+ visible: 1; \
+ } \
+ description { \
+ state: "hide" 0.0; \
+ min: 0 MinHeight; \
+ fixed: 1 0; \
+ rel1 { relative: 0.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel2 { relative: 0.0 1.0; to_x: rel_x; to_y: rel_y; } \
+ align: 1.0 0.5; \
+ visible: 0; \
+ } \
+ } \
+
#define SWALLOW_PART_FROM_RIGHT_WITH_EFFECT( partName, rel_x, rel_y, MinWidth, MinHeight) \
part { \
name: partName; \
type: SWALLOW; \
- mouse_events: 0; \
- clip_to : slide_clip; \
scale: 1; \
description { \
state: "default" 0.0; \
min: MinWidth MinHeight; \
fixed: 1 0; \
- rel1 { relative: 0.0 -1.0; to_x: rel_x; to_y: rel_y; } \
- rel2 { relative: 0.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel1 { relative: 0.0 0.0; to_x: rel_x; to_y: rel_y; } \
+ rel2 { relative: 0.0 1.0; to_x: rel_x; to_y: rel_y; } \
align: 1.0 0.5; \
visible: 1; \
} \
name: partName; \
type: SWALLOW; \
mouse_events: 0; \
- clip_to : slide_clip; \
scale: 1; \
description { \
state: "default" 0.0; \
rel1 { relative: 0.0 0.0; to_x: rel_x; to_y: rel_y; } \
rel2 { relative: 0.0 1.0; to_x: rel_x; to_y: rel_y; } \
align: 1.0 0.5; \
- visible: 0; \
+ visible: 1; \
} \
description { \
state: "show" 0.0; \
color : colorValue; \
visible: visibleValue; \
} \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ visible: 0; \
+ } \
} \
#define FIXED_RECT_FROM_RIGHT( rectName, rel_x, rel_y, MinWidth, colorValue, visibleValue) \
color : colorValue; \
visible: visibleValue; \
} \
+ description { \
+ state: "hide" 0.0; \
+ inherit: "default" 0.0; \
+ min: 0 0; \
+ visible: 0; \
+ } \
} \
#define DYNAMIC_RECT_FROM_RIGHT( rectName, rel_x, rel_y, MinWidth, changeWidth, colorValue, visibleValue) \
part { \
name: partName; \
type: SWALLOW; \
- mouse_events: 0; \
scale: 1; \
description { \
state: "default" 0.0; \
rel1 { relative: 1.0 0.0; to: lPadding; } \
rel2 { relative: 0.0 1.0; to: rPadding; } \
align: 0.5 0.5; \
- map { \
- on: 1; \
- perspective_on: 1; \
- rotation.z: 0.0; \
- } \
} \
description { \
- state: "rotate_tick" 0.0; \
+ state: "rotate_120" 0.0; \
inherit: "default" 0.0; \
- map.rotation.z: 20.0; \
} \
description { \
- state: "rotate_tock" 0.0; \
+ state: "rotate_60" 0.0; \
inherit: "default" 0.0; \
- map.rotation.z: -20.0; \
} \
description { \
state: "rotate_180" 0.0; \
inherit: "default" 0.0; \
- map.rotation.z: 180.0; \
} \
description { \
- state: "rotate_360" 0.0; \
+ state: "rotate_240" 0.0; \
+ inherit: "default" 0.0; \
+ } \
+ description { \
+ state: "rotate_300" 0.0; \
inherit: "default" 0.0; \
- map.rotation.z: 360.0; \
} \
description { \
state: "invisible" 0.0; \
action: ACTION_STOP; \
target: "icon_blink_show"; \
target: "icon_blink_hide"; \
- target: "icon_tick"; \
- target: "icon_tock"; \
+ target: "icon_rotate_60"; \
+ target: "icon_rotate_120"; \
target: "icon_rotate_180"; \
- target: "icon_rotate_360"; \
+ target: "icon_rotate_240"; \
+ target: "icon_rotate_300"; \
target: "icon_rotate_0"; \
} \
program { name: "icon_default"; \
target: targetName; \
after: "icon_default_pre"; \
} \
- program { name: "icon_tick"; \
- action: STATE_SET "rotate_tick" 0.0; \
- target: targetName; \
- transition: LINEAR 0.5; \
- after: "icon_tock"; \
- } \
- program { name: "icon_tock"; \
- action: STATE_SET "rotate_tock" 0.0; \
- target: targetName; \
- transition: LINEAR 0.5; \
- after: "icon_tick"; \
- } \
- program { name: "icon_metronome"; \
- signal: "icon,state,metronome"; \
- source: sourceName; \
- action: STATE_SET "rotate_tick" 0.0; \
- target: targetName; \
- after: "icon_tock"; \
- } \
program { name: "icon_blink_show"; \
action: STATE_SET "default" 0.0; \
target: targetName; \
program { name: "icon_blink"; \
signal: "icon,state,blink"; \
source: sourceName; \
- action: STATE_SET "invisible" 0.0; \
+ action: STATE_SET "default" 0.0; \
target: targetName; \
- after: "icon_blink_show"; \
+ after: "icon_blink_hide"; \
} \
program { name: "icon_rotate_0"; \
action: STATE_SET "default" 0.0; \
target: targetName; \
+ in: 0.4 0.0; \
+ after: "icon_rotate_60"; \
+ } \
+ program { name: "icon_rotate_60"; \
+ action: STATE_SET "rotate_60" 0.0; \
+ target: targetName; \
+ in: 0.4 0.0; \
+ after: "icon_rotate_120"; \
+ } \
+ program { name: "icon_rotate_120"; \
+ action: STATE_SET "rotate_120" 0.0; \
+ target: targetName; \
+ in: 0.4 0.0; \
after: "icon_rotate_180"; \
} \
program { name: "icon_rotate_180"; \
action: STATE_SET "rotate_180" 0.0; \
target: targetName; \
- transition: LINEAR 0.8; \
- after: "icon_rotate_360"; \
+ in: 0.4 0.0; \
+ after: "icon_rotate_240"; \
} \
- program { name: "icon_rotate_360"; \
- action: STATE_SET "rotate_360" 0.0; \
+ program { name: "icon_rotate_240"; \
+ action: STATE_SET "rotate_240" 0.0; \
target: targetName; \
- transition: LINEAR 0.8; \
+ in: 0.4 0.0; \
+ after: "icon_rotate_300"; \
+ } \
+ program { name: "icon_rotate_300"; \
+ action: STATE_SET "rotate_300" 0.0; \
+ target: targetName; \
+ in: 0.4 0.0; \
after: "icon_rotate_0"; \
} \
program { name: "icon_rotate"; \
signal: "icon,state,rotate"; \
source: sourceName; \
- action: STATE_SET "rotate_180" 0.0; \
+ action: STATE_SET "default" 0.0; \
target: targetName; \
- after: "icon_rotate_360"; \
+ after : icon_rotate_0; \
} \
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 __INDICATOR_GUI_H__
#define __INDICATOR_GUI_H__
-#define INDICATOR_HEIGHT 60
+/* DISPLAY */
+#define INDICATOR_HEIGHT 36
#define INDICATOR_SIMPLE_HEIGHT 20
#define ICON_PADDING 3
-#define PADDING_WIDTH 8
-#define LEFT_PADDING_WIDTH 0
-#define RIGHT_PADDING_WIDTH 0
-#define INDICATOR_PADDING_H 10
+#define PADDING_WIDTH 10
+#define LEFT_PADDING_WIDTH 3
+#define RIGHT_PADDING_WIDTH 6
+#define INDICATOR_PADDING_H 4
-#define CLOCK_WIDTH 116
+#define CLOCK_WIDTH_1 110
+#define CLOCK_WIDTH_2 120
+
#define CLOCK_HEIGHT 34
#define CLOCK_PADDING 10
-#define DEFAULT_ICON_PADDING 10
+#define DEFAULT_ICON_PADDING 3
+#define NOTI_ICON_PADDING 2
+
+#define DEFAULT_ICON_HEIGHT 25
+#define DEFAULT_ICON_WIDTH 25
+#define BATTERY_ICON_WIDTH 25
+#define BATTERY_ICON_HEIGHT 25
+#define FIXED4_ICON_HEIGHT 25
+#define FIXED4_ICON_WIDTH 25
-#define DEFAULT_ICON_HEIGHT 40
-#define DEFAULT_ICON_WIDTH 40
-#define BATTERY_ICON_WIDTH 116
-#define BATTERY_ICON_HEIGHT 17
-#define APPTRAY_ICON_HEIGHT 50
-#define APPTRAY_ICON_WIDTH 50
+#define BATTERY_DIGIT_WIDTH 8
+#define BATTERY_DIGIT_HEIGHT 12
#define MESSAGE_PADDING 10
#define LANDSCAPE_FIXED1_PADDING 122
#define LANDSCAPE_FIXED0_PADDING 122
-#define HOME_PADDING_PORTRAIT 78
-#define HOME_PADDING_LANDSCAPE 78
+#define HOME_PADDING_PORTRAIT 50
+#define HOME_PADDING_LANDSCAPE 50
#define DEFAULT_NON_FIXED_PADDING 0
-#define INDI_DEFAULT_BG_COLOR 52 52 50 255
+#define INDI_DEFAULT_BG_COLOR 30 30 30 255
#define INDI_DEFAULT_BG_TRANSLUCENT 0 0 0 125
#define INDI_DEFAULT_BG_TRANSPARENT 0 0 0 0
+#define INDI_DEFAULT_BG_TEST 255 0 0 150
+
+/* FONT */
#define ICON_FONT_NAME "Tizen"
#define ICON_FONT_STYLE "Medium"
#define ICON_FONT_SIZE 20
#define INDICATOR_HIDE_TRIGER_H 30
+#define DOWN_ANI_TIMER 0.3
+
+#define INDICATOR_ICON_OPACITY 204 //80%
+
#define DEFAULT_LABEL_STRING "<font_size=%d><color=#%02x%02x%02x%02x>%s</color></font_size>"
#define CUSTOM_LABEL_STRING "<font=%s><style=%s><font_size=%d>%s</font_size></style></font>"
+#ifndef _INDICATOR_REMOVE_SEARCH
+#define _INDICATOR_REMOVE_SEARCH
#endif
+#endif /*__INDICATOR_GUI_H__*/
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 "indicator_gui.h"
+#include "indicator_common.edc"
+
+collections {
+ base_scale: 1.7;
+
+ group {
+ name: "elm/indicator/icon/base";
+
+ images {
+ image: "B03_Processing_download_ani_00.png" COMP;
+ image: "B03_Processing_download_ani_01.png" COMP;
+ image: "B03_Processing_download_ani_02.png" COMP;
+ image: "B03_Processing_download_ani_03.png" COMP;
+ image: "B03_Processing_download_ani_04.png" COMP;
+ image: "B03_Processing_download_ani_05.png" COMP;
+ image: "B03_Processing_download_ani_06.png" COMP;
+ image: "B03_Processing_upload_ani_00.png" COMP;
+ image: "B03_Processing_upload_ani_01.png" COMP;
+ image: "B03_Processing_upload_ani_02.png" COMP;
+ image: "B03_Processing_upload_ani_03.png" COMP;
+ image: "B03_Processing_upload_ani_04.png" COMP;
+ image: "B03_Processing_upload_ani_05.png" COMP;
+ image: "B03_Processing_upload_ani_06.png" COMP;
+ }
+ parts {
+ part {
+ name: "background";
+ description {
+ state: "default" 0.0;
+ color : 255 255 255 255;
+ visible : 1;
+ }
+ }
+ part {
+ name: "padding.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: DEFAULT_ICON_PADDING 0;
+ fixed: 1 0;
+ rel1.to: "background";
+ rel2 { relative: 0.0 1.0; to: "background"; }
+ align: 0.0 0.5;
+ visible: 0;
+ }
+ }
+
+ PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+ part {
+ name: "elm.image.icon.ani";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ visible: 0;
+ }
+ description {
+ state: "downloading0" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_download_ani_00.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "downloading1" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_download_ani_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "downloading2" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_download_ani_02.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "downloading3" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_download_ani_03.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "downloading4" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_download_ani_04.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "downloading5" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_download_ani_05.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "downloading6" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_download_ani_06.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+
+ description {
+ state: "uploading0" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_upload_ani_00.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "uploading1" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_upload_ani_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "uploading2" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_upload_ani_02.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "uploading3" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_upload_ani_03.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "uploading4" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_upload_ani_04.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "uploading5" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_upload_ani_05.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ description {
+ state: "uploading6" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_Processing_upload_ani_06.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ visible: 1;
+ }
+ }
+
+ part {
+ name: "padding.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.0; to: "background"; }
+ align: 1.0 0.5;
+ visible: 0;
+ }
+ }
+
+ }
+
+ programs {
+ PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+
+ /*Downloading state programs: */
+ program{
+ name: "indicator.ani.downloading.0";
+ signal: "indicator.ani.downloading.0";
+ source: "prog";
+ action: STATE_SET "downloading0" 0.0;
+ target: "elm.image.icon.ani";
+ }
+
+ program{
+ name: "indicator.ani.downloading.1";
+ signal: "indicator.ani.downloading.1";
+ source: "prog";
+ action: STATE_SET "downloading1" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.downloading.2";
+ signal: "indicator.ani.downloading.2";
+ source: "prog";
+ action: STATE_SET "downloading2" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.downloading.3";
+ signal: "indicator.ani.downloading.3";
+ source: "prog";
+ action: STATE_SET "downloading3" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.downloading.4";
+ signal: "indicator.ani.downloading.4";
+ source: "prog";
+ action: STATE_SET "downloading4" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.downloading.5";
+ signal: "indicator.ani.downloading.5";
+ source: "prog";
+ action: STATE_SET "downloading5" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.downloading.6";
+ signal: "indicator.ani.downloading.6";
+ source: "prog";
+ action: STATE_SET "downloading6" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ /*Uploading state programs: */
+ program{
+ name: "indicator.ani.uploading.0";
+ signal: "indicator.ani.uploading.0";
+ source: "prog";
+ action: STATE_SET "uploading0" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.uploading.1";
+ signal: "indicator.ani.uploading.1";
+ source: "prog";
+ action: STATE_SET "uploading1" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.uploading.2";
+ signal: "indicator.ani.uploading.2";
+ source: "prog";
+ action: STATE_SET "uploading2" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.uploading.3";
+ signal: "indicator.ani.uploading.3";
+ source: "prog";
+ action: STATE_SET "uploading3" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.uploading.4";
+ signal: "indicator.ani.uploading.4";
+ source: "prog";
+ action: STATE_SET "uploading4" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.uploading.5";
+ signal: "indicator.ani.uploading.5";
+ source: "prog";
+ action: STATE_SET "uploading5" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ program{
+ name: "indicator.ani.uploading.6";
+ signal: "indicator.ani.uploading.6";
+ source: "prog";
+ action: STATE_SET "uploading6" 0.0;
+ target: "elm.image.icon.ani";
+ }
+ }
+ }
+}
+
+
-/*\r
- * Copyright 2012 Samsung Electronics Co., Ltd\r
- *\r
- * Licensed under the Flora License, Version 1.1 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://floralicense.org/license/\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
- \r
-#include "indicator_gui.h"\r
-#include "indicator_common.edc"\r
-\r
-collections {\r
- group {\r
- name: "elm/indicator/icon/base";\r
- parts {\r
- part {\r
- name: "background";\r
- mouse_events: 0;\r
- description {\r
- state: "default" 0.0;\r
- color : 255 255 255 204;\r
- visible : 1;\r
- }\r
- }\r
- part {\r
- name: "padding.left";\r
- type: RECT;\r
- mouse_events: 0;\r
- scale: 1;\r
- description {\r
- state: "default" 0.0;\r
- min: 0 0;\r
- fixed: 1 0;\r
- rel1.to: "background";\r
- rel2 { relative: 0.0 1.0; to: "background"; }\r
- align: 0.0 0.5;\r
- visible: 0;\r
- }\r
- }\r
-\r
- PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )\r
-\r
- part {\r
- name: "padding.right";\r
- type: RECT;\r
- mouse_events: 0;\r
- scale: 1;\r
- description {\r
- state: "default" 0.0;\r
- min: PADDING_WIDTH 0;\r
- fixed: 1 0;\r
- rel1 { relative: 1.0 0.0; to: "background"; }\r
- align: 1.0 0.5;\r
- visible: 0;\r
- }\r
- }\r
-\r
- }\r
- programs {\r
- PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")\r
- }\r
- }\r
-}\r
-\r
-\r
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 "indicator_gui.h"
+#include "indicator_common.edc"
+
+collections {
+ base_scale: 1.7;
+
+ group {
+ name: "elm/indicator/icon/base";
+ parts {
+ part {
+ name: "background";
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ }
+ }
+ part {
+ name: "padding.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: DEFAULT_ICON_PADDING 0;
+ fixed: 1 0;
+ rel1.to: "background";
+ rel2 { relative: 0.0 1.0; to: "background"; }
+ color : 0 255 0 255;
+ align: 0.0 0.5;
+ visible: 0;
+ }
+ }
+
+ part {
+ name: "padding.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.0; to: "background"; }
+ color : 0 0 255 255;
+ align: 1.0 0.5;
+ visible: 0;
+ }
+ }
+ PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+#ifdef _SUPPORT_SCREEN_READER
+ part {
+ name: "elm.rect.icon.access";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ color:0 0 0 0;
+ visible: 1;
+ }
+ }
+#endif
+ }
+ programs {
+ PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+ }
+ }
+}
+
+
-/*\r
- * Copyright 2012 Samsung Electronics Co., Ltd\r
- *\r
- * Licensed under the Flora License, Version 1.1 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- *\r
- * http://floralicense.org/license/\r
- *\r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- */\r
- \r
-#include "indicator_gui.h"\r
-#include "indicator_common.edc"\r
-\r
-collections {\r
- group {\r
- name: "elm/indicator/icon/base";\r
- parts {\r
- part {\r
- name: "background";\r
- mouse_events: 0;\r
- description {\r
- state: "default" 0.0;\r
- color : 255 255 255 204;\r
- visible : 1;\r
- }\r
- }\r
- part {\r
- name: "padding.left";\r
- type: RECT;\r
- mouse_events: 0;\r
- scale: 1;\r
- description {\r
- state: "default" 0.0;\r
- min: 0 0;\r
- fixed: 1 0;\r
- rel1.to: "background";\r
- rel2 { relative: 0.0 1.0; to: "background"; }\r
- align: 0.0 0.5;\r
- visible: 0;\r
- }\r
- }\r
-\r
- PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )\r
-\r
- part {\r
- name: "padding.right";\r
- type: RECT;\r
- mouse_events: 0;\r
- scale: 1;\r
- description {\r
- state: "default" 0.0;\r
- min: 0 0;\r
- fixed: 1 0;\r
- rel1 { relative: 1.0 0.0; to: "background"; }\r
- align: 1.0 0.5;\r
- visible: 0;\r
- }\r
- }\r
-\r
- }\r
- programs {\r
- PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")\r
- }\r
- }\r
-}\r
-\r
-\r
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 "indicator_gui.h"
+#include "indicator_common.edc"
+
+collections {
+ base_scale: 1.7;
+
+ group {
+ name: "elm/indicator/icon/base";
+ parts {
+ part {
+ name: "background";
+ description {
+ state: "default" 0.0;
+ visible : 1;
+ }
+ }
+ part {
+ name: "padding.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ color: 255 0 0 255;
+ rel1.to: "background";
+ rel2 { relative: 0.0 1.0; to: "background"; }
+ align: 0.0 0.5;
+ visible: 0;
+ }
+ }
+
+ PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+ part {
+ name: "padding.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ color: 0 255 0 255;
+ rel1 { relative: 1.0 0.0; to: "background"; }
+ align: 1.0 0.5;
+ visible: 0;
+ }
+ }
+
+#ifdef _SUPPORT_SCREEN_READER
+ part {
+ name: "elm.rect.icon.access";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ color:0 0 0 0;
+ visible: 1;
+ }
+ }
+#endif
+ }
+ programs {
+ PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+ }
+ }
+
+ group {
+ name: "elm/indicator/icon/dozen_digit";
+ parts {
+ part {
+ name: "background";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color : 0 0 255 255;
+ visible : 0;
+ }
+ }
+ part {
+ name: "padding.left";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1.to: "background";
+ rel2 { relative: 0.0 1.0; to: "background"; }
+ align: 0.0 0.5;
+ visible: 0;
+ }
+ }
+
+ PART_SWALLOW_SET( "elm.swallow.icon", "padding.left", "padding.right" )
+
+ part {
+ name: "padding.right";
+ type: RECT;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 1 20;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.0; to: "background"; }
+ rel2 { relative: 1.0 1.0; to: "background"; }
+ align: 1.0 0.5;
+ visible: 0;
+ }
+ }
+
+#ifdef _SUPPORT_SCREEN_READER
+ part {
+ name: "elm.rect.icon.access";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "elm.swallow.icon";
+ rel2.to: "elm.swallow.icon";
+ color:0 0 0 0;
+ visible: 1;
+ }
+ }
+#endif
+ }
+ programs {
+ PROGRAM_SET( "elm.swallow.icon", "elm.swallow.icon")
+ }
+ }
+}
+
+
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 "indicator_gui.h"
-#include "indicator_common.edc"
-
-collections {
- group {
- name: "indicator";
- script {
- public bg_set, badge_set, theme, changepad, changebg, changeHomePad;
- }
- styles
- {
- style {
- name: "textblock_style";
- base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF ";
- }
- style {
- name: "textblock_outline_style";
- base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF";
- }
- style {
- name: "message_style";
- base: "font=Tizen:style=Medium text_class=tizen font_size=23 color=#FFFFFFCC valign=middle wrap=none ellipsis=1";
- }
- }
-
- images {
- image: "B03_Status_bar_line.PNG" COMP;
- }
-
- parts {
- part {
- name: "background";
- type: RECT;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 0 INDICATOR_HEIGHT;
- color: 0 0 0 0;
- }
- }
- part {
- name: "padding.top";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: 0 INDICATOR_PADDING_H;
- fixed: 0 1;
- rel1 { relative: 0.0 0.0; to: "background"; }
- rel2 { relative: 1.0 0.0; to: "background"; }
- align: 0.0 0.0;
- visible: 0;
- }
- }
- part {
- name: "padding.bottom";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: 0 INDICATOR_PADDING_H;
- fixed: 0 1;
- rel1 { relative: 0.0 1.0; to: "background"; }
- rel2 { relative: 1.0 1.0; to: "background"; }
- align: 0.0 1.0;
- visible: 0;
- }
-
- }
-
- part {
- name: "padding.left";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: LEFT_PADDING_WIDTH 0;
- fixed: 1 0;
- rel1.relative: 0.0 0.0;
- rel2.relative: 0.0 1.0;
- color: 0 0 0 0;
- visible: 0;
- }
- }
-
- part {
- name: "padding.right";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: RIGHT_PADDING_WIDTH 0;
- fixed: 1 0;
- rel1.relative: 1.0 0.0;
- color: 0 0 0 0;
- visible: 0;
- }
- }
- part {
- name: "elm.rect.transparent";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: 0 40;
- fixed: 0 1;
- rel1 {
- relative: 0.0 1.0;
- to: "background";
- }
- rel2 {
- relative: 1.0 1.0;
- to: "background";
- }
- color: 0 0 0 0;
- align: 0.0 1.0;
- visible: 1;
- }
- description {
- state: "show" 0.0;
- min: 0 0;
- fixed: 0 1;
- rel1 {
- relative: 0.0 1.0;
- to: "background";
- }
- rel2 {
- relative: 1.0 1.0;
- to: "background";
- }
- color: 0 0 0 0;
- align: 0.0 1.0;
- visible: 1;
- }
- }
- part {
- name: "elm.rect.bg";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: 0 INDICATOR_HEIGHT;
- fixed: 0 1;
- rel1 { relative: 0.0 0.0; to_x: background; to_y: elm.rect.transparent; }
- rel2 { relative: 1.0 0.0; to_x: background; to_y: elm.rect.transparent; }
- color: INDI_DEFAULT_BG_TRANSPARENT;
- align: 0.0 1.0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- color: INDI_DEFAULT_BG_COLOR;
- }
-
- }
-
- part {
- name: "elm.rect.left_con";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: HOME_PADDING_LANDSCAPE 0;
- visible: 0;
- fixed: 1 0;
- rel1 { relative: 0.0 0.0; to: "elm.rect.bg"; }
- rel2 { relative: 0.0 1.0; to: "elm.rect.bg"; }
- align: 0.0 0.0;
- }
- }
-
- part {
- name: "icon_bg";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- rel1 { relative: 1.0 0.0; to_x: padding.separator; to_y: elm.rect.bg; }
- rel2 { relative: 0.0 1.0; to_x: padding.separator2; to_y: elm.rect.bg; }
- align: 0.0 0.0;
- }
- }
-
- part {
- name: "elm.rect.middle_con";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- rel1 { relative: 0.0 0.0; to: "icon_bg"; }
- rel2 { relative: 1.0 1.0; to: "icon_bg"; }
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- }
- description {
- state: "hide" 0.0;
- inherit: "default" 0.0;
- min: 0 INDICATOR_HEIGHT;
- fixed: 0 1;
- rel1 { relative: 0.0 0.0; to: "icon_bg"; }
- rel2 { relative: 1.0 0.0; to: "icon_bg"; }
- align: 0.0 1.0;
- }
-
- }
-
- part {
- name: "message.bg";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- min: 0 INDICATOR_HEIGHT;
- fixed: 0 1;
- rel1 { relative: 0.0 1.0; to: "elm.rect.middle_con"; }
- rel2 { relative: 1.0 1.0; to: "elm.rect.middle_con"; }
- align: 0.0 0.0;
- visible: 0;
- }
- }
-
- part {
- name: "message.padding.left";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: MESSAGE_PADDING 0;
- fixed: 1 0;
- rel1 {
- relative: 0.0 0.0;
- to: "message.bg";
- }
- rel2 {
- relative: 0.0 1.0;
- to: "message.bg";
- }
- align: 0.0 0.0;
- visible: 0;
- }
- }
- part {
- name: "message.padding.right";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: MESSAGE_PADDING 0;
- fixed: 1 0;
- rel1 {
- relative: 1.0 0.0;
- to: "message.bg";
- }
- rel2 {
- relative: 1.0 1.0;
- to: "message.bg";
- }
- align: 1.0 0.0;
- visible: 0;
- }
- }
- part {
- name: "message.padding.top";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: 0 INDICATOR_PADDING_H;
- fixed: 0 1;
- rel1 { relative: 0.0 0.0; to: "message.bg"; }
- rel2 { relative: 1.0 0.0; to: "message.bg"; }
- align: 0.0 0.0;
- visible: 0;
- }
- }
- part {
- name: "message.padding.bottom";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: 0 INDICATOR_PADDING_H;
- fixed: 0 1;
- rel1 { relative: 0.0 1.0; to: "message.bg"; }
- rel2 { relative: 1.0 1.0; to: "message.bg"; }
- align: 0.0 1.0;
- visible: 0;
- }
-
- }
- part {
- name: "message.text";
- type: TEXTBLOCK;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- fixed: 1 1;
- visible: 1;
- rel1 {
- relative: 1.0 1.0;
- to_x: "message.padding.left";
- to_y: "message.bg";
- }
-
- rel2 {
- relative: 0.0 0.0;
- to_x: "message.padding.right";
- to_y: "message.bg";
- }
- text {
- style: "message_style";
- min: 0 1;
- }
- }
- }
-
- part {
- name: elm.swallow.fixed0;
- type: SWALLOW;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: HOME_PADDING_LANDSCAPE APPTRAY_ICON_HEIGHT;
- fixed: 1 0;
- rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.left_con; }
- rel2 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.rect.left_con; }
- align: 0.0 0.5;
- visible: 0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- visible : 1;
- }
- }
-
- part {
- name: "seperator.image";
- type: IMAGE;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- min: 4 36;
- fixed: 1 1;
- image.normal: "B03_Status_bar_line.PNG";
- rel1 {
- relative: 1.0 0.5;
- to_x: "elm.swallow.fixed0";
- to_y: "elm.rect.bg";
- }
- rel2 {
- relative: 1.0 0.5;
- to_x: "elm.swallow.fixed0";
- to_y: "elm.rect.bg";
- }
- align: 0.0 0.5;
- visible : 0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- visible : 0;
- }
- }
-
- part {
- name: "padding.separator";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: PADDING_WIDTH 0;
- fixed: 1 0;
- rel1 {
- relative: 1.0 1.0;
- to_x: "seperator.image";
- to_y: "padding.top";
- }
- rel2 {
- relative: 1.0 0.0;
- to_x: "seperator.image";
- to_y: "padding.bottom";
- }
- align: 0.0 0.5;
- visible: 1;
- color: 0 0 0 0;
- }
- }
-
- DYNAMIC_RECT_FROM_LEFT( "elm.rect.fixed2", "elm.swallow.fixed3", "elm.rect.middle_con", DEFAULT_ICON_PADDING, FIXED4_DYNAMIC_PADDING, INDI_DEFAULT_BG_COLOR, 0)
- SWALLOW_PART_FROM_LEFT_WITH_EFFECT2( "elm.swallow.fixed2", "elm.rect.fixed2", "elm.rect.middle_con", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
-
- FIXED_RECT_FROM_LEFT( "elm.rect.fixed3", "elm.swallow.fixed2", "elm.rect.middle_con", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_COLOR, 0)
- SWALLOW_PART_FROM_LEFT_WITH_EFFECT2( "elm.swallow.fixed1", "elm.rect.fixed3", "elm.rect.middle_con", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
-
- FIXED_RECT_FROM_LEFT( "elm.rect.nonfixed", "elm.swallow.fixed1", "elm.rect.middle_con", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_COLOR, 0)
- SWALLOW_PART_FROM_LEFT_WITH_EFFECT2( "elm.swallow.nonfixed", "elm.rect.nonfixed", "elm.rect.middle_con", 0, 0)
-
- SWALLOW_PART_FROM_RIGHT_WITH_EFFECT2( "elm.swallow.noti", "clock.padding.left", "elm.rect.middle_con", 0, 0)
-
- part {
- name: elm.swallow.fixed4;
- type: SWALLOW;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: HOME_PADDING_LANDSCAPE APPTRAY_ICON_HEIGHT;
- fixed: 1 0;
- rel1 { relative: 0.0 0.0; to_x: padding.right; to_y: elm.rect.left_con; }
- rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.rect.left_con; }
- align: 1.0 0.5;
- visible: 0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- visible : 1;
- }
- }
-
- part {
- name: "seperator.image2";
- type: IMAGE;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- visible: 0;
- min: 4 36;
- fixed: 1 1;
- image.normal: "B03_Status_bar_line.PNG";
- rel1 {
- relative: 0.0 0.5;
- to_x: "elm.swallow.fixed4";
- to_y: "elm.rect.bg";
- }
- rel2 {
- relative: 0.0 0.5;
- to_x: "elm.swallow.fixed4";
- to_y: "elm.rect.bg";
- }
- align: 1.0 0.5;
- visible : 0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- visible : 0;
- }
- }
-
- part {
- name: "padding.separator2";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: PADDING_WIDTH 0;
- fixed: 1 0;
- rel1 {
- relative: 1.0 1.0;
- to_x: "seperator.image2";
- to_y: "padding.top";
- }
- rel2 {
- relative: 1.0 0.0;
- to_x: "seperator.image2";
- to_y: "padding.bottom";
- }
- align: 0.0 0.5;
- visible: 1;
- color: 0 0 0 0;
- }
- }
-
- part {
- name: "clock.padding.left";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 12 0;
- fixed: 1 0;
- rel1.to_x: "elm.rect.clock";
- rel2 { relative: 0.0 1.0; to_x: "elm.rect.clock"; }
- visible: 0;
- }
- }
-
- part {
- name: "clock.padding.top";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 116 5;
- fixed: 1 1;
- rel1 { relative: 0.5 0.0; to_x: elm.rect.bg; to_y: elm.rect.middle_con; }
- rel2 { relative: 0.5 0.0; to_x: elm.rect.bg; to_y: elm.rect.middle_con; }
- visible: 0;
- }
- }
- part {
- name: "elm.rect.clock";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: CLOCK_WIDTH CLOCK_HEIGHT;
- fixed: 1 1;
- rel1 { relative: 0.5 1.0; to: "clock.padding.top"; }
- rel2 { relative: 0.5 1.0; to: "clock.padding.top"; }
- align: 0.5 0.0;
- visible: 0;
- }
- description {
- state: "ampm" 0.0;
- min: CLOCK_WIDTH CLOCK_HEIGHT;
- fixed: 1 1;
- rel1 { relative: 0.5 1.0; to: "clock.padding.top"; }
- rel2 { relative: 0.5 1.0; to: "clock.padding.top"; }
- align: 0.5 0.0;
- visible: 0;
- }
- }
- part {
- name: "elm.rect.innerclock";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1 { relative: 0.5 0.5; to: "elm.rect.clock";}
- rel2 { relative: 0.5 0.5; to: "elm.rect.clock";}
- }
- }
- part {
- name: "elm.text.clock";
- type: TEXTBLOCK;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1.to: "elm.rect.innerclock";
- rel2.to: "elm.rect.innerclock";
- fixed: 1 1;
- text {
- style: "textblock_style";
- min: 1 1;
- align: 0.5 0.5;
- }
- visible : 0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- visible : 1;
- }
- }
-
- part {
- name: "elm.swallow.fixed3";
- type: SWALLOW;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: BATTERY_ICON_WIDTH BATTERY_ICON_HEIGHT;
- fixed: 1 1;
- rel1 { relative: 0.5 0.0; to: "clock.padding.bottom"; }
- rel2 { relative: 0.5 0.0; to: "clock.padding.bottom"; }
- align: 0.5 1.0;
- visible: 1;
- }
- }
-
- part {
- name: "clock.padding.bottom";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 116 2;
- fixed: 1 1;
- rel1 { relative: 0.5 1.0; to: "elm.rect.bg";}
- rel2 { relative: 0.5 1.0; to: "elm.rect.bg";}
- align: 0.5 1.0;
- visible: 0;
- }
- description {
- state: "show" 0.0;
- min: 116 4;
- fixed: 1 1;
- rel1 { relative: 0.5 1.0; to: "elm.rect.bg";}
- rel2 { relative: 0.5 1.0; to: "elm.rect.bg";}
- align: 0.5 1.0;
- visible: 0;
- }
- }
-
- part {
- name: "clock.padding.right";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 12 0;
- fixed: 1 0;
- rel1 { relative: 1.0 0.0; to_x: "elm.rect.clock"; }
- rel2 { relative: 0.0 1.0; to_x: "elm.rect.clock"; }
- visible: 0;
- }
- }
-
- part {
- name: "elm.padding.badge.left";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 3 0;
- fixed: 1 0;
- rel1.to: "elm.text.badge";
- rel2 { to: "elm.text.badge"; relative: 0.0 1.0; }
- align: 1.0 0.5;
- visible: 1;
- }
- }
-
- part {
- name: "elm.padding.badge.right";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 3 0;
- fixed: 1 0;
- rel1 { to: "elm.text.badge"; relative: 1.0 0.0; }
- rel2.to: "elm.text.badge";
- align: 0.0 0.5;
- visible: 1;
- }
- }
-
- part {
- name: "elm.image.badge";
- type: IMAGE;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- min: 18 18;
- fixed: 1 1;
- rel1.to: "elm.padding.badge.left";
- rel2.to: "elm.padding.badge.right";
- image {
- border: 8 8 8 8;
- border_scale: 1;
- }
- visible: 0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- description {
- state: "show2" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
-
- part {
- name: "elm.text.badge";
- type: TEXT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1 { to: "elm.rect.clock"; relative: 0.95 0.2; }
- rel2 { to: "elm.rect.clock"; relative: 0.95 0.2; }
- color: 255 255 255 255;
- align: 1.0 0.0;
- text {
- font: "Tizen";
- size: 15;
- min: 1 0;
- align: 0.5 0.5;
- }
- }
- description {
- state: "default2" 0.0;
- inherit: "default" 0.0;
- color: 0 0 0 255;
- }
- }
- part {
- name: "slide_clip";
- type: RECT;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1 {
- relative: 1.0 -1.0;
- to_x: "seperator.image";
- to_y: "elm.rect.bg";
- }
- rel2 {
- relative: 1.0 1.0;
- to_x: "clock.padding.left";
- to_y: "elm.rect.bg";
- }
- color: 255 255 255 0;
- }
- description {
- state: "show" 0.0;
- rel1 {
- relative: 1.0 0.0;
- to_x: "seperator.image";
- to_y: "elm.rect.bg";
- }
- rel2 {
- relative: 1.0 1.0;
- to_x: "clock.padding.left";
- to_y: "elm.rect.bg";
- }
- color: 255 255 255 255;
- }
- }
- part {
- name: "slide_clip2";
- type: RECT;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1 {
- relative: 1.0 -1.0;
- to_x: "clock.padding.right";
- to_y: "elm.rect.bg";
- }
- rel2 {
- relative: 0.0 1.0;
- to_x: "seperator.image2";
- to_y: "elm.rect.bg";
- }
- color: 255 255 255 0;
- }
- description {
- state: "show" 0.0;
- rel1 {
- relative: 1.0 0.0;
- to_x: "clock.padding.right";
- to_y: "elm.rect.bg";
- }
- rel2 {
- relative: 0.0 1.0;
- to_x: "seperator.image2";
- to_y: "elm.rect.bg";
- }
- color: 255 255 255 255;
- }
- }
-
- }
-
- programs {
- program {
- name: "change_padding_1";
- action: STATE_SET "changePad" 0.0;
- signal: "change,padding,1";
- source: "elm.rect.*";
- script {
- if (get_int(changepad) == 0) {
- set_int(changepad,1);
- }
- }
- }
-
- program {
- name: "change_padding_2";
- action: STATE_SET "changePad" 0.0;
- signal: "change,padding,2";
- source: "elm.rect.*";
- script {
- if (get_int(changepad) == 1) {
- set_int(changepad,0);
- }
- }
- }
-
- program {
- name: "home_pressed";
- signal: "home.pressed";
- source: "indicator.prog";
- script {
- }
- }
-
- program {
- name: "bg_opaque";
- action: STATE_SET "default" 0.0;
- signal: "bg.opaque";
- source: "indicator.prog";
- script {
- set_int(bg_set, 0);
- }
-
- }
- program {
- name: "bg_translucent";
- action: STATE_SET "default" 0.0;
- signal: "bg.translucent";
- source: "indicator.prog";
- script {
- set_int(bg_set, 1);
- }
-
- }
- program {
- name: "bg_transparent";
- signal: "bg.transparent";
- source: "indicator.prog";
- script {
- set_int(bg_set, 2);
- }
-
- }
- program {
- name: "bg_notification";
- signal: "bg.notification";
- source: "indicator.prog";
- script {
- set_int(bg_set, 3);
- }
-
- }
-
- program {
- name: "clock_size_default";
- signal: "indicator.clock.default";
- source: "indicator.prog";
- script {
- set_state(PART:"elm.rect.clock", "default", 0.0);
- }
-
- }
- program {
- name: "clock_size_ampm";
- signal: "indicator.clock.ampm";
- source: "indicator.prog";
- script {
- set_state(PART:"elm.rect.clock", "ampm", 0.0);
- }
-
- }
-
- program {
- name: "show.clip.noeffect";
- in: 0.15 0.0;
- action: STATE_SET "show" 0.0;
- signal: "indicator.clip.show.noeffect";
- source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
- }
-
- program {
- name: "show.clip";
- in: 0.15 0.0;
- action: STATE_SET "show" 0.0;
- signal: "indicator.clip.show";
- source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
- transition: LINEAR 0.15;
- }
-
- program {
- name: "hide.clip.noeffect";
- action: STATE_SET "default" 0.0;
- signal: "indicator.clip.hide.noeffect";
- source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
- }
-
- program {
- name: "hide.clip";
- action: STATE_SET "default" 0.0;
- signal: "indicator.clip.hide";
- source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
- transition: LINEAR 0.15;
- }
-
- program {
- name: "show.noti.noeffect";
- action: STATE_SET "show" 0.0;
- signal: "indicator.noti.show.noeffect";
- source: "indicator.prog";
- target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
- target: "elm.swallow.fixed1";
- target: "elm.swallow.fixed2";
- target: "elm.rect.transparent";
- target: "elm.swallow.fixed0";
- target: "elm.swallow.fixed4";
- target: "elm.text.clock";
- target: "clock.padding.bottom";
- target: "elm.rect.bg";
- target: "seperator.image2";
- }
-
- program {
- name: "show.noti";
- action: STATE_SET "show" 0.0;
- signal: "indicator.noti.show";
- source: "indicator.prog";
- target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
- target: "elm.swallow.fixed1";
- target: "elm.swallow.fixed2";
- target: "elm.rect.transparent";
- target: "elm.swallow.fixed0";
- target: "elm.swallow.fixed4";
- target: "elm.text.clock";
- target: "clock.padding.bottom";
- target: "elm.rect.bg";
- target: "seperator.image2";
- transition: LINEAR 0.3;
- }
-
- program {
- name: "hide.noti.noeffect";
- action: STATE_SET "default" 0.0;
- signal: "indicator.noti.hide.noeffect";
- source: "indicator.prog";
- target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
- target: "elm.swallow.fixed1";
- target: "elm.swallow.fixed2";
- target: "elm.rect.transparent";
- target: "elm.swallow.fixed0";
- target: "elm.swallow.fixed4";
- target: "elm.text.clock";
- target: "clock.padding.bottom";
- target: "elm.rect.bg";
- target: "seperator.image2";
- }
-
- program {
- name: "hide.noti";
- action: STATE_SET "default" 0.0;
- signal: "indicator.noti.hide";
- source: "indicator.prog";
- target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
- target: "elm.swallow.fixed1";
- target: "elm.swallow.fixed2";
- target: "elm.rect.transparent";
- target: "elm.swallow.fixed0";
- target: "elm.swallow.fixed4";
- target: "elm.text.clock";
- target: "clock.padding.bottom";
- target: "elm.rect.bg";
- target: "seperator.image2";
- transition: LINEAR 0.3;
- }
-
-
- program {
- name: "badge_show";
- signal: "badge,show,1";
- source: "elm.image.badge";
- script {
- if (get_int(badge_set) == 0) {
- set_int(badge_set, 1);
- if (get_int(theme) == 2) {
- set_state(PART:"elm.image.badge", "show2", 0.0);
- set_state(PART:"elm.text.badge", "default2", 0.0);
- } else {
- set_state(PART:"elm.image.badge", "show", 0.0);
- set_state(PART:"elm.text.badge", "default", 0.0);
- }
- }
- }
- }
-
- program {
- name: "badge_hide";
- signal: "badge,hide,1";
- source: "elm.image.badge";
- script {
- if (get_int(badge_set) == 1) {
- set_int(badge_set, 0);
- set_state(PART:"elm.image.badge", "default", 0.0);
- }
- }
- }
- }
- }
-}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 "indicator_gui.h"
#include "indicator_common.edc"
+
+images {
+ image: "icons/Power/battery_text/B03_stat_sys_battery_num_100.png" COMP;
+}
+
collections {
+ base_scale: 1.7;
+
group {
name: "indicator";
script {
{
style {
name: "textblock_style";
- base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF ";
+ base: "font=Tizen:style=Regular text_class=tizen color=#FFFFFFFF color_class=AO004";
+ }
+ style {
+ name: "textblock_style_24";
+ base: "font=Tizen:style=Regular color=#FFFFFFFF valign=middle align=center color_class=AO004 font_size=36 text_class=ATO001";
}
style {
name: "textblock_outline_style";
- base: "font=Tizen:style=Medium text_class=tizen color=#FFFFFFFF";
+ base: "font=Tizen:style=Bold text_class=tizen color=#FFFFFFFF";
}
style {
name: "message_style";
- base: "font=Tizen:style=Medium text_class=tizen font_size=23 color=#FFFFFFCC valign=middle wrap=none ellipsis=1";
+ base: "font=Tizen:style=Regular text_class=tizen font_size=29 color=#FFFFFFFF valign=middle wrap=none ellipsis=1";
+ }
+ style {
+ name: "message_style2";
+ base: "font=Tizen:style=Regular text_class=tizen font_size=29 color=#FFFFFFFF valign=middle wrap=none ellipsis=1";
+ }
+ style {
+ name: "message_style_compare";
+ base: "font=Tizen:style=Regular text_class=tizen font_size=29 color=#FFFFFFFF valign=middle wrap=none ellipsis=0";
+ }
+ style {
+ name: "plmn_style";
+ base: "font=Tizen:style=Bold text_class=tizen font_size=35 color=#FFFFFFFF valign=middle wrap=none ellipsis=1";
}
}
images {
- image: "B03_Status_bar_line.PNG" COMP;
+ image: "B03_indicator_bg.png" COMP;
+ image: "B03_OrangeF.png" COMP;
+ image: "B03_conection_not_UPdownload.png" COMP;
+ image: "B03_connection_UPload.png" COMP;
+ image: "B03_connection_download.png" COMP;
+ image: "B03_conection_UPdownload.png" COMP;
+ image: "B03_search_divider.png" COMP;
+ image: "B03_notification.png" COMP;
+ image: "B03_notification_press.png" COMP;
+ image: "B03_notify_more.png" COMP;
}
parts {
}
}
+ /* Left padding */
+ part {
+ name: "resize_padding.left";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 { relative: 0.0 0.0; to: "elm.rect.bg"; }
+ rel2 { relative: 0.0 1.0; to: "elm.rect.bg"; }
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ description {
+ state: "1" 0.0;
+ inherit: "default" 0.0;
+ min: 1 0;
+ color: 255 0 0 255;
+ }
+ description {
+ state: "2" 0.0;
+ inherit: "default" 0.0;
+ min: 2 0;
+ color: 0 255 0 255;
+ }
+ description {
+ state: "3" 0.0;
+ inherit: "default" 0.0;
+ min: 3 0;
+ color: 0 0 255 255;
+ }
+ description {
+ state: "4" 0.0;
+ inherit: "default" 0.0;
+ min: 4 0;
+ color: 255 255 0 255;
+ }
+ }
part {
name: "padding.left";
type: RECT;
state: "default" 0.0;
min: LEFT_PADDING_WIDTH 0;
fixed: 1 0;
- rel1.relative: 0.0 0.0;
- rel2.relative: 0.0 1.0;
- color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to: "elm.rect.bg"; }
+ rel2 { relative: 0.0 1.0; to: "elm.rect.bg"; }
+ align: 0.0 0.0;
+ color:0 0 0 0;
visible: 0;
}
+ description {
+ state: "scover" 0.0;
+ inherit: "default" 0.0;
+ min: 72 0;
+ }
}
+ /* Right padding */
+ part {
+ name: "resize_padding.right";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.0; to: "elm.rect.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.rect.bg"; }
+ align: 0.0 0.0;
+ visible: 0;
+ }
+ description {
+ state: "1" 0.0;
+ inherit: "default" 0.0;
+ min: 1 0;
+ color: 255 0 0 255;
+ }
+ description {
+ state: "2" 0.0;
+ inherit: "default" 0.0;
+ min: 2 0;
+ color: 0 255 0 255;
+ }
+ description {
+ state: "3" 0.0;
+ inherit: "default" 0.0;
+ min: 3 0;
+ color: 0 0 255 255;
+ }
+
+ description {
+ state: "4" 0.0;
+ inherit: "default" 0.0;
+ min: 4 0;
+ color: 255 255 0 255;
+ }
+ }
part {
name: "padding.right";
type: RECT;
state: "default" 0.0;
min: RIGHT_PADDING_WIDTH 0;
fixed: 1 0;
- rel1.relative: 1.0 0.0;
- color: 0 0 0 0;
+ rel1 { relative: 1.0 0.0; to: "elm.rect.bg"; }
+ rel2 { relative: 1.0 1.0; to: "elm.rect.bg"; }
+ align: 1.0 0.0;
+ color : 0 0 0 0;
visible: 0;
}
+ description {
+ state: "scover" 0.0;
+ inherit: "default" 0.0;
+ min: 72 0;
+ }
+ description {
+ state: "dynamic" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0; to: "resize_padding.right";
+ offset : 73 0;
+ }
+ rel2 {
+ relative: 1.0 1.0; to: "resize_padding.right";
+ offset : 73 0;
+ }
+ align: 1.0 0.0;
+ }
+
}
part {
- name: "elm.rect.bg";
+ name: "elm.rect.bg.base";
type: RECT;
scale: 1;
mouse_events: 0;
relative: 1.0 1.0;
to: "background";
}
+ visible:0;
+ }
+ description {
+ state: "hide" 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "background";
+ }
+ rel2 {
+ relative: 1.0 2.0;
+ to: "background";
+ }
+ visible:0;
+ }
+ }
+ part {
+ name: "elm.rect.bg";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.rect.bg.base";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.rect.bg.base";
+ }
color: INDI_DEFAULT_BG_TRANSPARENT;
}
description {
description {
state: "translucent" 0.0;
inherit: "default" 0.0;
- color: INDI_DEFAULT_BG_TRANSLUCENT;
-
}
description {
state: "notification" 0.0;
inherit: "default" 0.0;
- color: 0 0 0 0;
- visible: 0;
-
+ }
+ description {
+ state: "transparent_slide" 0.0;
+ inherit: "default" 0.0;
}
description {
state: "transparent" 0.0;
- inherit: "notification" 0.0;
- color: INDI_DEFAULT_BG_TRANSPARENT;
+ inherit: "default" 0.0;
+ }
+ }
+
+ part {
+ name: "elm.rect.bg.call";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "elm.rect.bg";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "elm.rect.bg";
+ }
+ visible: 0;
+ }
+ description {
+ state: "during_call" 0.0;
+ inherit: "default" 0.0;
+ color_class:"AO005";
+ visible : 1;
+ }
+ description {
+ state: "call_hold" 0.0;
+ inherit: "default" 0.0;
+ color_class:"AO007";
+ visible : 1;
+ }
+ description {
+ state: "call_end" 0.0;
+ inherit: "default" 0.0;
+ color_class:"AO006";
+ visible : 1;
}
}
part {
- name: "elm.rect.left_con";
+ name: "elm.rect.right_con";
type: RECT;
scale: 1;
mouse_events: 0;
description {
state: "default" 0.0;
visible: 0;
- rel1 { relative: 1.0 0.0; to_x: padding.separator; to_y: elm.rect.bg; }
- rel2 { relative: 0.0 1.0; to_x: padding.separator2; to_y: elm.rect.bg; }
+ rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.bg; }
+ rel2 { relative: 0.0 1.0; to_x: elm.swallow.fixed6; to_y: elm.rect.bg; }
align: 0.0 0.0;
}
}
}
part {
- name: "message.bg";
+ name: "plmn.bg";
type: RECT;
scale: 1;
mouse_events: 0;
visible: 0;
min: 0 INDICATOR_HEIGHT;
fixed: 0 1;
- rel1 { relative: 0.0 1.0; to: "elm.rect.middle_con"; }
- rel2 { relative: 1.0 1.0; to: "elm.rect.middle_con"; }
+ rel1 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.swallow.noti; }
+ rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.swallow.noti; }
align: 0.0 0.0;
visible: 0;
}
}
-
part {
- name: "message.padding.left";
+ name: "plmn.padding.left";
type: RECT;
scale: 1;
mouse_events: 0;
fixed: 1 0;
rel1 {
relative: 0.0 0.0;
- to: "message.bg";
+ to: "plmn.bg";
}
rel2 {
relative: 0.0 1.0;
- to: "message.bg";
+ to: "plmn.bg";
}
align: 0.0 0.0;
visible: 0;
}
}
part {
- name: "message.padding.right";
- type: RECT;
+ name: "plmn.text";
+ type: TEXTBLOCK;
scale: 1;
mouse_events: 0;
description {
state: "default" 0.0;
- min: MESSAGE_PADDING 0;
- fixed: 1 0;
+ fixed: 1 1;
+ visible: 1;
rel1 {
- relative: 1.0 0.0;
- to: "message.bg";
+ relative: 1.0 1.0;
+ to_x: "plmn.padding.left";
+ to_y: "plmn.bg";
}
+
rel2 {
- relative: 1.0 1.0;
- to: "message.bg";
+ relative: 0.0 0.0;
+ to_x: "plmn.padding.right";
+ to_y: "plmn.bg";
+ }
+ text {
+ style: "plmn_style";
+ min: 0 1;
}
- align: 1.0 0.0;
- visible: 0;
- }
- }
- part {
- name: "message.padding.top";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- min: 0 INDICATOR_PADDING_H;
- fixed: 0 1;
- rel1 { relative: 0.0 0.0; to: "message.bg"; }
- rel2 { relative: 1.0 0.0; to: "message.bg"; }
- align: 0.0 0.0;
- visible: 0;
}
}
part {
- name: "message.padding.bottom";
+ name: "plmn.padding.right";
type: RECT;
scale: 1;
mouse_events: 0;
description {
state: "default" 0.0;
- min: 0 INDICATOR_PADDING_H;
- fixed: 0 1;
- rel1 { relative: 0.0 1.0; to: "message.bg"; }
- rel2 { relative: 1.0 1.0; to: "message.bg"; }
- align: 0.0 1.0;
- visible: 0;
- }
-
- }
- part {
- name: "message.text";
- type: TEXTBLOCK;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- fixed: 1 1;
- visible: 1;
+ min: 0 0;
+ fixed: 1 0;
rel1 {
- relative: 1.0 1.0;
- to_x: "message.padding.left";
- to_y: "message.bg";
+ relative: 1.0 0.0;
+ to: "plmn.bg";
}
-
rel2 {
- relative: 0.0 0.0;
- to_x: "message.padding.right";
- to_y: "message.bg";
- }
- text {
- style: "message_style";
- min: 0 1;
+ relative: 1.0 1.0;
+ to: "plmn.bg";
}
+ align: 1.0 0.0;
+ visible: 0;
}
}
scale: 1;
description {
state: "default" 0.0;
- min: HOME_PADDING_PORTRAIT APPTRAY_ICON_HEIGHT;
+#ifndef _INDICATOR_REMOVE_SEARCH
+ min: HOME_PADDING_PORTRAIT FIXED4_ICON_HEIGHT;
+#else
+ min: 0 0;
+#endif
fixed: 1 0;
- rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.left_con; }
- rel2 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.rect.left_con; }
+ rel1 { relative: 1.0 0.0; to_x: padding.left; to_y: elm.rect.right_con; }
+ rel2 { relative: 1.0 1.0; to_x: padding.left; to_y: elm.rect.right_con; }
align: 0.0 0.5;
visible: 1;
}
}
+ part {
+ name: "padding.separator";
+ type: SPACER;
+ mouse_events: 0;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+#ifndef _INDICATOR_REMOVE_SEARCH
+ min: PADDING_WIDTH/2 0;
+#else
+ min: 0 0;
+#endif
+ fixed: 1 0;
+ rel1 { relative: 0.0 0.0; to_x: elm.swallow.fixed6; to_y: elm.rect.right_con; }
+ rel2 { relative: 0.0 1.0; to_x: elm.swallow.fixed6; to_y: elm.rect.right_con; }
+ align: 1.0 0.5;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ fixed: 1 1;
+ }
+ }
+ /* Separator Padding */
part {
name: "seperator.image";
type: IMAGE;
mouse_events: 0;
description {
state: "default" 0.0;
- visible: 0;
- min: 4 36;
+#ifndef _INDICATOR_REMOVE_SEARCH
+ min: 3 44;
+#else
+ min: 0 0;
+#endif
fixed: 1 1;
- image.normal: "B03_Status_bar_line.PNG";
- rel1 {
- relative: 1.0 0.5;
- to_x: "elm.swallow.fixed0";
- to_y: "elm.rect.bg";
- }
- rel2 {
- relative: 1.0 0.5;
- to_x: "elm.swallow.fixed0";
- to_y: "elm.rect.bg";
- }
- align: 0.0 0.5;
- visible : 0;
+ image.normal: "B03_search_divider.png";
+ color_class:"AO004";
+ rel1 { relative: 0.0 0.5; to_x: padding.separator; to_y: elm.rect.right_con; }
+ rel2 { relative: 0.0 0.5; to_x: padding.separator; to_y: elm.rect.right_con; }
+ align: 1.0 0.5;
+ visible : 1;
}
description {
- state: "show" 0.0;
+ state: "hide" 0.0;
inherit: "default" 0.0;
+ min: 0 0;
+ fixed: 1 1;
visible : 0;
}
}
part {
- name: "padding.separator";
- type: RECT;
+ name: "padding.separator2";
+ type: SPACER;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
+#ifndef _INDICATOR_REMOVE_SEARCH
min: PADDING_WIDTH 0;
+#else
+ min: 0 0;
+#endif
fixed: 1 0;
- rel1 {
- relative: 1.0 1.0;
- to_x: "seperator.image";
- to_y: "padding.top";
- }
- rel2 {
- relative: 1.0 0.0;
- to_x: "seperator.image";
- to_y: "padding.bottom";
- }
- align: 0.0 0.5;
- visible: 1;
- color: 0 0 0 0;
+ rel1 { relative: 0.0 0.0; to_x: seperator.image; to_y: elm.rect.right_con; }
+ rel2 { relative: 0.0 1.0; to_x: seperator.image; to_y: elm.rect.right_con; }
+ align: 1.0 0.5;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ fixed: 1 1;
}
}
- DYNAMIC_RECT_FROM_LEFT( "elm.rect.fixed2", "elm.swallow.fixed3", "elm.rect.middle_con", DEFAULT_ICON_PADDING, FIXED4_DYNAMIC_PADDING, INDI_DEFAULT_BG_COLOR, 0)
- SWALLOW_PART_FROM_LEFT_WITH_EFFECT( "elm.swallow.fixed2", "elm.rect.fixed2", "elm.rect.middle_con", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
-
- FIXED_RECT_FROM_LEFT( "elm.rect.fixed3", "elm.swallow.fixed2", "elm.rect.middle_con", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_COLOR, 0)
- SWALLOW_PART_FROM_LEFT_WITH_EFFECT( "elm.swallow.fixed1", "elm.rect.fixed3", "elm.rect.middle_con", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
-
- FIXED_RECT_FROM_LEFT( "elm.rect.nonfixed", "elm.swallow.fixed1", "elm.rect.middle_con", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_COLOR, 0)
- SWALLOW_PART_FROM_LEFT_WITH_EFFECT( "elm.swallow.nonfixed", "elm.rect.nonfixed", "elm.rect.middle_con", 0, 0)
-
- SWALLOW_PART_FROM_RIGHT_WITH_EFFECT( "elm.swallow.noti", "clock.padding.left", "elm.rect.middle_con", 0, 0)
-
+ //battery
part {
- name: elm.swallow.fixed4;
+ name: "elm.swallow.fixed8";
type: SWALLOW;
- mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- min: HOME_PADDING_PORTRAIT APPTRAY_ICON_HEIGHT;
+ min: BATTERY_ICON_WIDTH BATTERY_ICON_HEIGHT;
fixed: 1 0;
- rel1 { relative: 0.0 0.0; to_x: padding.right; to_y: elm.rect.left_con; }
- rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.rect.left_con; }
+ rel1 { relative: 0.0 0.0; to_x: "padding.right"; to_y: "elm.rect.bg"; }
+ rel2 { relative: 0.0 1.0; to_x: "padding.right"; to_y: "elm.rect.bg"; }
+ align: 1.0 0.5;
+ visible: 1;
+ }
+ description
+ {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ max: 0 0;
+ }
+ }
+
+ part {
+ name: "percentage.digit.box";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 7 10;
+ max: 7 10;
+ rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed8"; }
+ rel2 { relative: 1.0 1.0; to_x: "elm.swallow.fixed8"; offset: -8 -14; }
align: 1.0 0.5;
visible: 1;
}
+ description {
+ state: "two_digits" 0.0;
+ inherit: "default" 0.0;
+ min: 15 10;
+ max: 15 10;
+ rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed8"; }
+ rel2 { relative: 1.0 1.0; to_x: "elm.swallow.fixed8"; offset: -4 -14; }
+ }
+ description {
+ state: "three_digits" 0.0;
+ inherit: "default" 0.0;
+ min: 17 10;
+ max: 17 10;
+ rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed8"; }
+ rel2 { relative: 1.0 1.0; to_x: "elm.swallow.fixed8"; offset: -3 -14; }
+ }
}
+ //////////////////////////////////////////
+ ///////// LEFT SIDE /////////////////////
+ //////////////////////////////////////////
+
+ /* ICON_FIXED3 (RSSI 1) + PADDING_FIXED4(RIGHT, FIXED PADDING) */
+ FIXED_RECT_FROM_LEFT( "elm.rect.rssi1", "padding.left", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+ SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed1", "elm.rect.rssi1", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+ /* ICON_FIXED4 (RSSI 2) + PADDING_FIXED5(RIGHT, FIXED PADDING) */
+ FIXED_RECT_FROM_LEFT( "elm.rect.rssi2", "elm.swallow.fixed1", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+ SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed2", "elm.rect.rssi2", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+ /* ICON_FIXED2 (Sim Icon) + PADDING_FIXED3(RIGHT, FIXED PADDING) */
+ FIXED_RECT_FROM_LEFT( "elm.rect.simicon", "elm.swallow.fixed2", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+ SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed3", "elm.rect.simicon", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+ /* ICON_FIXED1 (Connection-3G) + PADDING_NONFIXED1(RIGHT,DYNAMIC PADDING) */
+ FIXED_RECT_FROM_LEFT( "elm.rect.connection", "elm.swallow.fixed3", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+ SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed4", "elm.rect.connection", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+ /* Connection-3G UpDown arrow icon */
part {
- name: "seperator.image2";
+ name: "elm.image.updown1";
type: IMAGE;
scale: 1;
mouse_events: 0;
description {
state: "default" 0.0;
+ rel1 { relative: 0.5 0.5; to_x: elm.swallow.fixed4; to_y: elm.rect.bg; }
+ rel2 { relative: 0.5 0.5; to_x: elm.swallow.fixed4; to_y: elm.rect.bg; }
+ min: 25 25;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ color_class:"AO004";
+ visible: 0;
+ }
+ description {
+ state: "none" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_conection_not_UPdownload.png";
+ }
+ visible: 1;
+ }
+ description {
+ state: "upload" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_connection_UPload.png";
+ }
+ visible: 1;
+ }
+ description {
+ state: "download" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_connection_download.png";
+ }
+ visible: 1;
+ }
+ description {
+ state: "updownload" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_conection_UPdownload.png";
+ }
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
visible: 0;
- min: 4 36;
+ }
+
+ }
+ /* ICON_FIXED1 (Wi-Fi) + PADDING_NONFIXED1(RIGHT,DYNAMIC PADDING) */
+ FIXED_RECT_FROM_LEFT( "elm.rect.wifi", "elm.swallow.fixed4", "elm.rect.bg", DEFAULT_ICON_PADDING, INDI_DEFAULT_BG_TEST, 0)
+ SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed5", "elm.rect.wifi", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+ /* Wi-Fi UpDown arrow icon */
+ part {
+ name: "elm.image.updown2";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.5 0.5; to_x: elm.swallow.fixed5; to_y: elm.rect.bg; }
+ rel2 { relative: 0.5 0.5; to_x: elm.swallow.fixed5; to_y: elm.rect.bg; }
+ min: 25 25;
fixed: 1 1;
- image.normal: "B03_Status_bar_line.PNG";
- rel1 {
- relative: 0.0 0.5;
- to_x: "elm.swallow.fixed4";
- to_y: "elm.rect.bg";
+ align: 0.5 0.5;
+ color_class:"AO004";
+ visible: 0;
+ }
+ description {
+ state: "none" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_conection_not_UPdownload.png";
}
- rel2 {
- relative: 0.0 0.5;
- to_x: "elm.swallow.fixed4";
- to_y: "elm.rect.bg";
+ visible: 1;
+ }
+ description {
+ state: "upload" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_connection_UPload.png";
}
- align: 1.0 0.5;
- visible : 0;
+ visible: 1;
}
description {
- state: "show" 0.0;
+ state: "download" 0.0;
inherit: "default" 0.0;
- visible : 0;
+ image {
+ normal:"B03_connection_download.png";
+ }
+ visible: 1;
+ }
+ description {
+ state: "updownload" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"B03_conection_UPdownload.png";
+ }
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
}
+
}
+ /* Connection1 (NON_FIXED) (BT) */
+ FIXED_RECT_FROM_LEFT( "elm.rect.bt", "elm.swallow.fixed5", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 255 0 255, 0)
+ SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed6", "elm.rect.bt", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+ /* Connection2 (NON_FIXED) (WiFi-direct) */
+ FIXED_RECT_FROM_LEFT( "elm.rect.wifidirect", "elm.swallow.fixed6", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 0 255 255, 0)
+ SWALLOW_PART_FROM_LEFT_WITH_SPACE( "elm.swallow.fixed7", "elm.rect.wifidirect", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+
+ //////////////////////////////////////////
+ ///////// RIGHT SIDE /////////////////////
+ //////////////////////////////////////////
+
+ /* System (Sound Profile, Call divert, Alarm, GPS) */
+ FIXED_RECT_FROM_RIGHT( "elm.rect.system", "elm.swallow.fixed8", "elm.rect.bg", DEFAULT_ICON_PADDING, 255 0 0 255, 0)
+ SWALLOW_PART_FROM_RIGHT_WITH_SPACE( "elm.swallow.system", "elm.rect.system", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+ /* MiniCtrl (Call, Music/FM Radio, Voice recorder) */
+ FIXED_RECT_FROM_RIGHT( "elm.rect.minictrl", "elm.swallow.system", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 255 0 255, 0)
+ SWALLOW_PART_FROM_RIGHT_WITH_SPACE( "elm.swallow.minictrl", "elm.rect.minictrl", "elm.rect.bg", DEFAULT_ICON_WIDTH, DEFAULT_ICON_HEIGHT )
+
+ /* NOTI(R1~R5) */
+ FIXED_RECT_FROM_RIGHT( "elm.rect.noti", "elm.swallow.minictrl", "elm.rect.bg", DEFAULT_ICON_PADDING, 0 0 255 255, 0)
+ SWALLOW_PART_FROM_RIGHT_WITH_SPACE( "elm.swallow.noti", "elm.rect.noti", "elm.rect.middle_con", 0, 0)
+
+ /* more */
+ SWALLOW_PART_FROM_RIGHT_WITH_EFFECT( "elm.swallow.fixed10", "elm.swallow.noti", "elm.rect.middle_con", 0, 0)
+
+#ifdef _SUPPORT_SCREEN_READER
part {
- name: "padding.separator2";
+ name: elm.swallow.fixed9.access;
type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 0;
+ rel1.to: elm.swallow.fixed9;
+ rel2.to: elm.swallow.fixed9;
+ visible: 1;
+ color:0 0 0 0;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ visible: 0;
+ }
+ }
+#endif
+ part {
+ name: elm.swallow.fixed9;
+ type: SWALLOW;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- min: PADDING_WIDTH 0;
+#ifndef _INDICATOR_REMOVE_SEARCH
+ min: HOME_PADDING_PORTRAIT FIXED4_ICON_HEIGHT;
+#else
+ min: 0 0;
+#endif
fixed: 1 0;
- rel1 {
- relative: 1.0 1.0;
- to_x: "seperator.image2";
- to_y: "padding.top";
- }
- rel2 {
- relative: 1.0 0.0;
- to_x: "seperator.image2";
- to_y: "padding.bottom";
+ rel1 { relative: 0.0 0.0; to_x: padding.right; to_y: elm.rect.right_con; }
+ rel2 { relative: 0.0 1.0; to_x: padding.right; to_y: elm.rect.right_con; }
+ align: 1.0 0.5;
+ visible: 1;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ fixed:1 0;
+ visible: 0;
+ }
+ }
+ part {
+ name: "elm.image.plmn";
+ type: IMAGE;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ color: 100 100 100 100;
+ rel1 { relative: 0.0 0.5; to_x: elm.swallow.fixed8; to_y: elm.rect.right_con; }
+ rel2 { relative: 0.0 0.5; to_x: elm.swallow.fixed8; to_y: elm.rect.right_con; }
+ align: 1.0 0.5;
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 112 31;
+ fixed: 1 1;
+ image {
+ normal:"B03_OrangeF.png";
}
- align: 0.0 0.5;
+ color_class:"AO004";
visible: 1;
- color: 0 0 0 0;
}
}
-
part {
- name: "clock.padding.left";
+ name: "plmn_dynamic.padding.left";
type: RECT;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- min: 12 0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.5; to_x: elm.swallow.fixed9; to_y: elm.rect.right_con; }
+ rel2 { relative: 1.0 0.5; to_x: elm.swallow.fixed9; to_y: elm.rect.right_con; }
+ color : 255 0 0 125;
+ visible: 0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 30 0;
fixed: 1 0;
- rel1.to_x: "elm.rect.clock";
- rel2 { relative: 0.0 1.0; to_x: "elm.rect.clock"; }
visible: 0;
}
}
-
part {
- name: "clock.padding.top";
- type: RECT;
- mouse_events: 0;
+ name: "elm.image.plmn_dynamic";
+ type: IMAGE;
scale: 1;
+ mouse_events: 0;
description {
state: "default" 0.0;
- min: 116 5;
- fixed: 1 1;
- rel1 { relative: 0.5 0.0; to_x: elm.rect.bg; to_y: elm.rect.middle_con; }
- rel2 { relative: 0.5 0.0; to_x: elm.rect.bg; to_y: elm.rect.middle_con; }
+ min: 0 0;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.5; to_x:plmn_dynamic.padding.left; to_y: elm.rect.right_con; }
+ rel2 { relative: 1.0 0.5; to_x:plmn_dynamic.padding.left; to_y: elm.rect.right_con; }
+ align: 0.0 0.5;
visible: 0;
}
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 112 31;
+ fixed: 1 1;
+ image {
+ normal:"B03_OrangeF.png";
+ }
+ visible: 1;
+ }
}
part {
- name: "elm.rect.clock";
+ name: "plmn_dynamic.padding.right";
type: RECT;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- min: CLOCK_WIDTH CLOCK_HEIGHT;
- fixed: 1 1;
- rel1 { relative: 0.5 1.0; to: "clock.padding.top"; }
- rel2 { relative: 0.5 1.0; to: "clock.padding.top"; }
- align: 0.5 0.0;
+ min: 0 0;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.5; to_x: elm.image.plmn_dynamic; to_y: elm.rect.right_con; }
+ rel2 { relative: 1.0 0.5; to_x: elm.image.plmn_dynamic; to_y: elm.rect.right_con; }
+ color : 255 0 0 125;
visible: 0;
}
description {
- state: "ampm" 0.0;
- min: CLOCK_WIDTH CLOCK_HEIGHT;
- fixed: 1 1;
- rel1 { relative: 0.5 1.0; to: "clock.padding.top"; }
- rel2 { relative: 0.5 1.0; to: "clock.padding.top"; }
- align: 0.5 0.0;
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ min: 5 0;
+ fixed: 1 0;
visible: 0;
}
}
part {
- name: "elm.rect.innerclock";
+ name: "clock.padding.left";
type: RECT;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- rel1 { relative: 0.5 0.5; to: "elm.rect.clock";}
- rel2 { relative: 0.5 0.5; to: "elm.rect.clock";}
+ min: 5 0;
+ fixed: 1 0;
+ rel1 { relative: 0.0 0.0; to_x: elm.text.clock; to_y: elm.rect.bg; }
+ rel2 { relative: 0.0 1.0; to_x: elm.text.clock; to_y: elm.rect.bg; }
+ align: 1.0 0.5;
+ visible: 0;
}
}
+
part {
name: "elm.text.clock";
type: TEXTBLOCK;
- mouse_events: 0;
scale: 1;
+ mouse_events: 0;
description {
state: "default" 0.0;
- rel1.to: "elm.rect.innerclock";
- rel2.to: "elm.rect.innerclock";
+ rel1 { relative: 1.0 0.0; to: "elm.rect.bg"; }
+ rel2 { relative: 0.0 1.0; to: "elm.rect.bg"; }
+ align: 0.5 0.5;
fixed: 1 1;
text {
- style: "textblock_style";
min: 1 1;
+ style: "textblock_style";
align: 0.5 0.5;
}
}
style: "textblock_outline_style";
}
}
- }
-
- part {
- name: "elm.swallow.fixed3";
- type: SWALLOW;
- mouse_events: 0;
- scale: 1;
description {
- state: "default" 0.0;
- min: BATTERY_ICON_WIDTH BATTERY_ICON_HEIGHT;
- fixed: 1 1;
- rel1 { relative: 0.5 0.0; to: "clock.padding.bottom"; }
- rel2 { relative: 0.5 0.0; to: "clock.padding.bottom"; }
- align: 0.5 1.0;
- visible: 1;
+ state: "size24" 0.0;
+ inherit: "default" 0.0;
+ text {
+ style: "textblock_style_24";
+ }
+ }
+ description {
+ state: "invisible" 0.0;
+ inherit: "default" 0.0;
+ visible:0;
}
}
-
part {
- name: "clock.padding.bottom";
+ name: "clock.padding.right";
type: RECT;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- min: 116 5;
- fixed: 1 1;
- rel1 { relative: 0.5 1.0; to: "elm.rect.bg";}
- rel2 { relative: 0.5 1.0; to: "elm.rect.bg";}
- align: 0.5 1.0;
+ min: 2 0;
+ fixed: 1 0;
+ rel1 { relative: 1.0 0.0; to_x: "elm.text.clock"; to_y: "elm.rect.bg"; }
+ rel2 { relative: 1.0 1.0; to_x: "elm.text.clock"; to_y: "elm.rect.bg"; }
+ align: 1.0 0.5;
visible: 0;
}
}
-
part {
- name: "clock.padding.right";
- type: RECT;
+ name: "indicator.alarm.icon";
+ type: SWALLOW;
mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- min: 12 0;
+ min: DEFAULT_ICON_WIDTH DEFAULT_ICON_HEIGHT;
+ rel1 { relative: 1.0 0.0; to_x: "clock.padding.right"; to_y: "elm.rect.bg"; }
+ rel2 { relative: 1.0 1.0; to_x: "clock.padding.right"; to_y: "elm.rect.bg"; }
fixed: 1 0;
- rel1 { relative: 1.0 0.0; to_x: "elm.rect.clock"; }
- rel2 { relative: 0.0 1.0; to_x: "elm.rect.clock"; }
- visible: 0;
+ align: 0.0 0.0;
}
}
+#ifdef _SUPPORT_SCREEN_READER
part {
- name: "elm.padding.badge.left";
+ name: "elm.rect.clock.access";
type: RECT;
- mouse_events: 0;
scale: 1;
description {
state: "default" 0.0;
- min: 3 0;
- fixed: 1 0;
- rel1.to: "elm.text.badge";
- rel2 { to: "elm.text.badge"; relative: 0.0 1.0; }
- align: 1.0 0.5;
+ rel1 { relative: 0.0 0.0; to_x: "elm.swallow.fixed5"; to_y: "elm.swallow.fixed5"; }
+ rel2 { relative: 1.0 1.0; to_x: "elm.rect.clock"; to_y: "elm.rect.clock"; }
visible: 1;
+ color:0 0 0 0;
}
}
+#endif
part {
- name: "elm.padding.badge.right";
+ name: "message.bg";
type: RECT;
- mouse_events: 0;
scale: 1;
+ mouse_events: 0;
description {
state: "default" 0.0;
- min: 3 0;
- fixed: 1 0;
- rel1 { to: "elm.text.badge"; relative: 1.0 0.0; }
- rel2.to: "elm.text.badge";
- align: 0.0 0.5;
+ min: 0 INDICATOR_HEIGHT;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "elm.rect.bg.base"; }
+ rel2 { relative: 1.0 0.0; to: "elm.rect.bg.base"; }
+ align: 0.0 1.0;
+ color: INDI_DEFAULT_BG_TRANSPARENT;
visible: 1;
}
+ description {
+ state: "transparent" 0.0;
+ inherit: "default" 0.0;
+ }
}
part {
- name: "elm.image.badge";
- type: IMAGE;
- mouse_events: 0;
+ name: "message.padding.left";
+ type: RECT;
scale: 1;
+ mouse_events: 0;
description {
state: "default" 0.0;
- min: 18 18;
- fixed: 1 1;
- rel1.to: "elm.padding.badge.left";
- rel2.to: "elm.padding.badge.right";
- image {
- border: 8 8 8 8;
- border_scale: 1;
- }
- visible: 0;
- }
- description {
- state: "show" 0.0;
- inherit: "default" 0.0;
- visible: 1;
+ min: MESSAGE_PADDING 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "message.bg";
+ }
+ rel2 {
+ relative: 0.0 1.0;
+ to: "message.bg";
+ }
+ align: 0.0 0.0;
+ visible: 0;
}
description {
- state: "show2" 0.0;
+ state: "scover" 0.0;
inherit: "default" 0.0;
- visible: 1;
+ min: 72 0;
}
}
-
part {
- name: "elm.text.badge";
- type: TEXT;
- mouse_events: 0;
+ name: "message.padding.right";
+ type: RECT;
scale: 1;
+ mouse_events: 0;
description {
state: "default" 0.0;
- rel1 { to: "elm.rect.clock"; relative: 0.95 0.2; }
- rel2 { to: "elm.rect.clock"; relative: 0.95 0.2; }
- color: 255 255 255 255;
- align: 1.0 0.0;
- text {
- font: "Tizen";
- size: 15;
- min: 1 0;
- align: 0.5 0.5;
+ min: MESSAGE_PADDING 0;
+ fixed: 1 0;
+ rel1 {
+ relative: 1.0 0.0;
+ to: "message.bg";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "message.bg";
}
+ align: 1.0 0.0;
+ visible: 0;
}
description {
- state: "default2" 0.0;
+ state: "scover" 0.0;
inherit: "default" 0.0;
- color: 0 0 0 255;
+ min: 72 0;
+ }
+ }
+ part {
+ name: "message.padding.top";
+ type: RECT;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 0 INDICATOR_PADDING_H;
+ fixed: 0 1;
+ rel1 { relative: 0.0 0.0; to: "message.bg"; }
+ rel2 { relative: 1.0 0.0; to: "message.bg"; }
+ align: 0.0 0.0;
+ visible: 0;
}
}
part {
- name: "slide_clip";
+ name: "message.padding.bottom";
type: RECT;
scale: 1;
+ mouse_events: 0;
description {
state: "default" 0.0;
+ min: 0 INDICATOR_PADDING_H;
+ fixed: 0 1;
+ rel1 { relative: 0.0 1.0; to: "message.bg"; }
+ rel2 { relative: 1.0 1.0; to: "message.bg"; }
+ align: 0.0 1.0;
+ visible: 0;
+ }
+
+ }
+ part {
+ name: "message.text";
+ type: TEXTBLOCK;
+ scale: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ visible: 1;
rel1 {
- relative: 1.0 -1.0;
- to_x: "seperator.image";
- to_y: "elm.rect.bg";
+ relative: 1.0 0.0;
+ to_x: "message.padding.left";
+ to_y: "message.bg";
}
+
rel2 {
- relative: 1.0 1.0;
- to_x: "clock.padding.left";
- to_y: "elm.rect.bg";
+ relative: 0.0 1.0;
+ to_x: "message.padding.right";
+ to_y: "message.bg";
+ }
+ text {
+ style: "message_style";
+ min: 0 1;
}
- color: 255 255 255 0;
}
description {
- state: "show" 0.0;
+ state: "line2" 0.0;
+ inherit: "default" 0.0;
rel1 {
- relative: 1.0 0.0;
- to_x: "seperator.image";
- to_y: "elm.rect.bg";
+ relative: 1.0 1.0;
+ to_x: "message.padding.left";
+ to_y: "message.bg";
}
+
rel2 {
- relative: 1.0 1.0;
- to_x: "clock.padding.left";
- to_y: "elm.rect.bg";
+ relative: 0.0 2.0;
+ to_x: "message.padding.right";
+ to_y: "message.bg";
+ }
+ text {
+ style: "message_style2";
+ min: 0 1;
}
- color: 255 255 255 255;
+ visible: 0;
}
}
part {
- name: "slide_clip2";
- type: RECT;
+ name: "message.text.compare";
+ type: TEXTBLOCK;
scale: 1;
+ mouse_events: 0;
description {
state: "default" 0.0;
+ fixed: 1 1;
+ visible: 0;
rel1 {
- relative: 1.0 -1.0;
- to_x: "clock.padding.right";
- to_y: "elm.rect.bg";
+ relative: 0.0 0.0;
+ to: "message.text";
}
rel2 {
- relative: 0.0 1.0;
- to_x: "seperator.image2";
- to_y: "elm.rect.bg";
+ relative: 3.0 1.0;
+ to: "message.text";
+ }
+ text {
+ style: "message_style_compare";
+ min: 0 1;
}
- color: 255 255 255 0;
}
+ }
+ part {
+ name: "message.line2.text";
+ type: TEXTBLOCK;
+ scale: 1;
+ mouse_events: 0;
description {
- state: "show" 0.0;
+ state: "default" 0.0;
+ fixed: 1 1;
+ visible: 1;
rel1 {
- relative: 1.0 0.0;
- to_x: "clock.padding.right";
- to_y: "elm.rect.bg";
+ relative: 1.0 -1.0;
+ to_x: "message.padding.left";
+ to_y: "message.text";
}
+
rel2 {
- relative: 0.0 1.0;
- to_x: "seperator.image2";
- to_y: "elm.rect.bg";
+ relative: 0.0 0.0;
+ to_x: "message.padding.right";
+ to_y: "message.text";
+ }
+ text {
+ style: "message_style";
+ min: 0 1;
}
- color: 255 255 255 255;
}
}
-
}
programs {
+ /*********************************************************
+ *
+ * Fixed ICon
+ *
+ **********************************************************/
program {
- name: "change_padding_1";
- action: STATE_SET "changePad" 0.0;
- signal: "change,padding,1";
- source: "elm.rect.*";
- script {
- if (get_int(changepad) == 0) {
- set_int(changepad,1);
+ name: "message.show";
+ action: STATE_SET "hide" 0.0;
+ signal: "message.show";
+ source: "indicator.prog";
+ script
+ {
+ if (get_int(bg_set) == 0)
+ {
+ run_program(PROGRAM:"message.show.effect");
+ }
+ else if(get_int(bg_set) == 1)
+ {
+ run_program(PROGRAM:"message.show.effect");
+ }
+ else
+ {
+ run_program(PROGRAM:"message.show.noeffect");
}
}
}
program {
- name: "change_padding_2";
- action: STATE_SET "changePad" 0.0;
- signal: "change,padding,2";
- source: "elm.rect.*";
- script {
- if (get_int(changepad) == 1) {
- set_int(changepad,0);
- }
- }
+ name: "message.show.effect";
+ action: STATE_SET "hide" 0.0;
+ source: "indicator.prog";
+ target: "elm.rect.bg.base";
+ transition: LINEAR 0.3;
}
program {
- name: "home_pressed";
- signal: "home.pressed";
+ name: "message.show.noeffect";
+ action: STATE_SET "hide" 0.0;
+ signal: "message.show.noeffect";
source: "indicator.prog";
- script {
- }
+ target: "elm.rect.bg.base";
}
+ program {
+ name: "message.hide";
+ action: STATE_SET "default" 0.0;
+ signal: "message.hide";
+ source: "indicator.prog";
+ target: "elm.rect.bg.base";
+ transition: LINEAR 0.3;
+ after:message.line2.hide.noeffect;
+ }
+ program {
+ name: "message.line2.show";
+ action: STATE_SET "line2" 0.0;
+ signal: "message.line2.show";
+ source: "indicator.prog";
+ target: "message.text";
+ transition: LINEAR 0.3;
+ }
program {
+ name: "message.line2.hide";
+ action: STATE_SET "default" 0.0;
+ signal: "message.line2.hide";
+ source: "indicator.prog";
+ target: "message.text";
+ transition: LINEAR 0.3;
+ }
+ program {
+ name: "message.line2.hide.noeffect";
+ action: STATE_SET "default" 0.0;
+ signal: "message.line2.hide.noeffect";
+ source: "indicator.prog";
+ target: "message.text";
+ }
+ /*********************************************************
+ *
+ * BG and CLOCK
+ *
+ **********************************************************/
+ program {
name: "bg_opaque";
action: STATE_SET "default" 0.0;
signal: "bg.opaque";
script {
set_int(bg_set, 0);
set_state(PART:"elm.rect.bg", "opaque", 0.0);
+ set_state(PART:"message.bg", "transparent", 0.0);
}
}
script {
set_int(bg_set, 1);
set_state(PART:"elm.rect.bg", "translucent", 0.0);
+ set_state(PART:"message.bg", "transparent", 0.0);
}
}
script {
set_int(bg_set, 2);
set_state(PART:"elm.rect.bg", "transparent", 0.0);
+ set_state(PART:"message.bg", "transparent", 0.0);
}
}
script {
set_int(bg_set, 3);
set_state(PART:"elm.rect.bg", "notification", 0.0);
+ set_state(PART:"message.bg", "transparent", 0.0);
}
}
program {
- name: "clock_size_default";
- signal: "indicator.clock.default";
+ name: "indicator.lock.on";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.lock.on";
source: "indicator.prog";
- script {
- set_state(PART:"elm.rect.clock", "default", 0.0);
- }
-
+ target: "elm.swallow.fixed6";
+ target: "seperator.image";
+ target: "padding.separator";
+ target: "padding.separator2";
}
+
program {
- name: "clock_size_ampm";
- signal: "indicator.clock.ampm";
+ name: "indicator.lock.off";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.lock.off";
source: "indicator.prog";
- script {
- set_state(PART:"elm.rect.clock", "ampm", 0.0);
- }
-
+ target: "elm.swallow.fixed6";
+ target: "seperator.image";
+ target: "padding.separator";
+ target: "padding.separator2";
}
+ /* Battery */
program {
- name: "show.clip.noeffect";
- in: 0.15 0.0;
+ name: "indicator.battery.percentage.show";
action: STATE_SET "show" 0.0;
- signal: "indicator.clip.show.noeffect";
+ signal: "indicator.battery.percentage.show";
source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
+ target: "elm.swallow.fixed8";
}
program {
- name: "show.clip";
- in: 0.15 0.0;
- action: STATE_SET "show" 0.0;
- signal: "indicator.clip.show";
+ name: "indicator.battery.percentage.hide";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.battery.percentage.hide";
source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
- transition: LINEAR 0.15;
+ target: "elm.swallow.fixed8";
}
program {
- name: "hide.clip.noeffect";
+ name: "indicator.battery.percentage.one.digit.show";
action: STATE_SET "default" 0.0;
- signal: "indicator.clip.hide.noeffect";
+ signal: "indicator.battery.percentage.one.digit.show";
source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
+ target: "percentage.digit.box";
}
program {
- name: "hide.clip";
+ name: "indicator.battery.percentage.two.digits.show";
+ action: STATE_SET "two_digits" 0.0;
+ signal: "indicator.battery.percentage.two.digits.show";
+ source: "indicator.prog";
+ target: "percentage.digit.box";
+ }
+
+ program {
+ name: "indicator.battery.percentage.full.show";
+ action: STATE_SET "three_digits" 0.0;
+ signal: "indicator.battery.percentage.full.show";
+ source: "indicator.prog";
+ target: "percentage.digit.box";
+ }
+ // RSSI1
+ program {
+ name: "indicator.rssi1.show";
action: STATE_SET "default" 0.0;
- signal: "indicator.clip.hide";
+ signal: "indicator.rssi1.show";
source: "indicator.prog";
- target: "slide_clip";
- target: "slide_clip2";
- transition: LINEAR 0.15;
+ target: "elm.swallow.fixed1";
+ target: "elm.rect.rssi1";
}
+
program {
- name: "show.noti.noeffect";
- action: STATE_SET "show" 0.0;
- signal: "indicator.noti.show.noeffect";
+ name: "indicator.rssi1.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.rssi1.hide";
source: "indicator.prog";
- target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
target: "elm.swallow.fixed1";
+ target: "elm.rect.rssi1";
+ }
+ // RSSI2
+ program {
+ name: "indicator.rssi2.show";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.rssi2.show";
+ source: "indicator.prog";
target: "elm.swallow.fixed2";
- target: "seperator.image";
- target: "seperator.image2";
+ target: "elm.rect.rssi2";
}
program {
- name: "show.noti";
- action: STATE_SET "show" 0.0;
- signal: "indicator.noti.show";
+ name: "indicator.rssi2.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.rssi2.hide";
source: "indicator.prog";
- target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
- target: "elm.swallow.fixed1";
target: "elm.swallow.fixed2";
- target: "seperator.image";
- target: "seperator.image2";
- transition: LINEAR 0.3;
+ target: "elm.rect.rssi2";
}
+ // Sim Icon
program {
- name: "hide.noti.noeffect";
+ name: "indicator.simicon.show";
action: STATE_SET "default" 0.0;
- signal: "indicator.noti.hide.noeffect";
+ signal: "indicator.simicon.show";
source: "indicator.prog";
- target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
- target: "elm.swallow.fixed1";
- target: "elm.swallow.fixed2";
- target: "seperator.image";
- target: "seperator.image2";
+ target: "elm.swallow.fixed3";
+ target: "elm.rect.simicon";
+ }
+
+ program {
+ name: "indicator.simicon.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.simicon.hide";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed3";
+ target: "elm.rect.simicon";
+ }
+
+ /* Connection - 3G */
+ program {
+ name: "indicator.connection.show";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.connection.show";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed4";
+ target: "elm.rect.connection";
+ }
+
+ program {
+ name: "indicator.connection.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.connection.hide";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed4";
+ target: "elm.rect.connection";
+ }
+
+ // WIFI
+ program {
+ name: "indicator.wifi.show";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.wifi.show";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed5";
+ target: "elm.rect.wifi";
+ }
+
+ program {
+ name: "indicator.wifi.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.wifi.hide";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed5";
+ target: "elm.rect.wifi";
+ }
+ // BLUETOOTH
+ program {
+ name: "indicator.bluetooth.show";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.bluetooth.show";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed6";
+ target: "elm.rect.bt";
}
+
+ program {
+ name: "indicator.bluetooth.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.bluetooth.hide";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed6";
+ target: "elm.rect.bt";
+ }
+ // WIFI-Direct
program {
- name: "hide.noti";
+ name: "indicator.wifidirect.show";
action: STATE_SET "default" 0.0;
+ signal: "indicator.wifidirect.show";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed7";
+ target: "elm.rect.wifidirect";
+ }
+
+ program {
+ name: "indicator.wifidirect.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.wifidirect.hide";
+ source: "indicator.prog";
+ target: "elm.swallow.fixed7";
+ target: "elm.rect.wifidirect";
+ }
+
+ // UpDown Arrow icon
+ program {
+ name: "indicator.connection.updown.none";
+ action: STATE_SET "none" 0.0;
+ signal: "indicator.connection.updown.none";
+ source: "indicator.prog";
+ target: "elm.image.updown1";
+ }
+ program {
+ name: "indicator.connection.updown.download";
+ action: STATE_SET "download" 0.0;
+ signal: "indicator.connection.updown.download";
+ source: "indicator.prog";
+ target: "elm.image.updown1";
+ }
+ program {
+ name: "indicator.connection.updown.upload";
+ action: STATE_SET "upload" 0.0;
+ signal: "indicator.connection.updown.upload";
+ source: "indicator.prog";
+ target: "elm.image.updown1";
+ }
+ program {
+ name: "indicator.connection.updown.updownload";
+ action: STATE_SET "updownload" 0.0;
+ signal: "indicator.connection.updown.updownload";
+ source: "indicator.prog";
+ target: "elm.image.updown1";
+ }
+ program {
+ name: "indicator.connection.updown.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.connection.updown.hide";
+ source: "indicator.prog";
+ target: "elm.image.updown1";
+ }
+ program {
+ name: "indicator.wifi.updown.none";
+ action: STATE_SET "none" 0.0;
+ signal: "indicator.wifi.updown.none";
+ source: "indicator.prog";
+ target: "elm.image.updown2";
+ }
+ program {
+ name: "indicator.wifi.updown.download";
+ action: STATE_SET "download" 0.0;
+ signal: "indicator.wifi.updown.download";
+ source: "indicator.prog";
+ target: "elm.image.updown2";
+ }
+ program {
+ name: "indicator.wifi.updown.upload";
+ action: STATE_SET "upload" 0.0;
+ signal: "indicator.wifi.updown.upload";
+ source: "indicator.prog";
+ target: "elm.image.updown2";
+ }
+ program {
+ name: "indicator.wifi.updown.updownload";
+ action: STATE_SET "updownload" 0.0;
+ signal: "indicator.wifi.updown.updownload";
+ source: "indicator.prog";
+ target: "elm.image.updown2";
+ }
+ program {
+ name: "indicator.wifi.updown.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.wifi.updown.hide";
+ source: "indicator.prog";
+ target: "elm.image.updown2";
+ }
+ // System Box
+ program {
+ name: "indicator.system.show";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.system.show";
+ source: "indicator.prog";
+ target: "elm.swallow.system";
+ target: "elm.rect.system";
+ }
+
+ program {
+ name: "indicator.system.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.system.hide";
+ source: "indicator.prog";
+ target: "elm.swallow.system";
+ target: "elm.rect.system";
+ }
+ // Mini Control box
+ program {
+ name: "indicator.minictrl.show";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.minictrl.show";
+ source: "indicator.prog";
+ target: "elm.swallow.minictrl";
+ target: "elm.rect.minictrl";
+ }
+
+ program {
+ name: "indicator.minictrl.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "indicator.minictrl.hide";
+ source: "indicator.prog";
+ target: "elm.swallow.minictrl";
+ target: "elm.rect.minictrl";
+ }
+ // Noti box
+ program {
+ name: "indicator.noti.show";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.noti.show";
+ source: "indicator.prog";
+ target: "elm.swallow.noti";
+ target: "elm.rect.noti";
+ }
+
+ program {
+ name: "indicator.noti.hide";
+ action: STATE_SET "hide" 0.0;
signal: "indicator.noti.hide";
source: "indicator.prog";
target: "elm.swallow.noti";
- target: "elm.swallow.nonfixed";
- target: "elm.swallow.fixed1";
- target: "elm.swallow.fixed2";
- target: "seperator.image";
- target: "seperator.image2";
- transition: LINEAR 0.3;
+ target: "elm.rect.noti";
+ }
+ // S Cover
+ program {
+ name: "indicator.scover.on";
+ action: STATE_SET "scover" 0.0;
+ signal: "indicator.scover.on";
+ source: "indicator.prog";
+ target: "padding.left";
+ target: "padding.right";
+ target: "message.padding.left";
+ target: "message.padding.right";
+ }
+ program {
+ name: "indicator.scover.off";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.scover.off";
+ source: "indicator.prog";
+ target: "padding.left";
+ target: "padding.right";
+ target: "message.padding.left";
+ target: "message.padding.right";
+ }
+ program {
+ name: "indicator.padding.dynamic.on";
+ action: STATE_SET "dynamic" 0.0;
+ signal: "indicator.padding.dynamic.on";
+ source: "indicator.prog";
+ target: "padding.right";
+ transition: LINEAR 0.4;
+ }
+ program {
+ name: "indicator.padding.dynamic.off";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.padding.dynamic.off";
+ source: "indicator.prog";
+ target: "padding.right";
+ transition: LINEAR 0.4;
}
+ program {
+ name: "indicator.padding.dynamic.off.noeffect";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.padding.dynamic.off.noeffect";
+ source: "indicator.prog";
+ target: "padding.right";
+ }
program {
- name: "badge_show";
- signal: "badge,show,1";
- source: "elm.image.badge";
- script {
- if (get_int(badge_set) == 0) {
- set_int(badge_set, 1);
- if (get_int(theme) == 2) {
- set_state(PART:"elm.image.badge", "show2", 0.0);
- set_state(PART:"elm.text.badge", "default2", 0.0);
- } else {
- set_state(PART:"elm.image.badge", "show", 0.0);
- set_state(PART:"elm.text.badge", "default", 0.0);
- }
- }
- }
+ name: "indicator.padding.resize.0";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.padding.resize.0";
+ source: "indicator.prog";
+ target: "resize_padding.left";
+ target: "resize_padding.right";
+ }
+ program {
+ name: "indicator.padding.resize.1";
+ action: STATE_SET "1" 0.0;
+ signal: "indicator.padding.resize.1";
+ source: "indicator.prog";
+ target: "resize_padding.left";
+ target: "resize_padding.right";
}
program {
- name: "badge_hide";
- signal: "badge,hide,1";
- source: "elm.image.badge";
- script {
- if (get_int(badge_set) == 1) {
- set_int(badge_set, 0);
- set_state(PART:"elm.image.badge", "default", 0.0);
- }
- }
+ name: "indicator.padding.resize.2";
+ action: STATE_SET "2" 0.0;
+ signal: "indicator.padding.resize.2";
+ source: "indicator.prog";
+ target: "resize_padding.left";
+ target: "resize_padding.right";
+ }
+
+ program {
+ name: "indicator.padding.resize.3";
+ action: STATE_SET "3" 0.0;
+ signal: "indicator.padding.resize.3";
+ source: "indicator.prog";
+ target: "resize_padding.left";
+ target: "resize_padding.right";
+ }
+
+ program {
+ name: "indicator.padding.resize.4";
+ action: STATE_SET "4" 0.0;
+ signal: "indicator.padding.resize.4";
+ source: "indicator.prog";
+ target: "resize_padding.left";
+ target: "resize_padding.right";
+ }
+
+ program {
+ name: "indicator.bg.call.0";
+ action: STATE_SET "default" 0.0;
+ signal: "indicator.bg.call.0";
+ source: "indicator.prog";
+ target: "elm.rect.bg.call";
}
+ program {
+ name: "indicator.bg.call.1";
+ action: STATE_SET "during_call" 0.0;
+ signal: "indicator.bg.call.1";
+ source: "indicator.prog";
+ target: "elm.rect.bg.call";
+ }
+ program {
+ name: "indicator.bg.call.2";
+ action: STATE_SET "call_hold" 0.0;
+ signal: "indicator.bg.call.2";
+ source: "indicator.prog";
+ target: "elm.rect.bg.call";
+ }
+ program {
+ name: "indicator.bg.call.3";
+ action: STATE_SET "call_end" 0.0;
+ signal: "indicator.bg.call.3";
+ source: "indicator.prog";
+ target: "elm.rect.bg.call";
+ }
+
+ program {
+ name: "clock.font.12";
+ action: STATE_SET "default" 0.0;
+ signal: "clock.font.12";
+ source: "indicator.prog";
+ target: "elm.text.clock";
+ }
+ program {
+ name: "clock.font.24";
+ action: STATE_SET "size24" 0.0;
+ signal: "clock.font.24";
+ source: "indicator.prog";
+ target: "elm.text.clock";
+ }
+ program {
+ name: "clock.invisible";
+ action: STATE_SET "invisible" 0.0;
+ signal: "clock.invisible";
+ source: "indicator.prog";
+ target: "elm.text.clock";
+ }
+
+ /*********************************************************
+ *
+ * BADGE
+ *
+ **********************************************************/
+
}
}
}
--- /dev/null
+/*
+ * 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 "color_classes.edc"
+#include "indicator_gui.h"
+
+#define TICKERNOTI_MAIN_TEXT_HEIGHT_INC 1
+
+collections
+{
+ base_scale: 1.7;
+
+ group {
+ name: "quickpanel/tickernoti/text";
+ data {
+ item: "height" TICKERNOTI_DEFAULT_BG_MIN_HEIGHT_INC;
+ }
+ styles {
+ style {
+ name: "style_main_text";
+ base: "font=Tizen:style=Regular font_size=25 color=#FFFFFF text_class=tizen wrap=mixed";
+ tag: "br" "\n";
+ tag: "ps" "ps";
+ tag: "b" "+ font_weight=Bold";
+ }
+ }
+ parts {
+ part {
+ name: "elm.text";
+ type: TEXTBLOCK;
+ scale: 1;
+ multiline: 1;
+ mouse_events: 0;
+ description {
+ state: "default" 0.0;
+ min: 434 0;
+ align: 0.5 0.0;
+ text {
+ style: "style_main_text";
+ min: 0 1;
+ align: 0.0 0.0;
+ }
+ }
+ }
+ }
+ }
+
+ group {
+ name: "quickpanel/tickernoti/normal";
+ data {
+ item: "height" TICKERNOTI_DEFAULT_BG_MIN_HEIGHT_INC;
+ }
+ parts {
+ part {
+ name: "base";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ align: 0.0 0.0;
+ }
+
+ }
+ part {
+ name: "clipper";
+ type: RECT;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.to: "base";
+ rel2.to: "base";
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "bg";
+ mouse_events: 1;
+ type: RECT;
+ clip_to: "clipper";
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 0;
+ rel1.to: "base";
+ rel2.to: "base";
+ }
+ }
+
+ part {
+ name: "bg_img";
+ mouse_events: 0;
+ type: RECT;
+ scale: 1;
+ description { state: "default" 0.0;
+ visible: 1;
+ align:0.0 0.0;
+
+ rel1.to: "bg";
+ rel2.to: "bg";
+ /* FIXME */
+ color: 0 0 0 255;
+ //color_class: "AO008_STATUS";
+ }
+ }
+ // Icon
+ part {
+ name: "icon";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events: 1;
+ clip_to: "clipper";
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ min: 25 25;
+ max: 25 25;
+ align: 0.0 0.5;
+ rel1
+ {
+ relative: 0.0 0.5;
+ to: "base";
+ offset: 6 0;
+ }
+ rel2 {
+ relative: 0.0 0.5;
+ to: "base";
+ }
+ aspect: 1.0 1.0;
+ aspect_preference: VERTICAL;
+ }
+ }
+ /* Text */
+ part {
+ name: "text_rect";
+ type: SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ max: 800 36;
+ fixed: 1 1;
+ align: 0.0 0.5;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "icon";
+ to_y: "base";
+ offset: 10 3;
+ }
+ rel2 {
+ relative: 1.0 0.9;
+ to: "base";
+ }
+ }
+ }
+ part {
+ name: "event";
+ type: RECT;
+ mouse_events: 1;
+ repeat_events: 1;
+ description {
+ state: "default" 0.0;
+ color: 0 0 0 0;
+ rel1 {
+ to: "bg";
+ }
+ rel2 {
+ to: "bg";
+ }
+ }
+ }
+ }
+ programs {
+ program {
+ name: "effect_show";
+ signal: "effect,show";
+ source: "elm";
+ in: 0.1 0.0;
+ action: STATE_SET "show" "0.0";
+ transition: ACCEL 0.4;
+ target: "bg";
+ }
+ program {
+ name: "clicked";
+ signal: "mouse,clicked,1";
+ source: "event";
+ action: SIGNAL_EMIT "clicked" "";
+ after: "effect_hide";
+ }
+ program {
+ name: "effect_hide";
+ signal: "effect,hide";
+ source: "elm";
+ action: STATE_SET "default" "0.0";
+ transition: DECEL 0.4;
+ target: "bg";
+ after: "hide";
+ }
+ program {
+ name: "hide";
+ action: SIGNAL_EMIT "request,hide" "";
+ }
+ }
+ }
+}
--- /dev/null
+/*
+ * 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.
+ *
+ */
+
+#define FRAME_TIME 0.3
+
+images {
+ image: "noti_download_01.png" COMP;
+ image: "noti_download_02.png" COMP;
+ image: "noti_download_03.png" COMP;
+ image: "noti_download_04.png" COMP;
+ image: "noti_download_05.png" COMP;
+ image: "noti_download_complete.png" COMP;
+
+ image: "noti_upload_01.png" COMP;
+ image: "noti_upload_02.png" COMP;
+ image: "noti_upload_03.png" COMP;
+ image: "noti_upload_04.png" COMP;
+ image: "noti_upload_05.png" COMP;
+ image: "noti_upload_complete.png" COMP;
+
+ image: "noti_install_01.png" COMP;
+ image: "noti_install_02.png" COMP;
+ image: "noti_install_03.png" COMP;
+ image: "noti_install_04.png" COMP;
+ image: "noti_install_05.png" COMP;
+ image: "noti_install_complete.png" COMP;
+}
+
+collections {
+group {
+ name: "quickpanel/animated_icon_download";
+ parts {
+ part { name: "background";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 47 47;
+ max: 47 47;
+ }
+ }
+ part{
+ name: "obj.image";
+ type:IMAGE;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ state: "default" 0.0;
+ min: 47 47;
+ max: 47 47;
+ rel1 {
+ to: "background";
+ }
+ rel2 {
+ to: "background";
+ }
+ image {
+ normal:"noti_download_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ color_class: QP_THEME_LIST_ITEM_ICON_COLOR;
+ visible:1;
+ }
+ description {
+ state: "state.0" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_download_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.1" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_download_02.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.2" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_download_03.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.3" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_download_04.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.4" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_download_05.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.5" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_download_complete.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "init.layout";
+ signal: "load";
+ source: "";
+ in: 0.0 0.0;
+ action: SIGNAL_EMIT "icon.state.0" "prog";
+ }
+ program{
+ name: "icon.state.0";
+ signal: "icon.state.0";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.0" 0.0;
+ target: "obj.image";
+ after: "icon.state.1";
+ }
+ program{
+ name: "icon.state.1";
+ signal: "icon.state.1";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.1" 0.0;
+ target: "obj.image";
+ after: "icon.state.2";
+ }
+ program{
+ name: "icon.state.2";
+ signal: "icon.state.2";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.2" 0.0;
+ target: "obj.image";
+ after: "icon.state.3";
+ }
+ program{
+ name: "icon.state.3";
+ signal: "icon.state.3";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.3" 0.0;
+ target: "obj.image";
+ after: "icon.state.4";
+ }
+ program{
+ name: "icon.state.4";
+ signal: "icon.state.4";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.4" 0.0;
+ target: "obj.image";
+ after: "icon.state.5";
+ }
+ program{
+ name: "icon.state.5";
+ signal: "icon.state.5";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.5" 0.0;
+ target: "obj.image";
+ after: "icon.state.0";
+ }
+ }
+}
+
+group {
+ name: "quickpanel/animated_icon_upload";
+ parts {
+ part { name: "background";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 47 47;
+ max: 47 47;
+ }
+ }
+ part{
+ name: "obj.image";
+ type:IMAGE;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ state: "default" 0.0;
+ min: 47 47;
+ max: 47 47;
+ rel1 {
+ to: "background";
+ }
+ rel2 {
+ to: "background";
+ }
+ image {
+ normal:"noti_upload_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ color_class: QP_THEME_LIST_ITEM_ICON_COLOR;
+ visible:1;
+ }
+ description {
+ state: "state.0" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_upload_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.1" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_upload_02.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.2" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_upload_03.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.3" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_upload_04.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.4" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_upload_05.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.5" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_upload_complete.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "init.layout";
+ signal: "load";
+ source: "";
+ in: 0.0 0.0;
+ action: SIGNAL_EMIT "icon.state.0" "prog";
+ }
+ program{
+ name: "icon.state.0";
+ signal: "icon.state.0";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.0" 0.0;
+ target: "obj.image";
+ after: "icon.state.1";
+ }
+ program{
+ name: "icon.state.1";
+ signal: "icon.state.1";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.1" 0.0;
+ target: "obj.image";
+ after: "icon.state.2";
+ }
+ program{
+ name: "icon.state.2";
+ signal: "icon.state.2";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.2" 0.0;
+ target: "obj.image";
+ after: "icon.state.3";
+ }
+ program{
+ name: "icon.state.3";
+ signal: "icon.state.3";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.3" 0.0;
+ target: "obj.image";
+ after: "icon.state.4";
+ }
+ program{
+ name: "icon.state.4";
+ signal: "icon.state.4";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.4" 0.0;
+ target: "obj.image";
+ after: "icon.state.5";
+ }
+ program{
+ name: "icon.state.5";
+ signal: "icon.state.5";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.5" 0.0;
+ target: "obj.image";
+ after: "icon.state.0";
+ }
+ }
+}
+
+group {
+ name: "quickpanel/animated_icon_install";
+ parts {
+ part { name: "background";
+ type: SPACER;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ min: 47 47;
+ max: 47 47;
+ }
+ }
+ part{
+ name: "obj.image";
+ type:IMAGE;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ state: "default" 0.0;
+ min: 47 47;
+ max: 47 47;
+ rel1 {
+ to: "background";
+ }
+ rel2 {
+ to: "background";
+ }
+ image {
+ normal:"noti_install_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ color_class: QP_THEME_LIST_ITEM_ICON_COLOR;
+ visible:1;
+ }
+ description {
+ state: "state.0" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_install_01.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.1" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_install_02.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.2" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_install_03.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.3" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_install_04.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.4" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_install_05.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ description {
+ state: "state.5" 0.0;
+ inherit: "default" 0.0;
+ image {
+ normal:"noti_install_complete.png";
+ border: 0 0 0 0;
+ border_scale: 1;
+ }
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "init.layout";
+ signal: "load";
+ source: "";
+ in: 0.0 0.0;
+ action: SIGNAL_EMIT "icon.state.0" "prog";
+ }
+ program{
+ name: "icon.state.0";
+ signal: "icon.state.0";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.0" 0.0;
+ target: "obj.image";
+ after: "icon.state.1";
+ }
+ program{
+ name: "icon.state.1";
+ signal: "icon.state.1";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.1" 0.0;
+ target: "obj.image";
+ after: "icon.state.2";
+ }
+ program{
+ name: "icon.state.2";
+ signal: "icon.state.2";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.2" 0.0;
+ target: "obj.image";
+ after: "icon.state.3";
+ }
+ program{
+ name: "icon.state.3";
+ signal: "icon.state.3";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.3" 0.0;
+ target: "obj.image";
+ after: "icon.state.4";
+ }
+ program{
+ name: "icon.state.4";
+ signal: "icon.state.4";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.4" 0.0;
+ target: "obj.image";
+ after: "icon.state.5";
+ }
+ program{
+ name: "icon.state.5";
+ signal: "icon.state.5";
+ source: "prog";
+ in: FRAME_TIME 0.0;
+ action: STATE_SET "state.5" 0.0;
+ target: "obj.image";
+ after: "icon.state.0";
+ }
+ }
+}
+}
--- /dev/null
+/*
+ * 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 "color_classes.edc"
+
+#define QP_DATE_H 50
+#define QP_HANDLE_H 50
+#define QP_SETTING_H 221
+#define QP_SETTING_SEPERATOR_H 0
+
+#define QUICKPANEL_FOCUS_OBJECT(NAME, TO_1, TO_2)\
+ part {\
+ name: NAME;\
+ type: SWALLOW;\
+ scale: 1;\
+ mouse_events: 1;\
+ repeat_events: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.00; to, TO_1; }\
+ rel2 { relative: 1.0 1.00; to, TO_2; }\
+ fixed: 1 1;\
+ visible: 1;\
+ }\
+ description {\
+ state: "show" 0.0;\
+ inherit: "default" 0.0;\
+ visible: 1;\
+ }\
+ description {\
+ state: "hide" 0.0;\
+ inherit: "default" 0.0;\
+ visible: 0;\
+ }\
+ }\
+
+#define QUICKPANEL_FOCUS_OBJECT_WITH_OFFSET(NAME, TO_1, TO_2, OFFSET_X, OFFSET_Y)\
+ part {\
+ name: NAME;\
+ type: SWALLOW;\
+ scale: 1;\
+ mouse_events: 1;\
+ repeat_events: 1;\
+ description {\
+ state: "default" 0.0;\
+ rel1 { relative: 0.0 0.00; to, TO_1; offset: -OFFSET_X -OFFSET_Y;}\
+ rel2 { relative: 1.0 1.00; to, TO_2; offset: +OFFSET_X +OFFSET_Y; }\
+ fixed: 1 1;\
+ visible: 1;\
+ }\
+ }\
+
+images
+{
+ image: "handler_bg.#.png" COMP;
+ image: "handler_bg_ef.#.png" COMP;
+ image: "handler_btn_02.png" COMP;
+ image: "core_theme_bg_01.png" COMP;
+}
+
+collections {
+ base_scale: 1.7;
+ group {
+ name: "quickpanel/root";
+
+ script {
+ public g_is_portrait;
+
+ public init_variables() {
+ set_int(g_is_portrait, 1);
+ }
+ }
+
+ parts {
+ part {
+ name: "base";
+ type: RECT;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ visible: 1;
+ }
+ }
+
+
+ part {
+ name: "background";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ align: 0.5 0.5;
+ rel1 {
+ to: "base";
+ }
+ rel2 {
+ to: "base";
+ }
+ image {
+ normal: "core_theme_bg_01.png";
+ }
+ }
+ }
+
+ part{
+ name: "qp.base.rect.datetime";
+ type:SPACER;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ min: 0 QP_DATE_H;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "background";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "background";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part{
+ name: "qp.base.datetime.swallow";
+ type:SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ rel1 {
+ to: "qp.base.rect.datetime";
+ }
+ rel2 {
+ to: "qp.base.rect.datetime";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part{
+ name: "qp.root.swallow";
+ type:SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 0.0 1.0;
+ to_x: "background";
+ to_y: "qp.base.datetime.swallow";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to_x: "background";
+ to_y: "qp.handler.bg";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part
+ {
+ name: "qp.handler.bg";
+ type:IMAGE;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ min: 0 QP_HANDLE_H;
+ rel1 {
+ relative: 0.0 1.0;
+ to: "background";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "background";
+ }
+ image {
+ normal:"handler_bg.#.png";
+ }
+ align: 0.0 1.0;
+ color_class: "W0113";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default";
+ color_class: "W0113P";
+ }
+ }
+
+ part
+ {
+ name: "qp.handler.effect";
+ type:IMAGE;
+ scale:1;
+ description {
+ state: "default" 0.0;
+
+ rel1 {
+ relative: 0.0 0.0;
+ to: "qp.handler.bg";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "qp.handler.bg";
+ }
+ image {
+ normal:"handler_bg_ef.#.png";
+ }
+ align: 0.0 1.0;
+ color_class: "AO007L2";
+ }
+ }
+
+ part
+ {
+ name: "qp.handler.button";
+ type:IMAGE;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ min: 50 50;
+ max: 50 50;
+ fixed: 1 1;
+ rel1
+ {
+ relative: 0.5 0.0;
+ to: "qp.handler.bg";
+ }
+ rel2
+ {
+ relative: 0.5 1.0;
+ to: "qp.handler.bg";
+ }
+ image {
+ normal:"handler_btn_02.png";
+ }
+
+ align: 0.5 0.5;
+ color_class: "AO007L1";
+ visible: 1;
+ }
+ description {
+ state: "text.show" 0.0;
+ inherit: "default";
+ visible: 0;
+ }
+ description {
+ state: "text.hide" 0.0;
+ inherit: "default";
+ visible: 1;
+ }
+ }
+
+ part
+ {
+ name: "qp.handler.text";
+ type:TEXT;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ min: 0 QP_HANDLE_H;
+ align: 0.5 0.5;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "qp.handler.bg";
+ }
+ rel2 {
+ relative: 1.0 1.0;
+ to: "qp.handler.bg";
+ }
+
+ text {
+ font : "Tizen:style=Regular";
+ size : 25;
+ text_class : "Tizen";
+ }
+ color_class: "AO007L1";
+ visible: 1;
+ }
+ description
+ {
+ state: "text.show" 0.0;
+ inherit: "default";
+ visible: 1;
+ }
+ description
+ {
+ state: "text.hide" 0.0;
+ inherit: "default";
+ visible: 0;
+ }
+ }
+ }
+
+ programs
+ {
+ program
+ {
+ name: "init.layout";
+ signal: "load";
+ source: "";
+ in: 0.0 0.0;
+ script{
+ init_variables();
+ }
+ }
+ program {
+ name: "text.show";
+ signal: "show";
+ source: "qp.handler.text";
+ action: STATE_SET "text.show" 0.0;
+ target: "qp.handler.button";
+ target: "qp.handler.text";
+ }
+ program {
+ name: "text.hide";
+ signal: "hide";
+ source: "qp.handler.text";
+ action: STATE_SET "text.hide" 0.0;
+ target: "qp.handler.button";
+ target: "qp.handler.text";
+ }
+ program {
+ name: "handler.press";
+ signal: "mouse,down,1";
+ source: "qp.handler.bg";
+ action: STATE_SET "pressed" 0.0;
+ target: "qp.handler.bg";
+ }
+ program {
+ name: "handler.release";
+ signal: "mouse,up,1";
+ source: "qp.handler.bg";
+ action: STATE_SET "default" 0.0;
+ target: "qp.handler.bg";
+ }
+ }
+ }
+
+ group {
+ name: "quickpanel/base";
+ parts {
+ part {
+ name: "background";
+ type: SPACER;
+ scale: 1;
+ mouse_events: 1;
+ description {
+ state: "default" 0.0;
+ }
+ description {
+ state: "portrait" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "landscape" 0.0;
+ inherit: "default" 0.0;
+ }
+ }
+ part{
+ name: "qp.base.rect.setting";
+ type:SPACER;
+ scale:1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ min: 0 QP_SETTING_H;
+ rel1 {
+ relative: 0.0 0.0;
+ to: "background";
+ }
+ rel2 {
+ relative: 1.0 0.0;
+ to: "background";
+ }
+ align: 0.0 0.0;
+ }
+ description {
+ state: "show" 0.0;
+ inherit: "default" 0.0;
+ }
+ description {
+ state: "hide" 0.0;
+ inherit: "default" 0.0;
+ min: 0 0;
+ max: 0 0;
+ }
+ }
+ part{
+ name: "qp.base.setting.swallow";
+ type:SWALLOW;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 1;
+ rel1 {
+ to: "qp.base.rect.setting";
+ }
+ rel2 {
+ to: "qp.base.rect.setting";
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "background.touch";
+ type: SWALLOW;
+ scale: 1;
+ mouse_events:1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 0;
+ min: 0 QP_SETTING_SEPERATOR_H;
+ rel1 {
+ to_y:"qp.base.setting.swallow";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ to_y:"background";
+ relative: 1.0 1.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ part {
+ name: "qp.base.list.swallow";
+ type: SWALLOW;
+ scale: 1;
+ repeat_events: 1;
+ mouse_events:1;
+ description {
+ state: "default" 0.0;
+ fixed: 0 0;
+ rel1 {
+ to_y:"qp.base.setting.swallow";
+ relative: 0.0 1.0;
+ }
+ rel2 {
+ to_y:"background";
+ relative: 1.0 1.0;
+ }
+ align: 0.0 0.0;
+ }
+ }
+ }
+ programs {
+ program{
+ name: "portrait";
+ signal: "portrait";
+ source: "prog";
+ action: STATE_SET "portrait" 0.0;
+ target: "background";
+ }
+ program{
+ name: "landscape";
+ signal: "landscape";
+ source: "prog";
+ action: STATE_SET "landscape" 0.0;
+ target: "background";
+ }
+ program {
+ name: "setting.show";
+ action: STATE_SET "show" 0.0;
+ signal: "quickpanel.setting.show";
+ source: "quickpanel.prog";
+ target: "qp.base.rect.setting";
+ target: "qp.base.setting.swallow";
+ }
+ program {
+ name: "setting.hide";
+ action: STATE_SET "hide" 0.0;
+ signal: "quickpanel.setting.hide";
+ source: "quickpanel.prog";
+ target: "qp.base.rect.setting";
+ target: "qp.base.setting.swallow";
+ }
+ program {
+ name: "background.touch";
+ action: SIGNAL_EMIT "close.quickpanel" "";
+ signal: "mouse,down,1";
+ source: "background";
+ }
+ }
+ }
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
-#include <runtime_info.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
#include <unicode/udat.h>
#include <unicode/udatpg.h>
#include <unicode/ustring.h>
+#include <system_settings.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "indicator_gui.h"
-#include "indicator_icon_util.h"
-#include "indicator_util.h"
+#include "icon.h"
+#include "util.h"
#include "modules.h"
+#include "box.h"
+#include "log.h"
-#define SYSTEM_RESUME "system_wakeup"
+#define SYSTEM_RESUME "system_wakeup"
-#define TIME_FONT_SIZE_24 34
-#define TIME_FONT_SIZE_12 30
-#define TIME_FONT_SIZE_BATTERY 32
-#define TIME_FONT_COLOR 243, 243, 243, 255
+#define TIME_FONT_SIZE_24 ELM_SCALE_SIZE(22)
+#define TIME_FONT_SIZE_12 ELM_SCALE_SIZE(22)
+#define AMPM_FONT_SIZE ELM_SCALE_SIZE(21)
-#define AMPM_FONT_SIZE 24
-#define AMPM_FONT_COLOR 243, 243, 243, 255
+#define TIME_FONT_COLOR 200, 200, 200, 255
+#define AMPM_FONT_COLOR 200, 200, 200, 255
#define LABEL_STRING "<font_size=%d>%s" \
- "</font_size></font>"
+ "</font_size>"
+#define LABEL_STRING_FONT "%s</font>"
#define BATTERY_TIMER_INTERVAL 3
#define BATTERY_TIMER_INTERVAL_CHARGING 30
-#define CLOCK_STR_LEN 256
+#define CLOCK_STR_LEN 128
enum {
INDICATOR_CLOCK_MODE_12H = 0,
INDICATOR_CLOCK_MODE_MAX
};
-static int notifd;
-static int clock_mode = INDICATOR_CLOCK_MODE_12H;
+int clock_mode = INDICATOR_CLOCK_MODE_12H;
+int clock_hour = 0;
+static const char *colon = ":";
+static const char *ratio = "∶";
+
static int apm_length = 0;
static int apm_position = 0;
-static Ecore_Timer *timer = NULL;
-static Ecore_Timer *battery_timer = NULL;
-static Ecore_Timer *battery_charging_timer = NULL;
+extern Ecore_Timer *clock_timer;
+
+static UDateTimePatternGenerator *_last_generator = NULL;
+static char *_last_locale = NULL;
static int battery_charging = 0;
-static int battery_charging_first = 0;
static int register_clock_module(void *data);
static int unregister_clock_module(void);
static int language_changed_cb(void *data);
static int region_changed_cb(void *data);
static int wake_up_cb(void *data);
+#ifdef _SUPPORT_SCREEN_READER
+static int register_clock_tts(void *data,int win_type);
+#endif
-#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED6
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED8
#define MODULE_NAME "clock"
+static void indicator_get_apm_by_region(char* output, void* data);
static void indicator_get_time_by_region(char* output, void* data);
+
static void ICU_set_timezone(const char *timezone);
-static void indicator_clock_display_battery_percentage(void *data,int win_type );
-Indicator_Icon_Object sysclock[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+icon_s sysclock = {
.type = INDICATOR_TXT_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.exist_in_view = EINA_FALSE,
.lang_changed = NULL,
.region_changed = region_changed_cb,
.lang_changed = language_changed_cb,
- .wake_up = wake_up_cb
-},
+ .wake_up = wake_up_cb,
+};
+
+
+
+void cal_delete_last_generator(void)
{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_TXT_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .init = register_clock_module,
- .fini = unregister_clock_module,
- .lang_changed = NULL,
- .region_changed = region_changed_cb,
- .lang_changed = language_changed_cb,
- .wake_up = wake_up_cb
+ if (_last_locale) {
+ free(_last_locale);
+ _last_locale = NULL;
+ }
+ if (_last_generator) {
+ udatpg_close(_last_generator);
+ _last_generator = NULL;
+ }
}
-};
-static void set_app_state(void* data)
+
+
+static UDateTimePatternGenerator *__cal_get_pattern_generator(const char *locale, UErrorCode *status)
{
- int i = 0;
+ if (!_last_generator || !_last_locale || strcmp(locale, _last_locale)) {
+
+ cal_delete_last_generator();
+
+ _last_locale = strdup(locale);
+
+ _last_generator = udatpg_open(locale, status);
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- sysclock[i].ad = data;
}
+ return _last_generator;
}
+
+
+static void set_app_state(void* data)
+{
+ sysclock.ad = data;
+}
+
+
+
static void indicator_clock_changed_cb(void *data)
{
- char time_str[32];
- char time_buf[128], ampm_buf[128];
- char buf[CLOCK_STR_LEN];
+ char time_str[CLOCK_STR_LEN] = {0,};
+ char time_buf[CLOCK_STR_LEN] = {0,};
+ char ampm_buf[CLOCK_STR_LEN] = {0,};
+ char ampm_str[CLOCK_STR_LEN] = {0,};
+ char buf[CLOCK_STR_LEN] = {0,};
+ char result[CLOCK_STR_LEN] = {0,};
char icu_apm[CLOCK_STR_LEN] = {0,};
struct tm *ts = NULL;
time_t ctime;
+ struct appdata *ad = NULL;
int len;
int font_size;
+ int ampm_size = AMPM_FONT_SIZE;
- retif(data == NULL, , "Invalid parameter!");
+ ret_if(!data);
- if(indicator_util_get_update_flag()==0)
- {
- DBG("need to update");
- return;
- }
+ ad = (struct appdata *)data;
- if (battery_timer != NULL || battery_charging_timer != NULL)
- {
- DBG("battery is displaying. ignore clock callback");
- return;
- }
+ if (icon_get_update_flag() == 0) return;
+ /* Set time */
ctime = time(NULL);
ts = localtime(&ctime);
- if (ts == NULL)
+ if (ts == NULL) {
+ _E("Fail to get localtime !");
return;
+ }
- if (timer != NULL) {
- ecore_timer_del(timer);
- timer = NULL;
+ if (clock_timer != NULL) {
+ ecore_timer_del(clock_timer);
+ clock_timer = NULL;
}
memset(time_str, 0x00, sizeof(time_str));
+ memset(ampm_str, 0x00, sizeof(ampm_str));
memset(time_buf, 0x00, sizeof(time_buf));
memset(ampm_buf, 0x00, sizeof(ampm_buf));
memset(buf, 0x00, sizeof(buf));
- timer =
- ecore_timer_add(60 - ts->tm_sec, (void *)indicator_clock_changed_cb,
- data);
+ clock_timer = ecore_timer_add(60 - ts->tm_sec, (void *)indicator_clock_changed_cb, data);
+ if(!clock_timer) {
+ _E("Fail to add timer !");
+ }
+
+ indicator_get_apm_by_region(icu_apm,data);
+ indicator_get_time_by_region(time_buf,data);
- indicator_get_time_by_region(icu_apm,data);
if (clock_mode == INDICATOR_CLOCK_MODE_12H) {
char bf1[32] = { 0, };
int hour;
+ static int pre_hour = 0;
+ const char *region = NULL;
- if(apm_length>0 && apm_length<=4)
- {
- snprintf(ampm_buf, sizeof(ampm_buf),LABEL_STRING, AMPM_FONT_SIZE,icu_apm);
- }
- else
- {
- if (ts->tm_hour >= 0 && ts->tm_hour < 12)
- snprintf(ampm_buf, sizeof(ampm_buf),
- LABEL_STRING, AMPM_FONT_SIZE,
- "AM");
- else
- snprintf(ampm_buf, sizeof(ampm_buf),
- LABEL_STRING, AMPM_FONT_SIZE,
- "PM");
- }
-
- strftime(bf1, sizeof(bf1), "%l", ts);
- hour = atoi(bf1);
- strftime(bf1, sizeof(bf1), ":%M", ts);
-
- snprintf(time_str, sizeof(time_str), "%d%s", hour, bf1);
- font_size = TIME_FONT_SIZE_12;
- indicator_signal_emit(data,"indicator.clock.ampm","indicator.prog");
- }
- else{
- font_size = TIME_FONT_SIZE_24;
- strftime(time_str, sizeof(time_str), "%H:%M", ts);
- indicator_signal_emit(data,"indicator.clock.default","indicator.prog");
- }
-
- snprintf(time_buf, sizeof(time_buf), LABEL_STRING, font_size, time_str);
-
- if(apm_position == 0)
- len = snprintf(buf, sizeof(buf), "%s%s", ampm_buf, time_buf);
- else
- len = snprintf(buf, sizeof(buf), "%s%s", time_buf, ampm_buf);
-
- if (len < 0) {
- ERR("Unexpected ERROR!");
- return;
- }
-
- INFO("[CLOCK MODULE] Timer Status : %d Time: %s", timer, buf);
-
- indicator_part_text_emit(data,"elm.text.clock", buf);
-
- return;
-}
-
-static void indicator_clock_format_changed_cb(keynode_t *node, void *data)
-{
- retif(data == NULL, , "Invalid parameter!");
-
- int r = -1;
-
- bool is_24hour_enabled = false;
-
- INFO("[Enter] indicator_clock_format_changed_cb");
-
- r = runtime_info_get_value_bool(
- RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
-
- if( r==RUNTIME_INFO_ERROR_NONE&&is_24hour_enabled==true)
- {
- clock_mode = INDICATOR_CLOCK_MODE_24H;
- }
- else
- {
- clock_mode = INDICATOR_CLOCK_MODE_12H;
- }
+ int bRegioncheck = 0;
+ char *lang1 = "it_IT";
- char *timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
- ICU_set_timezone(timezone);
- indicator_clock_changed_cb(data);
- free(timezone);
-}
+ region = vconf_get_str(VCONFKEY_REGIONFORMAT);
+ ret_if(!region);
-static void indicator_clock_pm_state_change_cb(keynode_t *node, void *data)
-{
- int status = 0;
-
- retif(data == NULL, , "Invalid parameter!");
-
- vconf_get_int(VCONFKEY_PM_STATE, &status);
-
- switch(status)
- {
- case VCONFKEY_PM_STATE_LCDOFF:
- if (timer != NULL) {
- ecore_timer_del(timer);
- timer = NULL;
- }
+ if (strncmp(region,lang1,strlen(lang1)) == 0) bRegioncheck = 1;
- if (battery_timer != NULL) {
- ecore_timer_del(battery_timer);
- battery_timer = NULL;
+ if (apm_length>=4 || bRegioncheck==1) {
+ if (ts->tm_hour >= 0 && ts->tm_hour < 12) {
+ snprintf(ampm_buf, sizeof(ampm_buf),"%s","AM");
+ } else {
+ snprintf(ampm_buf, sizeof(ampm_buf),"%s","PM");
}
+ } else {
+ snprintf(ampm_buf, sizeof(ampm_buf),"%s",icu_apm);
+ }
- if (battery_charging_timer != NULL) {
- ecore_timer_del(battery_charging_timer);
- battery_charging_timer = NULL;
- }
- break;
- default:
- break;
- }
+ strftime(bf1, sizeof(bf1), "%l", ts);
+ hour = atoi(bf1);
+ strftime(bf1, sizeof(bf1), ":%M", ts);
-}
+ font_size = TIME_FONT_SIZE_12;
+ clock_hour = hour;
-static void indicator_clock_battery_display_cb(void *data)
-{
- INFO("indicator_clock_battery_display_cb");
+ if ((pre_hour<10 && hour>=10)||(pre_hour>=10 && hour<10)) {
+ box_update_display(&(ad->win));
+ }
- if (battery_timer != NULL) {
- ecore_timer_del(battery_timer);
- battery_timer = NULL;
+ pre_hour = hour;
+ } else {
+ font_size = TIME_FONT_SIZE_24;
}
- indicator_clock_changed_cb(data);
-}
-
-static void indicator_clock_battery_disp_changed_cb(keynode_t *node, void *data)
-{
- int status = 0;
-
- vconf_get_int(VCONFKEY_BATTERY_DISP_STATE,&status);
+ snprintf(time_str, sizeof(time_str), LABEL_STRING, font_size, time_buf);
+ snprintf(ampm_str, sizeof(ampm_str), LABEL_STRING, ampm_size, ampm_buf);
- DBG("indicator_clock_battery_disp_changed_cb(%d)",status);
+ if (clock_mode == INDICATOR_CLOCK_MODE_12H) {
+ if (apm_position == 0) {
+ len = snprintf(buf, sizeof(buf), "%s %s", ampm_str, time_str);
+ } else {
+ len = snprintf(buf, sizeof(buf), "%s %s", time_str, ampm_str);
+ }
+ } else {
+ len = snprintf(buf, sizeof(buf), "%s", time_str);
+ }
- if(battery_charging_timer!=NULL)
- {
- ERR("30s timer alive");
+ snprintf(result, sizeof(result), LABEL_STRING_FONT, buf);
+ if (len < 0) {
+ _E("Unexpected ERROR!");
return;
}
- if (battery_timer != NULL) {
- ecore_timer_del(battery_timer);
- battery_timer = NULL;
- }
- battery_timer = ecore_timer_add(BATTERY_TIMER_INTERVAL, (void *)indicator_clock_battery_display_cb,data);
+ _D("[CLOCK MODULE] Timer Status : %d Time: %s", clock_timer, result);
+ util_part_text_emit(data,"elm.text.clock", result);
- if(status==2)
- {
- indicator_clock_display_battery_percentage(data,0);
- indicator_clock_display_battery_percentage(data,1);
- }
- else
- {
- indicator_clock_display_battery_percentage(data,status);
- }
+ return;
}
-static void indicator_clock_battery_charging_stop_cb(void *data)
-{
-
- INFO("indicator_clock_battery_charging_stop_cb");
- if (battery_charging_timer != NULL) {
- ecore_timer_del(battery_charging_timer);
- battery_charging_timer = NULL;
- }
-
- indicator_clock_changed_cb(data);
-}
-static void indicator_clock_charging_now_cb(keynode_t *node, void *data)
+static void _clock_format_changed_cb(keynode_t *node, void *data)
{
- int status = 0;
- int lock_state = 0;
-
- retif(data == NULL, , "Invalid parameter!");
+ struct appdata *ad = NULL;
+ int mode_24 = 0;
- vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_state);
-
- vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &status);
-
- battery_charging = status;
+ ret_if(!data);
- DBG("indicator_clock_charging_now_cb(%d)",status);
+ ad = (struct appdata *)data;
- if(lock_state==VCONFKEY_IDLE_LOCK)
+ if (vconf_get_int(VCONFKEY_REGIONFORMAT_TIME1224,&mode_24) < 0)
{
- DBG("indicator_clock_charging_now_cb:lock_state(%d)",lock_state);
+ ERR("Error getting VCONFKEY_REGIONFORMAT_TIME1224 value");
return;
}
- if(status==1)
+ /* Check Time format. If timeformat have invalid value, Set to 12H */
+ if( mode_24==VCONFKEY_TIME_FORMAT_24)
{
- if(battery_charging_first == 0)
+ if(clock_mode == INDICATOR_CLOCK_MODE_12H)
{
- battery_charging_first = 1;
- if (battery_charging_timer != NULL)
- {
- ecore_timer_del(battery_charging_timer);
- battery_charging_timer = NULL;
- }
- battery_charging_timer = ecore_timer_add(BATTERY_TIMER_INTERVAL_CHARGING, (void *)indicator_clock_battery_charging_stop_cb,data);
-
- indicator_clock_display_battery_percentage(data,0);
+ clock_mode = INDICATOR_CLOCK_MODE_24H;
+ box_update_display(&(ad->win));
}
}
else
{
- battery_charging_first = 0;
- indicator_clock_battery_charging_stop_cb(data);
+ if(clock_mode==INDICATOR_CLOCK_MODE_24H)
+ {
+ clock_mode = INDICATOR_CLOCK_MODE_12H;
+ box_update_display(&(ad->win));
+ }
}
+ char *timezone = util_get_timezone_str();
+ ICU_set_timezone(timezone);
+ indicator_clock_changed_cb(data);
+ if(timezone!=NULL)
+ free(timezone);
}
-static void indicator_clock_battery_capacity_cb(keynode_t *node, void *data)
-{
- retif(data == NULL, , "Invalid parameter!");
-
- if(battery_charging_timer!=NULL||battery_timer!=NULL)
- {
- DBG("indicator_clock_battery_capacity_cb:battery_charging(%d)",battery_charging);
- indicator_clock_display_battery_percentage(data,0);
- }
-}
-static void indicator_clock_usb_cb(keynode_t *node, void *data)
+static void indicator_clock_charging_now_cb(keynode_t *node, void *data)
{
int status = 0;
retif(data == NULL, , "Invalid parameter!");
- vconf_get_int(VCONFKEY_SYSMAN_USB_STATUS, &status);
- DBG("indicator_clock_usb_cb(%d)",status);
+ vconf_get_int(VCONFKEY_SYSMAN_CHARGER_STATUS, &status);
- if(status==VCONFKEY_SYSMAN_USB_DISCONNECTED)
- {
- if (battery_charging_timer != NULL)
- {
- ecore_timer_del(battery_charging_timer);
- battery_charging_timer = NULL;
- }
- indicator_clock_changed_cb(data);
- }
+ battery_charging = status;
}
-static void indicator_clock_lock_state_cb(keynode_t *node, void *data)
-{
- int status = 0;
-
- retif(data == NULL, , "Invalid parameter!");
-
- vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &status);
-
- DBG("indicator_clock_lock_state_cb(%d)",status);
- if(status==VCONFKEY_IDLE_UNLOCK && battery_charging==1)
- {
- if (battery_charging_timer != NULL)
- {
- ecore_timer_del(battery_charging_timer);
- battery_charging_timer = NULL;
- }
- battery_charging_timer = ecore_timer_add(BATTERY_TIMER_INTERVAL_CHARGING, (void *)indicator_clock_battery_charging_stop_cb,data);
-
- indicator_clock_display_battery_percentage(data,0);
- }
-}
-static void indicator_clock_battery_precentage_setting_cb(keynode_t *node, void *data)
+static int language_changed_cb(void *data)
{
- int ret = 0;
- int status = 0;
+ const char *pa_lang = vconf_get_str(VCONFKEY_LANGSET);
+ DBG("language_changed_cb %s",pa_lang);
+ indicator_clock_changed_cb(data);
+ return OK;
+}
- retif(data == NULL, , "Invalid parameter!");
- ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
- if (ret != OK)
- {
- ERR("Fail to get [%s: %d]",VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, ret);
- return;
- }
- if(status==0)
- {
- if (battery_charging_timer != NULL) {
- ecore_timer_del(battery_charging_timer);
- battery_charging_timer = NULL;
- }
- if (battery_timer != NULL) {
- ecore_timer_del(battery_timer);
- battery_timer = NULL;
- }
- indicator_clock_changed_cb(data);
- }
-}
-static void indicator_clock_display_battery_percentage(void *data,int win_type )
+static int region_changed_cb(void *data)
{
- int ret = FAIL;
- int status = 0;
- int battery_capa = 0;
- char buf[256] = {0,};
- char temp[256] = {0,};
- struct appdata *ad = (struct appdata *)data;
+ _clock_format_changed_cb(NULL, data);
+ return OK;
+}
- ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
- if (ret != OK)
- ERR("Fail to get [%s: %d]",
- VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, ret);
- if(status)
- {
- ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_capa);
- if (ret != OK)
- {
- ERR("Fail to get [VCONFKEY_SYSMAN_BATTERY_CAPACITY:%d]", ret);
- return;
- }
- if (battery_capa < 0)
- {
- INFO("Invalid Battery Capacity: %d", battery_capa);
- return;
- }
- INFO("Battery Capacity: %d", battery_capa);
+static int wake_up_cb(void *data)
+{
+ indicator_clock_changed_cb(data);
- if (battery_capa > 100)
- battery_capa = 100;
+ return OK;
+}
- snprintf(temp, sizeof(temp), "%d%%",battery_capa);
- snprintf(buf, sizeof(buf), LABEL_STRING, TIME_FONT_SIZE_BATTERY, temp);
- INFO("indicator_clock_display_battery_percentage %s", buf);
+/*static void _time_changed(system_settings_key_e key, void *data)
+{
+ DBG("_time_changed");
+ _clock_format_changed_cb(NULL,data);
+}*/
- indicator_part_text_emit_by_win(&(ad->win[win_type]),"elm.text.clock", buf);
- }
+static void regionformat_changed(keynode_t *node, void *data)
+{
+ DBG("regionformat_changed");
+ _clock_format_changed_cb(NULL,data);
}
-static int language_changed_cb(void *data)
-{
- DBG("language_changed_cb");
- indicator_clock_changed_cb(data);
- return OK;
-}
-static int region_changed_cb(void *data)
+static void timezone_int_changed(keynode_t *node, void *data)
{
- DBG("region_changed_cb");
- indicator_clock_format_changed_cb(NULL, data);
- return OK;
+ DBG("timezone_int_changed");
+ _clock_format_changed_cb(NULL,data);
}
-static int wake_up_cb(void *data)
-{
- int status = 0;
- int lock_type = 0;
- INFO("CLOCK wake_up_cb");
-
- retif(data == NULL, FAIL, "Invalid parameter!");
- vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_type);
-
- vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
-
- DBG("wake_up_cb(%d,%d)",lock_type,status);
+static void timezone_id_changed(keynode_t *node, void *data)
+{
+ char *szTimezone = NULL;
+ szTimezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
- if(status == 1)
- {
- if(lock_type == VCONFKEY_IDLE_UNLOCK && battery_charging==1)
- {
- indicator_clock_display_battery_percentage(data,0);
- return OK;
- }
- }
+ DBG("timezone_id_changed %s",szTimezone);
+ _clock_format_changed_cb(NULL,data);
+}
- indicator_clock_changed_cb(data);
- return OK;
-}
static int register_clock_module(void *data)
{
set_app_state(data);
- ret = vconf_notify_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED,
- indicator_clock_format_changed_cb, data);
- if (ret != OK) {
- ERR("Fail: register VCONFKEY_SYSTEM_TIME_CHANGED");
- r = r | ret;
- }
-
- ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
- indicator_clock_format_changed_cb, data);
- if (ret != OK) {
- ERR("Fail: register VCONFKEY_REGIONFORMAT_TIME1224");
- r = r | ret;
- }
-
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT,
- indicator_clock_format_changed_cb, data);
- if (ret != OK) {
- ERR("Fail: register VCONFKEY_SETAPPL_TIMEZONE_INT");
- r = r | ret;
- }
-
- ret = vconf_notify_key_changed(VCONFKEY_PM_STATE, indicator_clock_pm_state_change_cb, (void *)data);
-
- if (ret != OK) {
- ERR("Fail: register VCONFKEY_PM_STATE");
- r = r | ret;
- }
-
- ret = vconf_notify_key_changed(VCONFKEY_BATTERY_DISP_STATE,
- indicator_clock_battery_disp_changed_cb, data);
+ /*ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED, _time_changed, data);
if (ret != OK) {
- ERR("Fail: register VCONFKEY_SETAPPL_TIMEZONE_INT");
r = r | ret;
- }
+ }*/
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
- indicator_clock_battery_capacity_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224, regionformat_changed, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
- indicator_clock_charging_now_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, timezone_int_changed, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
- indicator_clock_usb_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, timezone_id_changed, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
-
- ret = vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE,
- indicator_clock_lock_state_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT, regionformat_changed, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
-
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
- indicator_clock_battery_precentage_setting_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = r | ret;
- }
-
- indicator_clock_format_changed_cb(NULL, data);
+ _clock_format_changed_cb(NULL, data);
+ indicator_clock_charging_now_cb(NULL,data);
return r;
}
+
+
static int unregister_clock_module(void)
{
int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_SYSTEM_TIME_CHANGED,
- indicator_clock_format_changed_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_SYSTEM_TIME_CHANGED");
+ //ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224, regionformat_changed);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT, timezone_int_changed);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_ID, timezone_id_changed);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT, regionformat_changed);
- ret = vconf_ignore_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
- indicator_clock_format_changed_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_REGIONFORMAT_TIME1224");
+ if (clock_timer != NULL) {
+ ecore_timer_del(clock_timer);
+ clock_timer = NULL;
+ }
- ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_TIMEZONE_INT,
- indicator_clock_format_changed_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_SETAPPL_TIMEZONE_INT");
+ cal_delete_last_generator();
- ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
- indicator_clock_pm_state_change_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_PM_STATE");
+ return ret;
+}
- ret = vconf_ignore_key_changed(VCONFKEY_BATTERY_DISP_STATE,
- indicator_clock_battery_disp_changed_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_BATTERY_DISP_STATE");
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
- indicator_clock_battery_capacity_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CAPACITY");
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
- indicator_clock_charging_now_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
+static inline char *_extend_heap(char *buffer, int *sz, int incsz)
+{
+ char *tmp;
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
- indicator_clock_usb_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
+ *sz += incsz;
+ tmp = realloc(buffer, *sz);
+ if (!tmp) {
+ ERR("Heap");
+ return NULL;
+ }
+ return tmp;
+}
- ret = vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE,
- indicator_clock_lock_state_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
- ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
- indicator_clock_battery_precentage_setting_cb);
- if (ret != OK)
- ERR("Fail: unregister VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
- if (timer != NULL) {
- ecore_timer_del(timer);
- timer = NULL;
- }
+static char *_string_replacer(const char *src, const char *pattern, const char *replace)
+{
+ const char *ptr;
+ char *tmp = NULL;
+ char *ret = NULL;
+ int idx = 0;
+ int out_idx = 0;
+ int out_sz = 0;
+ enum {
+ STATE_START,
+ STATE_FIND,
+ STATE_CHECK,
+ STATE_END,
+ } state;
+
+ if (!src || !pattern)
+ return NULL;
- if (battery_timer != NULL) {
- ecore_timer_del(battery_timer);
- battery_timer = NULL;
+ out_sz = strlen(src);
+ ret = strdup(src);
+ if (!ret) {
+ ERR("Heap");
+ return NULL;
}
- if (battery_charging_timer != NULL) {
- ecore_timer_del(battery_charging_timer);
- battery_charging_timer = NULL;
+ out_idx = 0;
+ for (state = STATE_START, ptr = src; state != STATE_END; ptr++) {
+ switch (state) {
+ case STATE_START:
+ if (*ptr == '\0') {
+ state = STATE_END;
+ } else if (!isblank(*ptr)) {
+ state = STATE_FIND;
+ ptr--;
+ }
+ break;
+ case STATE_FIND:
+ if (*ptr == '\0') {
+ state = STATE_END;
+ } else if (*ptr == *pattern) {
+ state = STATE_CHECK;
+ ptr--;
+ idx = 0;
+ } else {
+ ret[out_idx] = *ptr;
+ out_idx++;
+ if (out_idx == out_sz) {
+ tmp = _extend_heap(ret, &out_sz, strlen(replace) + 1);
+ if (!tmp) {
+ free(ret);
+ return NULL;
+ }
+ ret = tmp;
+ }
+ }
+ break;
+ case STATE_CHECK:
+ if (!pattern[idx]) {
+ /*!
+ * If there is no space for copying the replacement,
+ * Extend size of the return buffer.
+ */
+ if (out_sz - out_idx < strlen(replace) + 1) {
+ tmp = _extend_heap(ret, &out_sz, strlen(replace) + 1);
+ if (!tmp) {
+ free(ret);
+ return NULL;
+ }
+ ret = tmp;
+ }
+
+ strcpy(ret + out_idx, replace);
+ out_idx += strlen(replace);
+
+ state = STATE_FIND;
+ ptr--;
+ } else if (*ptr != pattern[idx]) {
+ ptr -= idx;
+
+ /* Copy the first matched character */
+ ret[out_idx] = *ptr;
+ out_idx++;
+ if (out_idx == out_sz) {
+ tmp = _extend_heap(ret, &out_sz, strlen(replace) + 1);
+ if (!tmp) {
+ free(ret);
+ return NULL;
+ }
+
+ ret = tmp;
+ }
+
+ state = STATE_FIND;
+ } else {
+ idx++;
+ }
+ break;
+ default:
+ break;
+ }
}
- return OK;
+ ret[out_idx] = '\0';
+ return ret;
}
-void indicator_get_time_by_region(char* output,void *data)
+
+
+void indicator_get_apm_by_region(char* output,void *data)
{
retif(data == NULL, , "Data parameter is NULL");
retif(output == NULL, , "output parameter is NULL");
UChar customSkeleton[CLOCK_STR_LEN] = { 0, };
+ UChar u_timezone[64] = {0,};
+
UErrorCode status = U_ZERO_ERROR;
UDateFormat *formatter = NULL;
char *time_skeleton = "hhmm";
+ char* timezone_id = NULL;
+ timezone_id = util_get_timezone_str();
+
char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT);
- if (locale == NULL) {
- DBG("[Error] get value of VCONFKEY_REGIONFORMAT fail.");
+ if(locale == NULL)
+ {
+ ERR("[Error] get value of fail.");
+ free(timezone_id);
+ return;
+ }
+
+ /* Remove ".UTF-8" in locale */
+ char locale_tmp[32] = {0,};
+ strncpy(locale_tmp, locale, sizeof(locale_tmp)-1);
+ char *p = util_safe_str(locale_tmp, ".UTF-8");
+ if (p) {
+ *p = 0;
}
u_uastrncpy(customSkeleton, time_skeleton, strlen(time_skeleton));
- pattern_generator = udatpg_open(locale, &status);
+ pattern_generator = __cal_get_pattern_generator (locale_tmp, &status);
+ if (pattern_generator == NULL) {
+ return ;
+ }
int32_t bestPatternCapacity = (int32_t) (sizeof(bestPattern) / sizeof((bestPattern)[0]));
(void)udatpg_getBestPattern(pattern_generator, customSkeleton,
u_austrcpy(bestPatternString, bestPattern);
u_uastrcpy(bestPattern,"a");
+ DBG("TimeZone is %s", timezone_id);
+
if(bestPatternString[0] == 'a')
{
apm_position = 0;
}
UDate date = ucal_getNow();
- formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern, -1, &status);
+ if(timezone_id)
+ {
+ u_uastrncpy(u_timezone, timezone_id, sizeof(u_timezone));
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, u_timezone, -1, bestPattern, -1, &status);
+ }
+ else
+ {
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, NULL, -1, bestPattern, -1, &status);
+ }
+ if (formatter == NULL) {
+ return ;
+ }
+
int32_t formattedCapacity = (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
(void)udat_format(formatter, date, formatted, formattedCapacity, NULL, &status);
u_austrcpy(formattedString, formatted);
- DBG("DATE & TIME is %s %s %d %s", locale, formattedString, u_strlen(formatted), bestPatternString);
-
apm_length = u_strlen(formatted);
- udatpg_close(pattern_generator);
-
udat_close(formatter);
if(strlen(formattedString)<CLOCK_STR_LEN)
return;
}
+
+
+void indicator_get_time_by_region(char* output,void *data)
+{
+ retif(data == NULL, , "Data parameter is NULL");
+ retif(output == NULL, , "output parameter is NULL");
+
+ UChar customSkeleton[CLOCK_STR_LEN] = { 0, };
+ UChar u_timezone[64] = {0,};
+
+ UErrorCode status = U_ZERO_ERROR;
+ UDateFormat *formatter = NULL;
+
+ UChar bestPattern[CLOCK_STR_LEN] = { 0, };
+ UChar formatted[CLOCK_STR_LEN] = { 0, };
+
+ char bestPatternString[CLOCK_STR_LEN] = { 0, };
+ char formattedString[CLOCK_STR_LEN] = { 0, };
+ char* convertFormattedString = NULL;
+
+ char time_skeleton[20] = {0,};
+ UDateTimePatternGenerator *pattern_generator = NULL;
+
+ if(clock_mode == INDICATOR_CLOCK_MODE_12H)
+ {
+ strcpy(time_skeleton,"hm");
+ }
+ else
+ {
+ strcpy(time_skeleton,"Hm");
+ }
+ char* timezone_id = NULL;
+ timezone_id = util_get_timezone_str();
+
+ char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT);
+ if(locale == NULL)
+ {
+ ERR("[Error] get value of fail.");
+ free(timezone_id);
+ return;
+ }
+
+ /* Remove ".UTF-8" in locale */
+ char locale_tmp[32] = {0,};
+ strncpy(locale_tmp, locale, sizeof(locale_tmp)-1);
+ char *p = util_safe_str(locale_tmp, ".UTF-8");
+ if (p) {
+ *p = 0;
+ }
+
+ u_uastrncpy(customSkeleton, time_skeleton, strlen(time_skeleton));
+
+ pattern_generator = __cal_get_pattern_generator (locale_tmp, &status);
+ if (pattern_generator == NULL) {
+ return ;
+ }
+
+ int32_t bestPatternCapacity = (int32_t) (sizeof(bestPattern) / sizeof((bestPattern)[0]));
+ (void)udatpg_getBestPattern(pattern_generator, customSkeleton,
+ u_strlen(customSkeleton), bestPattern,
+ bestPatternCapacity, &status);
+
+ char a_best_pattern[64] = {0,};
+ u_austrcpy(a_best_pattern, bestPattern);
+ char *a_best_pattern_fixed = strtok(a_best_pattern, "a");
+ a_best_pattern_fixed = strtok(a_best_pattern_fixed, " ");
+ if(a_best_pattern_fixed)
+ {
+ u_uastrcpy(bestPattern, a_best_pattern_fixed);
+ }
+
+ u_austrcpy(bestPatternString, bestPattern);
+
+ DBG("BestPattern is %s", bestPatternString);
+ DBG("TimeZone is %s", timezone_id);
+
+ UDate date = ucal_getNow();
+ if(timezone_id)
+ {
+ u_uastrncpy(u_timezone, timezone_id, sizeof(u_timezone));
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, u_timezone, -1, bestPattern, -1, &status);
+ }
+ else
+ {
+ formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale_tmp, NULL, -1, bestPattern, -1, &status);
+ }
+
+ if (formatter == NULL) {
+ return;
+ }
+ int32_t formattedCapacity = (int32_t) (sizeof(formatted) / sizeof((formatted)[0]));
+ (void)udat_format(formatter, date, formatted, formattedCapacity, NULL, &status);
+ u_austrcpy(formattedString, formatted);
+ DBG("DATE & TIME is %s %s %d %s", locale_tmp, formattedString, u_strlen(formatted), bestPatternString);
+
+ DBG("24H :: Before change %s", formattedString);
+ convertFormattedString = _string_replacer(formattedString, colon, ratio);
+ DBG("24H :: After change %s", convertFormattedString);
+
+ if(convertFormattedString == NULL)
+ {
+ DBG("_string_replacer return NULL");
+ udat_close(formatter);
+ return;
+ }
+
+ udat_close(formatter);
+
+ if(strlen(convertFormattedString)<CLOCK_STR_LEN)
+ {
+ strncpy(output,convertFormattedString,strlen(convertFormattedString));
+ }
+ else
+ {
+ strncpy(output,convertFormattedString,CLOCK_STR_LEN-1);
+ }
+
+ if(convertFormattedString != NULL)
+ {
+ free(convertFormattedString);
+ convertFormattedString = NULL;
+ }
+
+ return;
+}
+
+
+
static UChar *uastrcpy(const char *chars)
{
int len = 0;
return str;
}
+
+
static void ICU_set_timezone(const char *timezone)
{
if(timezone == NULL)
return;
}
- DBG("ICU_set_timezone = %s ", timezone);
UErrorCode ec = U_ZERO_ERROR;
UChar *str = uastrcpy(timezone);
ucal_setDefaultTimeZone(str, &ec);
if (U_SUCCESS(ec)) {
- DBG("ucal_setDefaultTimeZone() SUCCESS ");
} else {
DBG("ucal_setDefaultTimeZone() FAILED : %s ",
u_errorName(ec));
}
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *_access_info_cb(void *data, Evas_Object *obj)
+{
+ Evas_Object *item = data;
+ char *tmp = NULL;
+ char time_str[32];
+ char time_buf[128], ampm_buf[128];
+ char buf[CLOCK_STR_LEN];
+ char buf1[CLOCK_STR_LEN];
+ int ret = 0;
+ int battery_capa = 0;
+ int hour = 0;
+ int minute = 0;
+ char strHour[128] = { 0, };
+ char strMin[128] = { 0, };
+
+
+ struct tm *ts = NULL;
+ time_t ctime;
+ int len;
+
+ retif(data == NULL,NULL, "Invalid parameter!");
+ char *timezone = util_get_timezone_str();
+ ICU_set_timezone(timezone);
+ if(timezone!=NULL)
+ free(timezone);
+
+ /* Set time */
+ ctime = time(NULL);
+ ts = localtime(&ctime);
+ if (ts == NULL)
+ return NULL;
+
+ memset(time_str, 0x00, sizeof(time_str));
+ memset(time_buf, 0x00, sizeof(time_buf));
+ memset(ampm_buf, 0x00, sizeof(ampm_buf));
+ memset(buf, 0x00, sizeof(buf));
+ memset(buf1, 0x00, sizeof(buf1));
+
+ if (clock_mode == INDICATOR_CLOCK_MODE_12H) {
+ char bf1[32] = { 0, };
+
+ if (ts->tm_hour >= 0 && ts->tm_hour < 12)
+ strncpy(ampm_buf, _("IDS_IDLE_OPT_AM_ABB"),sizeof(ampm_buf)-1);
+ else
+ strncpy(ampm_buf, _("IDS_IDLE_OPT_PM_ABB"),sizeof(ampm_buf)-1);
+
+ strftime(bf1, sizeof(bf1), "%l", ts);
+ hour = atoi(bf1);
+ strftime(bf1, sizeof(bf1), "%M", ts);
+ minute = atoi(bf1);
+ }
+ else{
+ char bf1[32] = { 0, };
+
+ strftime(bf1, sizeof(bf1), "%H", ts);
+ hour = atoi(bf1);
+ strftime(bf1, sizeof(bf1), "%M", ts);
+ minute = atoi(bf1);
+ }
+
+ if(hour ==1)
+ {
+ strncpy(strHour, _("IDS_COM_BODY_1_HOUR"),sizeof(strHour));
+ }
+ else
+ {
+ snprintf(strHour, sizeof(strHour), _("IDS_COM_POP_PD_HOURS"),hour);
+ }
+
+ if(minute ==1)
+ {
+ strncpy(strMin, _("IDS_COM_BODY_1_MINUTE"),sizeof(strMin));
+ }
+ else
+ {
+ snprintf(strMin, sizeof(strMin), _("IDS_COM_BODY_PD_MINUTES"),minute);
+ }
+
+ if(clock_mode == INDICATOR_CLOCK_MODE_12H)
+ snprintf(time_str, sizeof(time_str), "%s, %s, %s", strHour, strMin,ampm_buf);
+ else
+ snprintf(time_str, sizeof(time_str), "%s, %s", strHour, strMin);
+
+
+ ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_capa);
+ if (ret != OK)
+ {
+ return NULL;
+ }
+ if (battery_capa < 0)
+ {
+ return NULL;
+ }
+
+ if (battery_capa > 100)
+ battery_capa = 100;
+ snprintf(buf1, sizeof(buf1), _("IDS_IDLE_BODY_PD_PERCENT_OF_BATTERY_POWER_REMAINING"), battery_capa);
+
+ snprintf(buf, sizeof(buf), "%s, %s, %s", time_str, buf1, _("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+
+ DBG("buf: %s", buf);
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
+}
+
+
+
+static int register_clock_tts(void *data,int win_type)
+{
+ int r = 0, ret = -1;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ Evas_Object *to = NULL;
+ Evas_Object *ao = NULL;
+ struct appdata *ad = data;
+
+ to = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(ad->win[win_type].layout), "elm.rect.clock.access");
+ ao = util_access_object_register(to, ad->win[win_type].layout);
+ util_access_object_info_cb_set(ao,ELM_ACCESS_INFO,_access_info_cb,data);
+ return 0;
+}
+#endif
+
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
+#include <tapi_common.h>
+#include <TelNetwork.h>
+#include <TelSim.h>
+#include <ITapiNetwork.h>
+#include <TelCall.h>
#include <vconf.h>
+#include <wifi.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
+#include "box.h"
+#include "log.h"
+#include "network/rssi.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED2
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED5
#define MODULE_NAME "connection"
#define TIMER_INTERVAL 0.3
+#define TAPI_HANDLE_MAX 2
static int register_conn_module(void *data);
static int unregister_conn_module(void);
static int wake_up_cb(void *data);
+static int transfer_state = -1;
+int isBTIconShowing = 0;
+extern TapiHandle *tapi_handle[TAPI_HANDLE_MAX+1];
+static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
-Indicator_Icon_Object conn[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_FIXED,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .init = register_conn_module,
- .fini = unregister_conn_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s conn = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
.area = INDICATOR_ICON_AREA_FIXED,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.init = register_conn_module,
.fini = unregister_conn_module,
.wake_up = wake_up_cb
-}
};
enum {
LEVEL_2G = LEVEL_MIN,
LEVEL_EDGE,
LEVEL_3G,
- LEVEL_HS,
+ LEVEL_H,
+ LEVEL_H_PLUS,
LEVEL_3G_PLUS,
- LEVEL_CDMA,
- LEVEL_GPRS,
- LEVEL_EVDO,
- LEVEL_CONN,
- LEVEL_CONN03,
- LEVEL_CONN_1X,
LEVEL_LTE,
+ LEVEL_4G,
+ LEVEL_BT_TETHERING,
LEVEL_MAX
};
static const char *icon_path[LEVEL_MAX] = {
- [LEVEL_2G] = "Connection/B03_connection_GSM.png",
- [LEVEL_EDGE] = "Connection/B03_connection02.png",
+ [LEVEL_2G] = "Connection/B03_connection_G.png",
+ [LEVEL_EDGE] = "Connection/B03_connection_E.png",
[LEVEL_3G] = "Connection/B03_connection_3G.png",
- [LEVEL_HS] = "Connection/B03_connection_Highspeed.png",
+ [LEVEL_H] = "Connection/B03_connection_H.png",
+ [LEVEL_H_PLUS] = "Connection/B03_connection_H+.png",
[LEVEL_3G_PLUS] = "Connection/B03_connection_3G+.png",
- [LEVEL_CDMA] = "Connection/B03_connection_CDMA.png",
- [LEVEL_GPRS] = "Connection/B03_connection_GPRS.png",
- [LEVEL_EVDO] = "Connection/B03_connection_EVDO.png",
- [LEVEL_CONN] = "Connection/B03_connection.png",
- [LEVEL_CONN03] = "Connection/B03_connection03.png",
- [LEVEL_CONN_1X] = "Connection/B03_connection_1x.png",
[LEVEL_LTE] = "Connection/B03_connection_LTE.png",
+ [LEVEL_4G] = "Connection/B03_connection_4G.png",
+ [LEVEL_BT_TETHERING] = "Bluetooth, NFC, GPS/B03_BT_tethering_network.png"
};
-static Eina_Bool dnet_transferring = EINA_FALSE;
-static int updated_while_lcd_off = 0;
static void set_app_state(void* data)
{
- int i = 0;
+ conn.ad = data;
+}
+
+
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+static void show_connection_transfer_icon(void* data)
+{
+ int state = 0;
+ int ret = 0;
+ int type = -1;
+
+ ret = vconf_get_int(VCONFKEY_PACKET_STATE, &state);
+ if (ret == OK) {
+ switch (state) {
+ case VCONFKEY_PACKET_RX:
+ type = TRANSFER_DOWN;
+ break;
+ case VCONFKEY_PACKET_TX:
+ type = TRANSFER_UP;
+ break;
+ case VCONFKEY_PACKET_RXTX:
+ type = TRANSFER_UPDOWN;
+ break;
+ case VCONFKEY_PACKET_NORMAL:
+ type = TRANSFER_NONE;
+ break;
+ default:
+ type = -1;
+ break;
+ }
+ }
+
+ if(transfer_state==type)
{
- conn[i].ad = data;
+ DBG("same transfer state");
+ return;
+ }
+
+ DBG("type %d",type);
+ transfer_state = type;
+ switch (type)
+ {
+ case TRANSFER_NONE:
+ util_signal_emit(conn.ad,"indicator.connection.updown.none","indicator.prog");
+ break;
+ case TRANSFER_DOWN:
+ util_signal_emit(conn.ad,"indicator.connection.updown.download","indicator.prog");
+ break;
+ case TRANSFER_UP:
+ util_signal_emit(conn.ad,"indicator.connection.updown.upload","indicator.prog");
+ break;
+ case TRANSFER_UPDOWN:
+ util_signal_emit(conn.ad,"indicator.connection.updown.updownload","indicator.prog");
+ break;
+ default:
+ break;
+
}
}
+
+
static void show_image_icon(int type)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == type)
{
- conn[i].img_obj.data = icon_path[type];
- indicator_util_icon_show(&conn[i]);
+ return;
}
+
+ conn.img_obj.data = icon_path[type];
+ icon_show(&conn);
+
+ prevIndex = type;
+ util_signal_emit(conn.ad,"indicator.connection.show","indicator.prog");
}
+
+
+
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ transfer_state = -1;
+
+ icon_hide(&conn);
+
+ util_signal_emit(conn.ad,"indicator.connection.hide","indicator.prog");
+ util_signal_emit(conn.ad,"indicator.connection.updown.hide","indicator.prog");
+
+ prevIndex = -1;
+}
+
+
+
+static void _show_proper_icon(int svc_type,int ps_type, void *data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+
+ if (ps_type != TAPI_NETWORK_PS_TYPE_UNKNOWN) {
+ switch (ps_type) {
+ case TAPI_NETWORK_PS_TYPE_HSDPA:
+ case TAPI_NETWORK_PS_TYPE_HSUPA:
+ case TAPI_NETWORK_PS_TYPE_HSPA:
+ show_image_icon(LEVEL_H);
+ show_connection_transfer_icon(data);
+ break;
+ case TAPI_NETWORK_PS_TYPE_HSPAP:
+ show_image_icon(LEVEL_H_PLUS);
+ show_connection_transfer_icon(data);
+ break;
+ default:
+ hide_image_icon();
+ break;
+ }
+ } else {
+ switch (svc_type) {
+ case TAPI_NETWORK_SERVICE_TYPE_UNKNOWN:
+ case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
+ case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
+ case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
+ hide_image_icon();
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_2G:
+ case TAPI_NETWORK_SERVICE_TYPE_2_5G:
+ show_image_icon(LEVEL_2G);
+ show_connection_transfer_icon(data);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_2_5G_EDGE:
+ show_image_icon(LEVEL_EDGE);
+ show_connection_transfer_icon(data);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_3G:
+ show_image_icon(LEVEL_3G);
+ show_connection_transfer_icon(data);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_HSDPA:
+ show_image_icon(LEVEL_H_PLUS);
+ show_connection_transfer_icon(data);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_LTE:
+ show_image_icon(LEVEL_LTE);
+ show_connection_transfer_icon(data);
+ break;
+ default:
+ hide_image_icon();
+ break;
+ }
+ }
+}
+
+
+
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ DBG("On noti function");
+ TelNetworkDefaultDataSubs_t default_subscription = TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN;
+ int ret = 0;
+ int val = 0;
+ int ps_type = 0;
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+
+ ret = wifi_get_connection_state(&val);
+ DBG("WIFI Status : %d", val);
+ if (ret == WIFI_ERROR_NONE && val == WIFI_CONNECTION_STATE_CONNECTED) {
+ DBG("WIFI connected, so hide connection icon");
+ hide_image_icon();
+ return;
+ }
+
+ ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &val);
+ if (ret == OK && val == TRUE) {
+ DBG("FLIGHT MODE ON");
+ hide_image_icon();
+ return;
+ }
+
+ ret = vconf_get_int(VCONFKEY_NETWORK_STATUS, &val);
+ if (ret == OK && val == VCONFKEY_NETWORK_BLUETOOTH) {
+ DBG("bluetooth tethering On");
+ isBTIconShowing = 1;
+ show_image_icon(LEVEL_BT_TETHERING);
+ util_signal_emit(conn.ad,"indicator.connection.updown.hide","indicator.prog");
+ return;
+ }
+ else if (ret == OK && val != VCONFKEY_NETWORK_BLUETOOTH) {
+ DBG("bluetooth tethering Off");
+ if(isBTIconShowing == 1)
+ {
+ isBTIconShowing = 0;
+ hide_image_icon();
+ }
+ }
+
+ int index = rssi_get_sim_number(handle_obj);
+ default_subscription = ad->tel_info[index].prefered_data;
+
+ if(default_subscription == TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN)
{
- indicator_util_icon_hide(&conn[i]);
+ hide_image_icon();
+ }
+ else if(default_subscription == TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM1)
+ {
+ int ret = 0;
+ ret = vconf_get_int(VCONFKEY_DNET_STATE, &val);
+ if (ret == OK) {
+ if (val == VCONFKEY_DNET_OFF)
+ {
+ DBG("CONNECTION DNET Status: %d", val);
+ hide_image_icon();
+ return;
+ }
+ }
+
+ val = ad->tel_info[0].network_service_type;
+ ps_type = ad->tel_info[0].network_ps_type;
+
+ DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM1 %d",val);
+ DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM1 %d",ps_type);
+ _show_proper_icon(val,ps_type, user_data);
+ }
+ else
+ {
+ int ret = 0;
+// ret = vconf_get_int(VCONFKEY_DNET_STATE2, &val);
+ if (ret == OK) {
+ if (val == VCONFKEY_DNET_OFF)
+ {
+ DBG("CONNECTION DNET Status: %d", val);
+ hide_image_icon();
+ return;
+ }
+ }
+
+ val = ad->tel_info[1].network_service_type;
+ ps_type = ad->tel_info[1].network_ps_type;
+
+ DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM2 %d",val);
+ DBG("TAPI_NETWORK_DEFAULT_DATA_SUBS_SIM2 %d",ps_type);
+ _show_proper_icon(val,ps_type, user_data);
}
}
+
static void indicator_conn_change_cb(keynode_t *node, void *data)
{
+ struct appdata* ad = NULL;
int svc_type = VCONFKEY_TELEPHONY_SVCTYPE_NONE;
int status = 0;
int ret = 0;
int ps_type = VCONFKEY_TELEPHONY_PSTYPE_NONE;
- if(indicator_util_get_update_flag()==0)
+ ret_if(!data);
+
+ ad = (struct appdata*)data;
+
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
DBG("need to update %d",updated_while_lcd_off);
retif(data == NULL, , "Invalid parameter!");
- ret = vconf_get_int(VCONFKEY_WIFI_STATE, &status);
- if (ret == OK) {
+ /* check wifi status */
+ ret = wifi_get_connection_state(&status);
+ if (ret == WIFI_ERROR_NONE) {
INFO("CONNECTION WiFi Status: %d", status);
- if ((status == VCONFKEY_WIFI_CONNECTED)) {
- hide_image_icon();
- if (dnet_transferring == EINA_TRUE) {
- dnet_transferring = EINA_FALSE;
+
+ if ((status == WIFI_CONNECTION_STATE_CONNECTED))
+ {
+ int mms_state = 0;
+ vconf_get_int(VCONFKEY_DNET_STATE, &mms_state);
+ box_update_display(&(ad->win));
+
+ if(mms_state!=VCONFKEY_DNET_SECURE_CONNECTED)
+ {
+ hide_image_icon();
+ return;
}
- return;
}
}
+ /* get dnet status */
ret = vconf_get_int(VCONFKEY_DNET_STATE, &status);
if (ret == OK) {
- INFO("CONNECTION DNET Status: %d", status);
if (status == VCONFKEY_DNET_OFF)
{
+ DBG("CONNECTION DNET Status: %d", status);
hide_image_icon();
- return;
}
- }
-
- ret = vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &ps_type);
- if (ret == OK)
- {
- INFO("Telephony packet service type: %d", ps_type);
-
- switch (ps_type)
+ else
{
- case VCONFKEY_TELEPHONY_PSTYPE_HSDPA:
- case VCONFKEY_TELEPHONY_PSTYPE_HSUPA:
- case VCONFKEY_TELEPHONY_PSTYPE_HSPA:
- show_image_icon(LEVEL_HS);
- return;
- case VCONFKEY_TELEPHONY_PSTYPE_NONE:
- default:
- break;
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &ps_type);
+ if (ret == OK)
+ {
+ INFO("Telephony packet service type: %d", ps_type);
+
+ switch (ps_type)
+ {
+
+ case VCONFKEY_TELEPHONY_PSTYPE_HSDPA:
+ case VCONFKEY_TELEPHONY_PSTYPE_HSUPA:
+ case VCONFKEY_TELEPHONY_PSTYPE_HSPA:
+ if(util_is_orf())
+ {
+ show_image_icon(LEVEL_3G_PLUS);
+ }
+ else
+ {
+ show_image_icon(LEVEL_H);
+ }
+ show_connection_transfer_icon(data);
+ return;
+ case VCONFKEY_TELEPHONY_PSTYPE_NONE:
+ default:
+ break;
+ }
+ }
+
+ /* check service type */
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+ if (ret == OK) {
+ switch (svc_type) {
+ case VCONFKEY_TELEPHONY_SVCTYPE_2G:
+ /**< Network 2G. Show to LEVEL_2G icon */
+ case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
+ /**< Network 2.5G. Show to LEVEL_2G icon */
+ show_image_icon(LEVEL_2G);
+ show_connection_transfer_icon(data);
+ break;
+ case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
+ /**< Network EDGE */
+ show_image_icon(LEVEL_EDGE);
+ show_connection_transfer_icon(data);
+ break;
+ case VCONFKEY_TELEPHONY_SVCTYPE_3G:
+ /**< Network UMTS */
+ show_image_icon(LEVEL_3G);
+ show_connection_transfer_icon(data);
+ break;
+ case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
+ /**< Network LTE */
+ show_image_icon(LEVEL_4G);
+ show_connection_transfer_icon(data);
+ break;
+
+ default:
+ hide_image_icon();
+ break;
+ }
+
+ return;
+ }
}
}
- ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+// ret = vconf_get_int(VCONFKEY_DNET_STATE2, &status);
if (ret == OK) {
- INFO("Telephony service type: %d", svc_type);
-
- switch (svc_type) {
- case VCONFKEY_TELEPHONY_SVCTYPE_2G:
- case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
- show_image_icon(LEVEL_2G);
- break;
- case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
- show_image_icon(LEVEL_EDGE);
- break;
- case VCONFKEY_TELEPHONY_SVCTYPE_3G:
- show_image_icon(LEVEL_3G);
- break;
- case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
- show_image_icon(LEVEL_LTE);
- break;
-
- default:
+ if (status == VCONFKEY_DNET_OFF)
+ {
+ DBG("CONNECTION DNET Status: %d", status);
hide_image_icon();
- break;
}
+ else
+ {
- return;
- }
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &ps_type);
+ if (ret == OK)
+ {
+ switch (ps_type)
+ {
+
+ case VCONFKEY_TELEPHONY_PSTYPE_HSDPA:
+ case VCONFKEY_TELEPHONY_PSTYPE_HSUPA:
+ if(util_is_orf())
+ {
+ show_image_icon(LEVEL_3G_PLUS);
+ }
+ else
+ {
+ show_image_icon(LEVEL_H);
+ }
+ show_connection_transfer_icon(data);
+ return;
+ case VCONFKEY_TELEPHONY_PSTYPE_HSPA:
+ show_image_icon(LEVEL_H_PLUS);
+ show_connection_transfer_icon(data);
+ return;
+
+ case VCONFKEY_TELEPHONY_PSTYPE_NONE:
+ default:
+ break;
+ }
+ }
+ /* check service type */
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+ if (ret == OK) {
+ switch (svc_type) {
+ case VCONFKEY_TELEPHONY_SVCTYPE_2G:
+ /**< Network 2G. Show to LEVEL_2G icon */
+ case VCONFKEY_TELEPHONY_SVCTYPE_2_5G:
+ /**< Network 2.5G. Show to LEVEL_2G icon */
+ show_image_icon(LEVEL_2G);
+ show_connection_transfer_icon(data);
+ break;
+ case VCONFKEY_TELEPHONY_SVCTYPE_2_5G_EDGE:
+ /**< Network EDGE */
+ show_image_icon(LEVEL_EDGE);
+ show_connection_transfer_icon(data);
+ break;
+ case VCONFKEY_TELEPHONY_SVCTYPE_3G:
+ /**< Network UMTS */
+ show_image_icon(LEVEL_3G);
+ show_connection_transfer_icon(data);
+ break;
+ case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
+ /**< Network LTE */
+ show_image_icon(LEVEL_4G);
+ show_connection_transfer_icon(data);
+ break;
+
+ default:
+ hide_image_icon();
+ break;
+ }
+
+ return;
+ }
+ }
+ }
hide_image_icon();
return;
}
+
+
static int wake_up_cb(void *data)
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
- indicator_conn_change_cb(NULL, data);
+ on_noti(tapi_handle[0], NULL, NULL, data);
return OK;
}
-static int register_conn_module(void *data)
+
+#if 0
+static void svc_type_callback(keynode_t *node, void *data)
{
- int r = 0, ret = -1;
+ int type = 0;
- retif(data == NULL, FAIL, "Invalid parameter!");
+ vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &type);
+ DBG("svc_type_callback %d",type);
+ indicator_conn_change_cb(node,data);
+}
+#endif
- set_app_state(data);
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
- indicator_conn_change_cb, data);
+static void ps_type_callback(keynode_t *node, void *data)
+{
+ int type = 0;
+
+ vconf_get_int(VCONFKEY_TELEPHONY_PSTYPE, &type);
+
+ DBG("ps_type_callback %d",type);
+ indicator_conn_change_cb(node,data);
+}
+
+
+
+static void dnet_state_callback(keynode_t *node, void *data)
+{
+ DBG("dnet_state_callback");
+ on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+static void dnet2_state_callback(keynode_t *node, void *data)
+{
+ DBG("dnet_state_callback");
+ on_noti(tapi_handle[1], NULL, NULL, data);
+}
+
+
+
+static void packet_state_callback(keynode_t *node, void *data)
+{
+ DBG("packet_state_callback");
+ on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+static void _wifi_status_changed_cb(wifi_connection_state_e state, wifi_ap_h ap, void *user_data)
+{
+ int status = 0;
+ int ret = 0;
+
+ ret = wifi_get_connection_state(&status);
+ if (ret == WIFI_ERROR_NONE)
+ {
+ INFO("[CB] WIFI Status: %d", status);
+ if(status == WIFI_CONNECTION_STATE_CONNECTED)
+ {
+ DBG("[CB] WIFI connected, so hide connection icon");
+ hide_image_icon();
+ }
+ else
+ {
+ on_noti(tapi_handle[0], NULL, NULL, user_data);
+ }
+ }
+}
+
+
+
+static void _flight_mode(keynode_t *key, void *data)
+{
+ on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+static void _bt_tethering(keynode_t *key, void *data)
+{
+ on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+void connection_icon_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ DBG("");
+ on_noti(handle_obj, NULL, NULL, user_data);
+}
+
+
+
+/* Initialize TAPI */
+static void __init_tel(void *data)
+{
+ DBG("__init_tel");
+ int ret = FAIL;
+
+ ret = vconf_notify_key_changed(VCONFKEY_DNET_STATE, dnet_state_callback, data);
if (ret != OK) {
ERR("Failed to register callback!");
- r = ret;
}
- ret = vconf_notify_key_changed(VCONFKEY_DNET_STATE,
- indicator_conn_change_cb, data);
+/* ret = vconf_notify_key_changed(VCONFKEY_DNET_STATE2, dnet2_state_callback, data);
+ if (ret != OK) {
+ ERR("Failed to register callback!");
+ }*/
+
+ ret = vconf_notify_key_changed(VCONFKEY_PACKET_STATE, packet_state_callback, data);
if (ret != OK) {
ERR("Failed to register callback!");
- r = r | ret;
}
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_PSTYPE,
- indicator_conn_change_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode, data);
if (ret != OK) {
ERR("Failed to register callback!");
+ }
+
+ ret = vconf_notify_key_changed(VCONFKEY_NETWORK_STATUS, _bt_tethering, data);
+ if (ret != OK) {
+ ERR("Failed to register callback!");
+ }
+
+ on_noti(tapi_handle[0], NULL, NULL, data);
+}
+
+
+
+/* De-initialize TAPI */
+static void __deinit_tel()
+{
+ DBG("__deinit_tel");
+}
+
+
+
+static void tel_ready_cb(keynode_t *key, void *data)
+{
+ gboolean status = FALSE;
+
+ status = vconf_keynode_get_bool(key);
+ if (status == TRUE) { /* Telephony State - READY */
+ __init_tel(data);
+ }
+ else { /* Telephony State – NOT READY */
+ /* De-initialization is optional here (ONLY if required) */
+ __deinit_tel();
+ }
+}
+
+
+
+static int register_conn_module(void *data)
+{
+ int r = 0, ret = -1;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_PSTYPE,
+ ps_type_callback, data);
+ if (ret != OK) {
r = r | ret;
}
- indicator_conn_change_cb(NULL, data);
+ ret = wifi_set_connection_state_changed_cb(_wifi_status_changed_cb, data);
+ if (ret != WIFI_ERROR_NONE) {
+ ERR("Failed to register wifi_set_connection_state_changed_cb!");
+ r = r | ret;
+ }
+ gboolean state = FALSE;
+
+ vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
+
+ if(state)
+ {
+ DBG("Telephony ready");
+ __init_tel(data);
+ }
+ else
+ {
+ DBG("Telephony not ready");
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb, data);
+ }
return r;
}
-static int unregister_conn_module(void)
-{
- int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
- indicator_conn_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
- ret = vconf_ignore_key_changed(VCONFKEY_DNET_STATE,
- indicator_conn_change_cb);
+static int unregister_conn_module(void)
+{
+ int ret = -1;
+
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_PSTYPE, ps_type_callback);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_DNET_STATE, dnet_state_callback);
+// ret = ret | vconf_ignore_key_changed(VCONFKEY_DNET_STATE2, dnet_state_callback);
+ ret = ret | wifi_unset_connection_state_changed_cb();
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_PACKET_STATE, packet_state_callback);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_NETWORK_STATUS, _bt_tethering);
if (ret != OK)
ERR("Failed to unregister callback!");
- if (dnet_transferring == EINA_TRUE) {
- dnet_transferring = EINA_FALSE;
- }
+ __deinit_tel();
- return OK;
+ return ret;
}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_CONNECTION_H__
+#define __INDICATOR_CONNECTION_H__
+
+extern void connection_icon_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+
+#endif
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
+#define MODULE_NAME "dock"
+#define TIMER_INTERVAL 0.3
+
+static int register_dock_module(void *data);
+static int unregister_dock_module(void);
+static int bShown = 0;
+
+icon_s dock = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_NOTI,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .init = register_dock_module,
+ .fini = unregister_dock_module
+};
+
+static const char *icon_path[] = {
+ "Desk dock/B03_desk_dock.png",
+ NULL
+};
+
+
+
+static void set_app_state(void* data)
+{
+ dock.ad = data;
+}
+
+
+
+static void show_image_icon(void)
+{
+ if(bShown == 1)
+ {
+ return;
+ }
+
+ dock.img_obj.data = icon_path[0];
+ icon_show(&dock);
+
+ bShown = 1;
+}
+
+
+
+static void hide_image_icon(void)
+{
+ icon_hide(&dock);
+
+ bShown = 0;
+}
+
+
+
+static void indicator_dock_change_cb(keynode_t *node, void *data)
+{
+ int status;
+ int ret;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+ /* First, check dock status */
+ ret = vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &status);
+ if (ret == OK) {
+ if (status > 0) {
+ DBG("dock Status: %d", status);
+ show_image_icon();
+ }
+ else
+ {
+ hide_image_icon();
+ }
+ }
+
+ return;
+}
+
+
+
+static int register_dock_module(void *data)
+{
+ int r = 0, ret = -1;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS,
+ indicator_dock_change_cb, data);
+ if (ret != OK)
+ {
+ r = ret;
+ }
+
+ indicator_dock_change_cb(NULL, data);
+
+ return r;
+}
+
+
+
+static int unregister_dock_module(void)
+{
+ int ret;
+
+ ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS,
+ indicator_dock_change_cb);
+
+ return ret;
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
#define MODULE_NAME "mobile_hotspot"
static int unregister_mobile_hotspot_module(void);
static int wake_up_cb(void *data);
-Indicator_Icon_Object mobile_hotspot[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_mobile_hotspot_module,
- .fini = unregister_mobile_hotspot_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
+icon_s mobile_hotspot = {
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_NOTI,
.init = register_mobile_hotspot_module,
.fini = unregister_mobile_hotspot_module,
.wake_up = wake_up_cb
-}
-
};
enum {
- MOBILEAP_ON_NOT_CONNECTED = 0,
- MOBILEAP_CONNECTED_MIN = MOBILEAP_ON_NOT_CONNECTED,
- MOBILEAP_CONNECTED1,
- MOBILEAP_CONNECTED2,
- MOBILEAP_CONNECTED3,
- MOBILEAP_CONNECTED4,
- MOBILEAP_CONNECTED5,
- MOBILEAP_CONNECTED6,
- MOBILEAP_CONNECTED7,
- MOBILEAP_CONNECTED8,
- MOBILEAP_CONNECTED9,
- MOBILEAP_MAX,
+ TETHERING_ALL_ON_CONNECTED = 0,
+ TETHERING_ALL_ON_NOT_CONNECTED,
+ TETHERING_BT_ON_CONNECTED,
+ TETHERING_BT_ON_NOT_CONNECTED,
+ TETHERING_USB_ON_CONNECTED,
+ TETHERING_USB_ON_NOT_CONNECTED,
+ TETHERING_WIFI_ON_CONNECTED,
+ TETHERING_WIFI_ON_NOT_CONNECTED,
+ TETHERING_MAX,
};
-static const char *icon_path[MOBILEAP_MAX] = {
- [MOBILEAP_ON_NOT_CONNECTED] =
- "Connection/B03_MobileAP_on¬ connected.png",
- [MOBILEAP_CONNECTED1] = "Connection/B03_MobileAP_connected_01.png",
- [MOBILEAP_CONNECTED2] = "Connection/B03_MobileAP_connected_02.png",
- [MOBILEAP_CONNECTED3] = "Connection/B03_MobileAP_connected_03.png",
- [MOBILEAP_CONNECTED4] = "Connection/B03_MobileAP_connected_04.png",
- [MOBILEAP_CONNECTED5] = "Connection/B03_MobileAP_connected_05.png",
- [MOBILEAP_CONNECTED6] = "Connection/B03_MobileAP_connected_06.png",
- [MOBILEAP_CONNECTED7] = "Connection/B03_MobileAP_connected_07.png",
- [MOBILEAP_CONNECTED8] = "Connection/B03_MobileAP_connected_08.png",
- [MOBILEAP_CONNECTED9] = "Connection/B03_MobileAP_connected_09.png",
+static const char *icon_path[TETHERING_MAX] = {
+ [TETHERING_ALL_ON_CONNECTED] = "tethering/B03_All_connected.png",
+ [TETHERING_ALL_ON_NOT_CONNECTED] = "tethering/B03_All_no_connected.png",
+ [TETHERING_BT_ON_CONNECTED] = "tethering/B03_BT_connected.png",
+ [TETHERING_BT_ON_NOT_CONNECTED] = "tethering/B03_BT_no_connected.png",
+ [TETHERING_USB_ON_CONNECTED] = "tethering/B03_USB_connected.png",
+ [TETHERING_USB_ON_NOT_CONNECTED] = "tethering/B03_USB_no_connected.png",
+ [TETHERING_WIFI_ON_CONNECTED] = "tethering/B03_Wi_Fi_connected.png",
+ [TETHERING_WIFI_ON_NOT_CONNECTED] = "tethering/B03_Wi_Fi_no_connected.png",
};
static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- mobile_hotspot[i].ad = data;
- }
+ mobile_hotspot.ad = data;
}
+
+
static void show_image_icon(int type)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == type)
{
- mobile_hotspot[i].img_obj.data = icon_path[type];
- indicator_util_icon_show(&mobile_hotspot[i]);
+ return;
}
+
+ mobile_hotspot.img_obj.data = icon_path[type];
+ icon_show(&mobile_hotspot);
+
+ prevIndex = type;
}
+
+
+
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&mobile_hotspot[i]);
- }
+ icon_hide(&mobile_hotspot);
+
+ prevIndex = -1;
}
+
+
static void indicator_mobile_hotspot_change_cb(keynode_t *node, void *data)
{
int status;
retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
ret = vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &status);
- if (ret == OK) {
- INFO("mobile_hotspot status: %d", status);
- if (status != VCONFKEY_MOBILE_HOTSPOT_MODE_NONE) {
- int icon_index = 0;
+ if (ret == OK)
+ {
+ DBG("mobile_hotspot status: %d", status);
+ if (status != VCONFKEY_MOBILE_HOTSPOT_MODE_NONE)
+ {
int connected_device = 0;
+ int on_device_cnt = 0;
+
+ int bBT = 0;
+ int bWifi = 0;
+ int bUSB = 0;
- ret = vconf_get_int(
- VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
- &connected_device);
+ vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,&connected_device);
- if (ret == OK)
+ if(status&VCONFKEY_MOBILE_HOTSPOT_MODE_BT)
+ bBT = 1;
+ if(status&VCONFKEY_MOBILE_HOTSPOT_MODE_WIFI)
+ bWifi = 1;
+ if(status&VCONFKEY_MOBILE_HOTSPOT_MODE_USB)
+ bUSB = 1;
+
+ on_device_cnt = bBT+bWifi+bUSB;
+ DBG("STSTUS %d %d %d , %d",bBT,bWifi,bUSB,connected_device);
+ if(on_device_cnt==0)
{
- icon_index = MOBILEAP_CONNECTED_MIN + connected_device;
- if (icon_index < MOBILEAP_ON_NOT_CONNECTED) {
- ERR("unable to handle %d connected devices ",
- connected_device);
- icon_index = MOBILEAP_ON_NOT_CONNECTED;
- } else if (icon_index >= MOBILEAP_MAX) {
- ERR("unable to handle %d connected devices ",
- connected_device);
- icon_index = MOBILEAP_CONNECTED9;
+ hide_image_icon();
+ return;
+ }
+ else if(on_device_cnt>=2)
+ {
+ if(connected_device>=1)
+ {
+ show_image_icon(TETHERING_ALL_ON_CONNECTED);
+ }
+ else
+ {
+ show_image_icon(TETHERING_ALL_ON_NOT_CONNECTED);
}
- show_image_icon(icon_index);
}
else
{
- show_image_icon(MOBILEAP_ON_NOT_CONNECTED);
+ if(bBT==1)
+ {
+ if(connected_device>0)
+ {
+ show_image_icon(TETHERING_BT_ON_CONNECTED);
+ }
+ else
+ {
+ show_image_icon(TETHERING_BT_ON_NOT_CONNECTED);
+ }
+ }
+
+ if(bUSB==1)
+ {
+ if(connected_device>0)
+ {
+ show_image_icon(TETHERING_USB_ON_CONNECTED);
+ }
+ else
+ {
+ show_image_icon(TETHERING_USB_ON_NOT_CONNECTED);
+ }
+ }
+
+ if(bWifi==1)
+ {
+ if(connected_device>0)
+ {
+ show_image_icon(TETHERING_WIFI_ON_CONNECTED);
+ }
+ else
+ {
+ show_image_icon(TETHERING_WIFI_ON_NOT_CONNECTED);
+ }
+ }
}
- return;
- } else {
+
+ }
+ else
+ {
hide_image_icon();
return;
}
}
- hide_image_icon();
- return;
}
+
+
static int wake_up_cb(void *data)
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
return OK;
}
+
+
static int register_mobile_hotspot_module(void *data)
{
int r = 0, ret = -1;
ret = vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE,
indicator_mobile_hotspot_change_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
ret = vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
indicator_mobile_hotspot_change_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
return r;
}
+
+
static int unregister_mobile_hotspot_module(void)
{
int ret;
ret = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE,
indicator_mobile_hotspot_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
- ret = vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_CONNECTED_DEVICE,
indicator_mobile_hotspot_change_cb);
- if (ret != OK)
- ERR("Failed to register callback!");
- return OK;
+ return ret;
}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
+#define MODULE_NAME "nosim"
+#define TIMER_INTERVAL 0.3
+
+static int register_nosim_module(void *data);
+static int unregister_nosim_module(void);
+
+icon_s nosim = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_NOTI,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .init = register_nosim_module,
+ .fini = unregister_nosim_module
+};
+
+static const char *icon_path[] = {
+ "RSSI/B03_RSSI_NoSim.png",
+ NULL
+};
+
+static int bShown = 0;
+
+
+
+static void set_app_state(void* data)
+{
+ nosim.ad = data;
+}
+
+
+
+static void show_image_icon(void)
+{
+ if(bShown == 1)
+ {
+ return;
+ }
+
+ nosim.img_obj.data = icon_path[0];
+ icon_show(&nosim);
+
+ bShown = 1;
+}
+
+
+
+static void hide_image_icon(void)
+{
+ icon_hide(&nosim);
+
+ bShown = 0;
+}
+
+
+
+static void indicator_nosim_change_cb(keynode_t *node, void *data)
+{
+ int status;
+ int ret;
+ retif(data == NULL, , "Invalid parameter!");
+
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
+ if (ret == OK && status != VCONFKEY_TELEPHONY_SIM_INSERTED)
+ {
+ show_image_icon();
+ }
+ else
+ {
+ hide_image_icon();
+ }
+
+ return;
+}
+
+
+
+static int register_nosim_module(void *data)
+{
+ int ret = -1;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+ indicator_nosim_change_cb, data);
+
+ indicator_nosim_change_cb(NULL, data);
+
+ return ret;
+}
+
+
+
+static int unregister_nosim_module(void)
+{
+ int ret;
+
+ ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+ indicator_nosim_change_cb);
+
+ return ret;
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
+#include <runtime_info.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "log.h"
#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
#define MODULE_NAME "usb"
static int register_usb_module(void *data);
static int unregister_usb_module(void);
-Indicator_Icon_Object usb[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .init = register_usb_module,
- .fini = unregister_usb_module
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s usb = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
.area = INDICATOR_ICON_AREA_NOTI,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.init = register_usb_module,
.fini = unregister_usb_module
-}
};
static const char *icon_path[] = {
- "USB tethering/B03_USB.png",
+ "Connection/B03_USB.png",
NULL
};
+static int bShown = 0;
+
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- usb[i].ad = data;
- }
+ usb.ad = data;
}
static void show_image_icon(void)
{
- int i = 0;
+ if (bShown == 1) return;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- usb[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&usb[i]);
- }
+ usb.img_obj.data = icon_path[0];
+ icon_show(&usb);
+
+ bShown = 1;
}
static void hide_image_icon(void)
{
- int i = 0;
+ icon_hide(&usb);
+
+ bShown = 0;
+}
+
+static void _cradle_change_cb(keynode_t *node, void *data)
+{
+ int cradle = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&usb[i]);
+ vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
+ if (cradle > 0) {
+ _D("cradle Status: %d", cradle);
+ hide_image_icon();
+ return;
}
}
-static void indicator_usb_change_cb(keynode_t *node, void *data)
+static void _usb_change_cb(keynode_t *node, void *data)
{
+ bool usb_state;
int status;
int ret;
+ int cradle = 0;
+ int tethering = 0;
- retif(data == NULL, , "Invalid parameter!");
+ ret_if(!data);
- ret = vconf_get_int(VCONFKEY_SYSMAN_USB_STATUS, &status);
- if (ret == OK) {
- if (status >= VCONFKEY_SYSMAN_USB_CONNECTED) {
- INFO("indicator_usb_change_cb : CONNECTION USB Status: %d", status);
+ vconf_get_int(VCONFKEY_SYSMAN_CRADLE_STATUS, &cradle);
+ if (cradle > 0) {
+ _D("cradle Status: %d", cradle);
+ hide_image_icon();
+ return;
+ }
+
+ vconf_get_int(VCONFKEY_MOBILE_HOTSPOT_MODE, &tethering);
+ if (tethering & VCONFKEY_MOBILE_HOTSPOT_MODE_USB) {
+ _D("tethering Status: %d", tethering);
+ hide_image_icon();
+ return;
+ }
+ /* First, check usb state */
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_USB_CONNECTED, &usb_state);
+ if (ret == RUNTIME_INFO_ERROR_NONE) {
+ if (usb_state) {
show_image_icon();
return;
- }
- else
- {
+ } else {
+ /* Second, check usb Host status */
ret = vconf_get_int(VCONFKEY_SYSMAN_USB_HOST_STATUS, &status);
if (ret == OK) {
if (status >= VCONFKEY_SYSMAN_USB_HOST_CONNECTED) {
- INFO("indicator_usb_change_cb : Host USB Status: %d", status);
+ _D("Host USB Status: %d", status);
show_image_icon();
return;
- } else
+ } else {
hide_image_icon();
+ }
}
}
}
return;
}
-static int register_usb_module(void *data)
+static void _runtime_info_usb_change_cb(runtime_info_key_e key, void *data)
{
- int r = 0, ret = -1;
+ ret_if(!data);
- retif(data == NULL, FAIL, "Invalid parameter!");
+ _usb_change_cb(NULL, data);
- set_app_state(data);
+ return;
+}
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
- indicator_usb_change_cb, data);
- if (ret != OK)
- {
- ERR("Failed to register callback(VCONFKEY_SYSMAN_USB_STATUS)!");
- r = ret;
- }
+static int register_usb_module(void *data)
+{
+ int ret = -1;
+ retv_if(!data, 0);
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS,
- indicator_usb_change_cb, data);
- if (ret != OK)
- {
- ERR("Failed to register callback(VCONFKEY_SYSMAN_USB_HOST_STATUS)!");
- r = r|ret;
- }
+ set_app_state(data);
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_USB_CONNECTED, _runtime_info_usb_change_cb, data);
+ ret = ret | vconf_notify_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS, _usb_change_cb, data);
+ ret = ret | vconf_notify_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS, _cradle_change_cb, data);
+ ret = ret | vconf_notify_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _usb_change_cb, data);
- indicator_usb_change_cb(NULL, data);
+ _usb_change_cb(NULL, data);
- return r;
+ return ret;
}
static int unregister_usb_module(void)
{
int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_STATUS,
- indicator_usb_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback(VCONFKEY_SYSMAN_USB_STATUS)!");
-
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS,
- indicator_usb_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback(VCONFKEY_SYSMAN_USB_HOST_STATUS)!");
-
- return OK;
+ ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_USB_CONNECTED);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_USB_HOST_STATUS, _usb_change_cb);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_CRADLE_STATUS, _cradle_change_cb);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_MOBILE_HOTSPOT_MODE, _usb_change_cb);
+ return ret;
}
+/* End of file */
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
+#include <wifi.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
+#include "log.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED2
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED6
#define MODULE_NAME "wifi"
#define TIMER_INTERVAL 0.3
static int unregister_wifi_module(void);
static int wake_up_cb(void *data);
-Indicator_Icon_Object wifi[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_FIXED,
- .init = register_wifi_module,
- .fini = unregister_wifi_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s wifi = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_FIXED,
.init = register_wifi_module,
.fini = unregister_wifi_module,
.wake_up = wake_up_cb
-}
};
enum {
LEVEL_WIFI_01 = 0,
- LEVEL_WIFI = LEVEL_WIFI_01,
LEVEL_WIFI_02,
LEVEL_WIFI_03,
LEVEL_WIFI_04,
};
static const char *icon_path[LEVEL_WIFI_MAX] = {
- [LEVEL_WIFI_01] = "Connection/B03_connection_Wifi_01.png",
- [LEVEL_WIFI_02] = "Connection/B03_connection_Wifi_02.png",
- [LEVEL_WIFI_03] = "Connection/B03_connection_Wifi_03.png",
- [LEVEL_WIFI_04] = "Connection/B03_connection_Wifi_04.png",
+ [LEVEL_WIFI_01] = "Connection/B03_data_downloading_Wifi_01.png",
+ [LEVEL_WIFI_02] = "Connection/B03_data_downloading_Wifi_02.png",
+ [LEVEL_WIFI_03] = "Connection/B03_data_downloading_Wifi_03.png",
+ [LEVEL_WIFI_04] = "Connection/B03_data_downloading_Wifi_04.png",
};
+static int transfer_state = -1;
static Eina_Bool wifi_transferring = EINA_FALSE;
static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- wifi[i].ad = data;
- }
+ wifi.ad = data;
}
static void show_image_icon(void *data, int index)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == index)
{
- wifi[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&wifi[i]);
+ return;
}
+
+ wifi.img_obj.data = icon_path[index];
+ icon_show(&wifi);
+
+ prevIndex = index;
+ util_signal_emit(wifi.ad, "indicator.wifi.show", "indicator.prog");
}
static void hide_image_icon(void)
{
- int i = 0;
+ transfer_state = -1;
+
+ icon_hide(&wifi);
+
+ prevIndex = -1;
+ util_signal_emit(wifi.ad, "indicator.wifi.hide", "indicator.prog");
+ util_signal_emit(wifi.ad, "indicator.wifi.updown.hide", "indicator.prog");
+}
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+static void show_wifi_transfer_icon(void* data)
+{
+ int type = -1;
+ int status = 0;
+
+ if (vconf_get_int(VCONFKEY_WIFI_TRANSFER_STATE, &status) < 0)
{
- indicator_util_icon_hide(&wifi[i]);
+ ERR("Error getting VCONFKEY_WIFI_TRANSFER_STATE value");
+ return;
}
-}
+ switch(status)
+ {
+ case VCONFKEY_WIFI_TRANSFER_STATE_TXRX://TX/RX BOTH
+ type = TRANSFER_UPDOWN;
+ break;
+ case VCONFKEY_WIFI_TRANSFER_STATE_TX:
+ type = TRANSFER_UP;
+ break;
+ case VCONFKEY_WIFI_TRANSFER_STATE_RX:
+ type = TRANSFER_DOWN;
+ break;
+ case VCONFKEY_WIFI_TRANSFER_STATE_NONE:
+ type = TRANSFER_NONE;
+ break;
+ default:
+ break;
+ }
-static void indicator_wifi_change_cb(keynode_t *node, void *data)
+ if(transfer_state==type)
+ {
+ DBG("same transfer state");
+ return;
+ }
+
+ transfer_state = type;
+ switch (type)
+ {
+ case TRANSFER_NONE:
+ util_signal_emit(wifi.ad, "indicator.wifi.updown.none", "indicator.prog");
+ break;
+ case TRANSFER_DOWN:
+ util_signal_emit(wifi.ad, "indicator.wifi.updown.download", "indicator.prog");
+ break;
+ case TRANSFER_UP:
+ util_signal_emit(wifi.ad, "indicator.wifi.updown.upload", "indicator.prog");
+ break;
+ case TRANSFER_UPDOWN:
+ util_signal_emit(wifi.ad, "indicator.wifi.updown.updownload", "indicator.prog");
+ break;
+ default:
+ break;
+
+ }
+}
+
+static void _wifi_changed_cb(keynode_t *node, void *data)
{
+ bool wifi_state = FALSE;
int status, strength;
int ret;
- retif(data == NULL, , "Invalid parameter!");
+ ret_if(!data);
- if(indicator_util_get_update_flag()==0)
- {
+ if (icon_get_update_flag()==0) {
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
ret = vconf_get_int(VCONFKEY_WIFI_STRENGTH, &strength);
if (ret == OK) {
- INFO("CONNECTION WiFi Strength: %d", strength);
if (strength < VCONFKEY_WIFI_STRENGTH_MIN) {
strength = VCONFKEY_WIFI_STRENGTH_MIN;
- } else if (strength > VCONFKEY_WIFI_STRENGTH_MAX) {
+ }
+ else if (strength > VCONFKEY_WIFI_STRENGTH_MAX) {
strength = VCONFKEY_WIFI_STRENGTH_MAX;
}
- } else
+ } else {
strength = VCONFKEY_WIFI_STRENGTH_MAX;
+ }
+
+ if (strength <= 0) strength = 1;
+
+ /* Second, check wifi status */
+ ret = wifi_is_activated(&wifi_state);
+ _D("wifi_state : %d", wifi_state);
+ if(ret != WIFI_ERROR_NONE) {
+ _E("wifi_is_activated error. ret is [%d]", ret);
+ }
- ret = vconf_get_int(VCONFKEY_WIFI_STATE, &status);
+ ret = wifi_get_connection_state(&status);
+ if (ret == WIFI_ERROR_NONE) {
+ DBG("CONNECTION WiFi Status: %d", status);
+ switch(status) {
+ case WIFI_CONNECTION_STATE_CONNECTED:
+ show_wifi_transfer_icon(data);
+ show_image_icon(data, strength-1);
+ break;
+ default: //WIFI_CONNECTION_STATE_DISCONNECTED
+ hide_image_icon();
+ break;
+ }
+ }
+
+ return;
+}
+
+static void _wifi_device_state_changed_cb(wifi_device_state_e state, void *user_data)
+{
+ bool wifi_state = FALSE;
+ int ret, strength;
+
+ ret_if(!user_data);
+
+ if (icon_get_update_flag()==0) {
+ updated_while_lcd_off = 1;
+ return;
+ }
+ updated_while_lcd_off = 0;
+
+ ret = vconf_get_int(VCONFKEY_WIFI_STRENGTH, &strength);
if (ret == OK) {
- INFO("CONNECTION WiFi Status: %d", status);
- if (status != VCONFKEY_WIFI_TRANSFER) {
- if ( wifi_transferring == EINA_TRUE ) {
- wifi_transferring = EINA_FALSE;
- }
+ if (strength < VCONFKEY_WIFI_STRENGTH_MIN) {
+ strength = VCONFKEY_WIFI_STRENGTH_MIN;
}
- if (status == VCONFKEY_WIFI_UNCONNECTED) {
- hide_image_icon();
- return;
- } else if (status == VCONFKEY_WIFI_CONNECTED) {
- if (strength <= 0)
- strength = 1;
-
- show_image_icon(data,LEVEL_WIFI + strength-1);
- return;
- } else if (status == VCONFKEY_WIFI_TRANSFER) {
- if (wifi_transferring != EINA_TRUE) {
- wifi_transferring = EINA_TRUE;
- }
- return;
+ else if (strength > VCONFKEY_WIFI_STRENGTH_MAX) {
+ strength = VCONFKEY_WIFI_STRENGTH_MAX;
}
+ } else {
+ strength = VCONFKEY_WIFI_STRENGTH_MAX;
+ }
+
+ if (strength <= 0) strength = 1;
+
+ ret = wifi_is_activated(&wifi_state);
+ _D("wifi_state : %d", wifi_state);
+ if(ret != WIFI_ERROR_NONE) {
+ _E("wifi_is_activated error. ret is [%d]", ret);
+ }
+
+ switch(wifi_state) {
+ case WIFI_DEVICE_STATE_ACTIVATED:
+ show_wifi_transfer_icon(user_data);
+ show_image_icon(user_data, strength-1);
+ break;
+ case WIFI_DEVICE_STATE_DEACTIVATED:
+ hide_image_icon();
+ break;
}
- hide_image_icon();
+
+ return;
+}
+
+static void _wifi_connection_state_changed_cb(wifi_connection_state_e state, wifi_ap_h ap, void *user_data)
+{
+ ret_if(!user_data);
+
+ _wifi_changed_cb(NULL, user_data);
+
return;
}
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
- indicator_wifi_change_cb(NULL, data);
+ _wifi_changed_cb(NULL, data);
return OK;
}
+static bool _wifi_init(void)
+{
+ int ret = -1;
+ ret = wifi_initialize();
+ if (ret != WIFI_ERROR_NONE) {
+ _E("wifi_initialize is fail : %d", ret);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void _wifi_fini(void)
+{
+ int ret = -1;
+ ret = wifi_deinitialize();
+ if (ret != WIFI_ERROR_NONE) {
+ _E("wifi_deinitialize is fail : %d", ret);
+ }
+}
+
static int register_wifi_module(void *data)
{
int r = 0, ret = -1;
- retif(data == NULL, FAIL, "Invalid parameter!");
+ retv_if(!data, 0);
set_app_state(data);
+ _wifi_init();
- ret = vconf_notify_key_changed(VCONFKEY_WIFI_STATE,
- indicator_wifi_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = ret;
- }
+ ret = wifi_set_device_state_changed_cb(_wifi_device_state_changed_cb, data);
+ if (ret != WIFI_ERROR_NONE) r = ret;
- ret = vconf_notify_key_changed(VCONFKEY_WIFI_STRENGTH,
- indicator_wifi_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = r | ret;
- }
- indicator_wifi_change_cb(NULL, data);
+ ret = wifi_set_connection_state_changed_cb(_wifi_connection_state_changed_cb, data);
+ if (ret != WIFI_ERROR_NONE) r = ret;
+
+ ret = vconf_notify_key_changed(VCONFKEY_WIFI_STRENGTH, _wifi_changed_cb, data);
+ if (ret != OK) r = r | ret;
+
+ ret = vconf_notify_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, _wifi_changed_cb, data);
+ if (ret != OK) r = r | ret;
+
+ _wifi_changed_cb(NULL, data);
return r;
}
{
int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_WIFI_STATE,
- indicator_wifi_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
-
- ret = vconf_ignore_key_changed(VCONFKEY_WIFI_STRENGTH,
- indicator_wifi_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ ret = wifi_unset_device_state_changed_cb();
+ ret = wifi_unset_connection_state_changed_cb();
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_STRENGTH, _wifi_changed_cb);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, _wifi_changed_cb);
if (wifi_transferring == EINA_TRUE) {
wifi_transferring = EINA_FALSE;
}
- return OK;
+ _wifi_fini();
+
+ return ret;
}
+/* End of file */
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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.
+ *
*/
+
+
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
-#include <stdlib.h>
-#include <vconf.h>
-#include "common.h"
-#include "indicator.h"
-#include "indicator_ui.h"
-#include "modules.h"
-#include "indicator_icon_util.h"
-#include "indicator_gui.h"
-
-#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED5
-#define MODULE_NAME "home"
-
-static int register_home_module(void *data);
-static int unregister_home_module(void);
-
-Indicator_Icon_Object home[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,0,APPTRAY_ICON_WIDTH,APPTRAY_ICON_HEIGHT},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_FIXED,
- .exist_in_view = EINA_FALSE,
- .init = register_home_module,
- .fini = unregister_home_module,
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,0,APPTRAY_ICON_WIDTH,APPTRAY_ICON_HEIGHT},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_FIXED,
- .exist_in_view = EINA_FALSE,
- .init = register_home_module,
- .fini = unregister_home_module,
-}
-
-};
-
-static const char *icon_path[] = {
- "App tray/B03_app_tray.PNG",
- "App tray/B03_app_tray_press.PNG",
- NULL
-};
-
-static void set_app_state(void* data)
-{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- home[i].ad = data;
- }
-
-}
-static void show_image_icon(int index)
-{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- home[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&home[i]);
- }
-}
-static void change_home_icon_cb(keynode_t *node, void *data)
-{
- int status = 0;
- int ret = -1;
-
- retif(data == NULL, , "Invalid parameter!");
-
-}
-static int register_home_module(void *data)
-{
- int r = 0, ret = -1;
-
- retif(data == NULL, FAIL, "Invalid parameter!");
-
- set_app_state(data);
-
- show_image_icon(0);
- return 0;
-}
-
-static int unregister_home_module(void)
-{
-
- return 0;
-}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 _INDICATOR_REMOVE_SEARCH
+#include <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include <app_preference.h>
+
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+#include "indicator_gui.h"
+#include "util.h"
+#include "log.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED10
+#define MODULE_NAME "search"
+
+static int register_search_module(void *data);
+static int unregister_search_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static int register_search_tts(void *data);
+#endif
+#define EXPORT_PUBLIC __attribute__ ((visibility ("default")))
+
+icon_s search = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .img_obj = {0,0,FIXED4_ICON_WIDTH,FIXED4_ICON_HEIGHT},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_FIXED,
+ .exist_in_view = EINA_FALSE,
+ .init = register_search_module,
+ .fini = unregister_search_module,
+#ifdef _SUPPORT_SCREEN_READER
+ .register_tts = register_search_tts,
+#endif
+};
+
+static const char *icon_path[] = {
+ "B03_search.png",
+ "B03_search_press.png",
+ NULL
+};
+
+
+
+static void set_app_state(void* data)
+{
+ search.ad = data;
+}
+
+
+
+static void show_image_icon(int index)
+{
+ search.img_obj.data = icon_path[index];
+ icon_show(&search);
+}
+
+
+
+static void hide_image_icon(void)
+{
+ icon_hide(&search);
+}
+
+
+
+EXPORT_PUBLIC void hide_search_icon(void)
+{
+ hide_image_icon();
+}
+
+
+
+EXPORT_PUBLIC void show_search_icon(void)
+{
+ show_image_icon(0);
+}
+
+static void _handle_search_icon(void* data)
+{
+ int lock_status = -1;
+ int ps_mode = -1;
+ int bHide = 0;
+ struct appdata *ad = (struct appdata *)data;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+ vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_status);
+ vconf_get_int(VCONFKEY_SETAPPL_PSMODE, &ps_mode);
+
+ DBG("_indicator_lock_status_cb!!(%d)(%d)",lock_status,ps_mode);
+
+ if(lock_status==VCONFKEY_IDLE_LOCK || ps_mode == SETTING_PSMODE_EMERGENCY)
+ {
+ bHide = 1;
+ }
+ else
+ {
+ bHide = 0;
+ }
+
+ if (bHide==0)
+ {
+ DBG("_lock_status_cb : show search!");
+ show_image_icon(0);
+ util_signal_emit_by_win(&(ad->win),"indicator.lock.off", "indicator.prog");
+ }
+ else
+ {
+ DBG("_lock_status_cb : hide search");
+ util_signal_emit_by_win(&(ad->win), "indicator.lock.on", "indicator.prog");
+ hide_image_icon();
+ }
+}
+
+
+
+static void _ps_mode_cb(keynode_t *node, void *data)
+{
+ DBG("Ps mode change");
+ _handle_search_icon(data);
+}
+
+
+
+static void _lock_status_cb(keynode_t *node, void *data)
+{
+ DBG("lock state change");
+ _handle_search_icon(data);
+}
+
+
+
+static int register_search_module(void *data)
+{
+ retv_if(!data, 0);
+
+ set_app_state(data);
+
+ vconf_notify_key_changed(VCONFKEY_IDLE_LOCK_STATE, _lock_status_cb, (void *)data);
+
+ vconf_notify_key_changed(VCONFKEY_SETAPPL_PSMODE, _ps_mode_cb, (void *)data);
+
+ _handle_search_icon(data);
+ return 0;
+}
+
+
+
+static int unregister_search_module(void)
+{
+ vconf_ignore_key_changed(VCONFKEY_IDLE_LOCK_STATE, _lock_status_cb);
+ vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE, _ps_mode_cb);
+
+ return 0;
+}
+
+
+
+#ifdef _SUPPORT_SCREEN_READER
+static void _apptray_access_cb(void *data, Evas_Object *obj, Elm_Object_Item *item)
+{
+ util_launch_search(data);
+}
+
+
+
+static char *_access_info_cb(void *data, Evas_Object *obj)
+{
+ Evas_Object *item = data;
+ char *tmp = NULL;
+ char buf[256] = {0,};
+ snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_SK_SMARTSEARCH_SEARCH"),_("IDS_COM_BODY_BUTTON_T_TTS"), _("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
+}
+
+
+
+static int register_search_tts(void *data)
+{
+ int r = 0, ret = -1;
+
+ retv_if(!data, 0);
+
+ Evas_Object *to = NULL;
+ Evas_Object *ao = NULL;
+ struct appdata *ad = data;
+
+ to = (Evas_Object *) edje_object_part_object_get(elm_layout_edje_get(ad->win.layout), "elm.swallow.fixed6.access");
+ ao = util_access_object_register(to, ad->win.layout);
+ util_access_object_info_cb_set(ao,ELM_ACCESS_INFO,_access_info_cb,data);
+ util_access_object_activate_cb_set(ao,_apptray_access_cb,data);
+
+ return 0;
+}
+#endif /* _SUPPORT_SCREEN_READER */
+#endif /* _INDICATOR_REMOVE_SEARCH */
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_3
+#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_1
#define MODULE_NAME "alarm"
+static int bShown = 0;
static int register_alarm_module(void *data);
static int unregister_alarm_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
-Indicator_Icon_Object useralarm[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+icon_s useralarm = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_SYSTEM,
.init = register_alarm_module,
.fini = unregister_alarm_module,
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
- .init = register_alarm_module,
- .fini = unregister_alarm_module,
-}
-
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb,
+#endif
};
static char *icon_path[] = {
NULL
};
+
+
static void set_app_state(void* data)
{
- int i = 0;
+ useralarm.ad = data;
+}
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- useralarm[i].ad = data;
- }
-}
static void show_image_icon(void *data)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(bShown == 1)
{
- useralarm[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&useralarm[i]);
+ return;
}
+
+ useralarm.img_obj.data = icon_path[0];
+ icon_show(&useralarm);
+
+ bShown = 1;
}
+
+
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&useralarm[i]);
- }
+ icon_hide(&useralarm);
+
+ bShown = 0;
}
+
+
static void indicator_alarm_change_cb(keynode_t *node, void *data)
{
int status = 0;
ret = vconf_get_int(VCONFKEY_ALARM_STATE, &status);
if (ret == OK) {
if (status > 0) {
- INFO("ALARM COUNT: %d", status);
+ DBG("ALARM COUNT: %d", status);
show_image_icon(data);
return;
}
- INFO("ALARM COUNT: %d", status);
+ DBG("ALARM COUNT: %d", status);
hide_image_icon();
return;
}
return;
}
+
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+ char *tmp = NULL;
+ char buf[256] = {0,};
+
+ int status = 0;
+
+ vconf_get_int(VCONFKEY_ALARM_STATE, &status);
+
+ if(status>0)
+ {
+ snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_COM_BODY_ALARM"),_("IDS_IDLE_BODY_ICON"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ }
+
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
+}
+#endif
+
+
+
static int register_alarm_module(void *data)
{
- int ret;
+ int ret = -1;
retif(data == NULL, FAIL, "Invalid parameter!");
set_app_state(data);
+ if (ret < 0)
+ {
+ ERR("Fail to init alarmdb.");
+ return FAIL;
+ }
ret = vconf_notify_key_changed(VCONFKEY_ALARM_STATE,
- indicator_alarm_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback!");
+ indicator_alarm_change_cb, data);
indicator_alarm_change_cb(NULL, data);
return ret;
}
+
+
static int unregister_alarm_module(void)
{
int ret;
ret = vconf_ignore_key_changed(VCONFKEY_ALARM_STATE,
- indicator_alarm_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ indicator_alarm_change_cb);
- return OK;
+ return ret;
}
/*
- * indicator
+ * Indicator
*
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
- *
- * Contact: Junghyun Kim <jh1114.kim@samsung.com> Kangwon Lee <newton.lee@samsung.com>
+ * Copyright (c) 2000 - 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.
*/
+
#include <stdio.h>
#include <stdlib.h>
#include <vconf.h>
+#include <notification.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
#define MODULE_NAME "earphone"
#define TIMER_INTERVAL 0.3
+//#define _(str) gettext(str)
+
static int register_earphone_module(void *data);
static int unregister_earphone_module(void);
static int wake_up_cb(void *data);
-Indicator_Icon_Object earphone[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+icon_s earphone = {
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_NOTI,
.init = register_earphone_module,
.fini = unregister_earphone_module,
.wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_earphone_module,
- .fini = unregister_earphone_module,
- .wake_up = wake_up_cb
-}
-
};
static const char *icon_path[] = {
- "Earphone/B03_Earphone.png",
+ "Earphone/B03_BT_Headset.png",
NULL
};
static int updated_while_lcd_off = 0;
+static int bShown = 0;
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- earphone[i].ad = data;
- }
+ earphone.ad = data;
}
+
+
static void show_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(bShown == 1)
{
- earphone[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&earphone[i]);
+ return;
}
+
+ earphone.img_obj.data = icon_path[0];
+ icon_show(&earphone);
+
+ bShown = 1;
}
+
+
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&earphone[i]);
- }
+ icon_hide(&earphone);
+
+ bShown = 0;
}
+
+
static void indicator_earphone_change_cb(keynode_t *node, void *data)
{
int status = 0;
retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
ret = vconf_get_int(VCONFKEY_SYSMAN_EARJACK, &status);
if (ret == FAIL) {
- ERR("Failed to get VCONFKEY_MMC_STATE!");
return;
}
case VCONFKEY_SYSMAN_EARJACK_3WIRE:
case VCONFKEY_SYSMAN_EARJACK_4WIRE:
case VCONFKEY_SYSMAN_EARJACK_TVOUT:
- INFO("Earphone connected");
+ DBG("Earphone connected");
show_image_icon();
break;
}
}
+
+
static int wake_up_cb(void *data)
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
return OK;
}
+
+
static int register_earphone_module(void *data)
{
int ret;
ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_EARJACK,
indicator_earphone_change_cb, data);
- if (ret != OK)
- ERR("Failed to register earphoneback!");
indicator_earphone_change_cb(NULL, data);
return ret;
}
+
+
static int unregister_earphone_module(void)
{
int ret;
ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_EARJACK,
indicator_earphone_change_cb);
- if (ret != OK)
- ERR("Failed to unregister earphoneback!");
- return OK;
+ return ret;
}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 __INDICATOR_DEBUG_UTIL_H_
-#define __INDICATOR_DEBUG_UTIL_H_
-
-extern void debug_printf(const char *msg, ...);
-#endif
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_MINICTRL2
+#define MODULE_NAME "FM_Radio"
+
+static int register_fm_radio_module(void *data);
+static int unregister_fm_radio_module(void);
+
+icon_s fm_radio = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_MINICTRL,
+ .init = register_fm_radio_module,
+ .fini = unregister_fm_radio_module
+};
+
+static char *icon_path[] = {
+ "Background playing/B03_Backgroundplaying_FMradio.png",
+ NULL
+};
+
+
+
+static void set_app_state(void* data)
+{
+ fm_radio.ad = data;
+}
+
+
+
+static void show_image_icon(void *data)
+{
+ fm_radio.img_obj.data = icon_path[0];
+ icon_show(&fm_radio);
+}
+
+
+
+static void hide_image_icon(void)
+{
+ icon_hide(&fm_radio);
+}
+
+
+
+static void indicator_fm_radio_change_cb(keynode_t *node, void *data)
+{
+ int status = 0;
+ int ret = -1;
+
+ DBG("indicator_fm_radio_change_cb called!");
+ retif(data == NULL, , "Invalid parameter!");
+
+ if (ret == OK) {
+ INFO("FM_RADIO state: %d", status);
+ if (status == 1)
+ show_image_icon(data);
+ else
+ hide_image_icon();
+ }
+ else
+ {
+ DBG("Fail to get vconfkey (ret:%d)", ret);
+ }
+ return;
+}
+
+
+
+void hide_fm_radio_icon(void)
+{
+ hide_image_icon();
+}
+
+
+
+static int register_fm_radio_module(void *data)
+{
+ int ret = -1;
+
+ DBG("register_fm_radio_module called!");
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ indicator_fm_radio_change_cb(NULL, data);
+
+ return ret;
+}
+
+
+
+static int unregister_fm_radio_module(void)
+{
+ DBG("unregister_fm_radio_module called!");
+
+ return OK;
+}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+#include <E_DBus.h>
+#include <sys/statvfs.h>
+
+#define BUS_NAME "org.tizen.system.deviced"
+#define PATH_NAME "/Org/Tizen/System/DeviceD/Lowmem"
+#define INTERFACE_NAME BUS_NAME".lowmem"
+#define MEMBER_NAME "ChangeState"
+
+static E_DBus_Connection *edbus_conn=NULL;
+static E_DBus_Signal_Handler *edbus_handler=NULL;
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
+#define MODULE_NAME "lowmem"
+#define TIMER_INTERVAL 0.3
+
+static int register_lowmem_module(void *data);
+static int unregister_lowmem_module(void);
+static int wake_up_cb(void *data);
+void check_storage();
+void get_internal_storage_status(double *total, double *avail);
+
+icon_s lowmem = {
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_NOTI,
+ .init = register_lowmem_module,
+ .fini = unregister_lowmem_module,
+ .wake_up = wake_up_cb
+};
+
+static const char *icon_path[] = {
+ "Storage/B03_storage_memoryfull.png",
+ NULL
+};
+
+
+static int updated_while_lcd_off = 0;
+static int bShown = 0;
+
+
+
+static void set_app_state(void* data)
+{
+ lowmem.ad = data;
+}
+
+
+
+static void show_image_icon(void)
+{
+ if(bShown == 1)
+ {
+ return;
+ }
+
+ lowmem.img_obj.data = icon_path[0];
+ icon_show(&lowmem);
+
+ bShown = 1;
+}
+
+static void hide_image_icon(void)
+{
+ icon_hide(&lowmem);
+
+ bShown = 0;
+}
+
+
+
+static void indicator_lowmem_pm_state_change_cb(keynode_t *node, void *data)
+{
+}
+
+
+
+static int wake_up_cb(void *data)
+{
+ if(updated_while_lcd_off==0 && lowmem.obj_exist == EINA_FALSE)
+ {
+ return OK;
+ }
+
+ return OK;
+}
+
+
+
+static void on_changed_receive(void *data, DBusMessage *msg)
+{
+ DBusError err;
+ int response;
+ int r;
+
+ DBG("edbus signal Received");
+
+ r = dbus_message_is_signal(msg, INTERFACE_NAME, MEMBER_NAME);
+ if (!r) {
+ ERR("dbus_message_is_signal error");
+ return;
+ }
+
+ SECURE_ERR("%s - %s", INTERFACE_NAME, MEMBER_NAME);
+
+ dbus_error_init(&err);
+ r = dbus_message_get_args(msg, &err, DBUS_TYPE_INT32, &response, DBUS_TYPE_INVALID);
+ if (!r) {
+ ERR("dbus_message_get_args error");
+ return;
+ }
+
+ SECURE_ERR("receive data : %d", response);
+
+ if(response==1)
+ {
+ show_image_icon();
+ }
+ else
+ {
+ hide_image_icon();
+ }
+}
+
+
+
+static void edbus_cleaner(void)
+{
+ if(edbus_conn==NULL)
+ {
+ DBG("already unregistered");
+ return;
+ }
+
+ if (edbus_handler)
+ {
+ e_dbus_signal_handler_del(edbus_conn, edbus_handler);
+ edbus_handler = NULL;
+ }
+ if (edbus_conn)
+ {
+ e_dbus_connection_close(edbus_conn);
+ edbus_conn = NULL;
+ }
+ e_dbus_shutdown();
+}
+
+
+
+static int edbus_listener(void)
+{
+ if(edbus_conn!=NULL)
+ {
+ DBG("alreay exist");
+ return -1;
+ }
+ // Init
+ e_dbus_init();
+
+ edbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM);
+ if (edbus_conn == NULL) {
+ ERR("e_dbus_bus_get error");
+ return -1;
+ }
+ edbus_handler = e_dbus_signal_handler_add(edbus_conn, NULL, PATH_NAME,
+ INTERFACE_NAME, MEMBER_NAME,
+ on_changed_receive, NULL);
+ if (edbus_handler == NULL) {
+ ERR("e_dbus_signal_handler_add error");
+ return -1;
+ }
+ DBG("dbus listener run");
+ return 0;
+
+}
+
+
+
+static int register_lowmem_module(void *data)
+{
+ int ret;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
+ indicator_lowmem_pm_state_change_cb, data);
+
+ check_storage();
+ edbus_listener();
+
+ return ret;
+}
+
+
+
+static int unregister_lowmem_module(void)
+{
+ int ret;
+
+
+ ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+ indicator_lowmem_pm_state_change_cb);
+
+ edbus_cleaner();
+
+ return ret;
+}
+
+
+
+void check_storage()
+{
+ double total = 0.0;
+ double available = 0.0;
+ double percentage = 0.0;
+ get_internal_storage_status(&total, &available);
+ percentage = (available/total) * 100.0;
+ DBG("check_storage : Total : %lf, Available : %lf Percentage : %lf", total, available, percentage);
+ if(percentage <= 5.0)
+ {
+ show_image_icon();
+ }
+}
+
+
+
+void get_internal_storage_status(double *total, double *avail)
+{
+ int ret;
+ double tmp_total;
+ struct statvfs s;
+ const double sz_32G = 32. * 1073741824;
+ const double sz_16G = 16. * 1073741824;
+ const double sz_8G = 8. * 1073741824;
+
+ retif(total == NULL, , "Invalid parameter!");
+ retif(avail == NULL, , "Invalid parameter!");
+
+ ret = statvfs("/opt/usr", &s);
+ if (0 == ret)
+ {
+ tmp_total = (double)s.f_frsize * s.f_blocks;
+ *avail = (double)s.f_bsize * s.f_bavail;
+
+ if (sz_16G < tmp_total)
+ *total = sz_32G;
+ else if (sz_8G < tmp_total)
+ *total = sz_16G;
+ else
+ *total = sz_8G;
+ }
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
+#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_3
#define MODULE_NAME "mmc"
#define TIMER_INTERVAL 0.3
static int unregister_mmc_module(void);
static int wake_up_cb(void *data);
-Indicator_Icon_Object mmc[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_mmc_module,
- .fini = unregister_mmc_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s mmc = {
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
+ .area = INDICATOR_ICON_AREA_SYSTEM,
.init = register_mmc_module,
.fini = unregister_mmc_module,
.wake_up = wake_up_cb
-}
-
};
static const char *icon_path[] = {
- "Background playing/B03_Memorycard.png",
+ "Storage/B03_storage_t_flash.png",
NULL
};
static int updated_while_lcd_off = 0;
+static int bShown = 0;
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- mmc[i].ad = data;
- }
+ mmc.ad = data;
}
+
+
static void show_image_icon(void)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(bShown == 1)
{
- mmc[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&mmc[i]);
+ return;
}
+
+ mmc.img_obj.data = icon_path[0];
+ icon_show(&mmc);
+
+ bShown = 1;
}
+
+
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&mmc[i]);
- }
-}
+ icon_hide(&mmc);
-static void icon_animation_set(enum indicator_icon_ani type)
-{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_animation_set(&mmc[i], type);
- }
+ bShown = 0;
}
+
+
static void indicator_mmc_change_cb(keynode_t *node, void *data)
{
- int status = 0;
+ int status = 0, mmc_status = 0;
int ret;
retif(data == NULL, , "Invalid parameter!");
-
- if(indicator_util_get_update_flag()==0)
+ DBG("indicator_mmc_change_cb");
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
- ret = vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &status);
- if (ret == FAIL) {
- ERR("Failed to get VCONFKEY_MMC_STATE!");
+ ret = vconf_get_int(VCONFKEY_FILEMANAGER_MMC_STATUS, &status);
+ if (ret != OK) {
return;
}
switch (status) {
- case VCONFKEY_FILEMANAGER_DB_UPDATING:
- INFO("MMC loading");
- show_image_icon();
- icon_animation_set(ICON_ANI_BLINK);
+ case VCONFKEY_FILEMANAGER_MMC_LOADING:
+ DBG("MMC loading");
+ ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_status);
+ if (ret != OK) {
+ return;
+ }
+ if(mmc_status == VCONFKEY_SYSMAN_MMC_MOUNTED)
+ {
+ DBG("Mounting");
+ show_image_icon();
+ }
+ else
+ {
+ DBG("Unmounting");
+ }
break;
-
- case VCONFKEY_FILEMANAGER_DB_UPDATED:
default:
hide_image_icon();
break;
}
}
+
+
static void indicator_mmc_pm_state_change_cb(keynode_t *node, void *data)
{
int status = 0;
- int ret = 0;
retif(data == NULL, , "Invalid parameter!");
- vconf_get_int(VCONFKEY_PM_STATE, &status);
+ if (vconf_get_int(VCONFKEY_PM_STATE, &status) < 0)
+ {
+ ERR("Error getting VCONFKEY_PM_STATE value");
+ return;
+ }
if(status == VCONFKEY_PM_STATE_LCDOFF)
{
int sos_status = 0;
- ret = vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &sos_status);
- if (ret < 0)
- ERR("fail to get [%s]", VCONFKEY_FILEMANAGER_DB_STATUS);
+ if (vconf_get_int(VCONFKEY_FILEMANAGER_MMC_STATUS, &sos_status) < 0)
+ {
+ ERR("Error getting VCONFKEY_FILEMANAGER_MMC_STATUS value");
+ return;
+ }
- INFO("mmc STATUS: %d", sos_status);
switch (sos_status) {
- case VCONFKEY_FILEMANAGER_DB_UPDATING:
- icon_animation_set(ICON_ANI_NONE);
+ case VCONFKEY_FILEMANAGER_MMC_LOADING:
break;
default:
break;
}
}
+
+
static int wake_up_cb(void *data)
{
- if(updated_while_lcd_off==0 && mmc[0].obj_exist == EINA_FALSE)
+ if(updated_while_lcd_off==0 )
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
return OK;
}
+
+
static int register_mmc_module(void *data)
{
int ret;
set_app_state(data);
- ret = vconf_notify_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS,
- indicator_mmc_change_cb, data);
- if (ret != OK)
- ERR("Failed to register mmcback!");
-
- ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
- indicator_mmc_pm_state_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback! : VCONFKEY_PM_STATE");
+ ret = vconf_notify_key_changed(VCONFKEY_FILEMANAGER_MMC_STATUS,
+ indicator_mmc_change_cb, data);
+ ret = ret | vconf_notify_key_changed(VCONFKEY_PM_STATE,
+ indicator_mmc_pm_state_change_cb, data);
indicator_mmc_change_cb(NULL, data);
return ret;
}
+
+
static int unregister_mmc_module(void)
{
int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_FILEMANAGER_DB_STATUS,
- indicator_mmc_change_cb);
- if (ret != OK)
- ERR("Failed to unregister mmcback!");
+ ret = vconf_ignore_key_changed(VCONFKEY_FILEMANAGER_MMC_STATUS,
+ indicator_mmc_change_cb);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+ indicator_mmc_pm_state_change_cb);
- ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
- indicator_mmc_pm_state_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
-
- return OK;
+ return ret;
}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include <minicontrol-monitor.h>
+#include <app_preference.h>
+
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_MIN
+#define MODULE_NAME "more_notify"
+
+static int register_more_notify_module(void *data);
+static int unregister_more_notify_module(void);
+static int wake_up_cb(void *data);
+
+static int updated_while_lcd_off = 0;
+
+static int bShow = 0;
+
+icon_s more_notify = {
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_TRUE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_NOTI,
+ .init = register_more_notify_module,
+ .fini = unregister_more_notify_module,
+ .wake_up = wake_up_cb
+};
+
+enum {
+ MUSIC_PLAY,
+ MUSIC_PAUSED,
+};
+
+static char *icon_path[] = {
+ "Notify/B03_notify_more.png",
+ NULL
+};
+
+
+
+static void set_app_state(void* data)
+{
+ more_notify.ad = data;
+}
+
+
+
+static void show_image_icon_by_win(win_info* win)
+{
+ more_notify.img_obj.data = icon_path[0];
+ icon_show(&more_notify);
+}
+
+
+
+static void hide_image_icon_by_win(win_info* win)
+{
+ icon_hide(&more_notify);
+}
+
+
+
+static void _handle_more_notify_icon(win_info* win,int val)
+{
+ retif(win == NULL, , "Invalid parameter!");
+
+ if(bShow == val)
+ {
+ return;
+ }
+
+ bShow = val;
+
+ DBG("val %d", val);
+
+ if(val==1)
+ {
+ show_image_icon_by_win(win);
+ DBG("_handle_more_notify_show");
+ }
+ else
+ {
+ hide_image_icon_by_win(win);
+ DBG("_handle_more_notify_hide");
+ }
+}
+
+
+
+static void indicator_more_notify_change_cb(const char *key, void *data)
+{
+ struct appdata *ad = (struct appdata *)(more_notify.ad);
+ int val = 0;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+ DBG("indicator_more_notify_change_cb");
+ win_info* win = NULL;
+
+ preference_get_int(key, &val);
+
+ if (strcmp(key, INDICATOR_SHOW_MORE_NOTI_PORT) == 0) {
+ win = &(ad->win);
+ } else {
+ SECURE_ERR("invalid val %s",key);
+ return;
+ }
+
+ _handle_more_notify_icon(win,val);
+
+ return;
+}
+
+
+
+static int wake_up_cb(void *data)
+{
+ if(updated_while_lcd_off==0)
+ {
+ return OK;
+ }
+
+ indicator_more_notify_change_cb(NULL, data);
+ return OK;
+}
+
+
+
+static int register_more_notify_module(void *data)
+{
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ preference_set_changed_cb(INDICATOR_SHOW_MORE_NOTI_PORT, indicator_more_notify_change_cb, data);
+
+ return OK;
+}
+
+
+
+static int unregister_more_notify_module(void)
+{
+ preference_unset_changed_cb(INDICATOR_SHOW_MORE_NOTI_PORT);
+
+ return OK;
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
#include <minicontrol-monitor.h>
+
#include "common.h"
-#include "indicator.h"
-#include "indicator_icon_util.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "indicator.h"
+#include "main.h"
+#include "util.h"
+#include "icon.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_1
+#define ICON_PRIORITY INDICATOR_PRIORITY_MINICTRL2
#define MODULE_NAME "MP3_PLAY"
#define MINICONTROL_NAME "[musicplayer-mini]"
+#define MUSIC_STATUS_FILE_PATH "/opt/usr/apps/org.tizen.music-player-lite/shared/data/MusicPlayStatus.ini"
+#define MAX_NAM_LEN 640
+#define MP_APP_ID "org.tizen.music-player-lite"
static int register_mp3_play_module(void *data);
static int unregister_mp3_play_module(void);
-static int mctrl_monitor_cb(int action, const char *name, void *data);
static int wake_up_cb(void *data);
-static int mp_registerd = 0;
static int updated_while_lcd_off = 0;
+static Ecore_File_Monitor *pFileMonitor = NULL;
-
-Indicator_Icon_Object mp3_play[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_TRUE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_mp3_play_module,
- .fini = unregister_mp3_play_module,
- .minictrl_control = mctrl_monitor_cb,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s mp3_play = {
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
- .always_top = EINA_TRUE,
+ .always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
+ .area = INDICATOR_ICON_AREA_MINICTRL,
.init = register_mp3_play_module,
.fini = unregister_mp3_play_module,
- .minictrl_control = mctrl_monitor_cb,
.wake_up = wake_up_cb
-}
};
enum {
};
static char *icon_path[] = {
- "Background playing/B03_Backgroundplaying_MP3playing.png",
- "Background playing/B03_Backgroundplaying_Music_paused.png",
+ "Background playing/B03_Backgroundplaying_music_playing.png",
+ "Background playing/B03_Backgroundplaying_music_paused.png",
NULL
};
+static int prevIndex = -1;
+
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- mp3_play[i].ad = data;
- }
+ mp3_play.ad = data;
}
+
+
static void show_image_icon(void *data, int status)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- mp3_play[i].img_obj.data = icon_path[status];
- indicator_util_icon_show(&mp3_play[i]);
+ if (prevIndex == status) {
+ return;
}
+
+ mp3_play.img_obj.data = icon_path[status];
+ icon_show(&mp3_play);
+
+ prevIndex = status;
}
+
+
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&mp3_play[i]);
- }
+ icon_hide(&mp3_play);
+
+ prevIndex = -1;
}
+
+
static void show_mp_icon(void* data)
{
- int status;
- int ret;
+ FILE* fp = fopen(MUSIC_STATUS_FILE_PATH, "r");
+ char line[MAX_NAM_LEN+1];
retif(data == NULL, , "Invalid parameter!");
+ if(fp == NULL)
+ {
+ ERR("Invalid file path !!");
+ return;
+ }
- if(indicator_util_get_update_flag()==0)
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
DBG("need to update %d",updated_while_lcd_off);
+ fclose(fp);
return;
}
+
updated_while_lcd_off = 0;
- ret = vconf_get_int(VCONFKEY_MUSIC_STATE, &status);
- if (ret == OK) {
- INFO("MUSIC state: %d", status);
- switch (status) {
- case VCONFKEY_MUSIC_PLAY:
+ if(fgets(line, MAX_NAM_LEN, fp))
+ {
+ if(strstr(line, "play"))
+ {
+ DBG("Music state : PLAY");
show_image_icon(data, MUSIC_PLAY);
- break;
- case VCONFKEY_MUSIC_PAUSE:
+ }
+ else if(strstr(line, "pause"))
+ {
+ DBG("Music state : PAUSED");
show_image_icon(data, MUSIC_PAUSED);
- break;
- default:
- break;
+ }
+ else if(strstr(line, "stop") || strstr(line, "off"))
+ {
+ DBG("Music state : STOP or OFF");
+ hide_image_icon();
}
}
+ retif(fclose(fp), , "File close error!");
+
+}
+
+
+
+void hide_mp_icon(void)
+{
+ hide_image_icon();
}
-static void indicator_mp3_play_change_cb(keynode_t *node, void *data)
+
+static void indicator_mp3_play_change_cb(void *data, Ecore_File_Monitor *em, Ecore_File_Event event, const char* path)
{
retif(data == NULL, , "Invalid parameter!");
-
DBG("indicator_mp3_play_change_cb");
show_mp_icon(data);
return;
}
-static int mctrl_monitor_cb(int action, const char *name, void *data)
-{
- retif(!data, FAIL, "data is NULL");
- retif(!name, FAIL, "name is NULL");
- if(strncmp(name,MINICONTROL_NAME,strlen(MINICONTROL_NAME))!=0)
- {
- ERR("_mctrl_monitor_cb:no mp %s",name);
- return FAIL;
- }
-
- DBG("_mctrl_monitor_cb:%s %d",name,action);
-
- switch (action) {
- case MINICONTROL_ACTION_START:
- vconf_notify_key_changed(VCONFKEY_MUSIC_STATE, indicator_mp3_play_change_cb, data);
- mp_registerd = 1;
- show_mp_icon(data);
- break;
- case MINICONTROL_ACTION_STOP:
- mp_registerd = 0;
- if(indicator_util_get_update_flag()==1)
- {
- hide_image_icon();
- return OK;
- }
- vconf_ignore_key_changed(VCONFKEY_MUSIC_STATE, indicator_mp3_play_change_cb);
- break;
- default:
- break;
- }
-
- return OK;
-}
static int wake_up_cb(void *data)
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
- if(mp_registerd==1)
- {
- indicator_mp3_play_change_cb(NULL, data);
- }
- else
- {
- hide_image_icon();
- }
+ indicator_mp3_play_change_cb(data, pFileMonitor, (Ecore_File_Event)NULL, MUSIC_STATUS_FILE_PATH);
return OK;
}
+
+
static int register_mp3_play_module(void *data)
{
-
+ DBG("Music file monitor added !!");
retif(data == NULL, FAIL, "Invalid parameter!");
set_app_state(data);
+ ECORE_FILE_MONITOR_DELIF(pFileMonitor);
+ pFileMonitor = util_file_monitor_add(MUSIC_STATUS_FILE_PATH, (Ecore_File_Monitor_Cb)indicator_mp3_play_change_cb, data);
+ retif(pFileMonitor == NULL, FAIL, "util_file_monitor_add return NULL!!");
+
return OK;
}
+
+
static int unregister_mp3_play_module(void)
{
+ DBG("Music file monitor removed !!");
+ retif(pFileMonitor == NULL, FAIL, "File Monitor do not exist !");
+
+ util_file_monitor_remove(pFileMonitor);
+ pFileMonitor = NULL;
+
return OK;
}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
#include <notification.h>
+#include <notification_list.h>
+//#include <notification_internal.h>
+#include <pkgmgr-info.h>
+#include <app_preference.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
-#include "indicator_ui.h"
-#include "indicator_icon_list.h"
+#include "main.h"
+#include "box.h"
+#include "icon.h"
+#include "list.h"
+#include "util.h"
+#include "log.h"
#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
#define MODULE_NAME "notification"
+#define MSG_SERVER "/usr/bin/msg-server"
+#define MSG_ICON "/usr/share/icons/default/small/org.tizen.message-lite.png"
+
+static int noti_ready = 0;
+static Eina_List *status_list;
+
static int register_noti_module(void *data);
static int unregister_noti_module(void);
-Indicator_Icon_Object noti[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .exist_in_view = EINA_FALSE,
- .init = register_noti_module,
- .fini = unregister_noti_module
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s noti = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_NOTI,
.exist_in_view = EINA_FALSE,
.init = register_noti_module,
.fini = unregister_noti_module
-}
};
struct noti_status {
notification_h noti;
int type;
int cnt;
- Indicator_Icon_Object *icon[INDICATOR_WIN_MAX];
+ icon_s *icon;
};
-static Eina_List *status_list;
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- noti[i].ad = data;
- }
+ noti.ad = data;
}
+
+
static void show_icon_with_path(struct noti_status *data, char* icon_path)
{
- int i = 0;
retif(data == NULL, , "Invalid parameter!");
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- data->icon[i]->img_obj.data = strdup(icon_path);
- indicator_util_icon_show(data->icon[i]);
- }
+ DBG("%s",icon_path);
+
+ data->icon->img_obj.data = strdup(icon_path);
+ icon_show(data->icon);
}
+
+
static void hide_image_icon(struct noti_status *data)
{
- int i = 0;
retif(data == NULL, , "Invalid parameter!");
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(data->icon[i]);
- }
+
+ icon_hide(data->icon);
}
+
+
static void free_image_icon(struct noti_status *data)
{
- int i = 0;
retif(data == NULL, , "Invalid parameter!");
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_icon_list_remove(data->icon[i]);
- if (data->icon[i])
- {
- if (data->icon[i]->img_obj.data)
- {
- free(data->icon[i]->img_obj.data);
- }
+ list_remove_icon(data->icon);
- if (data->icon[i]->name)
- {
- free(data->icon[i]->name);
- }
+ if (data->icon)
+ {
+ if (data->icon->img_obj.data)
+ {
+ free((char*)data->icon->img_obj.data);
+ data->icon->img_obj.data = NULL;
+ }
- free(data->icon[i]);
+ if (data->icon->name)
+ {
+ free(data->icon->name);
+ data->icon->name = NULL;
}
+ free(data->icon);
+ data->icon = NULL;
}
+
if(data!=NULL)
{
- INFO("noti data free!");
free(data);
data = NULL;
}
}
+
+
static void insert_icon_list(struct noti_status *data)
{
- int i = 0;
retif(data == NULL, , "Invalid parameter!");
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_icon_list_insert(data->icon[i]);
+
+ list_insert_icon(data->icon);
+}
+
+
+
+char* __indicator_ui_get_pkginfo_icon(const char *pkgid)
+{
+ int ret = 0;
+ char *icon_path = NULL;
+ char *icon_ret = NULL;
+ retif(pkgid == NULL, NULL, "invalid parameter");
+
+ pkgmgrinfo_appinfo_h appinfo_h = NULL;
+
+ ret = pkgmgrinfo_appinfo_get_appinfo(pkgid, &appinfo_h);
+ if (ret < 0) {
+ ERR("pkgmgrinfo_appinfo_get_appinfo is failed %d %s", ret,pkgid);
}
+
+ /* Icon path */
+ ret = pkgmgrinfo_appinfo_get_icon(appinfo_h, &icon_path);
+
+ if (ret < 0) {
+ ERR("pkgmgrinfo_appinfo_get_icon is failed %d", ret);
+ }
+ if(icon_path) {
+ icon_ret = (char*)strdup(icon_path);
+ }
+ if (appinfo_h) {
+ pkgmgrinfo_appinfo_destroy_appinfo(appinfo_h);
+ }
+
+ return icon_ret;
}
+
+
static void show_image_icon(struct noti_status *data)
{
retif(data == NULL, , "Invalid parameter!");
- char *icon_path;
+ char* icon_path=NULL;
+
notification_h noti = NULL;
if (data->noti) {
noti = data->noti;
if (noti) {
notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, &icon_path);
- if(icon_path == NULL)
- {
- DBG("no indicator icon");
- notification_get_icon(noti, &icon_path);
- }
- DBG("Get Path of Notication %s : %s",data->icon[0]->name, icon_path);
- if (icon_path == NULL
- || !ecore_file_exists(icon_path))
+
+ if (icon_path == NULL||!ecore_file_exists(icon_path))
{
- int i = 0;
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(icon_path != NULL&&util_check_noti_ani(icon_path))
{
- data->icon[i]->img_obj.data = NULL;
+ show_icon_with_path(data, icon_path);
+ }
+ else
+ {
+ notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, &icon_path);
+
+ if (icon_path == NULL||!ecore_file_exists(icon_path))
+ {
+ char* pkgname = NULL;
+ char* icon_path_second=NULL;
+ notification_get_pkgname(noti, &pkgname);
+ icon_path_second = __indicator_ui_get_pkginfo_icon(pkgname);
+
+ if(icon_path_second==NULL || !ecore_file_exists(icon_path_second))
+ {
+ data->icon->img_obj.data = NULL;
+ }
+ else
+ {
+ show_icon_with_path(data, icon_path_second);
+ }
+
+ if(icon_path_second!=NULL)
+ free(icon_path_second);
+ }
+ else
+ {
+ show_icon_with_path(data, icon_path);
+ }
}
}
else
}
}
}
+
}
+
+
static void show_image_icon_all( void )
{
- Eina_List *l;
- struct noti_status *data;
+ Eina_List *l = NULL;
+ struct noti_status *data = NULL;
EINA_LIST_REVERSE_FOREACH(status_list, l, data) {
if (data) {
}
+
static void _icon_add(struct noti_status *noti_data, const char *name, void *data)
{
- int i = 0;
- DBG("noti_data %x",noti_data);
retif(noti_data == NULL || data == NULL, , "Invalid parameter!");
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- Indicator_Icon_Object *obj = NULL;
- obj = calloc(1, sizeof(Indicator_Icon_Object));
-
- if (obj) {
- memset(obj, 0, sizeof(Indicator_Icon_Object));
- obj->win_type = i;
- obj->type = INDICATOR_IMG_ICON;
- obj->name = strdup(name);
- obj->priority = ICON_PRIORITY;
- obj->always_top = EINA_FALSE;
- obj->ad = data;
- obj->area = INDICATOR_ICON_AREA_NOTI;
- obj->exist_in_view = EINA_FALSE;
-
- noti_data->icon[i] = obj;
- }
+ icon_s *obj = NULL;
+ obj = calloc(1, sizeof(icon_s));
+
+ if (obj) {
+ memset(obj, 0, sizeof(icon_s));
+ obj->type = INDICATOR_IMG_ICON;
+ obj->name = strdup(name);
+ obj->priority = ICON_PRIORITY;
+ obj->always_top = EINA_FALSE;
+ obj->ad = data;
+ obj->area = INDICATOR_ICON_AREA_NOTI;
+ obj->exist_in_view = EINA_FALSE;
+
+ noti_data->icon = obj;
}
return;
}
+
+
static void _remove_all_noti(void)
{
- Eina_List *l;
- struct noti_status *n_data;
+ Eina_List *l = NULL;
+ struct noti_status *n_data = NULL;
+
+ /* Clear List and objects in list */
EINA_LIST_FOREACH(status_list, l, n_data) {
- DBG("Clear Status List : %s", n_data->icon[0]->name);
hide_image_icon(n_data);
free_image_icon(n_data);
status_list = eina_list_remove_list(status_list, l);
}
+
+
+static int _is_exist_by_privid(const char* privid)
+{
+ Eina_List *l = NULL;
+ struct noti_status *n_data = NULL;
+ retif(privid == NULL ,0 , "Invalid parameter!");
+
+ /* Clear List and objects in list */
+ EINA_LIST_FOREACH(status_list, l, n_data) {
+ if (!strcmp(n_data->icon->name, privid))
+ {
+ return EINA_TRUE;
+ break;
+ }
+ }
+ return EINA_FALSE;
+}
+
+
+
+static int _indicator_noti_display_check(notification_h noti)
+{
+ int applist = 0;
+ int noti_ret = 0;
+
+ noti_ret = notification_get_display_applist(noti, &applist);
+ if (noti_ret != NOTIFICATION_ERROR_NONE) {
+ return 0;
+ }
+
+ if (!(applist & NOTIFICATION_DISPLAY_APP_INDICATOR))
+ {
+ return 0;
+ }
+ return 1;
+}
+
+
+
+static void _remove_noti_by_privid(int priv_id)
+{
+ Eina_List *l = NULL;
+ struct noti_status *n_data = NULL;
+ char priv_id_str[256] = {0,};
+
+ snprintf(priv_id_str,sizeof(priv_id_str),"%d",priv_id);
+
+ EINA_LIST_FOREACH(status_list, l, n_data) {
+
+ if (strcmp(n_data->icon->name, priv_id_str)==0)
+ {
+ DBG("remove %s", priv_id_str);
+ status_list = eina_list_remove(status_list, n_data);
+ hide_image_icon(n_data);
+ free_image_icon(n_data);
+ break;
+ }
+ }
+}
+
+
+
+static void _insert_noti_by_privid(notification_h noti,void* data)
+{
+ int exist = 0;
+ struct noti_status *status = NULL;
+ int prev_id = -1;
+ char* pkgname = NULL;
+ char prev_id_str[256] = {0,};
+
+ retif(noti == NULL , , "Invalid parameter!");
+
+ notification_get_pkgname(noti, &pkgname);
+ notification_get_id(noti,NULL,&prev_id);
+
+ if(_indicator_noti_display_check(noti)==0)
+ {
+ return ;
+ }
+
+ snprintf(prev_id_str,sizeof(prev_id_str),"%d",prev_id);
+
+ exist = _is_exist_by_privid(prev_id_str);
+
+ if (exist != EINA_TRUE) {
+ DBG("Make New Event Icon : %s %s", pkgname,prev_id_str);
+ status = calloc(1, sizeof(struct noti_status));
+ status->type = 0;
+ _icon_add(status,prev_id_str, data);
+ status->noti = noti;
+ insert_icon_list(status);
+ status_list = eina_list_append(status_list, status);
+ show_image_icon(status);
+ }
+
+}
+
+
+
+static void _update_noti_by_privid(notification_h noti)
+{
+ Eina_List *l = NULL;
+ struct noti_status *n_data = NULL;
+ int priv_id = -1;
+ char priv_id_str[256] = {0,};
+ char* pkgname = NULL;
+
+ retif(noti == NULL , , "Invalid parameter!");
+
+ notification_get_pkgname(noti, &pkgname);
+ notification_get_id(noti,NULL,&priv_id);
+
+ if(_indicator_noti_display_check(noti)==0)
+ {
+ return ;
+ }
+
+ snprintf(priv_id_str,sizeof(priv_id_str),"%d",priv_id);
+
+ char* indicator_path = NULL;
+ char* icon_path = NULL;
+ notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, &indicator_path);
+ if(indicator_path==NULL||!ecore_file_exists(indicator_path))
+ {
+ char* noti_path = NULL;
+ notification_get_image(noti, NOTIFICATION_IMAGE_TYPE_ICON, ¬i_path);
+
+ if (noti_path == NULL||!ecore_file_exists(noti_path))
+ {
+ char* pkgname = NULL;
+ char* icon_path_second=NULL;
+ notification_get_pkgname(noti, &pkgname);
+ icon_path_second = __indicator_ui_get_pkginfo_icon(pkgname);
+ if(icon_path_second!=NULL)
+ icon_path = strdup(icon_path_second);
+ if(icon_path_second!=NULL)
+ free(icon_path_second);
+ }
+ else
+ {
+ icon_path = strdup(noti_path);
+ }
+ }
+ else
+ {
+ icon_path = strdup(indicator_path);
+ }
+
+ EINA_LIST_FOREACH(status_list, l, n_data) {
+
+ if (strcmp(n_data->icon->name, priv_id_str)==0)
+ {
+ DBG("Update Event Icon : %s %s, %s", priv_id_str,pkgname,icon_path);
+ if(icon_path!=NULL)
+ {
+ if(n_data->icon->img_obj.data!=NULL)
+ {
+ if(strcmp(n_data->icon->img_obj.data,icon_path)==0)
+ {
+ DBG("same icon with exsting noti");
+ goto __CATCH;
+ }
+ }
+ }
+ n_data->noti = noti;
+ show_image_icon(n_data);
+ }
+ }
+__CATCH:
+ if(icon_path!=NULL)
+ {
+ free(icon_path);
+ icon_path = NULL;
+ }
+ return;
+}
+
+
+
static void _change_icon_status(void *data, notification_list_h noti_list)
{
int new_cnt = 0;
struct noti_status *n_data = NULL;
int noti_count = 0, ongoing_count = 0;
- notification_get_count(NOTIFICATION_TYPE_NOTI, NULL,
- NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE,
- ¬i_count);
- notification_get_count(NOTIFICATION_TYPE_ONGOING, NULL,
- NOTIFICATION_GROUP_ID_NONE, NOTIFICATION_PRIV_ID_NONE,
- &ongoing_count);
+ /* TODO: 2014/07/16 notification_get_count will be deprecated.
+ If this function is using, use another solution. */
new_cnt = noti_count + ongoing_count;
- retif(noti_list == NULL, , "Invalid parameter!");
+ ret_if(!noti_list);
+ /* Clear List and objects in list */
EINA_LIST_FOREACH(status_list, l, n_data) {
- DBG("Clear Status List : %s", n_data->icon[0]->name);
hide_image_icon(n_data);
free_image_icon(n_data);
status_list = eina_list_remove_list(status_list, l);
}
eina_list_free(status_list);
- while (noti_list != NULL) {
+ while (noti_list) {
char *pkgname = NULL;
- Eina_List *l = NULL;
- struct noti_status *n_data = NULL;
struct noti_status *status = NULL;
Eina_Bool status_exist = EINA_FALSE;
notification_error_e noti_ret = NOTIFICATION_ERROR_NONE;
int applist;
+ int prev_id = -1;
+ char prev_id_str[256] = {0,};
noti = notification_list_get_data(noti_list);
noti_list = notification_list_get_next(noti_list);
noti_ret = notification_get_display_applist(noti, &applist);
- if (noti_ret != NOTIFICATION_ERROR_NONE) {
- INFO("Cannot Get display app of notication! : %p ",
- noti);
- continue;
- }
- if (!(applist & NOTIFICATION_DISPLAY_APP_INDICATOR))
- continue;
+ if (noti_ret != NOTIFICATION_ERROR_NONE) continue;
+ if (!(applist & NOTIFICATION_DISPLAY_APP_INDICATOR)) continue;
noti_ret = notification_get_pkgname(noti, &pkgname);
+ noti_ret = notification_get_id(noti, NULL, &prev_id);
+ snprintf(prev_id_str,sizeof(prev_id_str),"%d",prev_id);
- if (noti_ret != NOTIFICATION_ERROR_NONE)
- DBG("Cannot Get pkgname of notication! : %p %p",
- noti, pkgname);
- else {
- EINA_LIST_FOREACH(status_list, l, n_data) {
- if (!strcmp(n_data->icon[0]->name, pkgname)) {
- DBG("%s is already existed", pkgname);
- status_exist = EINA_TRUE;
- break;
- }
- }
+ if (noti_ret != NOTIFICATION_ERROR_NONE) {
+ _D("Cannot Get pkgname of notication! : %p %p", noti, pkgname);
+ } else {
+ status_exist = _is_exist_by_privid(prev_id_str);
if (status_exist != EINA_TRUE) {
- DBG("Make New Event Icon : %s", pkgname);
status = calloc(1, sizeof(struct noti_status));
+ ret_if(!status);
+
status->type = 0;
status->cnt = new_cnt;
- _icon_add(status,pkgname, data);
+ _icon_add(status,prev_id_str, data);
status->noti = noti;
insert_icon_list(status);
status_list = eina_list_append(status_list, status);
show_image_icon_all();
}
+
+
void update_noti_module_new(void *data, notification_type_e type)
{
notification_list_h list = NULL;
notification_list_h noti_list_head = NULL;
notification_error_e noti_err = NOTIFICATION_ERROR_NONE;
- int get_event_count = indicator_util_max_visible_event_count(INDICATOR_WIN_LAND);
+ int get_event_count = box_get_max_count_in_non_fixed_list();
retif(data == NULL, , "Invalid parameter!");
- INFO("update_noti_module_new %d", type);
-
- noti_err = notification_get_list(NOTIFICATION_TYPE_NONE,
- get_event_count, &list);
+ /* Get ongoing + noti count */
+ noti_err = notification_get_list(NOTIFICATION_TYPE_NONE, get_event_count, &list);
noti_list_head = list;
if (noti_err != NOTIFICATION_ERROR_NONE || list == NULL) {
- INFO("update_noti_module_new %d %x", noti_err, list);
_remove_all_noti();
notification_free_list(noti_list_head);
return;
notification_free_list(noti_list_head);
}
-
-static int _indicator_check_first_start(void)
+static void _indicator_noti_detailed_changed_cb(void *data, notification_type_e type, notification_op *op_list, int num_op)
{
- int status = 0;
- int ret = 0;
+ int i =0;
+ int op_type = 0;
+ int priv_id = 0;
- ret = vconf_get_bool(VCONFKEY_INDICATOR_STARTED, &status);
- if (ret) {
- INFO("fail to get %s", VCONFKEY_INDICATOR_STARTED);
- ret = vconf_set_bool(VCONFKEY_INDICATOR_STARTED, 1);
- INFO("set : %s, result : %d", VCONFKEY_INDICATOR_STARTED, ret);
+ notification_h noti_new = NULL;
+
+ if(num_op<0)
+ {
+ ERR("invalid parameter %d",num_op);
+ return;
}
- if (status)
- return 0;
+ for (i = 0; i < num_op; i++)
+ {
+ if(noti_ready==0)
+ {
+ notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_TYPE, &op_type);
+ if(op_type ==NOTIFICATION_OP_SERVICE_READY)
+ {
+ noti_ready = 1;
+ DBG("noti ready");
+ update_noti_module_new(data,type);
+ }
+ }
+ else
+ {
+ notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_TYPE, &op_type);
+ notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_PRIV_ID, &priv_id);
+ notification_op_get_data(op_list + i, NOTIFICATION_OP_DATA_NOTI, ¬i_new);
- return 1;
-}
+ if(type!=-1)
+ {
+ switch(op_type)
+ {
+ case NOTIFICATION_OP_INSERT:
+ _insert_noti_by_privid(noti_new,data);
+ break;
+ case NOTIFICATION_OP_UPDATE:
+ _update_noti_by_privid(noti_new);
+ break;
+ case NOTIFICATION_OP_DELETE:
+ _remove_noti_by_privid(priv_id);
+ break;
+ default:
+ break;
+ }
+ }
+ }
-static void _indicator_noti_delete_volatile_data(void)
-{
- notification_list_h noti_list = NULL;
- notification_list_h noti_list_head = NULL;
- notification_h noti = NULL;
- int property = 0;
+ }
+}
- notification_get_grouping_list(NOTIFICATION_TYPE_NONE, -1, ¬i_list);
- noti_list_head = noti_list;
- while (noti_list != NULL) {
- noti = notification_list_get_data(noti_list);
- notification_get_property(noti, &property);
+static void indicator_noti_sim_slot_cb(keynode_t *node, void *data)
+{
+ int status = 0;
+ int ret;
- if (property & NOTIFICATION_PROP_VOLATILE_DISPLAY) {
- notification_set_property(noti,
- property |
- NOTIFICATION_PROP_DISABLE_UPDATE_ON_DELETE);
- notification_delete(noti);
- }
+ retif(data == NULL, , "Invalid parameter!");
- noti_list = notification_list_get_next(noti_list);
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
+ if (ret == OK)
+ {
+ update_noti_module_new(data,NOTIFICATION_TYPE_NONE);
}
-
- notification_free_list(noti_list_head);
-
- notification_update(NULL);
+ return;
}
+
static int register_noti_module(void *data)
{
retif(data == NULL, FAIL, "Invalid parameter!");
- notification_error_e ret = NOTIFICATION_ERROR_NONE;
- int is_first = 0;
+ static int bRegisterd = 0;
set_app_state(data);
- is_first = _indicator_check_first_start();
+ if(bRegisterd==0)
{
- notifiation_clear(NOTIFICATION_TYPE_ONGOING);
- _indicator_noti_delete_volatile_data();
+ notification_register_detailed_changed_cb(_indicator_noti_detailed_changed_cb, data);
+ bRegisterd = 1;
}
- ret = notification_resister_changed_cb(update_noti_module_new, data);
-
- if (ret != NOTIFICATION_ERROR_NONE)
- DBG("Fail to Register notification_resister_changed_cb!");
-
- update_noti_module_new(data, NOTIFICATION_TYPE_NOTI);
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT, indicator_noti_sim_slot_cb, data);
return OK;
}
+
+
static int unregister_noti_module(void)
{
- Eina_List *l;
+ Eina_List *l = NULL;
struct noti_status *data = NULL;
- notification_error_e ret = NOTIFICATION_ERROR_NONE;
-
- ret = notification_unresister_changed_cb(update_noti_module_new);
- if (ret != NOTIFICATION_ERROR_NONE)
- DBG("Fail to unregister notification_resister_changed_cb!");
+ notification_unregister_detailed_changed_cb(_indicator_noti_detailed_changed_cb, noti.ad);
EINA_LIST_FOREACH(status_list, l, data) {
- free_image_icon(data);
- status_list = eina_list_remove_list(status_list, l);
+ if(data!=NULL)
+ {
+ free_image_icon(data);
+ status_list = eina_list_remove_list(status_list, l);
+ }
}
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT, indicator_noti_sim_slot_cb);
eina_list_free(status_list);
return OK;
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "icon.h"
+#include "modules.h"
+#include "main.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_1
+#define MODULE_NAME "VIDEO_PLAY"
+
+static int register_video_play_module(void *data);
+static int unregister_video_play_module(void);
+static int wake_up_cb(void *data);
+
+static int updated_while_lcd_off = 0;
+
+
+#define VCONF_VIDEO_PLAY_PLAYSTATUS "memory/private/org.tizen.videos/extern_mode"
+
+icon_s video_play = {
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_TRUE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_NOTI,
+ .init = register_video_play_module,
+ .fini = unregister_video_play_module,
+ .wake_up = wake_up_cb
+};
+
+static char *icon_path[] = {
+ "Notification/B03_video.png",
+ NULL
+};
+
+static int prevIndex = -1;
+
+
+
+static void set_app_state(void* data)
+{
+ video_play.ad = data;
+}
+
+
+
+static void show_image_icon(void *data)
+{
+ video_play.img_obj.data = icon_path[0];
+ icon_show(&video_play);
+}
+
+
+
+static void hide_image_icon(void)
+{
+ icon_hide(&video_play);
+ prevIndex = -1;
+}
+
+
+
+static void show_video_icon(void* data)
+{
+ int status;
+ int ret;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+
+ if(icon_get_update_flag()==0)
+ {
+ updated_while_lcd_off = 1;
+ return;
+ }
+ updated_while_lcd_off = 0;
+
+ ret = vconf_get_bool(VCONF_VIDEO_PLAY_PLAYSTATUS, &status);
+ if (ret == OK) {
+ DBG("VIDEO PLAY state: %d", status);
+ if(status == 1)
+ show_image_icon(data);
+ else
+ hide_image_icon();
+ }
+}
+
+
+
+static void indicator_video_play_change_cb(keynode_t *node, void *data)
+{
+ retif(data == NULL, , "Invalid parameter!");
+
+ show_video_icon(data);
+
+ return;
+}
+
+
+
+static int wake_up_cb(void *data)
+{
+ if(updated_while_lcd_off==0)
+ {
+ return OK;
+ }
+
+ indicator_video_play_change_cb(NULL, data);
+
+ return OK;
+}
+
+
+
+static int register_video_play_module(void *data)
+{
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ vconf_notify_key_changed(VCONF_VIDEO_PLAY_PLAYSTATUS, indicator_video_play_change_cb, data);
+
+ show_video_icon(data);
+
+ return OK;
+}
+
+
+
+static int unregister_video_play_module(void)
+{
+ vconf_ignore_key_changed(VCONF_VIDEO_PLAY_PLAYSTATUS, indicator_video_play_change_cb);
+
+ return OK;
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
#include <minicontrol-monitor.h>
+#include <stdbool.h>
+#include <message-port.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_1
+#define ICON_PRIORITY INDICATOR_PRIORITY_MINICTRL1
#define MODULE_NAME "VOICE_RECORDER"
#define MINICONTROL_NAME "[voicerecorder_mini_controller]"
+#define INDICATOR_REMOTE_PORT "voicerecorder_indicator_port"
+#define INDICATOR_APP_ID "org.tizen.indicator"
+#define INDICATOR_BUNDLE_KEY "voicerecorder_indicator_data"
+#define BG_NONE "voicerecorder_none"
+#define BG_RECORING_START "bg_recording_start"
+#define BG_RECORING_PAUSE "bg_recording_pause"
+#define BG_PLAYING_START "bg_playing_start"
+#define BG_PLAYING_PAUSE "bg_playing_pause"
static int register_voice_recorder_module(void *data);
static int unregister_voice_recorder_module(void);
-static int mctrl_monitor_cb(int action, const char *name, void *data);
static int wake_up_cb(void *data);
-static int vr_registerd = 0;
static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+static int vr_state = -1;
-Indicator_Icon_Object voice_recorder[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+icon_s voice_recorder = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_TRUE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
+ .area = INDICATOR_ICON_AREA_MINICTRL,
.init = register_voice_recorder_module,
.fini = unregister_voice_recorder_module,
- .minictrl_control = mctrl_monitor_cb,
+ .minictrl_control = NULL,//mctrl_monitor_cb,
.wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_TRUE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_voice_recorder_module,
- .fini = unregister_voice_recorder_module,
- .minictrl_control = mctrl_monitor_cb,
- .wake_up = wake_up_cb
-}
-
};
enum {
VOICE_RECORDER_RECORDING,
- VOICE_RECORDER_PAUSED,
- VOICE_RECORDER_READY
+ VOICE_RECORDER_RECORDING_PAUSED,
+ VOICE_RECORDER_PLAYING,
+ VOICE_RECORDER_PLAYING_PAUSED
};
static char *icon_path[] = {
- "Background playing/B03_Backgroundplaying_voicerecorder_Recording.png",
- "Background playing/B03_Backgroundplaying_voicerecorder_paused.png",
- "Background playing/B03_Backgroundplaying_Voicerecording.png",
+ "Background playing/B03_Backgroundplaying_Voicerecorder.png",
+ "Background playing/B03_Backgroundplaying_Voicerecorder.png",
+ "Background playing/B03_Backgroundplaying_voicerecorder_player_play.png",
+ "Background playing/B03_Backgroundplaying_voicerecorder_player_pause.png",
NULL
};
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- voice_recorder[i].ad = data;
- }
+ voice_recorder.ad = data;
}
+
+
static void show_image_icon(void *data, int status)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == status)
{
- voice_recorder[i].img_obj.data = icon_path[status];
- indicator_util_icon_show(&voice_recorder[i]);
+ return;
}
+
+ voice_recorder.img_obj.data = icon_path[status];
+ icon_show(&voice_recorder);
+
+ prevIndex = status;
}
+
+
static void hide_image_icon(void)
{
- int i = 0;
+ icon_hide(&voice_recorder);
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&voice_recorder[i]);
- }
+ prevIndex = -1;
}
+
+
static void show_voicerecoder_icon(void *data)
{
- int status;
- int ret;
-
retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
- {
+ if(icon_get_update_flag() == 0) {
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
- ret = vconf_get_int(VCONFKEY_VOICERECORDER_STATE, &status);
- if (ret == OK) {
- INFO("VOICE RECORDER state: %d", status);
- switch (status) {
- case VCONFKEY_VOICERECORDER_RECORDING:
- show_image_icon(data, VOICE_RECORDER_RECORDING);
- break;
- case VCONFKEY_VOICERECORDER_PAUSED:
- show_image_icon(data, VOICE_RECORDER_PAUSED);
- break;
- case VCONFKEY_VOICERECORDER_READY:
- show_image_icon(data, VOICE_RECORDER_READY);
- break;
- default:
- break;
- }
+ DBG("VOICE RECORDER state: %d", vr_state);
+ switch (vr_state) {
+ case VOICE_RECORDER_RECORDING:
+ show_image_icon(data, VOICE_RECORDER_RECORDING);
+ break;
+ case VOICE_RECORDER_RECORDING_PAUSED:
+ show_image_icon(data, VOICE_RECORDER_RECORDING_PAUSED);
+ break;
+ case VOICE_RECORDER_PLAYING:
+ show_image_icon(data, VOICE_RECORDER_PLAYING);
+ break;
+ case VOICE_RECORDER_PLAYING_PAUSED:
+ show_image_icon(data, VOICE_RECORDER_PLAYING_PAUSED);
+ break;
+ default:
+ hide_image_icon();
+ break;
}
return;
}
+#if 0
static void indicator_voice_recorder_change_cb(keynode_t *node, void *data)
{
retif(data == NULL, , "Invalid parameter!");
show_voicerecoder_icon(data);
return;
}
+#endif
-static int mctrl_monitor_cb(int action, const char *name, void *data)
-{
- retif(!data, FAIL, "data is NULL");
- retif(!name, FAIL, "name is NULL");
-
- if(strncmp(name,MINICONTROL_NAME,strlen(MINICONTROL_NAME))!=0)
- {
- ERR("_mctrl_monitor_cb: no VR %s",name);
- return FAIL;
- }
-
- DBG("_mctrl_monitor_cb:%s %d",name,action);
-
- switch (action) {
- case MINICONTROL_ACTION_START:
- vr_registerd = 1;
- vconf_notify_key_changed(VCONFKEY_VOICERECORDER_STATE, indicator_voice_recorder_change_cb, data);
- show_voicerecoder_icon(data);
- break;
- case MINICONTROL_ACTION_STOP:
- vr_registerd = 0;
-
- if(indicator_util_get_update_flag()==1)
- {
- hide_image_icon();
- }
-
- vconf_ignore_key_changed(VCONFKEY_VOICERECORDER_STATE, indicator_voice_recorder_change_cb);
- break;
- default:
- break;
- }
-
- return OK;
-}
static int wake_up_cb(void *data)
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
- if(vr_registerd==1)
- {
- indicator_voice_recorder_change_cb(NULL, data);
- }
- else
- {
- hide_image_icon();
- }
+ show_voicerecoder_icon(voice_recorder.ad);
+
return OK;
}
+
+void hide_voice_recorder_icon(void)
+{
+ hide_image_icon();;
+}
+
+
+
static int register_voice_recorder_module(void *data)
{
retif(data == NULL, FAIL, "Invalid parameter!");
set_app_state(data);
-
+ show_voicerecoder_icon(data);
return OK;
}
+
+
static int unregister_voice_recorder_module(void)
{
-
return OK;
}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 "common.h"
#include "modules.h"
-#define INDICATOR_MODULE_NUMBERS 22
-
-extern Indicator_Icon_Object home[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object rssi[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object usb[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object wifi[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object mobile_hotspot[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object conn[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object sos[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object call[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object call_divert[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object mmc[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object noti[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object useralarm[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object mp3_play[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object voice_recorder[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object silent[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object bluetooth[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object gps[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object nfc[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object wifi_direct[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object sysclock[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object battery[INDICATOR_WIN_MAX];
-extern Indicator_Icon_Object earphone[INDICATOR_WIN_MAX];
-
-
-static Indicator_Icon_Object *modules[INDICATOR_WIN_MAX][INDICATOR_MODULE_NUMBERS] = {
-{
- &sysclock[0],
- &battery[0],
- &wifi[0],
- &rssi[0],
- &sos[0],
- &usb[0],
- &mobile_hotspot[0],
- &conn[0],
- &call[0],
- &call_divert[0],
- &mmc[0],
- ¬i[0],
- &useralarm[0],
- &mp3_play[0],
- &voice_recorder[0],
- &silent[0],
- &bluetooth[0],
- &gps[0],
- &nfc[0],
- &wifi_direct[0],
- &earphone[0],
+#define INDICATOR_MODULE_NUMBERS 32
+
+/* search */
+#ifndef _INDICATOR_REMOVE_SEARCH
+extern icon_s search;
+#endif
+/* Network */
+extern icon_s rssi;
+
+/* Connection */
+extern icon_s usb;
+extern icon_s wifi;
+extern icon_s mobile_hotspot;
+extern icon_s conn;
+
+/* Processing */
+extern icon_s call;
+extern icon_s call_divert;
+
+/* Information */
+extern icon_s mmc;
+extern icon_s noti;
+
+/* alarm */
+extern icon_s useralarm;
+
+/* playing */
+extern icon_s fm_radio;
+extern icon_s mp3_play;
+extern icon_s voice_recorder;
+
+/* Setting */
+extern icon_s silent;
+extern icon_s bluetooth;
+extern icon_s gps;
+extern icon_s nfc;
+extern icon_s wifi_direct;
+
+/* Clock */
+extern icon_s sysclock;
+
+/* Power */
+extern icon_s battery;
+
+/* Smart stay */
+/* earphone */
+extern icon_s earphone;
+
+/* always */
+extern icon_s lowmem;
+extern icon_s dock;
+
+extern icon_s video_play;
+extern icon_s more_notify;
+
+
+
+static icon_s *modules[INDICATOR_MODULE_NUMBERS] = {
+ /* search */
+#ifndef _INDICATOR_REMOVE_SEARCH
+ &search,
+#endif
+ /* Clock */
+ &sysclock,
+ /* Power */
+ &battery,
+ /* Network */
+ &wifi,
+ &rssi,
+ /* Connection */
+ &usb,
+ &mobile_hotspot,
+ &conn,
+ /* Processing */
+ &call,
+ &call_divert,
+
+ /* Information */
+ /* &message, */
+ /* &voice_mail, */
+ &mmc,
+ ¬i,
+ &useralarm,
+ &fm_radio,
+ &mp3_play,
+ &voice_recorder,
+
+ /* Setting */
+ &silent,
+ &bluetooth,
+ &gps,
+ &wifi_direct,
+ &nfc,
+
+ /*Smart Stay*/
+ &earphone,
+ &lowmem,
+ &dock,
+ &video_play,
+ &more_notify,
+/* Add your module object here */
NULL
-},
+};
+
+void modules_init(void *data)
{
- &sysclock[1],
- &battery[1],
- &wifi[1],
- &rssi[1],
- &sos[1],
- &usb[1],
- &mobile_hotspot[1],
- &conn[1],
- &call[1],
- &call_divert[1],
- &mmc[1],
- ¬i[1],
- &useralarm[1],
- &mp3_play[1],
- &voice_recorder[1],
- &silent[1],
- &bluetooth[1],
- &gps[1],
- &nfc[1],
- &wifi_direct[1],
- &earphone[1],
- NULL
+ int i;
+ /* add items to list */
+ for (i = 0; modules[i]; i++) {
+ list_insert_icon(modules[i]);
+ modules[i]->ad = data;
+ if (modules[i]->init)
+ {
+ modules[i]->init(data);
+ }
+ }
}
-};
-void indicator_init_modules(void *data)
+
+void modules_init_first(void *data)
{
int i;
- int j = 0;
-
- for(j=0;j<INDICATOR_WIN_MAX;j++)
- {
- for (i = 0; modules[j][i]; i++) {
- indicator_icon_list_insert(modules[j][i]);
- modules[j][i]->ad = data;
- if (modules[j][i]->init)
- modules[j][i]->init(data);
+ /* add items to list */
+ for (i = 0; i < 5; i++) {
+ list_insert_icon(modules[i]);
+ modules[i]->ad = data;
+ if (modules[i]->init)
+ {
+ modules[i]->init(data);
}
}
}
-void indicator_fini_modules(void *data)
+
+
+void modules_fini(void *data)
{
int i;
- int j = 0;
-
- for(j=0;j<INDICATOR_WIN_MAX;j++)
- {
- for (i = 0; modules[j][i]; i++) {
- if (modules[j][i]->fini)
- modules[j][i]->fini();
- }
+ /* add items to list */
+ for (i = 0; modules[i]; i++) {
+ if (modules[i]->fini)
+ modules[i]->fini();
}
- indicator_icon_all_list_free();
+ /* delete modules */
+ list_free_all();
}
-void indicator_lang_changed_modules(void *data)
+
+
+void modules_lang_changed(void *data)
{
int i;
- int j = 0;
-
- for(j=0;j<INDICATOR_WIN_MAX;j++)
- {
- for (i = 0; modules[j][i]; i++) {
- if (modules[j][i]->lang_changed)
- modules[j][i]->lang_changed(data);
- }
+ /* add items to list */
+ for (i = 0; modules[i]; i++) {
+ if (modules[i]->lang_changed)
+ modules[i]->lang_changed(data);
}
}
-void indicator_region_changed_modules(void *data)
+
+
+void modules_region_changed(void *data)
{
int i;
- int j = 0;
-
- for(j=0;j<INDICATOR_WIN_MAX;j++)
- {
- for (i = 0; modules[j][i]; i++) {
- if (modules[j][i]->region_changed)
- modules[j][i]->region_changed(data);
- }
+ /* add items to list */
+ for (i = 0; modules[i]; i++) {
+ if (modules[i]->region_changed)
+ modules[i]->region_changed(data);
}
}
-void indicator_minictrl_control_modules(int action, const char* name, void *data)
+
+
+void modules_minictrl_control(int action, const char* name, void *data)
{
int i;
- int j = 0;
-
- for(j=0;j<INDICATOR_WIN_MAX;j++)
- {
- for (i = 0; modules[j][i]; i++) {
- if (modules[j][i]->minictrl_control)
- modules[j][i]->minictrl_control(action, name, data);
- }
+ /* add items to list */
+ for (i = 0; modules[i]; i++) {
+ if (modules[i]->minictrl_control)
+ modules[i]->minictrl_control(action, name, data);
}
}
-void indicator_wake_up_modules(void *data)
+
+
+void modules_wake_up(void *data)
{
int i;
- int j = 0;
+ /* add items to list */
+ for (i = 0; modules[i]; i++) {
+ if (modules[i]->wake_up)
+ modules[i]->wake_up(data);
+ }
+}
- for(j=0;j<INDICATOR_WIN_MAX;j++)
- {
- for (i = 0; modules[j][i]; i++) {
- if (modules[j][i]->wake_up)
- modules[j][i]->wake_up(data);
+
+
+#ifdef _SUPPORT_SCREEN_READER
+void modules_register_tts(void *data)
+{
+ int i;
+ /* add items to list */
+ for (i = 0; modules[i]; i++) {
+ modules[i]->ad = data;
+ if (modules[i]->register_tts)
+ {
+ modules[i]->register_tts(data);
}
}
}
+#endif
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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.
+ *
*/
#define __INDICATOR_MODULES_H__
#include <Ecore.h>
-#include "indicator_ui.h"
-#include "indicator_icon_list.h"
+
+#include "main.h"
+#include "list.h"
#define TIMER_STOP ECORE_CALLBACK_CANCEL
#define TIMER_CONTINUE ECORE_CALLBACK_RENEW
-void indicator_init_modules(void *data);
-void indicator_fini_modules(void *data);
-void indicator_lang_changed_modules(void *data);
-void indicator_region_changed_modules(void *data);
-void indicator_minictrl_control_modules(int action, const char* name, void *data);
-void indicator_wake_up_modules(void *data);
+extern void modules_init(void *data);
+extern void modules_fini(void *data);
+extern void modules_lang_changed(void *data);
+extern void modules_region_changed(void *data);
+extern void modules_minictrl_control(int action, const char* name, void *data);
+extern void modules_wake_up(void *data);
+extern void modules_init_first(void *data);
+
+#ifdef _SUPPORT_SCREEN_READER
+extern void modules_register_tts(void *data);
+#endif
#endif
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED3
#define MODULE_NAME "ROAMING"
static int register_roaming_module(void *data);
static int unregister_roaming_module(void);
-Indicator_Icon_Object roaming[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+icon_s roaming = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
.area = INDICATOR_ICON_AREA_FIXED,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.init = register_roaming_module,
.fini = unregister_roaming_module
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_FIXED,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .init = register_roaming_module,
- .fini = unregister_roaming_module
-}
};
static const char *icon_path[] = {
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- roaming[i].ad = data;
- }
+ roaming.ad = data;
}
static void show_image_icon(void)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- roaming[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&roaming[i]);
- }
+ roaming.img_obj.data = icon_path[0];
+ icon_show(&roaming);
}
static void hide_image_icon(void)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&roaming[i]);
- }
+ icon_hide(&roaming);
}
static void indicator_roaming_change_cb(keynode_t *node, void *data)
retif(data == NULL, , "Invalid parameter!");
+ /* First, check NOSIM mode */
ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
if (ret == OK && status != VCONFKEY_TELEPHONY_SIM_INSERTED) {
- INFO("ROAMING Status: No SIM Mode");
+ DBG("ROAMING Status: No SIM Mode");
hide_image_icon();
return;
}
+ /* Second, check Roaming mode */
ret = vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &status);
- INFO("ROAMING Status: %d", status);
+ DBG("ROAMING Status: %d", status);
if (ret == OK) {
if (status == VCONFKEY_TELEPHONY_SVC_ROAM_ON) {
show_image_icon();
ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
indicator_roaming_change_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = ret;
}
ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
indicator_roaming_change_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
indicator_roaming_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
indicator_roaming_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
- return OK;
+ return ret;
}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <tapi_common.h>
+#include <TelNetwork.h>
+#include <TelSim.h>
+#include <ITapiSim.h>
+#include <TelCall.h>
+#include <ITapiCall.h>
#include <stdio.h>
#include <stdlib.h>
#include <vconf.h>
+#include <ITapiNetwork.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "indicator_gui.h"
+#include "util.h"
+#include "connection/connection.h"
+#include "processing/call_divert.h"
+
+#define VCONFKEY_TELEPHONY_PREFERRED_VOICE_SUBSCRIPTION "db/telephony/dualsim/preferred_voice_subscription"
+
+#define RSSI1_ICON_PRIORITY INDICATOR_PRIORITY_FIXED2
+#define RSSI2_ICON_PRIORITY INDICATOR_PRIORITY_FIXED3
+#define SIMCARD_ICON_PRIORITY INDICATOR_PRIORITY_FIXED4
-#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED3
-#define MODULE_NAME "RSSI"
+#define MODULE_NAME "RSSI"
+#define MODULE_NAME_SIM2 "RSSI2"
+#define MODULE_NAME_DUAL_SIM "RSSI_DS"
#define ICON_NOSIM _("IDS_COM_BODY_NO_SIM")
#define ICON_SEARCH _("IDS_COM_BODY_SEARCHING")
#define ICON_NOSVC _("IDS_CALL_POP_NOSERVICE")
+#define TAPI_HANDLE_MAX 2
+
static int register_rssi_module(void *data);
static int unregister_rssi_module(void);
static int language_changed_cb(void *data);
static int wake_up_cb(void *data);
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+static int _get_sim_icon(int sim_number);
+static void _flight_mode(keynode_t *key, void *data);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
-Indicator_Icon_Object rssi[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+TapiHandle *tapi_handle[TAPI_HANDLE_MAX+1] = {0, };
+
+static int registered = 0;
+
+
+icon_s rssi_ds = {
.type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
+ .name = MODULE_NAME_DUAL_SIM,
+ .priority = SIMCARD_ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_FIXED,
- .init = register_rssi_module,
- .fini = unregister_rssi_module,
- .lang_changed = language_changed_cb,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
+};
+
+icon_s rssi = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
- .priority = ICON_PRIORITY,
+ .priority = RSSI1_ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_FIXED,
.init = register_rssi_module,
.fini = unregister_rssi_module,
.lang_changed = language_changed_cb,
- .wake_up = wake_up_cb
-}
+ .wake_up = wake_up_cb,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
+};
+
+icon_s rssi2 = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME_SIM2,
+ .priority = RSSI2_ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_FIXED,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
+};
+
+enum {
+ SIM_1 = 1,
+ SIM_2
};
enum {
LEVEL_RSSI_MIN = 0,
- LEVEL_RSSI_0 = LEVEL_RSSI_MIN,
- LEVEL_RSSI_1,
- LEVEL_RSSI_2,
- LEVEL_RSSI_3,
- LEVEL_RSSI_4,
- LEVEL_RSSI_MAX = LEVEL_RSSI_4,
LEVEL_FLIGHT,
LEVEL_NOSIM,
LEVEL_SEARCH,
LEVEL_NOSVC,
- LEVEL_MAX,
+ LEVEL_LIMITED,
+ LEVEL_RSSI_SIM1_0,
+ LEVEL_RSSI_SIM1_1,
+ LEVEL_RSSI_SIM1_2,
+ LEVEL_RSSI_SIM1_3,
+ LEVEL_RSSI_SIM1_4,
+ LEVEL_RSSI_SIM2_0,
+ LEVEL_RSSI_SIM2_1,
+ LEVEL_RSSI_SIM2_2,
+ LEVEL_RSSI_SIM2_3,
+ LEVEL_RSSI_SIM2_4,
+ LEVEL_RSSI_ROAMING_0,
+ LEVEL_RSSI_ROAMING_1,
+ LEVEL_RSSI_ROAMING_2,
+ LEVEL_RSSI_ROAMING_3,
+ LEVEL_RSSI_ROAMING_4,
+ LEVEL_RSSI_ROAMING2_0,
+ LEVEL_RSSI_ROAMING2_1,
+ LEVEL_RSSI_ROAMING2_2,
+ LEVEL_RSSI_ROAMING2_3,
+ LEVEL_RSSI_ROAMING2_4,
+ LEVEL_SIM_ICON_SIM1,
+ LEVEL_SIM_ICON_SIM2,
+ LEVEL_SIM_ICON_CALL,
+ LEVEL_SIM_ICON_SMS,
+ LEVEL_SIM_ICON_MMS,
+ LEVEL_SIM_ICON_INTERNET,
+ LEVEL_SIM_ICON_HOME,
+ LEVEL_SIM_ICON_OFFICE,
+ LEVEL_SIM_ICON_HEART,
+ LEVEL_MAX
};
static int bRoaming = 0;
static int updated_while_lcd_off = 0;
-
+static int prevIndex = -1;
+static int prevRoam = -1;
+#ifdef _SUPPORT_SCREEN_READER
+static int bRssiShown = 0;
+#endif
static const char *icon_path[LEVEL_MAX] = {
- [LEVEL_RSSI_0] = "RSSI/B03_RSSI_Sim_00.png",
- [LEVEL_RSSI_1] = "RSSI/B03_RSSI_Sim_01.png",
- [LEVEL_RSSI_2] = "RSSI/B03_RSSI_Sim_02.png",
- [LEVEL_RSSI_3] = "RSSI/B03_RSSI_Sim_03.png",
- [LEVEL_RSSI_4] = "RSSI/B03_RSSI_Sim_04.png",
[LEVEL_FLIGHT] = "RSSI/B03_RSSI_Flightmode.png",
[LEVEL_NOSIM] = "RSSI/B03_RSSI_NoSim.png",
[LEVEL_SEARCH] = "RSSI/B03_RSSI_Searching.png",
[LEVEL_NOSVC] = "RSSI/B03_RSSI_NoService.png",
+ [LEVEL_LIMITED] = "RSSI/B03_Network_LimitedService.png",
+ [LEVEL_RSSI_SIM1_0] = "RSSI/B03_RSSI_Sim_00.png",
+ [LEVEL_RSSI_SIM1_1] = "RSSI/B03_RSSI_Sim_01.png",
+ [LEVEL_RSSI_SIM1_2] = "RSSI/B03_RSSI_Sim_02.png",
+ [LEVEL_RSSI_SIM1_3] = "RSSI/B03_RSSI_Sim_03.png",
+ [LEVEL_RSSI_SIM1_4] = "RSSI/B03_RSSI_Sim_04.png",
+ [LEVEL_RSSI_SIM2_0] = "RSSI/B03_RSSI_Dual_Sim_00.png",
+ [LEVEL_RSSI_SIM2_1] = "RSSI/B03_RSSI_Dual_Sim_01.png",
+ [LEVEL_RSSI_SIM2_2] = "RSSI/B03_RSSI_Dual_Sim_02.png",
+ [LEVEL_RSSI_SIM2_3] = "RSSI/B03_RSSI_Dual_Sim_03.png",
+ [LEVEL_RSSI_SIM2_4] = "RSSI/B03_RSSI_Dual_Sim_04.png",
+ [LEVEL_RSSI_ROAMING_0] = "RSSI/B03_RSSI_roaming_00.png",
+ [LEVEL_RSSI_ROAMING_1] = "RSSI/B03_RSSI_roaming_01.png",
+ [LEVEL_RSSI_ROAMING_2] = "RSSI/B03_RSSI_roaming_02.png",
+ [LEVEL_RSSI_ROAMING_3] = "RSSI/B03_RSSI_roaming_03.png",
+ [LEVEL_RSSI_ROAMING_4] = "RSSI/B03_RSSI_roaming_04.png",
+ [LEVEL_RSSI_ROAMING2_0] = "RSSI/B03_RSSI_Dual_Sim_roaming_00.png",
+ [LEVEL_RSSI_ROAMING2_1] = "RSSI/B03_RSSI_Dual_Sim_roaming_01.png",
+ [LEVEL_RSSI_ROAMING2_2] = "RSSI/B03_RSSI_Dual_Sim_roaming_02.png",
+ [LEVEL_RSSI_ROAMING2_3] = "RSSI/B03_RSSI_Dual_Sim_roaming_03.png",
+ [LEVEL_RSSI_ROAMING2_4] = "RSSI/B03_RSSI_Dual_Sim_roaming_04.png",
+ [LEVEL_SIM_ICON_SIM1] = "Dual SIM/B03_Dual_Sim_00.png",
+ [LEVEL_SIM_ICON_SIM2] = "Dual SIM/B03_Dual_Sim_01.png",
+ [LEVEL_SIM_ICON_CALL] = "Dual SIM/B03_Dual_Sim_phone.png",
+ [LEVEL_SIM_ICON_SMS] = "Dual SIM/B03_Dual_Sim_messages.png",
+ [LEVEL_SIM_ICON_MMS] = "Dual SIM/B03_Dual_Sim_data.png",
+ [LEVEL_SIM_ICON_INTERNET] = "Dual SIM/B03_Dual_Sim_global.png",
+ [LEVEL_SIM_ICON_HOME] = "Dual SIM/B03_Dual_Sim_home.png",
+ [LEVEL_SIM_ICON_OFFICE] = "Dual SIM/B03_Dual_Sim_office.png",
+ [LEVEL_SIM_ICON_HEART] = "Dual SIM/B03_Dual_Sim_heart.png"
};
-static const char *roaming_icon_path[LEVEL_MAX] = {
- [LEVEL_RSSI_0] = "RSSI/B03_RSSI_roaming_00.png",
- [LEVEL_RSSI_1] = "RSSI/B03_RSSI_roaming_01.png",
- [LEVEL_RSSI_2] = "RSSI/B03_RSSI_roaming_02.png",
- [LEVEL_RSSI_3] = "RSSI/B03_RSSI_roaming_03.png",
- [LEVEL_RSSI_4] = "RSSI/B03_RSSI_roaming_04.png",
- [LEVEL_FLIGHT] = "RSSI/B03_RSSI_Flightmode.png",
- [LEVEL_NOSIM] = "RSSI/B03_RSSI_NoSim.png",
- [LEVEL_SEARCH] = "RSSI/B03_RSSI_Searching.png",
- [LEVEL_NOSVC] = "RSSI/B03_RSSI_NoService.png",
-};
-
-
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- rssi[i].ad = data;
- }
+ rssi_ds.ad = data;
+ rssi.ad = data;
+ rssi2.ad = data;
}
-static int level_check(int *level)
+static void show_sim_ds_image_icon(void *data, int index)
{
- if (*level < LEVEL_RSSI_MIN) {
- *level = LEVEL_RSSI_MIN;
- return -1;
- } else if (*level > LEVEL_RSSI_MAX) {
- *level = LEVEL_RSSI_MAX;
- return 1;
- }
- return 0;
+ if (index < LEVEL_RSSI_MIN)
+ index = LEVEL_RSSI_MIN;
+ else if (index >= LEVEL_MAX)
+ index = LEVEL_NOSVC;
+
+ rssi_ds.img_obj.width = DEFAULT_ICON_WIDTH;
+
+ rssi_ds.img_obj.data = icon_path[index];
+
+ icon_show(&rssi_ds);
+
+ prevRoam = bRoaming;
+ prevIndex = index;
+ isSimShowing = 1; // It is for judgement to show S1 icon(Sound, Wi-fi direct, bluetooth) or not.
+ util_signal_emit(rssi_ds.ad,"indicator.simicon.show","indicator.prog");
}
static void show_image_icon(void *data, int index)
{
- int i = 0;
+ if (index < LEVEL_RSSI_MIN)
+ index = LEVEL_RSSI_MIN;
+ else if (index >= LEVEL_MAX)
+ index = LEVEL_NOSVC;
+
+ rssi.img_obj.width = DEFAULT_ICON_WIDTH;
+
+ rssi.img_obj.data = icon_path[index];
+ icon_show(&rssi);
+
+ prevRoam = bRoaming;
+ prevIndex = index;
+ isRSSI1Showing = 1;
+ util_signal_emit(rssi.ad,"indicator.rssi1.show","indicator.prog");
+}
+
+static void show_sim2_image_icon(void *data, int index)
+{
if (index < LEVEL_RSSI_MIN)
index = LEVEL_RSSI_MIN;
else if (index >= LEVEL_MAX)
index = LEVEL_NOSVC;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- rssi[i].img_obj.width = DEFAULT_ICON_WIDTH;
+ rssi2.img_obj.width = DEFAULT_ICON_WIDTH;
- if(bRoaming == 1)
- {
- rssi[i].img_obj.data = roaming_icon_path[index];
- }
- else
- {
- rssi[i].img_obj.data = icon_path[index];
- }
+ rssi2.img_obj.data = icon_path[index];
- indicator_util_icon_show(&rssi[i]);
- }
+ icon_show(&rssi2);
+
+ prevRoam = bRoaming;
+ prevIndex = index;
+ isRSSI2Showing = 1;
+ util_signal_emit(rssi2.ad,"indicator.rssi2.show","indicator.prog");
}
-static void hide_icon(void)
+static void hide_sim_ds_image_icon(void)
{
- int i = 0;
+ icon_hide(&rssi_ds);
+
+ isSimShowing = 0; // It is for judgement to show S1 icon(Sound, Wi-fi direct, bluetooth) or not.
+ util_signal_emit(rssi_ds.ad,"indicator.simicon.hide","indicator.prog");
+}
+
+static void hide_sim_image_icon(void)
+{
+ icon_hide(&rssi);
+
+ isRSSI1Showing = 0;
+ util_signal_emit(rssi.ad,"indicator.rssi1.hide","indicator.prog");
+}
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+static void hide_sim2_image_icon(void)
+{
+ icon_hide(&rssi2);
+
+ isRSSI2Showing = 0;
+ util_signal_emit(rssi2.ad,"indicator.rssi2.hide","indicator.prog");
+}
+
+static int language_changed_cb(void *data)
+{
+ on_noti(NULL, NULL, NULL, data);
+ return OK;
+}
+
+static int wake_up_cb(void *data)
+{
+ if(updated_while_lcd_off==0)
{
- indicator_util_icon_hide(&rssi[i]);
+ return OK;
}
+
+ on_noti(NULL, NULL, NULL, data);
+ return OK;
}
-static void indicator_rssi_change_cb(keynode_t *node, void *data)
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
{
+ Evas_Object *item = data;
+ char *tmp = NULL;
+ char buf[256] = {0,};
+ char buf1[256] = {0,};
int status = 0;
- int ret;
- retif(data == NULL, , "Invalid parameter!");
+ if(bRssiShown == 0)
+ {
+ ERR("No rssi level");
+ return NULL;
+ }
+
+ vconf_get_int(VCONFKEY_TELEPHONY_RSSI, &status);
+ snprintf(buf1, sizeof(buf1), _("IDS_IDLE_BODY_PD_OUT_OF_4_BARS_OF_SIGNAL_STRENGTH"), status);
- if(indicator_util_get_update_flag()==0)
+ snprintf(buf, sizeof(buf), "%s, %s", buf1,_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+
+ INFO("buf: %s", buf);
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
+}
+#endif
+
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ DBG("On noti funtion");
+ int sim1_service = 0;
+ int sim2_service = 0;
+ int status = 0;
+ int sim_slot_count = 0;
+ int ret = 0;
+ int val = 0;
+ int preferred_subscription = 0;
+ struct appdata *ad = (struct appdata *)user_data;
+
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
DBG("need to update %d",updated_while_lcd_off);
return;
}
+
updated_while_lcd_off = 0;
ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status);
if (ret == OK && status == TRUE) {
- INFO("RSSI Status: Flight Mode");
- show_image_icon(data, LEVEL_FLIGHT);
+ DBG("RSSI Status: Flight Mode");
+ show_image_icon(user_data, LEVEL_FLIGHT);
+ hide_sim2_image_icon();
+ hide_sim_ds_image_icon();
return;
}
+ ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT_COUNT, &sim_slot_count);
+ if (ret != OK)
+ LOGE("Failed to get dual_sim vconf");
+ DBG("Target's Sim Slot COUNT : %d", sim_slot_count);
- ret = vconf_get_int(VCONFKEY_TELEPHONY_SIM_SLOT, &status);
- if (ret == OK && status != VCONFKEY_TELEPHONY_SIM_INSERTED) {
- INFO("RSSI Status: No SIM Mode");
- show_image_icon(data, LEVEL_NOSIM);
- return;
+ TelSimCardStatus_t sim_status_sim1 = 0x00;
+ TelSimCardStatus_t sim_status_sim2 = 0x00;
+
+ sim_status_sim1 = ad->tel_info[0].sim_status;
+ if(sim_slot_count == 1)
+ {
+ DBG("Single Sim target");
+ sim_status_sim2 = TAPI_SIM_STATUS_CARD_NOT_PRESENT;
+ }
+ else if(sim_slot_count == 2)
+ {
+ DBG("Dual Sim target");
+ sim_status_sim2 = ad->tel_info[1].sim_status;
+ }
+
+ // Sim 2
+ if(sim_status_sim2 != TAPI_SIM_STATUS_CARD_NOT_PRESENT)
+ {
+ DBG("Sim2 inserted");
+ val = ad->tel_info[1].network_service_type;
+ DBG("Get SIM2 service type : %d", val);
+ switch(val)
+ {
+ case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
+ DBG("Service type: NO_SERVICE");
+ show_sim2_image_icon(user_data, LEVEL_NOSVC);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
+ DBG("Service type: EMERGENCY : Signal-strength level : %d", val);
+ val = ad->tel_info[1].signal_level;
+ if(ret != OK)
+ {
+ ERR("Can not get signal strength level");
+ }
+ show_sim2_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
+ DBG("Service type: SEARCH");
+ show_sim2_image_icon(user_data, LEVEL_SEARCH);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_UNKNOWN: DBG("Service type : UNKNOWN");
+ default:
+ sim2_service = 1;
+ break;
+ }
+ if(sim2_service)
+ {
+ val = ad->tel_info[1].signal_level;
+ DBG("Get SIM2 signal strength level: %d", val);
+ int roaming = 0;
+ roaming = ad->tel_info[1].roaming_status;
+ preferred_subscription = ad->tel_info[1].default_network;
+ if(roaming)
+ {
+ if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM2 && sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+ {
+ show_sim2_image_icon(user_data, LEVEL_RSSI_ROAMING2_0+val);
+ }
+ else
+ {
+ show_sim2_image_icon(user_data, LEVEL_RSSI_ROAMING_0+val);
+ }
+ }
+ else
+ {
+ if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM2 && sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+ {
+ show_sim2_image_icon(user_data, LEVEL_RSSI_SIM2_0+val);
+ }
+ else
+ {
+ show_sim2_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+ }
+ }
+ }
}
- ret = vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &status);
- if (ret == OK) {
- if (status == VCONFKEY_TELEPHONY_SVCTYPE_NOSVC) {
- INFO("RSSI Status: No Service");
- show_image_icon(data, LEVEL_NOSVC);
- return;
+ // SIM 1
+ if(sim_status_sim1 != TAPI_SIM_STATUS_CARD_NOT_PRESENT)
+ {
+ DBG("Sim1 inserted");
+ val = ad->tel_info[0].network_service_type;
+ DBG("Get SIM1 service type : %d", val);
+ switch(val)
+ {
+ case TAPI_NETWORK_SERVICE_TYPE_NO_SERVICE:
+ DBG("Service type: NO_SERVICE");
+ show_image_icon(user_data, LEVEL_NOSVC);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_EMERGENCY:
+ DBG("Service type: EMERGENCY : Signal-strength level : %d", val);
+ val = ad->tel_info[0].signal_level;
+ if(ret != OK)
+ {
+ ERR("Can not get signal strength level");
+ }
+ show_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_SEARCH:
+ DBG("Service type: SEARCH");
+ show_image_icon(user_data, LEVEL_SEARCH);
+ break;
+ case TAPI_NETWORK_SERVICE_TYPE_UNKNOWN: DBG("Service type : UNKNOWN");
+ default:
+ DBG("Service type : UNKNOWN (%d)", val);
+ sim1_service = 1;
+ break;
}
- if (status == VCONFKEY_TELEPHONY_SVCTYPE_SEARCH) {
- INFO("RSSI Status: Searching Service");
- show_image_icon(data, LEVEL_SEARCH);
- return;
+ if(sim1_service)
+ {
+ val = ad->tel_info[0].signal_level;
+ DBG("Get SIM1 signal strength level: %d", val);
+ int roaming = 0;
+ roaming = ad->tel_info[0].roaming_status;
+ preferred_subscription = ad->tel_info[0].default_network;
+ if(roaming)
+ {
+ if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM1 && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+ {
+ show_image_icon(user_data, LEVEL_RSSI_ROAMING2_0+val);
+ }
+ else
+ {
+ show_image_icon(user_data, LEVEL_RSSI_ROAMING_0+val);
+ }
+ }
+ else
+ {
+ if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM1 && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+ {
+ show_image_icon(user_data, LEVEL_RSSI_SIM2_0+val);
+ }
+ else
+ {
+ show_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
+ }
+ }
+
}
}
- ret = vconf_get_int(VCONFKEY_TELEPHONY_SVC_ROAM, &status);
- if (ret == OK) {
- if (status == VCONFKEY_TELEPHONY_SVC_ROAM_ON) {
- INFO("ROAMING Status: %d", status);
- bRoaming = 1;
- } else {
- bRoaming = 0;
+ if(sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+ {
+ DBG("Dual Sim : Check preferred network subscription");
+ if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM1)
+ {
+ DBG("Preferred voice subscription set to sim1 : %d", preferred_subscription);
+ show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_1));
+
+ }
+ else if(preferred_subscription == TAPI_NETWORK_DEFAULT_SUBS_SIM2)
+ {
+ DBG("Preferred voice subscription set to sim2 : %d", preferred_subscription);
+ show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_2));
}
+ else
+ {
+ hide_sim_ds_image_icon();
+ ERR("Preferred voice subscription is: %d", preferred_subscription);
+ }
+ }
+ else if(sim_status_sim1 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED && sim_status_sim2 != TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+ {
+ DBG("Single Sim : Show Sim card 1 icon");
+ hide_sim2_image_icon();
+ show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_1));
+ }
+ else if(sim_status_sim1 != TAPI_SIM_STATUS_SIM_INIT_COMPLETED && sim_status_sim2 == TAPI_SIM_STATUS_SIM_INIT_COMPLETED)
+ {
+ DBG("Single Sim : Show Sim card 2 icon");
+ hide_sim_image_icon();
+ show_sim_ds_image_icon(user_data, _get_sim_icon(SIM_2));
}
- ret = vconf_get_int(VCONFKEY_TELEPHONY_RSSI, &status);
- if (ret == OK) {
- INFO("RSSI Level: %d", status);
- level_check(&status);
- show_image_icon(data, status);
- return;
+ if(sim_status_sim1 == TAPI_SIM_STATUS_CARD_NOT_PRESENT &&
+ sim_status_sim2 == TAPI_SIM_STATUS_CARD_NOT_PRESENT)
+ {
+ hide_sim_image_icon();
+ hide_sim2_image_icon();
+ hide_sim_ds_image_icon();
+ val = ad->tel_info[0].signal_level;
+ DBG("No sim card : Signal-strength level : %d", val);
+ if(ret != OK)
+ {
+ ERR("Can not get signal strength level");
+ }
+ show_image_icon(user_data, LEVEL_RSSI_SIM1_0+val);
}
+ else if(sim_slot_count !=2 )
+ {
+ DBG("Single Sim target");
+ hide_sim2_image_icon();
+ hide_sim_ds_image_icon();
+ }
+}
+static int _get_sim_icon(int sim_number)
+{
+ int status = 0;
+ int ret = 0;
- ERR("Failed to get rssi status! Set as No Service.");
- show_image_icon(data, LEVEL_NOSVC);
- return;
+ if(sim_number == SIM_1)
+ {
+// ret = vconf_get_int(VCONFKEY_SETAPPL_SIM1_ICON, &status);
+ if (ret == OK)
+ {
+ LOGD("Sim 1 icon: %d", status);
+ }
+ }
+ else
+ {
+// ret = vconf_get_int(VCONFKEY_SETAPPL_SIM2_ICON, &status);
+ if (ret == OK)
+ {
+ LOGD("Sim 2 icon: %d", status);
+ }
+ }
+
+ return status+LEVEL_SIM_ICON_SIM1;
}
-static int language_changed_cb(void *data)
+static void _sim_icon_update(keynode_t *key, void *data)
{
- indicator_rssi_change_cb(NULL, data);
- return OK;
+ on_noti(NULL, NULL, NULL, data);
}
-static int wake_up_cb(void *data)
+static void _flight_mode(keynode_t *key, void *data)
{
- if(updated_while_lcd_off==0)
+ on_noti(NULL, NULL, NULL, data);
+}
+
+int rssi_get_sim_number(TapiHandle *handle_obj)
+{
+ DBG("tapi_handle[0](%x),tapi_handle[1](%x),current(%x)",tapi_handle[0],tapi_handle[1],handle_obj);
+
+ int ret = -1;
+ if(tapi_handle[0]!=NULL)
{
- DBG("ICON WAS NOT UPDATED");
- return OK;
+ if(tapi_handle[0]==handle_obj)
+ ret = 0;
}
- indicator_rssi_change_cb(NULL, data);
- return OK;
-}
+ if(tapi_handle[1]!=NULL)
+ {
+ if(tapi_handle[1]==handle_obj)
+ ret = 1;
+ }
+ if(ret == -1)
+ {
+ ERR("no handle %x",handle_obj);
+ ret = 0;
+ }
-static int register_rssi_module(void *data)
+ DBG("sim %d",ret);
+
+ return ret;
+}
+static void init_tel_info(void* data)
{
- int r = 0, ret = -1;
+ int ret = 0;
+ struct appdata *ad = (struct appdata *)data;
+ int i = 0;
+ int val = 0;
+ TelSimCardStatus_t sim_status;
+ retif(data == NULL, , "invalid parameter !!");
- retif(data == NULL, FAIL, "Invalid parameter!");
+ for(i=0;i<2;i++)
+ {
+ if(tapi_handle[i]==NULL)
+ {
+ DBG("i %d,NULL");
+ continue;
+ }
+ DBG("tapi handle %x %d",tapi_handle[i],i);
+ ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_ROAMING_STATUS, &val);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_PROP_NETWORK_ROAMING_STATUS);
+ }
+ DBG("TAPI_PROP_NETWORK_ROAMING_STATUS %d",val);
+ ad->tel_info[i].roaming_status = val;
- set_app_state(data);
+ ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL, &val);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL);
+ }
+ DBG("TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL %d",val);
+ ad->tel_info[i].signal_level = val;
+
+ ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE, &val);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_PROP_NETWORK_SERVICE_TYPE);
+ }
+ DBG("TAPI_PROP_NETWORK_SERVICE_TYPE %d",val);
+ ad->tel_info[i].network_service_type = val;
+
+ ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_NETWORK_PS_TYPE, &val);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_PROP_NETWORK_SERVICE_TYPE);
+ }
+ DBG("TAPI_PROP_NETWORK_PS_TYPE %d",val);
+ ad->tel_info[i].network_ps_type = val;
+
+
+ TelCallPreferredVoiceSubs_t preferred_sub = TAPI_CALL_PREFERRED_VOICE_SUBS_UNKNOWN;
+ ret = tel_get_call_preferred_voice_subscription(tapi_handle[i], &preferred_sub);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION);
+ }
+ DBG("TAPI_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION %d",preferred_sub);
+ ad->tel_info[i].prefered_voice = preferred_sub;
+#ifdef DEVICE_BUILD
+ TelNetworkDefaultDataSubs_t preferred_data = TAPI_NETWORK_DEFAULT_DATA_SUBS_UNKNOWN;
+ ret = tel_get_network_default_data_subscription(tapi_handle[i], &preferred_data);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION);
+ }
+ DBG("TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION %d",preferred_data);
+ ad->tel_info[i].prefered_data = preferred_data;
+
+ TelNetworkDefaultSubs_t default_subs = TAPI_NETWORK_DEFAULT_SUBS_UNKNOWN;
+ ret = tel_get_network_default_subscription(tapi_handle[i], &default_subs);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION);
+ }
+ DBG("TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION %d",default_subs);
+
+ ad->tel_info[i].default_network = default_subs;
+
+ ret = tel_get_property_int(tapi_handle[i], TAPI_PROP_SIM_CALL_FORWARD_STATE, &val);
+ if(ret != OK)
+ {
+ ERR("Can not get %s",TAPI_PROP_SIM_CALL_FORWARD_STATE);
+ }
+ ad->tel_info[i].call_forward = val;
+ DBG("TAPI_PROP_SIM_CALL_FORWARD_STATE %d",val);
+#endif // DEVICE_BUILD
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_RSSI,
- indicator_rssi_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = ret;
+ int changed = 0;
+ ret = tel_get_sim_init_info(tapi_handle[i], &sim_status, &changed);
+ if(ret != OK)
+ {
+ ERR("Can not get sim init info");
+ }
+ DBG("sim info %d",sim_status);
+ ad->tel_info[i].sim_status = sim_status;
}
+}
+static void signal_strength_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ int *sig_level = data;
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ sim_number = rssi_get_sim_number(handle_obj);
+ DBG ("sim %d",sim_number);
+ DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL);
+ DBG (" - sig_level = %d", *sig_level);
+
+ ad->tel_info[sim_number].signal_level= *sig_level;
+
+ on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void sim_status_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ int *sim_status = data;
+
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ sim_number = rssi_get_sim_number(handle_obj);
+ ERR ("sim %d",sim_number);
+
+ ERR ("property(%s) receive !!", TAPI_NOTI_SIM_STATUS);
+ ERR (" - sim_status = %d", *sim_status);
+
+ ad->tel_info[sim_number].sim_status= *sim_status;
+
+ on_noti(handle_obj,noti_id,data,user_data);
+ connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void network_service_type_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ int *service_type = data;
+
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ sim_number = rssi_get_sim_number(handle_obj);
+ DBG ("sim %d",sim_number);
+
+ DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_SERVICE_TYPE);
+ DBG (" - service_type = %d", *service_type);
+
+ ad->tel_info[sim_number].network_service_type= *service_type;
+
+ on_noti(handle_obj,noti_id,data,user_data);
+ connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void network_ps_type_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ int *ps_type = data;
+
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ sim_number = rssi_get_sim_number(handle_obj);
+ DBG ("sim %d",sim_number);
+
+ DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_PS_TYPE);
+ DBG (" - ps_type = %d", *ps_type);
+
+ ad->tel_info[sim_number].network_ps_type= *ps_type;
+
+ connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void roaming_status_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ int *roaming_status = data;
+
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ sim_number = rssi_get_sim_number(handle_obj);
+ DBG ("sim %d",sim_number);
+
+ DBG ("property(%s) receive !!", TAPI_PROP_NETWORK_ROAMING_STATUS);
+ DBG (" - roaming_status = %d", *roaming_status);
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
- indicator_rssi_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = r | ret;
+ ad->tel_info[sim_number].roaming_status= *roaming_status;
+
+ on_noti(handle_obj,noti_id,data,user_data);
+}
+
+
+#if 0
+static void preferred_voice_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ int *prefered_voice = data;
+
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ sim_number = rssi_get_sim_number(handle_obj);
+ DBG ("sim %d",sim_number);
+
+ DBG ("property(%s) receive !!", TAPI_NOTI_CALL_PREFERRED_VOICE_SUBSCRIPTION);
+ DBG (" - preferred_voice = %d", *prefered_voice);
+
+ ad->tel_info[sim_number].prefered_voice = *prefered_voice;
+
+ on_noti(handle_obj,noti_id,data,user_data);
+}
+#endif
+
+
+static void preferred_data_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ struct tel_noti_network_default_data_subs *noti = data;
+ sim_number = rssi_get_sim_number(handle_obj);
+ DBG ("sim %d",sim_number);
+
+ DBG ("property(%s) receive !!", TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION);
+ DBG (" - preferred_data = %d", noti->default_subs);
+
+ //Data preferred calback comes from only the sim handle which changed
+ //SIM1->SIM2 , callback comes only for SIM2 handle
+ ad->tel_info[0].prefered_data = noti->default_subs;
+ ad->tel_info[1].prefered_data = noti->default_subs;
+ //data prefered is not controllered
+
+ connection_icon_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void default_network_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ struct tel_noti_network_default_subs *noti = data;
+ sim_number = rssi_get_sim_number(handle_obj);
+ DBG ("sim %d",sim_number);
+
+ DBG ("property(%s) receive !!", TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION);
+ DBG (" - default_network = %d", noti->default_subs);
+
+ ad->tel_info[sim_number].default_network = noti->default_subs;
+
+ on_noti(handle_obj,noti_id,data,user_data);
+}
+
+static void call_forward_cb(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ int *call_forward = data;
+
+ struct appdata *ad = (struct appdata *)user_data;
+ retif(user_data == NULL, , "invalid parameter!!");
+ int sim_number = 0;
+ sim_number = rssi_get_sim_number(handle_obj);
+
+ DBG ("sim %d",sim_number);
+#ifdef DEVICE_BUILD
+ DBG ("property(%s) receive !!", TAPI_PROP_SIM_CALL_FORWARD_STATE);
+#endif // DEVICE_BUILD
+ DBG (" - call_forward = %d", *call_forward);
+
+ ad->tel_info[sim_number].call_forward = *call_forward;
+
+ call_forward_on_noti(handle_obj,noti_id,data,user_data);
+}
+
+
+/* Initialize TAPI */
+static void __init_tel(void *data)
+{
+ DBG("__init_tel");
+ char **cp_list = NULL;
+ unsigned int modem_num = 0;
+
+ if(registered ==1)
+ {
+ ERR("already registered");
+ return;
}
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
- indicator_rssi_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = r | ret;
+ cp_list = tel_get_cp_name_list();
+ retif(cp_list == NULL, , "tel_get_cp_name_list() return NULL !!");
+ while (cp_list[modem_num]) {
+ tapi_handle[modem_num] = tel_init(cp_list[modem_num]);
+ if(!tapi_handle[modem_num])
+ {
+ ERR("tapi_handle[%d] is null !!", modem_num);
+ }
+ else
+ {
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL, signal_strength_cb, data);
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_NOTI_SIM_STATUS, sim_status_cb, data);
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_SERVICE_TYPE, network_service_type_cb, data);
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_PS_TYPE, network_ps_type_cb, data);
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_NETWORK_ROAMING_STATUS, roaming_status_cb, data);
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION, preferred_data_cb, data);
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION, default_network_cb, data);
+#ifdef DEVICE_BUILD
+ tel_register_noti_event(tapi_handle[modem_num], TAPI_PROP_SIM_CALL_FORWARD_STATE , call_forward_cb, data);
+#endif // DEVICE_BUILD
+ }
+ modem_num++;
}
+ DBG("Model num: %d", modem_num);
+ tapi_handle[modem_num] = NULL;
+ g_strfreev(cp_list);
+ init_tel_info(data);
+ on_noti(NULL, NULL, NULL, data);
+
+ registered = 1;
+}
+
+/* De-initialize TAPI */
+static void __deinit_tel()
+{
+ DBG("__deinit_tel");
+ unsigned int i = 0;
+
+ while (tapi_handle[i]) {
+ /* De-initialize TAPI handle */
+ if(tapi_handle[i])
+ {
+ tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_NETWORK_SIGNALSTRENGTH_LEVEL);
+ tel_deregister_noti_event(tapi_handle[i], TAPI_NOTI_SIM_STATUS);
+ tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_NETWORK_SERVICE_TYPE);
+ tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_NETWORK_ROAMING_STATUS);
+ tel_deregister_noti_event(tapi_handle[i], TAPI_NOTI_NETWORK_DEFAULT_DATA_SUBSCRIPTION);
+ tel_deregister_noti_event(tapi_handle[i], TAPI_NOTI_NETWORK_DEFAULT_SUBSCRIPTION);
+#ifdef DEVICE_BUILD
+ tel_deregister_noti_event(tapi_handle[i], TAPI_PROP_SIM_CALL_FORWARD_STATE);
+#endif // DEVICE_BUILD
+ }
+ tel_deinit(tapi_handle[i]);
+ tapi_handle[i] = NULL;
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
- indicator_rssi_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = r | ret;
+ /* Move to next handle */
+ i++;
}
+ registered = 0;
+}
+
+static void tel_ready_cb(keynode_t *key, void *data)
+{
+ gboolean status = FALSE;
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
- indicator_rssi_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = ret;
+ status = vconf_keynode_get_bool(key);
+ if (status == TRUE) { /* Telephony State - READY */
+ __init_tel(data);
}
+ else { /* Telephony State – NOT READY */
+ /* De-initialization is optional here (ONLY if required) */
+ __deinit_tel();
+ }
+}
- indicator_rssi_change_cb(NULL, data);
+static int register_rssi_module(void *data)
+{
+ int r = 0;
+ gboolean state = FALSE;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+ DBG("RSSI initialization");
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode, data);
+// vconf_notify_key_changed(VCONFKEY_SETAPPL_SIM1_ICON, _sim_icon_update, data);
+// vconf_notify_key_changed(VCONFKEY_SETAPPL_SIM2_ICON, _sim_icon_update, data);
+
+ vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
+
+ if(state)
+ {
+ DBG("Telephony ready");
+ __init_tel(data);
+ }
+ else
+ {
+ DBG("Telephony not ready");
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb, data);
+ }
+
+ r = OK;
return r;
}
{
int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_RSSI,
- indicator_rssi_change_cb);
+ ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_READY,
+ tel_ready_cb);
if (ret != OK)
ERR("Failed to unregister callback!");
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SIM_SLOT,
- indicator_rssi_change_cb);
+ ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
+ _flight_mode);
if (ret != OK)
ERR("Failed to unregister callback!");
-
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVCTYPE,
- indicator_rssi_change_cb);
+#if 0
+ ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM1_ICON, _sim_icon_update);
if (ret != OK)
ERR("Failed to unregister callback!");
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE,
- indicator_rssi_change_cb);
+ ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM2_ICON, _sim_icon_update);
if (ret != OK)
ERR("Failed to unregister callback!");
-
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_SVC_ROAM,
- indicator_rssi_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
-
- return OK;
+#endif
+ __deinit_tel();
+ ret = OK;
+ return ret;
}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 __INDICATOR_TEST_UTIL_H__
-#define __INDICATOR_TEST_UTIL_H__
-extern int print_indicator_icon_object(Indicator_Icon_Object *obj);
-extern int print_indicator_icon_list(Eina_List *list);
+#ifndef __INDICATOR_RSSI_H__
+#define __INDICATOR_RSSI_H__
+
+extern int rssi_get_sim_number(TapiHandle *handle_obj);
#endif
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <runtime_info.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "indicator_gui.h"
+#include "util.h"
+#include "box.h"
+#include "log.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED4
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED9
#define MODULE_NAME "battery"
+#define MODULE_NAME_DIGIT "battery"
+#define MODULE_NAME_DIGIT2 "battery"
#define TIMER_INTERVAL 0.7
-#define BATTERY_TEXTWIDTH 62
-#define BATTERY_VALUE_FONT_SIZE 20
-#define BATTERY_PERCENT_FONT_SIZE 20
-#define BATTERY_PERCENT_FONT_STYLE "Bold"
+
static int register_battery_module(void *data);
static int unregister_battery_module(void);
static int wake_up_cb(void *data);
+static void _resize_battery_digits_icons_box(void);
-Indicator_Icon_Object battery[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+
+icon_s battery = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.area = INDICATOR_ICON_AREA_FIXED,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,0,BATTERY_ICON_WIDTH,BATTERY_ICON_HEIGHT},
.obj_exist = EINA_FALSE,
.init = register_battery_module,
.fini = unregister_battery_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
+ .wake_up = wake_up_cb,
+ .digit_area = -1
+};
+
+icon_s digit = {
+ .type = INDICATOR_DIGIT_ICON,
+ .name = MODULE_NAME_DIGIT,
+ .priority = ICON_PRIORITY,
+ .area = INDICATOR_ICON_AREA_FIXED,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,0,7,10},
+ .obj_exist = EINA_FALSE,
+ .wake_up = wake_up_cb,
+ .digit_area = DIGIT_UNITY
+};
+
+icon_s digit_additional = {
+ .type = INDICATOR_DIGIT_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.area = INDICATOR_ICON_AREA_FIXED,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,0,BATTERY_ICON_WIDTH,BATTERY_ICON_HEIGHT},
+ .img_obj = {0,0,7,10},
.obj_exist = EINA_FALSE,
- .init = register_battery_module,
- .fini = unregister_battery_module,
- .wake_up = wake_up_cb
-}
+ .wake_up = wake_up_cb,
+ .digit_area = DIGIT_DOZENS_UNITY
};
enum {
INDICATOR_CLOCK_MODE_MAX
};
-static int clock_mode = INDICATOR_CLOCK_MODE_12H;
enum {
BATTERY_ICON_WIDTH_12H,
};
enum {
- BATTERY_LEVEL_6,
+ BATTERY_LEVEL_8,
BATTERY_LEVEL_20,
};
enum {
LEVEL_MIN = 0,
- LEVEL_0 = LEVEL_MIN,
- LEVEL_1,
- LEVEL_2,
- LEVEL_3,
- LEVEL_4,
- LEVEL_5,
- LEVEL_6,
- LEVEL_MAX = LEVEL_6,
+ LEVEL_0 = LEVEL_MIN, /* 0% */
+ LEVEL_1, /* 1 ~ 5% */
+ LEVEL_2, /* 6 ~ 10% */
+ LEVEL_3, /* 11 ~ 15% */
+ LEVEL_4, /* 16 ~ 20% */
+ LEVEL_5, /* 21 ~ 25 % */
+ LEVEL_6, /* 25 ~ 30 % */
+ LEVEL_7, /* 31 ~ 35 % */
+ LEVEL_8, /* 36 ~ 40 % */
+ LEVEL_9, /* 41 ~ 45 % */
+ LEVEL_10, /* 46 ~ 50 % */
+ LEVEL_11, /* 51 ~ 55 % */
+ LEVEL_12, /* 56 ~ 60 % */
+ LEVEL_13, /* 61 ~ 65 % */
+ LEVEL_14, /* 66 ~ 70 % */
+ LEVEL_15, /* 71 ~ 75 % */
+ LEVEL_16, /* 76 ~ 80 % */
+ LEVEL_17, /* 81 ~ 85 % */
+ LEVEL_18, /* 86 ~ 90 % */
+ LEVEL_19, /* 91 ~ 95 % */
+ LEVEL_20, /* 96 ~ 100 % */
+ LEVEL_MAX = LEVEL_20,
LEVEL_NUM,
+ LEVEL_FULL
+};
+
+enum {
+ LEVEL_PERCENTAGE_MIN = 0,
+ LEVEL_PERCENTAGE_0 = LEVEL_PERCENTAGE_MIN, /* 0% */
+ LEVEL_PERCENTAGE_1, /* 1 ~ 10% */
+ LEVEL_PERCENTAGE_2, /* 11 ~ 20% */
+ LEVEL_PERCENTAGE_3, /* 21 ~ 30% */
+ LEVEL_PERCENTAGE_4, /* 31 ~ 40% */
+ LEVEL_PERCENTAGE_5, /* 41 ~ 50 % */
+ LEVEL_PERCENTAGE_6, /* 51 ~ 60 % */
+ LEVEL_PERCENTAGE_7, /* 61 ~ 70 % */
+ LEVEL_PERCENTAGE_8, /* 71 ~ 80 % */
+ LEVEL_PERCENTAGE_9, /* 81 ~ 90 % */
+ LEVEL_PERCENTAGE_10, /* 91 ~ 100 % */
+ LEVEL_PERCENTAGE_MAX = LEVEL_PERCENTAGE_10,
+ LEVEL_PERCENTAGE_NUM
};
+enum {
+ BATTERY_PERCENT_1_DIGIT = 0,
+ BATTERY_PERCENT_2_DIGITS,
+ BATTERY_PERCENT_DIGITS
+};
+
+enum {
+ BATTERY_ETC_STATE_FULL,
+ BATTERY_ETC_STATE_MAX,
+};
+
+static int batt_full = 0;
+
static const char *icon_path[LEVEL_NUM] = {
- [LEVEL_0] = "Power/battery_6/B03_Power_battery_00.png",
- [LEVEL_1] = "Power/battery_6/B03_Power_battery_01.png",
- [LEVEL_2] = "Power/battery_6/B03_Power_battery_02.png",
- [LEVEL_3] = "Power/battery_6/B03_Power_battery_03.png",
- [LEVEL_4] = "Power/battery_6/B03_Power_battery_04.png",
- [LEVEL_5] = "Power/battery_6/B03_Power_battery_05.png",
- [LEVEL_6] = "Power/battery_6/B03_Power_battery_06.png",
+ [LEVEL_0] = "Power/B03_stat_sys_battery_4.png",
+ [LEVEL_1] = "Power/B03_stat_sys_battery_5.png",
+ [LEVEL_2] = "Power/B03_stat_sys_battery_10.png",
+ [LEVEL_3] = "Power/B03_stat_sys_battery_15.png",
+ [LEVEL_4] = "Power/B03_stat_sys_battery_20.png",
+ [LEVEL_5] = "Power/B03_stat_sys_battery_25.png",
+ [LEVEL_6] = "Power/B03_stat_sys_battery_30.png",
+ [LEVEL_7] = "Power/B03_stat_sys_battery_35.png",
+ [LEVEL_8] = "Power/B03_stat_sys_battery_40.png",
+ [LEVEL_9] = "Power/B03_stat_sys_battery_45.png",
+ [LEVEL_10] = "Power/B03_stat_sys_battery_50.png",
+ [LEVEL_11] = "Power/B03_stat_sys_battery_55.png",
+ [LEVEL_12] = "Power/B03_stat_sys_battery_60.png",
+ [LEVEL_13] = "Power/B03_stat_sys_battery_65.png",
+ [LEVEL_14] = "Power/B03_stat_sys_battery_70.png",
+ [LEVEL_15] = "Power/B03_stat_sys_battery_75.png",
+ [LEVEL_16] = "Power/B03_stat_sys_battery_80.png",
+ [LEVEL_17] = "Power/B03_stat_sys_battery_85.png",
+ [LEVEL_18] = "Power/B03_stat_sys_battery_90.png",
+ [LEVEL_19] = "Power/B03_stat_sys_battery_95.png",
+ [LEVEL_20] = "Power/B03_stat_sys_battery_100.png"
};
static const char *charging_icon_path[LEVEL_NUM] = {
- [LEVEL_0] = "Power/battery_6/B03_Power_connected_00.png",
- [LEVEL_1] = "Power/battery_6/B03_Power_connected_01.png",
- [LEVEL_2] = "Power/battery_6/B03_Power_connected_02.png",
- [LEVEL_3] = "Power/battery_6/B03_Power_connected_03.png",
- [LEVEL_4] = "Power/battery_6/B03_Power_connected_04.png",
- [LEVEL_5] = "Power/battery_6/B03_Power_connected_05.png",
- [LEVEL_6] = "Power/battery_6/B03_Power_connected_06.png",
+ [LEVEL_0] = "Power/B03_stat_sys_battery_charge_anim4.png",
+ [LEVEL_1] = "Power/B03_stat_sys_battery_charge_anim5.png",
+ [LEVEL_2] = "Power/B03_stat_sys_battery_charge_anim10.png",
+ [LEVEL_3] = "Power/B03_stat_sys_battery_charge_anim15.png",
+ [LEVEL_4] = "Power/B03_stat_sys_battery_charge_anim20.png",
+ [LEVEL_5] = "Power/B03_stat_sys_battery_charge_anim25.png",
+ [LEVEL_6] = "Power/B03_stat_sys_battery_charge_anim30.png",
+ [LEVEL_7] = "Power/B03_stat_sys_battery_charge_anim35.png",
+ [LEVEL_8] = "Power/B03_stat_sys_battery_charge_anim40.png",
+ [LEVEL_9] = "Power/B03_stat_sys_battery_charge_anim45.png",
+ [LEVEL_10] = "Power/B03_stat_sys_battery_charge_anim50.png",
+ [LEVEL_11] = "Power/B03_stat_sys_battery_charge_anim55.png",
+ [LEVEL_12] = "Power/B03_stat_sys_battery_charge_anim60.png",
+ [LEVEL_13] = "Power/B03_stat_sys_battery_charge_anim65.png",
+ [LEVEL_14] = "Power/B03_stat_sys_battery_charge_anim70.png",
+ [LEVEL_15] = "Power/B03_stat_sys_battery_charge_anim75.png",
+ [LEVEL_16] = "Power/B03_stat_sys_battery_charge_anim80.png",
+ [LEVEL_17] = "Power/B03_stat_sys_battery_charge_anim85.png",
+ [LEVEL_18] = "Power/B03_stat_sys_battery_charge_anim90.png",
+ [LEVEL_19] = "Power/B03_stat_sys_battery_charge_anim95.png",
+ [LEVEL_20] = "Power/B03_stat_sys_battery_charge_anim100.png"
+};
+#if 0
+static const char *percentage_bg_icon_path[BATTERY_PERCENT_DIGITS] = {
+ [BATTERY_PERCENT_1_DIGIT] = "Power/battery_text/B03_stat_sys_battery_bg_1.png",
+ [BATTERY_PERCENT_2_DIGITS] = "Power/battery_text/B03_stat_sys_battery_bg_2.png"
+};
+#endif
+static const char *percentage_battery_digit_icon_path[11] = {
+ [0] = "Power/battery_text/B03_stat_sys_battery_num_0.png",
+ [1] = "Power/battery_text/B03_stat_sys_battery_num_1.png",
+ [2] = "Power/battery_text/B03_stat_sys_battery_num_2.png",
+ [3] = "Power/battery_text/B03_stat_sys_battery_num_3.png",
+ [4] = "Power/battery_text/B03_stat_sys_battery_num_4.png",
+ [5] = "Power/battery_text/B03_stat_sys_battery_num_5.png",
+ [6] = "Power/battery_text/B03_stat_sys_battery_num_6.png",
+ [7] = "Power/battery_text/B03_stat_sys_battery_num_7.png",
+ [8] = "Power/battery_text/B03_stat_sys_battery_num_8.png",
+ [9] = "Power/battery_text/B03_stat_sys_battery_num_9.png",
+ [10] = "Power/battery_text/B03_stat_sys_battery_num_100.png"
+};
+
+static const char *percentage_battery_icon_path[LEVEL_PERCENTAGE_NUM] = {
+ [LEVEL_PERCENTAGE_0] = "Power/B03_stat_sys_battery_percent_0.png",
+ [LEVEL_PERCENTAGE_1] = "Power/B03_stat_sys_battery_percent_10.png",
+ [LEVEL_PERCENTAGE_2] = "Power/B03_stat_sys_battery_percent_20.png",
+ [LEVEL_PERCENTAGE_3] = "Power/B03_stat_sys_battery_percent_30.png",
+ [LEVEL_PERCENTAGE_4] = "Power/B03_stat_sys_battery_percent_40.png",
+ [LEVEL_PERCENTAGE_5] = "Power/B03_stat_sys_battery_percent_50.png",
+ [LEVEL_PERCENTAGE_6] = "Power/B03_stat_sys_battery_percent_60.png",
+ [LEVEL_PERCENTAGE_7] = "Power/B03_stat_sys_battery_percent_70.png",
+ [LEVEL_PERCENTAGE_8] = "Power/B03_stat_sys_battery_percent_80.png",
+ [LEVEL_PERCENTAGE_9] = "Power/B03_stat_sys_battery_percent_90.png",
+ [LEVEL_PERCENTAGE_10] = "Power/B03_stat_sys_battery_percent_100.png"
+};
+
+static const char *percentage_battery_charging_icon_path[LEVEL_PERCENTAGE_NUM] = {
+ [LEVEL_PERCENTAGE_0] = "Power/B03_stat_sys_battery_percent_charge_anim0.png",
+ [LEVEL_PERCENTAGE_1] = "Power/B03_stat_sys_battery_percent_charge_anim10.png",
+ [LEVEL_PERCENTAGE_2] = "Power/B03_stat_sys_battery_percent_charge_anim20.png",
+ [LEVEL_PERCENTAGE_3] = "Power/B03_stat_sys_battery_percent_charge_anim30.png",
+ [LEVEL_PERCENTAGE_4] = "Power/B03_stat_sys_battery_percent_charge_anim40.png",
+ [LEVEL_PERCENTAGE_5] = "Power/B03_stat_sys_battery_percent_charge_anim50.png",
+ [LEVEL_PERCENTAGE_6] = "Power/B03_stat_sys_battery_percent_charge_anim60.png",
+ [LEVEL_PERCENTAGE_7] = "Power/B03_stat_sys_battery_percent_charge_anim70.png",
+ [LEVEL_PERCENTAGE_8] = "Power/B03_stat_sys_battery_percent_charge_anim80.png",
+ [LEVEL_PERCENTAGE_9] = "Power/B03_stat_sys_battery_percent_charge_anim90.png",
+ [LEVEL_PERCENTAGE_10] = "Power/B03_stat_sys_battery_percent_charge_anim100.png"
};
enum {
FUEL_GAUGE_LV_NUM,
};
-static const char *fuel_guage_icon_path[BATTERY_ICON_WIDTH_NUM][FUEL_GAUGE_LV_NUM] = {
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_0] = "Power/12H/B03_battery_animation_12h_00.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_1] = "Power/12H/B03_battery_animation_12h_01.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_2] = "Power/12H/B03_battery_animation_12h_02.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_3] = "Power/12H/B03_battery_animation_12h_03.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_4] = "Power/12H/B03_battery_animation_12h_04.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_5] = "Power/12H/B03_battery_animation_12h_05.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_6] = "Power/12H/B03_battery_animation_12h_06.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_7] = "Power/12H/B03_battery_animation_12h_07.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_8] = "Power/12H/B03_battery_animation_12h_08.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_9] = "Power/12H/B03_battery_animation_12h_09.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_10] = "Power/12H/B03_battery_animation_12h_10.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_11] = "Power/12H/B03_battery_animation_12h_11.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_12] = "Power/12H/B03_battery_animation_12h_12.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_13] = "Power/12H/B03_battery_animation_12h_13.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_14] = "Power/12H/B03_battery_animation_12h_14.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_15] = "Power/12H/B03_battery_animation_12h_15.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_16] = "Power/12H/B03_battery_animation_12h_16.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_17] = "Power/12H/B03_battery_animation_12h_17.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_18] = "Power/12H/B03_battery_animation_12h_18.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_19] = "Power/12H/B03_battery_animation_12h_19.png",
- [BATTERY_ICON_WIDTH_12H][FUEL_GAUGE_LV_20] = "Power/12H/B03_battery_animation_12h_20.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_0] = "Power/24H/B03_battery_animation_24h_00.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_1] = "Power/24H/B03_battery_animation_24h_01.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_2] = "Power/24H/B03_battery_animation_24h_02.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_3] = "Power/24H/B03_battery_animation_24h_03.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_4] = "Power/24H/B03_battery_animation_24h_04.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_5] = "Power/24H/B03_battery_animation_24h_05.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_6] = "Power/24H/B03_battery_animation_24h_06.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_7] = "Power/24H/B03_battery_animation_24h_07.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_8] = "Power/24H/B03_battery_animation_24h_08.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_9] = "Power/24H/B03_battery_animation_24h_09.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_10] = "Power/24H/B03_battery_animation_24h_10.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_11] = "Power/24H/B03_battery_animation_24h_11.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_12] = "Power/24H/B03_battery_animation_24h_12.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_13] = "Power/24H/B03_battery_animation_24h_13.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_14] = "Power/24H/B03_battery_animation_24h_14.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_15] = "Power/24H/B03_battery_animation_24h_15.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_16] = "Power/24H/B03_battery_animation_24h_16.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_17] = "Power/24H/B03_battery_animation_24h_17.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_18] = "Power/24H/B03_battery_animation_24h_18.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_19] = "Power/24H/B03_battery_animation_24h_19.png",
- [BATTERY_ICON_WIDTH_24H][FUEL_GAUGE_LV_20] = "Power/24H/B03_battery_animation_24h_20.png",
-};
-
struct battery_level_info {
int current_level;
int current_capa;
static struct battery_level_info _level;
static Ecore_Timer *timer;
-static int battery_level_type = BATTERY_LEVEL_20;
-static Eina_Bool battery_percentage_on = EINA_FALSE;
-static Eina_Bool battery_charging = EINA_FALSE;
+static int battery_level_type = BATTERY_LEVEL_8;
+static int battery_charging = EINA_FALSE;
static int aniIndex = -1;
+static int prev_mode = -1;
+static int prev_level = -1;
+static int prev_full = -1;
+static int battery_percentage = -1;
+static Eina_Bool is_battery_percentage_shown = EINA_FALSE;
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- battery[i].ad = data;
- }
+ battery.ad = data;
+ digit.ad = data;
+ digit_additional.ad = data;
}
static void delete_timer(void)
{
int level = 0;
- if (battery_level_type == BATTERY_LEVEL_20) {
- if (capacity >= 100)
- level = FUEL_GAUGE_LV_MAX;
- else if (capacity < 3)
- level = FUEL_GAUGE_LV_0;
- else
- level = (int)((capacity + 2) / 5);
- } else {
- if (capacity > 100)
- level = LEVEL_MAX;
- else if (capacity >= 80)
- level = LEVEL_6;
- else if (capacity >= 60)
- level = LEVEL_5;
- else if (capacity >= 40)
- level = LEVEL_4;
- else if (capacity >= 25)
- level = LEVEL_3;
- else if (capacity >= 15)
- level = LEVEL_2;
- else if (capacity >= 5)
- level = LEVEL_1;
+ if(is_battery_percentage_shown)
+ {
+ if (battery_level_type == BATTERY_LEVEL_20) {
+ if (capacity >= 100)
+ level = FUEL_GAUGE_LV_MAX;
+ else if (capacity < 3)
+ level = FUEL_GAUGE_LV_0;
+ else
+ level = (int)((capacity + 2) / 5);
+ }
else
- level = LEVEL_0;
+ {
+ if (capacity >= 91)
+ level = LEVEL_PERCENTAGE_10;
+ else if (capacity >= 81)
+ level = LEVEL_PERCENTAGE_9;
+ else if (capacity >= 71)
+ level = LEVEL_PERCENTAGE_8;
+ else if (capacity >= 61)
+ level = LEVEL_PERCENTAGE_7;
+ else if (capacity >= 51)
+ level = LEVEL_PERCENTAGE_6;
+ else if (capacity >= 41)
+ level = LEVEL_PERCENTAGE_5;
+ else if (capacity >= 31)
+ level = LEVEL_PERCENTAGE_4;
+ else if (capacity >= 21)
+ level = LEVEL_PERCENTAGE_3;
+ else if (capacity >= 11)
+ level = LEVEL_PERCENTAGE_2;
+ else if (capacity >= 1)
+ level = LEVEL_PERCENTAGE_1;
+ else
+ level = LEVEL_PERCENTAGE_0;
+ }
+ }
+ else
+ {
+ if (battery_level_type == BATTERY_LEVEL_20) {
+ if (capacity >= 100)
+ level = FUEL_GAUGE_LV_MAX;
+ else if (capacity < 3)
+ level = FUEL_GAUGE_LV_0;
+ else
+ level = (int)((capacity + 2) / 5);
+ } else {
+ if (capacity >= 96)
+ level = LEVEL_20;
+ else if (capacity >= 91)
+ level = LEVEL_19;
+ else if (capacity >= 86)
+ level = LEVEL_18;
+ else if (capacity >= 81)
+ level = LEVEL_17;
+ else if (capacity >= 76)
+ level = LEVEL_16;
+ else if (capacity >= 71)
+ level = LEVEL_15;
+ else if (capacity >= 66)
+ level = LEVEL_14;
+ else if (capacity >= 61)
+ level = LEVEL_13;
+ else if (capacity >= 56)
+ level = LEVEL_12;
+ else if (capacity >= 51)
+ level = LEVEL_11;
+ else if (capacity >= 46)
+ level = LEVEL_10;
+ else if (capacity >= 41)
+ level = LEVEL_9;
+ else if (capacity >= 36)
+ level = LEVEL_8;
+ else if (capacity >= 31)
+ level = LEVEL_7;
+ else if (capacity >= 26)
+ level = LEVEL_6;
+ else if (capacity >= 21)
+ level = LEVEL_5;
+ else if (capacity >= 16)
+ level = LEVEL_4;
+ else if (capacity >= 11)
+ level = LEVEL_3;
+ else if (capacity >= 6)
+ level = LEVEL_2;
+ else if (capacity >= 1)
+ level = LEVEL_1;
+ else
+ level = LEVEL_0;
+ }
}
-
return level;
}
-static void show_battery_icon(void)
+
+#if 0
+static void icon_animation_set(enum indicator_icon_ani type)
{
- int i = 0;
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_show(&battery[i]);
- }
+ icon_ani_set(&battery, type);
}
+#endif
-static void hide_battery_icon(void)
+
+static void show_battery_icon(int mode, int level)
{
- int i = 0;
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&battery[i]);
+ if (is_battery_percentage_shown) {
+ if (batt_full == 1) {
+ battery.img_obj.data = percentage_battery_icon_path[LEVEL_PERCENTAGE_MAX];
+ } else if (battery_charging==EINA_TRUE) {
+ battery.img_obj.data = percentage_battery_charging_icon_path[level];
+ } else {
+ battery.img_obj.data = percentage_battery_icon_path[level];
+ }
+ icon_show(&battery);
+ } else {
+ if(batt_full == 1) {
+ battery.img_obj.data = icon_path[LEVEL_MAX];
+ } else if(battery_charging==EINA_TRUE) {
+ battery.img_obj.data = charging_icon_path[level];
+ } else {
+ battery.img_obj.data = icon_path[level];
+ }
+ icon_show(&battery);
}
+
+ prev_full = batt_full;
+ prev_mode = mode;
+ prev_level = level;
}
-static void icon_animation_set(enum indicator_icon_ani type)
+static void show_digits()
{
- int i = 0;
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_animation_set(&battery[i],type);
+ DBG("Show digits: %d", battery_percentage);
+
+ if (battery_percentage < 10) {
+ digit.img_obj.data = percentage_battery_digit_icon_path[battery_percentage];
+ digit.digit_area = DIGIT_UNITY;
+ digit.img_obj.width = 7;
+ icon_show(&digit);
+ icon_hide(&digit_additional);
+
+ } else if (battery_percentage < 100) {
+ digit.img_obj.data = percentage_battery_digit_icon_path[battery_percentage/10];
+ digit.digit_area = DIGIT_DOZENS;
+ digit.img_obj.width = 7;
+ digit_additional.img_obj.data = percentage_battery_digit_icon_path[battery_percentage%10];
+ digit_additional.digit_area = DIGIT_DOZENS_UNITY;
+ digit_additional.img_obj.width = 7;
+ icon_show(&digit);
+ icon_show(&digit_additional);
+ } else {
+ digit.img_obj.data = percentage_battery_digit_icon_path[10];
+ digit.digit_area = DIGIT_HUNDREDS;
+ digit.img_obj.width = 17;
+ icon_show(&digit);
+ icon_hide(&digit_additional);
}
}
-static void indicator_battery_get_time_format( void)
+
+
+static void hide_digits()
{
- int r = -1;
+ DBG("Hide digits");
- bool is_24hour_enabled = false;
+ icon_hide(&digit);
+ icon_hide(&digit_additional);
+}
- r = runtime_info_get_value_bool(
- RUNTIME_INFO_KEY_24HOUR_CLOCK_FORMAT_ENABLED, &is_24hour_enabled);
- if( r==RUNTIME_INFO_ERROR_NONE&&is_24hour_enabled==true)
- {
- clock_mode = INDICATOR_CLOCK_MODE_24H;
- }
- else
- {
- clock_mode = INDICATOR_CLOCK_MODE_12H;
- }
+static void indicator_battery_get_time_format( void)
+{
}
static void indicator_battery_level_init(void)
{
- battery_level_type = BATTERY_LEVEL_20;
- _level.min_level = FUEL_GAUGE_LV_MIN;
+ /* Currently, kernel not support level 6, So We use only level 20 */
+ battery_level_type = BATTERY_LEVEL_8;
+ _level.min_level = LEVEL_MIN;
_level.current_level = -1;
_level.current_capa = -1;
- _level.max_level = FUEL_GAUGE_LV_MAX;
+ _level.max_level = LEVEL_MAX;
indicator_battery_get_time_format();
}
-static void indicator_battery_text_set(void *data, int value, Indicator_Icon_Object *icon)
-{
- Eina_Strbuf *temp_buf = NULL;
- Eina_Strbuf *percent_buf = NULL;
- char *temp_str = NULL;
-
- retif(data == NULL, , "Invalid parameter!");
-
- icon->type = INDICATOR_TXT_WITH_IMG_ICON;
- temp_buf = eina_strbuf_new();
- percent_buf = eina_strbuf_new();
-
- eina_strbuf_append_printf(temp_buf, "%d", value);
- temp_str = eina_strbuf_string_steal(temp_buf);
- eina_strbuf_append_printf(percent_buf, "%s",
- indicator_util_icon_label_set
- (temp_str, NULL, NULL,
- BATTERY_VALUE_FONT_SIZE,
- data));
- free(temp_str);
-
- eina_strbuf_append_printf(temp_buf, "%%");
- temp_str = eina_strbuf_string_steal(temp_buf);
- eina_strbuf_append_printf(percent_buf, "%s",
- indicator_util_icon_label_set
- (temp_str, NULL,
- BATTERY_PERCENT_FONT_STYLE,
- BATTERY_PERCENT_FONT_SIZE,
- data));
- free(temp_str);
-
- if (icon->txt_obj.data != NULL)
- free(icon->txt_obj.data);
-
- icon->txt_obj.data = eina_strbuf_string_steal(percent_buf);
-
- if (temp_buf != NULL)
- eina_strbuf_free(temp_buf);
-
- if (percent_buf != NULL)
- eina_strbuf_free(percent_buf);
-
-}
+#if 0
static Eina_Bool indicator_battery_charging_ani_cb(void *data)
{
if (_level.current_level == _level.max_level) {
aniIndex = _level.max_level;
- battery[0].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
- battery[1].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
- show_battery_icon();
+ show_battery_icon(battery_charging,aniIndex);
timer = NULL;
return TIMER_STOP;
}
else
aniIndex++;
- battery[0].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
- battery[1].img_obj.data = fuel_guage_icon_path[clock_mode][aniIndex];
- show_battery_icon();
+ show_battery_icon(battery_charging,aniIndex);
return TIMER_CONTINUE;
}
+#endif
+
static int indicator_change_battery_image_level(void *data, int level)
{
retif(data == NULL, FAIL, "Invalid parameter!");
- if (battery_level_type == BATTERY_LEVEL_20) {
- if (level < FUEL_GAUGE_LV_MIN)
- level = FUEL_GAUGE_LV_MIN;
- else if (level > FUEL_GAUGE_LV_MAX)
- level = FUEL_GAUGE_LV_MAX;
- } else {
- if (level < LEVEL_MIN)
- level = LEVEL_MIN;
- else if (level > LEVEL_MAX)
- level = LEVEL_MAX;
+ if(is_battery_percentage_shown)
+ {
+ if (battery_level_type == BATTERY_LEVEL_20) {
+ if (level < FUEL_GAUGE_LV_MIN)
+ level = FUEL_GAUGE_LV_MIN;
+ else if (level > FUEL_GAUGE_LV_MAX)
+ level = FUEL_GAUGE_LV_MAX;
+ }
+ else {
+ if (level < LEVEL_PERCENTAGE_MIN)
+ level = LEVEL_PERCENTAGE_MIN;
+ }
+ }
+ else
+ {
+ if (battery_level_type == BATTERY_LEVEL_20) {
+ if (level < FUEL_GAUGE_LV_MIN)
+ level = FUEL_GAUGE_LV_MIN;
+ else if (level > FUEL_GAUGE_LV_MAX)
+ level = FUEL_GAUGE_LV_MAX;
+ } else {
+ if (level < LEVEL_MIN)
+ level = LEVEL_MIN;
+ }
}
- DBG("level = %d",level);
- battery[0].img_obj.data = fuel_guage_icon_path[clock_mode][level];
- battery[1].img_obj.data = fuel_guage_icon_path[clock_mode][level];
- show_battery_icon();
+ /* Set arg for display image only or text with image */
+ show_battery_icon(battery_charging,level);
return OK;
}
-static void indicator_battery_check_percentage_option(void *data)
+static void indicator_bttery_update_by_charging_state(void *data)
{
- int ret = FAIL;
- int status = 0;
-
- retif(data == NULL, , "Invalid parameter!");
-
- ret = vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
- if (ret != OK)
- ERR("Fail to get [%s: %d]",
- VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, ret);
-
- int i = 0;
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- battery_percentage_on = EINA_FALSE;
- battery[i].img_obj.width = BATTERY_ICON_WIDTH;
- battery[i].type = INDICATOR_IMG_ICON;
- }
+ aniIndex = -1;
+ indicator_change_battery_image_level(data,
+ _level.current_level);
}
-static void indicator_bttery_update_by_charging_state(void *data)
+static void indicator_battery_resize_percengate(void* data)
{
- if (battery_charging == EINA_TRUE) {
- if (!timer) {
- icon_animation_set(ICON_ANI_NONE);
- timer = ecore_timer_add(TIMER_INTERVAL,
- indicator_battery_charging_ani_cb,
- data);
- }
- } else {
- aniIndex = -1;
- delete_timer();
- icon_animation_set(ICON_ANI_NONE);
- indicator_change_battery_image_level(data,
- _level.current_level);
+ if(!is_battery_percentage_shown)
+ {
+ hide_digits();
+ return;
}
+
+ show_digits();
}
static void indicator_battery_update_display(void *data)
retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
+ if(icon_get_update_flag()==0)
{
- DBG("need to update");
return;
}
ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &battery_capa);
if (ret != OK)
{
- ERR("Fail to get [VCONFKEY_SYSMAN_BATTERY_CAPACITY:%d]", ret);
return;
}
if (battery_capa < 0)
{
- INFO("Invalid Battery Capacity: %d", battery_capa);
+ ERR("Invalid Battery Capacity: %d", battery_capa);
return;
}
- INFO("Battery Capacity: %d", battery_capa);
+ DBG("Battery Capacity: %d", battery_capa);
if (battery_capa > 100)
battery_capa = 100;
+ battery_percentage = battery_capa;
+
+ _resize_battery_digits_icons_box();
+
_level.current_capa = battery_capa;
- indicator_battery_check_percentage_option(data);
+ /* Check Battery Level */
level = __battery_capa_to_level(battery_capa);
if (level == _level.current_level)
- DBG("battery level is not changed");
+ {
+ }
else {
_level.current_level = level;
}
+
+ indicator_battery_resize_percengate(data);
indicator_bttery_update_by_charging_state(data);
}
static void indicator_battery_check_charging(void *data)
{
- int ret = -1;
int status = 0;
- ret = vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &status);
- if (ret != OK)
- ERR("Fail to get [VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW:%d]", ret);
-
- INFO("Battery charge Status: %d", status);
+ if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW, &status) < 0)
+ {
+ ERR("Fail to get VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW");
+ } else {
+ DBG("Battery charge Status: %d", status);
+ }
battery_charging = status;
indicator_battery_check_charging(data);
}
-static void indicator_battery_percentage_option_cb(keynode_t *node, void *data)
-{
-
-}
-
static void indicator_battery_change_cb(keynode_t *node, void *data)
{
indicator_battery_update_display(data);
{
retif(data == NULL, , "Invalid parameter!");
- INFO("[Enter] indicator_battery_clock_format_changed_cb");
-
indicator_battery_get_time_format();
indicator_battery_update_display(data);
}
}
+static void indicator_battery_batt_percentage_cb(keynode_t *node, void *data)
+{
+ struct appdata* ad = NULL;
+ int status = 0;
+
+ ret_if(!data);
+
+ ad = (struct appdata*)data;
+
+ vconf_get_bool(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL, &status);
+
+ if(status == 1)
+ {
+ is_battery_percentage_shown = EINA_TRUE;
+ _level.max_level = LEVEL_PERCENTAGE_MAX;
+ indicator_battery_update_display(data);
+ show_digits();
+ box_update_display(&(ad->win));
+ }
+ else
+ {
+ //remove battery percentage
+ is_battery_percentage_shown = EINA_FALSE;
+ _level.max_level = LEVEL_MAX;
+ indicator_battery_update_display(data);
+ hide_digits();
+ box_update_display(&(ad->win));
+ }
+}
+
+static void indicator_battery_batt_low_state_change_cb(keynode_t *node, void *data)
+{
+ int status = 0;
+ retif(data == NULL, , "Invalid parameter!");
+
+ vconf_get_int(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW, &status);
+
+ if(status == VCONFKEY_SYSMAN_BAT_FULL)
+ {
+ DBG("batt full");
+ batt_full = 1;
+ }
+ else
+ {
+ batt_full = 0;
+ }
+ indicator_battery_update_display(data);
+}
+
static int wake_up_cb(void *data)
{
- INFO("BATTERY wake_up_cb");
indicator_battery_clock_format_changed_cb(NULL, data);
return OK;
}
retif(data == NULL, FAIL, "Invalid parameter!");
+ /* DO NOT change order of below fuctions */
set_app_state(data);
indicator_battery_level_init();
ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
- indicator_battery_change_cb, data);
+ indicator_battery_change_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = ret;
}
ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
- indicator_battery_change_cb, data);
+ indicator_battery_change_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
- indicator_battery_charging_cb, data);
+ indicator_battery_charging_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
- indicator_battery_percentage_option_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
+ indicator_battery_clock_format_changed_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
-
- ret = vconf_notify_key_changed(VCONFKEY_REGIONFORMAT_TIME1224,
- indicator_battery_clock_format_changed_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
+ indicator_battery_pm_state_change_cb, data);
if (ret != OK) {
- ERR("Fail: register VCONFKEY_REGIONFORMAT_TIME1224");
r = r | ret;
}
- ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
- indicator_battery_pm_state_change_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
+ indicator_battery_batt_percentage_cb, data);
if (ret != OK) {
- ERR("Fail: register VCONFKEY_PM_STATE");
r = r | ret;
}
- indicator_battery_update_display(data);
+ ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+ indicator_battery_batt_low_state_change_cb, data);
+ if (ret != OK) {
+ r = r | ret;
+ }
+
+ indicator_battery_batt_percentage_cb(NULL,data);
+ indicator_battery_check_charging(data);
return r;
}
static int unregister_battery_module(void)
{
int ret;
- int i = 0;
ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CAPACITY,
- indicator_battery_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ indicator_battery_change_cb);
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
- indicator_battery_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+ indicator_battery_change_cb);
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
- indicator_battery_charging_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_CHARGE_NOW,
+ indicator_battery_charging_cb);
+
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+ indicator_battery_pm_state_change_cb);
+
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
+ indicator_battery_batt_percentage_cb);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SYSMAN_BATTERY_STATUS_LOW,
+ indicator_battery_batt_low_state_change_cb);
- ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_BATTERY_PERCENTAGE_BOOL,
- indicator_battery_percentage_option_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
- ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
- indicator_battery_pm_state_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
delete_timer();
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- if (battery[i].txt_obj.data != NULL)
- free(battery[i].txt_obj.data);
- }
+ return ret;
+}
- return OK;
+static void _resize_battery_digits_icons_box()
+{
+ if (battery_percentage < 10) {
+ util_signal_emit(digit.ad, "indicator.battery.percentage.one.digit.show", "indicator.prog");
+ } else if(battery_percentage < 100) {
+ util_signal_emit(digit.ad, "indicator.battery.percentage.two.digits.show", "indicator.prog");
+ } else {
+ util_signal_emit(digit.ad, "indicator.battery.percentage.full.show", "indicator.prog");
+ }
}
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <vconf.h>
-#include "common.h"
-#include "indicator.h"
-#include "indicator_ui.h"
-#include "modules.h"
-#include "indicator_icon_util.h"
-
-#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
-#define MODULE_NAME "active_sync"
-#define TIMER_INTERVAL 0.5
-#define SYNC_ICON_NUM 4
-
-static int register_active_sync_module(void *data);
-static int unregister_active_sync_module(void);
-static int wake_up_cb(void *data);
-
-Indicator_Icon_Object active_sync[INDICATOR_WIN_MAX] = {
-{
- .type = INDICATOR_IMG_ICON,
- .win_type = INDICATOR_WIN_PORT,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_active_sync_module,
- .fini = unregister_active_sync_module,
- .wake_up = wake_up_cb
-},
-{
- .type = INDICATOR_IMG_ICON,
- .win_type = INDICATOR_WIN_LAND,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_active_sync_module,
- .fini = unregister_active_sync_module,
- .wake_up = wake_up_cb
-}
-};
-
-static const char *icon_path[] = {
- "Processing/B03_Processing_Syncing_01.png",
- "Processing/B03_Processing_Syncing_02.png",
- "Processing/B03_Processing_Syncing_03.png",
- "Processing/B03_Processing_Syncing_04.png",
- NULL
-};
-
-static Ecore_Timer *timer;
-static int icon_index = 0;
-static int updated_while_lcd_off = 0;
-
-static void set_app_state(void* data)
-{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- active_sync[i].ad = data;
- }
-
-}
-
-static void show_image_icon(void* data, int index)
-{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- active_sync[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&active_sync[i]);
- }
-}
-
-static void hide_image_icon(void)
-{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&active_sync[i]);
- }
-}
-
-static Eina_Bool show_sync_icon_cb(void* data)
-{
- DBG("show_sync_icon_cb!, %d",icon_index);
- show_image_icon(data,icon_index);
- icon_index = (++icon_index % SYNC_ICON_NUM) ? icon_index : 0;
-
- return ECORE_CALLBACK_RENEW;
-}
-
-static void show_sync_icon(void* data)
-{
- if(timer==NULL)
- {
- timer = ecore_timer_add(TIMER_INTERVAL, show_sync_icon_cb, data);
- }
- else
- {
- ERR("show_sync_icon!, timer");
- }
-}
-
-static void hide_sync_icon(void)
-{
- DBG("hide_sync_icon!, %d",icon_index);
- if (timer != NULL) {
- ecore_timer_del(timer);
- timer = NULL;
- icon_index = 0;
- }
-
- hide_image_icon();
-}
-
-
-static void indicator_active_sync_change_cb(keynode_t *node, void *data)
-{
- int status = 0;
- int ret = 0;
- int result = 0;
-
- retif(data == NULL, , "Invalid parameter!");
-
-}
-
-static void indicator_active_sync_pm_state_change_cb(keynode_t *node, void *data)
-{
- int status = 0;
- retif(data == NULL, , "Invalid parameter!");
-
- vconf_get_int(VCONFKEY_PM_STATE, &status);
-
- if(status == VCONFKEY_PM_STATE_LCDOFF)
- {
- if (timer != NULL) {
- ecore_timer_del(timer);
- timer = NULL;
- }
- }
-}
-
-static int wake_up_cb(void *data)
-{
- if(updated_while_lcd_off==0&&active_sync[0].obj_exist==EINA_FALSE)
- {
- DBG("ICON WAS NOT UPDATED");
- return OK;
- }
-
- indicator_active_sync_change_cb(NULL, data);
- return OK;
-}
-
-static int register_active_sync_module(void *data)
-{
- int ret = 0;
-
- retif(data == NULL, FAIL, "Invalid parameter!");
-
- set_app_state(data);
-
- return ret;
-}
-
-static int unregister_active_sync_module(void)
-{
- int ret = 0;
-
- return OK;
-}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
#include <minicontrol-monitor.h>
+#include <bluetooth.h>
+//#include <bluetooth_extention.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
+#include "util.h"
+#include "log.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_1
+#define ICON_PRIORITY INDICATOR_PRIORITY_MINICTRL3
#define MODULE_NAME "call"
#define MINICONTROL_VOICE_NAME "[voicecall-quickpanel]"
#define MINICONTROL_VIDEO_NAME "[videocall-quickpanel]"
static int register_call_module(void *data);
static int unregister_call_module(void);
-static int mctrl_monitor_cb(int action, const char *name, void *data);
+static void show_call_icon( void *data);
+
+enum {
+ CALL_UI_STATUS_NONE = 0,
+ CALL_UI_STATUS_INCOM,
+ CALL_UI_STATUS_OUTGOING,
+ CALL_UI_STATUS_ACTIVE,
+ CALL_UI_STATUS_HOLD,
+ CALL_UI_STATUS_END,
+};
-Indicator_Icon_Object call[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+icon_s call = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_TRUE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
+ .area = INDICATOR_ICON_AREA_MINICTRL,
.init = register_call_module,
.fini = unregister_call_module,
- .minictrl_control = mctrl_monitor_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_TRUE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_call_module,
- .fini = unregister_call_module,
- .minictrl_control = mctrl_monitor_cb
-}
+ .minictrl_control = NULL //mctrl_monitor_cb
};
+static int bt_state = 0;
+
static const char *icon_path[] = {
"Call/B03_Call_Duringcall.png",
+ "Call/B03_Call_bluetooth.png",
NULL
};
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- call[i].ad = data;
- }
+ call.ad = data;
}
static void show_image_icon(void *data)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- call[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&call[i]);
+ if (bt_state == 1) {
+ call.img_obj.data = icon_path[1];
+ } else {
+ call.img_obj.data = icon_path[0];
}
+ icon_show(&call);
}
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&call[i]);
- }
+ icon_hide(&call);
}
static void icon_animation_set(enum indicator_icon_ani type)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_animation_set(&call[i], type);
- }
+ icon_ani_set(&call, type);
+}
+
+static void __bt_ag_sco_state_changed_cb(int result, bool opened, void *user_data)
+{
+ int status = 0;
+
+ if (opened) bt_state=1;
+ else bt_state=0;
+
+ vconf_get_int(VCONFKEY_CALL_STATE, &status);
+
+ if (status != VCONFKEY_CALL_OFF) show_call_icon(user_data);
+}
+
+static void register_bt_state( void *data)
+{
+ int error = -1;
+
+ error = bt_initialize();
+ if (error != BT_ERROR_NONE) _E("bt_initialize return [%d]", error);
+
+ error = bt_audio_initialize();
+ if (error != BT_ERROR_NONE) _E("bt_audio_initialize return [%d]", error);
+
+ error = bt_ag_set_sco_state_changed_cb(__bt_ag_sco_state_changed_cb, data); // callback µî·Ï
+ if (error != BT_ERROR_NONE) _E("bt_ag_set_sco_state_changed_cb return [%d]", error);
+
+}
+
+static void unregister_bt_state( void )
+{
+ int error = -1;
+
+ error = bt_ag_unset_sco_state_changed_cb();
+ if (error != BT_ERROR_NONE) _E("bt_ag_unset_sco_state_changed_cb return [%d]", error);
+
+ error = bt_audio_deinitialize();
+ if (error != BT_ERROR_NONE) _E("bt_audio_deinitialize return [%d]", error);
+
+ error = bt_deinitialize();
+ if (error != BT_ERROR_NONE) _E("bt_audio_deinitialize return [%d]", error);
}
static void show_call_icon( void *data)
int status = 0;
int ret = 0;
- retif(data == NULL, , "Invalid parameter!");
+ ret_if(!data);
ret = vconf_get_int(VCONFKEY_CALL_STATE, &status);
- if (ret == FAIL) {
- ERR("Failed to get VCONFKEY_CALL_STATE!");
+ if (ret != OK) {
+ _E("Failed to get VCONFKEY_CALL_STATE!");
return;
}
- INFO("Call state = %d", status);
switch (status) {
case VCONFKEY_CALL_VOICE_CONNECTING:
case VCONFKEY_CALL_VIDEO_CONNECTING:
icon_animation_set(ICON_ANI_NONE);
break;
case VCONFKEY_CALL_OFF:
- INFO("Call off");
hide_image_icon();
break;
default:
- ERR("Invalid value %d", status);
+ _E("Invalid value %d", status);
break;
}
}
{
int status = 0;
int ret = 0;
+ int error = 0;
+ bool bt_opened = 0;
- retif(data == NULL, , "Invalid parameter!");
+ ret_if(!data);
ret = vconf_get_int(VCONFKEY_CALL_STATE, &status);
- if (ret == FAIL) {
- ERR("Failed to get VCONFKEY_CALL_STATE!");
+ if (ret != OK) {
+ _E("Failed to get VCONFKEY_CALL_STATE!");
return;
}
+
+ error = bt_ag_is_sco_opened(&bt_opened); // ÇöÀç SCO status checkÇÔ¼ö.
+ if (error != BT_ERROR_NONE) _E("bt_ag_is_sco_opened return [%d]", error);
+
+ if (bt_opened == 1) bt_state=1;
+ else bt_state=0;
+
switch (status) {
case VCONFKEY_CALL_VOICE_CONNECTING:
case VCONFKEY_CALL_VIDEO_CONNECTING:
break;
case VCONFKEY_CALL_VOICE_ACTIVE:
case VCONFKEY_CALL_VIDEO_ACTIVE:
- hide_image_icon();
+ show_image_icon(data);
+ icon_animation_set(ICON_ANI_NONE);
break;
case VCONFKEY_CALL_OFF:
- INFO("Call off");
hide_image_icon();
break;
default:
- ERR("Invalid value %d", status);
- break;
- }
-
-}
-
-static int mctrl_monitor_cb(int action, const char *name, void *data)
-{
- int ret = 0;
- int status = 0;
-
- retif(!data, FAIL, "data is NULL");
- retif(!name, FAIL, "name is NULL");
-
- if(strncmp(name,MINICONTROL_VOICE_NAME,strlen(MINICONTROL_VOICE_NAME))!=0
- &&strncmp(name,MINICONTROL_VIDEO_NAME,strlen(MINICONTROL_VIDEO_NAME))!=0)
- {
- ERR("_mctrl_monitor_cb: no call%s",name);
- return FAIL;
- }
-
- DBG("_mctrl_monitor_cb:%s %d",name,action);
-
- switch (action) {
- case MINICONTROL_ACTION_START:
- show_call_icon(data);
- break;
- case MINICONTROL_ACTION_STOP:
- ret = vconf_get_int(VCONFKEY_CALL_STATE, &status);
- if (ret == FAIL) {
- ERR("Failed to get VCONFKEY_CALL_STATE!");
- return FAIL;
- }
- INFO("Call state = %d", status);
- switch (status) {
- case VCONFKEY_CALL_VOICE_CONNECTING:
- case VCONFKEY_CALL_VIDEO_CONNECTING:
- break;
- case VCONFKEY_CALL_VOICE_ACTIVE:
- case VCONFKEY_CALL_VIDEO_ACTIVE:
- case VCONFKEY_CALL_OFF:
- INFO("Call off");
- icon_animation_set(ICON_ANI_NONE);
- hide_image_icon();
- break;
- default:
- ERR("Invalid value %d", status);
- break;
- }
- break;
- default:
+ _E("Invalid value %d", status);
break;
}
- return OK;
}
static int register_call_module(void *data)
{
int ret = 0;
- retif(data == NULL, FAIL, "Invalid parameter!");
+ retv_if(!data, 0);
set_app_state(data);
ret = vconf_notify_key_changed(VCONFKEY_CALL_STATE, indicator_call_change_cb, data);
+ register_bt_state(data);
+ if (ret != OK) _E("Failed to register VCONFKEY_CALL_STATE callback!");
- if (ret != OK)
- ERR("Failed to register callback!");
-
- return OK;
+ return ret;
}
static int unregister_call_module(void)
int ret = 0;
ret = vconf_ignore_key_changed(VCONFKEY_CALL_STATE, indicator_call_change_cb);
+ unregister_bt_state();
+ if (ret != OK) _E("Failed to register VCONFKEY_CALL_STATE callback!");
- if (ret != OK)
- ERR("Failed to register callback!");
-
- return OK;
+ return ret;
}
+/* End of file */
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <tapi_common.h>
+#include <TelNetwork.h>
+#include <TelSim.h>
+#include <ITapiSim.h>
+#include <TelCall.h>
+#include <ITapiCall.h>
#include <stdio.h>
#include <stdlib.h>
#include <vconf.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_5
+#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_2
#define MODULE_NAME "call_divert"
+#define MODULE_NAME_SIM2 "call_divert2"
+
+#define TAPI_HANDLE_MAX 2
static int register_call_divert_module(void *data);
static int unregister_call_divert_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
-Indicator_Icon_Object call_divert[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+
+icon_s call_divert = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.init = register_call_divert_module,
.fini = unregister_call_divert_module,
.area = INDICATOR_ICON_AREA_SYSTEM,
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
+};
+
+icon_s call_divert2 = {
.type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
+ .name = MODULE_NAME_SIM2,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .init = register_call_divert_module,
- .fini = unregister_call_divert_module,
.area = INDICATOR_ICON_AREA_SYSTEM,
-}
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
+};
+
+/*FIXME*/
+enum {
+ SIM_ICON_SIM1 = 0,
+ SIM_ICON_SIM2,
+ SIM_ICON_CALL,
+ SIM_ICON_SMS,
+ SIM_ICON_MMS,
+ SIM_ICON_INTERNET,
+ SIM_ICON_HOME,
+ SIM_ICON_OFFICE,
+ SIM_ICON_HEART,
+ SIM_ICON_MAX
+};
+static const char *icon_path[SIM_ICON_MAX] = {
+ [SIM_ICON_SIM1] = "Processing/B03_Call_divert_Sim_1.png",
+ [SIM_ICON_SIM2] = "Processing/B03_Call_divert_Sim_2.png",
+ [SIM_ICON_CALL] = "Processing/B03_Call_divert_Sim_phone.png",
+ [SIM_ICON_SMS] = "Processing/B03_Call_divert_Sim_SMS.png",
+ [SIM_ICON_MMS] = "Processing/B03_Call_divert_Sim_MMS.png",
+ [SIM_ICON_INTERNET] = "Processing/B03_Call_divert_Sim_global.png",
+ [SIM_ICON_HOME] = "Processing/B03_Call_divert_Sim_home.png",
+ [SIM_ICON_OFFICE] = "Processing/B03_Call_divert_Sim_office.png",
+ [SIM_ICON_HEART] = "Processing/B03_Call_divert_Sim_heart.png",
};
-static const char *icon_path[] = {
- "Processing/B03_Processing_calldivert.png",
- NULL
+enum {
+ SIM_1 = 1,
+ SIM_2
};
+
+
static void set_app_state(void* data)
{
- int i = 0;
+ call_divert.ad = data;
+ call_divert2.ad = data;
+}
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- call_divert[i].ad = data;
- }
+
+
+static void show_image_icon(void *data, int icon)
+{
+ call_divert.img_obj.data = icon_path[icon];
+ icon_show(&call_divert);
+}
+
+
+
+static void hide_image_icon(void)
+{
+ icon_hide(&call_divert);
+}
+
+
+
+static void show_sim2_image_icon(void *data, int icon)
+{
+ call_divert2.img_obj.data = icon_path[icon];
+ icon_show(&call_divert2);
}
-static void show_image_icon(void *data)
+
+
+static void hide_sim2_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ icon_hide(&call_divert2);
+}
+
+
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+ char *tmp = NULL;
+ char buf[256] = {0,};
+ int status = 0;
+
+ switch (status)
{
- call_divert[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&call_divert[i]);
+ case VCONFKEY_TELEPHONY_CALL_FORWARD_ON:
+ snprintf(buf, sizeof(buf), "%s, %s, %s",_("IDS_CST_BODY_CALL_FORWARDING"),_("IDS_IDLE_BODY_ICON"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ break;
+ default:
+ break;
}
+
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
}
+#endif
-static void hide_image_icon(void)
+static int _get_sim_icon(int sim_number)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ int status = 0;
+// int ret = 0;
+
+ if(sim_number == SIM_1)
{
- indicator_util_icon_hide(&call_divert[i]);
+ /* ret = vconf_get_int(VCONFKEY_SETAPPL_SIM1_ICON, &status);
+ if (ret == OK)
+ {
+ LOGD("Sim 1 icon: %d", status);
+ }*/
}
+ else
+ {
+ /* ret = vconf_get_int(VCONFKEY_SETAPPL_SIM2_ICON, &status);
+ if (ret == OK)
+ {
+ LOGD("Sim 2 icon: %d", status);
+ }*/
+ }
+
+ return status;
}
-static void indicator_call_divert_change_cb(keynode_t *node, void *data)
+static void on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
{
+ DBG("on_noti");
int status = 0;
- int ret;
+ int ret = 0;
+ int ret_for_sim1 = 0;
+ int ret_for_sim2 = 0;
+ int icon = 0;
+ retif(user_data == NULL, , "invalid parameter!!");
- retif(data == NULL, , "Invalid parameter!");
-
- ret = vconf_get_int(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE, &status);
- if (ret == FAIL) {
- ERR("Failed to get VCONFKEY_TELEPHONY_CALL_FORWARD_STATE!");
+ ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &status);
+ if (ret == OK && status == TRUE) {
+ DBG("Flight Mode");
+ hide_sim2_image_icon();
+ hide_image_icon();
return;
}
- if (status == VCONFKEY_TELEPHONY_CALL_FORWARD_ON) {
- INFO("Call diverting is set!");
- show_image_icon(data);
- } else {
- INFO("Call diverting is unset!");
+ if(ret_for_sim1 == VCONFKEY_TELEPHONY_CALL_FORWARD_ON)
+ {
+ DBG("Show call_farward 1 icon.");
+ icon = _get_sim_icon(SIM_1);
+ show_image_icon(data, icon);
+ }
+ else // VCONFKEY_TELEPHONY_CALL_FORWARD_OFF
+ {
+ DBG("Hide call_farward 1 icon.");
hide_image_icon();
}
+
+ if(ret_for_sim2 == VCONFKEY_TELEPHONY_CALL_FORWARD_ON)
+ {
+ DBG("Show call_farward 2 icon.");
+ icon = _get_sim_icon(SIM_2);
+ show_sim2_image_icon(data, icon);
+ }
+ else // VCONFKEY_TELEPHONY_CALL_FORWARD_OFF
+ {
+ DBG("Hide call_farward 2 icon.");
+ hide_sim2_image_icon();
+ }
}
+void call_forward_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data)
+{
+ DBG("");
+ on_noti(NULL, NULL, NULL, user_data);
+
+}
+
+/* Initialize TAPI */
+static void __init_tel(void *data)
+{
+ on_noti(NULL, NULL, NULL, data);
+}
+
+/* De-initialize TAPI */
+static void __deinit_tel()
+{
+ DBG("__deinit_tel");
+}
+
+static void tel_ready_cb(keynode_t *key, void *data)
+{
+ gboolean status = FALSE;
+
+ status = vconf_keynode_get_bool(key);
+ if (status == TRUE) { /* Telephony State - READY */
+ __init_tel(data);
+ }
+ else { /* Telephony State – NOT READY */
+ /* De-initialization is optional here (ONLY if required) */
+ __deinit_tel();
+ }
+}
+
+static void _flight_mode(keynode_t *key, void *data)
+{
+ on_noti(NULL, NULL, NULL, data);
+}
+#if 0
+static void _sim_icon_update(keynode_t *key, void *data)
+{
+ on_noti(NULL, NULL, NULL, data);
+}
+#endif
static int register_call_divert_module(void *data)
{
- int ret;
+ int ret = 0;
retif(data == NULL, FAIL, "Invalid parameter!");
+ gboolean state = FALSE;
+
set_app_state(data);
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode, data);
- ret = vconf_notify_key_changed(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE,
- indicator_call_divert_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback!");
+ vconf_get_bool(VCONFKEY_TELEPHONY_READY, &state);
- indicator_call_divert_change_cb(NULL, data);
+ if(state)
+ {
+ DBG("Telephony ready");
+ __init_tel(data);
+ }
+ else
+ {
+ DBG("Telephony not ready");
+ vconf_notify_key_changed(VCONFKEY_TELEPHONY_READY, tel_ready_cb, data);
+ }
return ret;
}
static int unregister_call_divert_module(void)
{
- int ret;
+ int ret = 0;
- ret = vconf_ignore_key_changed(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE,
- indicator_call_divert_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ __deinit_tel();
- return OK;
+ vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, _flight_mode);
+ //vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM1_ICON, _sim_icon_update);
+ //vconf_ignore_key_changed(VCONFKEY_SETAPPL_SIM2_ICON, _sim_icon_update);
+
+ return ret;
}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 __INDICATOR_CALL_DIVERT_H__
+#define __INDICATOR_CALL_DIVERT_H__
+
+extern void call_forward_on_noti(TapiHandle *handle_obj, const char *noti_id, void *data, void *user_data);
+
+#endif
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_1
+#define MODULE_NAME "downloading"
+#define TIMER_INTERVAL 0.3
+#define ICON_NUM 7
+
+static int register_downloading_module(void *data);
+static int unregister_downloading_module(void);
+static int wake_up_cb(void *data);
+
+icon_s downloading = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_NOTI,
+ .init = register_downloading_module,
+ .fini = unregister_downloading_module,
+ .wake_up = wake_up_cb
+};
+
+static const char *icon_path[] = {
+ "Processing/B03_Processing_download_ani_00.png",
+ "Processing/B03_Processing_download_ani_01.png",
+ "Processing/B03_Processing_download_ani_02.png",
+ "Processing/B03_Processing_download_ani_03.png",
+ "Processing/B03_Processing_download_ani_04.png",
+ "Processing/B03_Processing_download_ani_05.png",
+ "Processing/B03_Processing_download_ani_06.png",
+ NULL
+};
+
+static Ecore_Timer *timer;
+static int icon_index = 0;
+static int updated_while_lcd_off = 0;
+
+static void set_app_state(void* data)
+{
+ downloading.ad = data;
+}
+
+static void show_image_icon(void* data, int index)
+{
+ downloading.img_obj.data = icon_path[index];
+ icon_show(&downloading);
+}
+
+static void hide_image_icon(void)
+{
+ icon_hide(&downloading);
+}
+
+static Eina_Bool show_downloading_icon_cb(void* data)
+{
+
+ show_image_icon(data,icon_index);
+ icon_index = (++icon_index % ICON_NUM) ? icon_index : 0;
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static void show_downloading_icon(void* data)
+{
+ if(timer==NULL)
+ {
+ timer = ecore_timer_add(TIMER_INTERVAL, show_downloading_icon_cb, data);
+ }
+ else
+ {
+ ERR("show_downloading_icon!, timer");
+ }
+}
+
+static void hide_downloading_icon(void)
+{
+ if (timer != NULL) {
+ ecore_timer_del(timer);
+ timer = NULL;
+ icon_index = 0;
+ }
+
+ hide_image_icon();
+}
+
+
+static void indicator_downloading_change_cb(keynode_t *node, void *data)
+{
+ int status = 0;
+ int result = 0;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+ if(icon_get_update_flag()==0)
+ {
+ updated_while_lcd_off = 1;
+ return;
+ }
+ updated_while_lcd_off = 0;
+
+/* if (vconf_get_int(VCONFKEY_WIFI_DIRECT_RECEIVING_STATE, &status) == 0)
+ {
+ result = result | status;
+ } else {
+ ERR("Error getting VCONFKEY_WIFI_DIRECT_RECEIVING_STATE value");
+ }*/
+
+ if (result == 1) {
+ show_downloading_icon(data);
+
+ } else {
+ hide_downloading_icon();
+ }
+}
+
+static void indicator_downloading_pm_state_change_cb(keynode_t *node, void *data)
+{
+ int status = 0;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+ if (vconf_get_int(VCONFKEY_PM_STATE, &status) < 0)
+ {
+ ERR("Error getting VCONFKEY_PM_STATE value");
+
+ if (timer != NULL)
+ {
+ ecore_timer_del(timer);
+ timer = NULL;
+ }
+
+ return;
+ }
+
+ if(status == VCONFKEY_PM_STATE_LCDOFF)
+ {
+ if (timer != NULL) {
+ ecore_timer_del(timer);
+ timer = NULL;
+ }
+ }
+}
+
+static int wake_up_cb(void *data)
+{
+ if(updated_while_lcd_off == 0 && downloading.obj_exist == EINA_FALSE)
+ {
+ return OK;
+ }
+
+ indicator_downloading_change_cb(NULL, data);
+ return OK;
+}
+
+static int register_downloading_module(void *data)
+{
+ int ret = 0;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+// ret = ret | vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_RECEIVING_STATE, indicator_downloading_change_cb, data);
+
+ ret = ret | vconf_notify_key_changed(VCONFKEY_PM_STATE,
+ indicator_downloading_pm_state_change_cb, data);
+
+ indicator_downloading_change_cb(NULL, data);
+
+ return ret;
+}
+
+static int unregister_downloading_module(void)
+{
+ int ret = 0;
+
+// ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_RECEIVING_STATE, indicator_downloading_change_cb);
+
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+ indicator_downloading_pm_state_change_cb);
+
+ return ret;
+}
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <stdio.h>
-#include <stdlib.h>
-#include <vconf.h>
-#include <Ecore_X.h>
-#include "common.h"
-#include "indicator.h"
-#include "indicator_ui.h"
-#include "modules.h"
-#include "indicator_icon_util.h"
-
-#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
-#define MODULE_NAME "sos"
-
-static int register_sos_module(void *data);
-static int unregister_sos_module(void);
-static int wake_up_cb(void *data);
-
-
-Indicator_Icon_Object sos[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_TRUE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_sos_module,
- .fini = unregister_sos_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_TRUE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_sos_module,
- .fini = unregister_sos_module,
- .wake_up = wake_up_cb
-}
-};
-
-static const char *icon_path[] = {
- "Call/B03_Call_SOSmessge_active.png",
- NULL
-};
-static int updated_while_lcd_off = 0;
-
-static void set_app_state(void* data)
-{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- sos[i].ad = data;
- }
-}
-
-static void show_image_icon(void *data)
-{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- sos[i].img_obj.data = icon_path[0];
- indicator_util_icon_show(&sos[i]);
- }
-}
-
-static void hide_image_icon(void)
-{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&sos[i]);
- }
-}
-
-static void icon_animation_set(enum indicator_icon_ani type)
-{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_animation_set(&sos[i],type);
- }
-}
-
-static void indicator_sos_pm_state_change_cb(keynode_t *node, void *data)
-{
- int status = 0;
- int ret = 0;
- retif(data == NULL, , "Invalid parameter!");
-
- vconf_get_int(VCONFKEY_PM_STATE, &status);
-
- if(status == VCONFKEY_PM_STATE_LCDOFF)
- {
- int sos_status = 0;
- ret = vconf_get_int(VCONFKEY_MESSAGE_SOS_STATE, &sos_status);
- if (ret < 0)
- ERR("fail to get [%s]", VCONFKEY_MESSAGE_SOS_STATE);
-
- INFO("SOS STATUS: %d", sos_status);
- switch (sos_status) {
- case VCONFKEY_MESSAGE_SOS_STANDBY:
- icon_animation_set(ICON_ANI_NONE);
- break;
- default:
- break;
- }
- }
-}
-
-static void indicator_sos_change_cb(keynode_t *node, void *data)
-{
- int send_option = 0;
- int sos_state = VCONFKEY_MESSAGE_SOS_IDLE;
- int ret;
-
- retif(data == NULL, , "Invalid parameter!");
-
- if(indicator_util_get_update_flag()==0)
- {
- updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
- return;
- }
- updated_while_lcd_off = 0;
-
- ret = vconf_get_bool(VCONFKEY_MESSAGE_SOS_SEND_OPTION, &send_option);
- if (ret == FAIL)
- ERR("Failed to get VCONFKEY_MESSAGE_SOS_SEND_OPTION!");
-
- INFO("sos send option = %d", send_option);
-
- if (!send_option) {
- hide_image_icon();
- return;
- }
-
- show_image_icon(data);
-
- ret = vconf_get_int(VCONFKEY_MESSAGE_SOS_STATE, &sos_state);
- if (ret == FAIL)
- ERR("Failed to get VCONFKEY_MESSAGE_SOS_SEND_OPTION!");
-
- if (sos_state == VCONFKEY_MESSAGE_SOS_STANDBY)
- icon_animation_set(ICON_ANI_BLINK);
- else
- icon_animation_set(ICON_ANI_NONE);
-}
-static int wake_up_cb(void *data)
-{
- if(updated_while_lcd_off==0&&sos[0].obj_exist==EINA_FALSE)
- {
- DBG("ICON WAS NOT UPDATED");
- return OK;
- }
-
- indicator_sos_change_cb(NULL, data);
- return OK;
-}
-
-static int register_sos_module(void *data)
-{
- int ret;
-
- retif(data == NULL, FAIL, "Invalid parameter!");
-
- set_app_state(data);
-
- ret = vconf_notify_key_changed(VCONFKEY_MESSAGE_SOS_SEND_OPTION,
- indicator_sos_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback! [%s]",
- VCONFKEY_MESSAGE_SOS_SEND_OPTION);
-
- ret = vconf_notify_key_changed(VCONFKEY_MESSAGE_SOS_STATE,
- indicator_sos_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback! [%s]",
- VCONFKEY_MESSAGE_SOS_STATE);
-
- ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
- indicator_sos_pm_state_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback! : VCONFKEY_PM_STATE");
-
- indicator_sos_change_cb(NULL, data);
-
- return ret;
-}
-
-static int unregister_sos_module(void)
-{
- int ret;
-
- ret = vconf_ignore_key_changed(VCONFKEY_MESSAGE_SOS_SEND_OPTION,
- indicator_sos_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback! [%s]",
- VCONFKEY_MESSAGE_SOS_SEND_OPTION);
-
- ret = vconf_ignore_key_changed(VCONFKEY_MESSAGE_SOS_STATE,
- indicator_sos_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback! [%s]",
- VCONFKEY_MESSAGE_SOS_STATE);
-
- ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
- indicator_sos_pm_state_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
-
- return OK;
-}
-
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+//#include <Ecore_X.h>
+#include <wifi.h>
+
+#include "common.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+#include "util.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED8
+#define MODULE_NAME "transfer"
+#define TIMER_INTERVAL 0.03
+
+static int register_transfer_module(void *data);
+static int unregister_transfer_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
+
+static int transfer_type = -1;
+
+static const char *icon_path[TRANSFER_MAX] = {
+ [TRANSFER_NONE] = "Connection/B03_conection_not_UPdownload.png",
+ [TRANSFER_UP] = "Connection/B03_connection_UPload.png",
+ [TRANSFER_DOWN] = "Connection/B03_connection_download.png",
+ [TRANSFER_UPDOWN] = "Connection/B03_conection_UPdownload.png"
+};
+
+icon_s transfer = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_FIXED,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .init = register_transfer_module,
+ .fini = unregister_transfer_module,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb,
+#endif
+};
+
+static int prevIndex = -1;
+
+static void set_app_state(void* data)
+{
+ transfer.ad = data;
+}
+
+static void hide_image_icon(void)
+{
+ icon_hide(&transfer);
+
+ prevIndex = -1;
+ transfer_type = -1;
+}
+
+static void show_image_icon(void *data, int index)
+{
+ if(prevIndex == index)
+ {
+ return;
+ }
+
+ if(index == -1) {
+ hide_image_icon();
+ } else {
+ transfer.img_obj.data = icon_path[index];
+ icon_show(&transfer);
+
+ util_signal_emit(transfer.ad,"indicator.connection.show","indicator.prog");
+ }
+
+ prevIndex = index;
+
+}
+
+void show_transfer_icon(void *data,int index,int type)
+{
+ transfer_type = type;
+ show_image_icon(data,index);
+
+}
+
+void hide_transfer_icon(int type)
+{
+ if(transfer_type!=-1 && transfer_type!=type)
+ {
+ return;
+ }
+
+ hide_image_icon();
+ util_signal_emit(transfer.ad,"indicator.connection.hide","indicator.prog");
+ transfer_type = -1;
+}
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+ char *tmp = NULL;
+ char buf[256] = {0,};
+ int svc_type = 0;
+ int status = 0;
+
+ wifi_get_connection_state(&status);
+
+ if (status == WIFI_CONNECTION_STATE_CONNECTED) {
+ snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_WI_FI"),_("Data network"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ } else {
+ vconf_get_int(VCONFKEY_TELEPHONY_SVCTYPE, &svc_type);
+
+ switch(svc_type)
+ {
+ case VCONFKEY_TELEPHONY_SVCTYPE_3G:
+ snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_3G"),_("Data network"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ break;
+ case VCONFKEY_TELEPHONY_SVCTYPE_LTE:
+ snprintf(buf, sizeof(buf), "%s, %s, %s", _("4G"),_("Data network"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ break;
+ default:
+ break;
+ }
+ }
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
+}
+#endif
+static int register_transfer_module(void *data)
+{
+ set_app_state(data);
+ return OK;
+}
+
+static int unregister_transfer_module(void)
+{
+ return OK;
+}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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 <stdio.h>
+#include <stdlib.h>
+#include <vconf.h>
+#include "common.h"
+#include "indicator.h"
+#include "main.h"
+#include "modules.h"
+#include "icon.h"
+
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_1
+#define MODULE_NAME "uploading"
+#define TIMER_INTERVAL 0.3
+#define ICON_NUM 7
+
+static int register_uploading_module(void *data);
+static int unregister_uploading_module(void);
+static int wake_up_cb(void *data);
+
+icon_s uploading = {
+ .type = INDICATOR_IMG_ICON,
+ .name = MODULE_NAME,
+ .priority = ICON_PRIORITY,
+ .always_top = EINA_FALSE,
+ .exist_in_view = EINA_FALSE,
+ .img_obj = {0,},
+ .obj_exist = EINA_FALSE,
+ .area = INDICATOR_ICON_AREA_NOTI,
+ .init = register_uploading_module,
+ .fini = unregister_uploading_module,
+ .wake_up = wake_up_cb
+};
+
+static const char *icon_path[] = {
+ "Processing/B03_Processing_upload_ani_00.png",
+ "Processing/B03_Processing_upload_ani_01.png",
+ "Processing/B03_Processing_upload_ani_02.png",
+ "Processing/B03_Processing_upload_ani_03.png",
+ "Processing/B03_Processing_upload_ani_04.png",
+ "Processing/B03_Processing_upload_ani_05.png",
+ "Processing/B03_Processing_upload_ani_06.png",
+ NULL
+};
+
+static Ecore_Timer *timer;
+static int icon_index = 0;
+static int updated_while_lcd_off = 0;
+
+static void set_app_state(void* data)
+{
+ uploading.ad = data;
+}
+
+static void show_image_icon(void* data, int index)
+{
+ uploading.img_obj.data = icon_path[index];
+ icon_show(&uploading);
+}
+
+static void hide_image_icon(void)
+{
+ icon_hide(&uploading);
+}
+
+static Eina_Bool show_uploading_icon_cb(void* data)
+{
+
+ show_image_icon(data,icon_index);
+ icon_index = (++icon_index % ICON_NUM) ? icon_index : 0;
+
+ return ECORE_CALLBACK_RENEW;
+}
+
+static void show_uploading_icon(void* data)
+{
+ if(timer==NULL)
+ {
+ timer = ecore_timer_add(TIMER_INTERVAL, show_uploading_icon_cb, data);
+ }
+ else
+ {
+ ERR("show_uploading_icon!, timer");
+ }
+}
+
+static void hide_uploading_icon(void)
+{
+ if (timer != NULL) {
+ ecore_timer_del(timer);
+ timer = NULL;
+ icon_index = 0;
+ }
+
+ hide_image_icon();
+}
+
+
+static void indicator_uploading_change_cb(keynode_t *node, void *data)
+{
+ int status = 0;
+ int result = 0;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+ if(icon_get_update_flag()==0)
+ {
+ updated_while_lcd_off = 1;
+ return;
+ }
+ updated_while_lcd_off = 0;
+
+/* if (vconf_get_int(VCONFKEY_WIFI_DIRECT_SENDING_STATE, &status) == 0)
+ {
+ result = result | status;
+ } else {
+ ERR("Failed to get VCONFKEY_WIFI_DIRECT_SENDING_STATE value");
+ }*/
+
+ if (result == 1) {
+ show_uploading_icon(data);
+
+ } else {
+ hide_uploading_icon();
+ }
+}
+
+static void indicator_uploading_pm_state_change_cb(keynode_t *node, void *data)
+{
+ int status = 0;
+
+ retif(data == NULL, , "Invalid parameter!");
+
+ vconf_get_int(VCONFKEY_PM_STATE, &status);
+
+ if(status == VCONFKEY_PM_STATE_LCDOFF)
+ {
+ if (timer != NULL) {
+ ecore_timer_del(timer);
+ timer = NULL;
+ }
+ }
+}
+
+static int wake_up_cb(void *data)
+{
+ if(updated_while_lcd_off == 0 && uploading.obj_exist == EINA_FALSE)
+ {
+ return OK;
+ }
+
+ indicator_uploading_change_cb(NULL, data);
+ return OK;
+}
+
+static int register_uploading_module(void *data)
+{
+ int ret = 0;
+
+ retif(data == NULL, FAIL, "Invalid parameter!");
+
+ set_app_state(data);
+
+// ret = ret | vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_SENDING_STATE, indicator_uploading_change_cb, data);
+
+ ret = ret | vconf_notify_key_changed(VCONFKEY_PM_STATE,
+ indicator_uploading_pm_state_change_cb, data);
+
+ indicator_uploading_change_cb(NULL, data);
+
+ return ret;
+}
+
+static int unregister_uploading_module(void)
+{
+ int ret = 0;
+
+// ret = ret | vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_SENDING_STATE, indicator_uploading_change_cb);
+
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+ indicator_uploading_pm_state_change_cb);
+
+ return OK;
+}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
+#include <bluetooth.h>
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_4
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED7
#define MODULE_NAME "bluetooth"
#define TIMER_INTERVAL 0.5
+Ecore_Timer *timer_bt = NULL;
+
static int register_bluetooth_module(void *data);
static int unregister_bluetooth_module(void);
static int wake_up_cb(void *data);
+static void show_image_icon(void *data, int index);
+static void hide_image_icon(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
-Indicator_Icon_Object bluetooth[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
- .init = register_bluetooth_module,
- .fini = unregister_bluetooth_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+
+icon_s bluetooth = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
+ .area = INDICATOR_ICON_AREA_FIXED,
.init = register_bluetooth_module,
.fini = unregister_bluetooth_module,
- .wake_up = wake_up_cb
-}
-
+ .wake_up = wake_up_cb,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
};
enum {
static const char *icon_path[LEVEL_MAX] = {
[LEVEL_BT_NOT_CONNECTED] =
- "Bluetooth, NFC, GPS/B03_BT_On&Notconnected.png",
- [LEVEL_BT_CONNECTED] = "Bluetooth, NFC, GPS/B03_BT_On&Connected.png",
+ "Bluetooth, NFC, GPS/B03_BT_On&Connected.png",
+ [LEVEL_BT_CONNECTED] = "Bluetooth, NFC, GPS/B03-4_BT_activated_on.png",
[LEVEL_BT_HEADSET] =
"Bluetooth, NFC, GPS/B03_BT_On&Connected&headset.png",
};
-static Ecore_Timer *timer;
-static Eina_Bool bt_transferring = EINA_FALSE;
static int updated_while_lcd_off = 0;
-
+static int prevIndex = -1;
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- bluetooth[i].ad = data;
- }
-}
-
-static void delete_timer(void)
-{
- if (timer != NULL) {
- ecore_timer_del(timer);
- timer = NULL;
- }
+ bluetooth.ad = data;
}
static void show_image_icon(void *data, int index)
{
- int i = 0;
-
if (index < LEVEL_MIN || index >= LEVEL_MAX)
index = LEVEL_MIN;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == index)
{
- bluetooth[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&bluetooth[i]);
+ return;
}
-}
+ bluetooth.img_obj.data = icon_path[index];
+ icon_show(&bluetooth);
-static void hide_image_icon(void)
-{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&bluetooth[i]);
- }
+ prevIndex = index;
+ util_signal_emit(bluetooth.ad,"indicator.bluetooth.show","indicator.prog");
}
-static Eina_Bool indicator_bluetooth_multidev_cb(void *data)
+static void hide_image_icon(void)
{
- static int i = 0;
-
- retif(data == NULL, ECORE_CALLBACK_CANCEL, "Invalid parameter!");
+ icon_hide(&bluetooth);
- show_image_icon(data, LEVEL_BT_CONNECTED + i);
- i = (++i % 2) ? i : 0;
-
- return ECORE_CALLBACK_RENEW;
+ prevIndex = -1;
+ util_signal_emit(bluetooth.ad,"indicator.bluetooth.hide","indicator.prog");
}
#define NO_DEVICE (0x00)
static void show_bluetooth_icon(void *data, int status)
{
- INFO("Bluetooth status = %d", status);
-
if (status == NO_DEVICE) {
show_image_icon(data, LEVEL_BT_NOT_CONNECTED);
return;
}
- if (status & DATA_TRANSFER) {
- if(bt_transferring != EINA_TRUE) {
- bt_transferring = EINA_TRUE;
- }
- return;
- }
-
- if ((status & HEADSET_CONNECTED) && (status & DEVICE_CONNECTED)) {
- INFO("BT_MULTI_DEVICE_CONNECTED");
- timer = ecore_timer_add(TIMER_INTERVAL,
- indicator_bluetooth_multidev_cb, data);
- return;
- }
if (status & HEADSET_CONNECTED) {
- INFO("BT_HEADSET_CONNECTED");
show_image_icon(data, LEVEL_BT_HEADSET);
} else if (status & DEVICE_CONNECTED) {
- INFO("BT_DEVICE_CONNECTED");
show_image_icon(data, LEVEL_BT_CONNECTED);
}
return;
}
+static void indicator_bluetooth_adapter_state_changed_cb(int result, bt_adapter_state_e adapter_state, void *user_data)
+{
+ DBG("BT STATUS: %d", adapter_state);
+ if (adapter_state != BT_ADAPTER_ENABLED) // If adapter_state is NULL. hide_image_icon().
+ {
+ DBG("BT is not enabled. So hide BT icon.");
+ hide_image_icon();
+ }
+}
+
static void indicator_bluetooth_change_cb(keynode_t *node, void *data)
{
- int status, dev;
- int ret;
+ DBG("indicator_bluetooth_change_cb");
+ int dev = 0;
+ int ret = 0;
int result = NO_DEVICE;
+ bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED;
retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
- {
+ if (icon_get_update_flag() == 0) {
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
- ret = vconf_get_int(VCONFKEY_BT_STATUS, &status);
- if (ret == OK) {
- INFO("BT STATUS: %d", status);
- if (!(status & VCONFKEY_BT_STATUS_TRANSFER)) {
- if (bt_transferring == EINA_TRUE) {
- bt_transferring = EINA_FALSE;
- }
- }
-
- if (status == VCONFKEY_BT_STATUS_OFF) {
- hide_image_icon();
- return;
- } else if (status & VCONFKEY_BT_STATUS_TRANSFER) {
- INFO("BT TRASFER!");
- result = (result | DATA_TRANSFER);
- show_bluetooth_icon(data, result);
- return;
- }
+ ret = bt_adapter_get_state(&adapter_state);
+ retif(ret != BT_ERROR_NONE, , "bt_adapter_get_state failed");
+ if (adapter_state != BT_ADAPTER_ENABLED) { // If adapter_state is NULL. hide_image_icon().
+ DBG("BT is not enabled. So don't need to update BT icon.");
+ return;
}
ret = vconf_get_int(VCONFKEY_BT_DEVICE, &dev);
if (ret == OK) {
- INFO("BT DEVICE: %d", dev);
+ DBG("Show BT ICON (BT DEVICE: %d)", dev);
if (dev == VCONFKEY_BT_DEVICE_NONE) {
show_bluetooth_icon(data, NO_DEVICE);
if ((dev & VCONFKEY_BT_DEVICE_HEADSET_CONNECTED) ||
(dev & VCONFKEY_BT_DEVICE_A2DP_HEADSET_CONNECTED)) {
result = (result | HEADSET_CONNECTED);
- INFO("BT_HEADSET_CONNECTED(%x)", result);
+ DBG("BT_HEADSET_CONNECTED(%x)", result);
}
- if (((dev & VCONFKEY_BT_DEVICE_SAP_CONNECTED)) ||
- (dev & VCONFKEY_BT_DEVICE_PBAP_CONNECTED)) {
+ if ((dev & VCONFKEY_BT_DEVICE_SAP_CONNECTED)
+ || (dev & VCONFKEY_BT_DEVICE_PBAP_CONNECTED)
+ || (dev & VCONFKEY_BT_DEVICE_HID_CONNECTED)
+ || (dev & VCONFKEY_BT_DEVICE_PAN_CONNECTED)) {
result = (result | DEVICE_CONNECTED);
- INFO("BT_DEVICE_CONNECTED(%x)", result);
+ DBG("BT_DEVICE_CONNECTED(%x)", result);
}
show_bluetooth_icon(data, result);
}
return;
}
-static void indicator_bluetooth_pm_state_change_cb(keynode_t *node, void *data)
-{
- int status = 0;
-
- retif(data == NULL, , "Invalid parameter!");
-
- vconf_get_int(VCONFKEY_PM_STATE, &status);
- if(status == VCONFKEY_PM_STATE_LCDOFF)
- {
- if (timer != NULL) {
- ecore_timer_del(timer);
- timer = NULL;
- }
- }
-}
static int wake_up_cb(void *data)
{
- if(updated_while_lcd_off==0&&bluetooth[0].obj_exist==EINA_FALSE)
- {
- DBG("ICON WAS NOT UPDATED");
+ if(updated_while_lcd_off == 0 && bluetooth.obj_exist == EINA_FALSE) {
return OK;
}
return OK;
}
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+ char *tmp = NULL;
+ char buf[256] = {0,};
+
+ switch(prevIndex)
+ {
+ case LEVEL_BT_NOT_CONNECTED:
+ snprintf(buf, sizeof(buf), "%s, %s", _("IDS_IDLE_BODY_BLUETOOTH_ON"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ break;
+ case LEVEL_BT_CONNECTED:
+ snprintf(buf, sizeof(buf), "%s, %s", _("Bluetooth On and Connected"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ break;
+ case LEVEL_BT_HEADSET:
+ snprintf(buf, sizeof(buf), "%s, %s", _("Bluetooth On and Connected headset"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ break;
+ }
+
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
+}
+#endif
+
static int register_bluetooth_module(void *data)
{
int r = 0, ret = -1;
+ bt_adapter_state_e adapter_state = BT_ADAPTER_DISABLED;
retif(data == NULL, FAIL, "Invalid parameter!");
set_app_state(data);
- ret = vconf_notify_key_changed(VCONFKEY_BT_STATUS,
- indicator_bluetooth_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = ret;
- }
+ // Register bluetooth adapter state call-back.
+ ret = bt_initialize();
+ if(ret != BT_ERROR_NONE) ERR("bt_initialize failed");
+ ret = bt_adapter_set_state_changed_cb(indicator_bluetooth_adapter_state_changed_cb, data);
+ if(ret != BT_ERROR_NONE) ERR("bt_adapter_set_state_changed_cb failed");
ret = vconf_notify_key_changed(VCONFKEY_BT_DEVICE,
- indicator_bluetooth_change_cb, data);
+ indicator_bluetooth_change_cb, data);
if (ret != OK) {
- ERR("Failed to register callback!");
r = r | ret;
}
- ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
- indicator_bluetooth_pm_state_change_cb, data);
- if (ret != OK) {
- ERR("Failed to register callback!");
- r = r | ret;
- }
+ ret = bt_adapter_get_state(&adapter_state);
+ retif(ret != BT_ERROR_NONE, -1, "bt_adapter_get_state failed");
indicator_bluetooth_change_cb(NULL, data);
+ indicator_bluetooth_adapter_state_changed_cb(0, adapter_state, data);
return r;
}
static int unregister_bluetooth_module(void)
{
- int ret;
+ int ret = 0;
- ret = vconf_ignore_key_changed(VCONFKEY_BT_STATUS,
- indicator_bluetooth_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ // Unregister bluetooth adapter state call-back.
+ ret = bt_adapter_unset_state_changed_cb();
+ if(ret != BT_ERROR_NONE) ERR("bt_adapter_unset_state_changed_cb failed");
+ ret = bt_deinitialize();
+ if(ret != BT_ERROR_NONE) ERR("bt_deinitialize failed");
- ret = vconf_ignore_key_changed(VCONFKEY_BT_DEVICE,
- indicator_bluetooth_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
- ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
- indicator_bluetooth_pm_state_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_BT_DEVICE,
+ indicator_bluetooth_change_cb);
-
- delete_timer();
-
- if (bt_transferring == EINA_TRUE) {
- bt_transferring = EINA_FALSE;
- }
-
- return OK;
+ return ret;
}
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
+#include <runtime_info.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "log.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
+#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_4
#define MODULE_NAME "gps"
#define TIMER_INTERVAL 0.3
static int register_gps_module(void *data);
static int unregister_gps_module(void);
-static int wake_up_cb(void *data);
+static int _wake_up_cb(void *data);
-Indicator_Icon_Object gps[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
- .init = register_gps_module,
- .fini = unregister_gps_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s gps = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_NOTI,
+ .area = INDICATOR_ICON_AREA_SYSTEM,
.init = register_gps_module,
.fini = unregister_gps_module,
- .wake_up = wake_up_cb
-}
+ .wake_up = _wake_up_cb
};
enum {
static const char *icon_path[LEVEL_MAX] = {
[LEVEL_GPS_ON] = "Bluetooth, NFC, GPS/B03_GPS_On.png",
- [LEVEL_GPS_SEARCHING] = "Bluetooth, NFC, GPS/B03_GPS_Searching.png",
+ [LEVEL_GPS_SEARCHING] = "Bluetooth, NFC, GPS/B03_GPS_On.png",
};
static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- gps[i].ad = data;
- }
+ gps.ad = data;
}
static void show_image_icon(void *data, int index)
{
- int i = 0;
-
if (index < LEVEL_MIN)
index = LEVEL_MIN;
else if (index >= LEVEL_MAX)
index = LEVEL_GPS_SEARCHING;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == index)
{
- gps[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&gps[i]);
+ return;
}
+
+ gps.img_obj.data = icon_path[index];
+ icon_show(&gps);
+
+ prevIndex = index;
}
static void hide_image_icon(void)
{
- int i = 0;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&gps[i]);
- }
+ icon_hide(&gps);
+
+ prevIndex = -1;
}
static void icon_animation_set(enum indicator_icon_ani type)
{
- int i = 0;
- for(i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_animation_set(&gps[i],type);
- }
+ icon_ani_set(&gps,type);
}
static int indicator_gps_state_get(void)
{
- int ret = 0;
int gps_status = 0;
int status = 0;
- ret = vconf_get_int(VCONFKEY_LOCATION_GPS_STATE, &gps_status);
- if (ret < 0)
- ERR("fail to get [%s]", VCONFKEY_LOCATION_GPS_STATE);
-
- INFO("GPS STATUS: %d", gps_status);
+ if (runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, &gps_status) < 0)
+ {
+ ERR("Error getting RUNTIME_INFO_KEY_GPS_STATUS value");
+ return 0;
+ }
if(gps_status == VCONFKEY_LOCATION_GPS_CONNECTED)
{
return status;
}
-static void indicator_gps_state_icon_set(int status, void *data)
+static void _gps_state_icon_set(int status, void *data)
{
- INFO("GPS STATUS: %d", status);
+ DBG("GPS STATUS: %d", status);
switch (status) {
case IND_POSITION_STATE_OFF:
return;
}
-static void indicator_gps_change_cb(keynode_t *node, void *data)
-{
- retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
- {
+void _gps_status_changed_cb(runtime_info_key_e key, void *data)
+{
+ ret_if(!data);
+
+ if (icon_get_update_flag() == 0) {
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
- indicator_gps_state_icon_set(indicator_gps_state_get(), data);
+ _gps_state_icon_set(indicator_gps_state_get(), data);
return;
}
+
+
static void indicator_gps_pm_state_change_cb(keynode_t *node, void *data)
{
int status = 0;
- int ret = 0;
retif(data == NULL, , "Invalid parameter!");
- vconf_get_int(VCONFKEY_PM_STATE, &status);
+ if (vconf_get_int(VCONFKEY_PM_STATE, &status) < 0)
+ {
+ ERR("Error getting VCONFKEY_PM_STATE value");
+ return;
+ }
if(status == VCONFKEY_PM_STATE_LCDOFF)
{
int gps_status = 0;
- ret = vconf_get_int(VCONFKEY_LOCATION_GPS_STATE, &gps_status);
- if (ret < 0)
- ERR("fail to get [%s]", VCONFKEY_LOCATION_GPS_STATE);
+ if (runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, &gps_status) < 0)
+ {
+ ERR("Error getting RUNTIME_INFO_KEY_GPS_STATUS value");
+ return;
+ }
- INFO("GPS STATUS: %d", gps_status);
switch (gps_status) {
case IND_POSITION_STATE_SEARCHING:
show_image_icon(data, LEVEL_GPS_SEARCHING);
}
}
-static int wake_up_cb(void *data)
+
+
+static int _wake_up_cb(void *data)
{
- if(updated_while_lcd_off==0 && gps[0].obj_exist==EINA_FALSE)
- {
- DBG("ICON WAS NOT UPDATED");
+ if (updated_while_lcd_off == 0 && gps.obj_exist == EINA_FALSE) {
+ return OK;
+ }
+
+ if (updated_while_lcd_off == 0 && gps.obj_exist == EINA_TRUE) {
+ int gps_status = 0;
+ runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, &gps_status);
+
+ switch (gps_status) {
+ case IND_POSITION_STATE_SEARCHING:
+ icon_animation_set(ICON_ANI_BLINK);
+ break;
+ case IND_POSITION_STATE_OFF:
+ case IND_POSITION_STATE_CONNECTED:
+ default:
+ break;
+ }
+
return OK;
}
- indicator_gps_change_cb(NULL, data);
+ _gps_status_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS, data);
return OK;
}
+
+
static int register_gps_module(void *data)
{
int ret;
set_app_state(data);
- ret = vconf_notify_key_changed(VCONFKEY_LOCATION_GPS_STATE,
- indicator_gps_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback! : VCONFKEY_LOCATION_GPS_STATE");
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS, _gps_status_changed_cb, data);
ret = vconf_notify_key_changed(VCONFKEY_PM_STATE,
- indicator_gps_pm_state_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback! : VCONFKEY_LOCATION_GPS_STATE");
+ indicator_gps_pm_state_change_cb, data);
- indicator_gps_state_icon_set(indicator_gps_state_get(), data);
+ _gps_state_icon_set(indicator_gps_state_get(), data);
return ret;
}
{
int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_LOCATION_GPS_STATE,
- indicator_gps_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS);
- ret = vconf_ignore_key_changed(VCONFKEY_PM_STATE,
- indicator_gps_pm_state_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_PM_STATE,
+ indicator_gps_pm_state_change_cb);
- return OK;
+ return ret;
}
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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.
+ *
+ */
+
+
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_4
+#define ICON_PRIORITY INDICATOR_PRIORITY_NOTI_2
#define MODULE_NAME "nfc"
static int register_nfc_module(void *data);
static int wake_up_cb(void *data);
-Indicator_Icon_Object nfc[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
- .init = register_nfc_module,
- .fini = unregister_nfc_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s nfc = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
+ .area = INDICATOR_ICON_AREA_NOTI,
.init = register_nfc_module,
.fini = unregister_nfc_module,
.wake_up = wake_up_cb
-}
};
enum {
[NFC_ON] = "Bluetooth, NFC, GPS/B03_NFC_On.png",
};
static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- nfc[i].ad = data;
- }
+ nfc.ad = data;
}
+
+
static void show_image_icon(void *data, int index)
{
- int i = 0;
-
if (index < NFC_ON || index >= NFC_NUM)
index = NFC_ON;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == index)
{
- nfc[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&nfc[i]);
+ DBG("same icon");
+ return;
}
+
+ nfc.img_obj.data = icon_path[index];
+ icon_show(&nfc);
+
+ prevIndex = index;
}
static void hide_image_icon(void)
{
- int i = 0;
+ icon_hide(&nfc);
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&nfc[i]);
- }
+ prevIndex = -1;
}
static void indicator_nfc_change_cb(keynode_t *node, void *data)
retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
+ if(util_is_orf()==0)
+ {
+ DBG("does not support in this bin");
+ return;
+ }
+
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
DBG("need to update %d",updated_while_lcd_off);
INFO("NFC STATUS: %d", status);
if (status == 1) {
+ /* Show NFC Icon */
show_image_icon(data, NFC_ON);
return;
}
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
set_app_state(data);
ret = vconf_notify_key_changed(VCONFKEY_NFC_STATE,
- indicator_nfc_change_cb, data);
+ indicator_nfc_change_cb, data);
if (ret != OK)
ERR("Failed to register callback!");
int ret;
ret = vconf_ignore_key_changed(VCONFKEY_NFC_STATE,
- indicator_nfc_change_cb);
+ indicator_nfc_change_cb);
if (ret != OK)
ERR("Failed to unregister callback!");
--- /dev/null
+/*
+ * Indicator
+ *
+ * Copyright (c) 2000 - 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.
+ *
+ */
+
+
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 <stdio.h>
#include <stdlib.h>
#include <vconf.h>
+#include <system_settings.h>
+
#include "common.h"
#include "indicator.h"
-#include "indicator_ui.h"
+#include "main.h"
#include "modules.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
+#include "log.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_1
+#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_6
#define MODULE_NAME "silent"
static int register_silent_module(void *data);
static int unregister_silent_module(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
-Indicator_Icon_Object silent[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
- .init = register_silent_module,
- .fini = unregister_silent_module
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+
+icon_s silent = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
.area = INDICATOR_ICON_AREA_SYSTEM,
.init = register_silent_module,
- .fini = unregister_silent_module
-}
+ .fini = unregister_silent_module,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
};
enum {
- PROFILE_SOUND_VIBRATION,
PROFILE_MUTE,
PROFILE_VIBRATION,
PROFILE_NUM,
};
static const char *icon_path[PROFILE_NUM] = {
- [PROFILE_SOUND_VIBRATION] = "Profile/B03_Profile_Sound&Vibration.png",
[PROFILE_MUTE] = "Profile/B03_Profile_Mute.png",
[PROFILE_VIBRATION] = "Profile/B03_Profile_Vibration.png",
};
+static int prevIndex = -1;
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- silent[i].ad = data;
- }
+ silent.ad = data;
}
static void show_image_icon(int index)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == index)
{
- silent[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&silent[i]);
+ return;
}
+
+ silent.img_obj.data = icon_path[index];
+ icon_show(&silent);
+
+ prevIndex = index;
}
static void hide_image_icon(void)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
+ if(prevIndex == -1)
{
- indicator_util_icon_hide(&silent[i]);
+ DBG("ALREADY HIDE");
+ return;
}
+
+ icon_hide(&silent);
+
+ prevIndex = -1;
}
-static void indicator_silent_change_cb(keynode_t *node, void *data)
+
+
+static void _silent_change_cb(keynode_t *node, void *data)
{
- int sound_status = 0;
+ bool silent_mode = 0;
int vib_status = 0;
int ret;
retif(data == NULL, , "Invalid parameter!");
- ret = vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound_status);
- ret =
- vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+// ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &silent_mode);
+ ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
if (ret == OK)
{
- INFO("CURRENT Sound Status: %d vib_status: %d", sound_status,
- vib_status);
+ DBG("CURRENT Sound Status: %d vib_status: %d", silent_mode, vib_status);
- if (sound_status == TRUE && vib_status == TRUE)
+ if(silent_mode == TRUE && vib_status==FALSE)
{
- show_image_icon(PROFILE_SOUND_VIBRATION);
+ /* Mute Mode */
+ show_image_icon(PROFILE_MUTE);
+ }
+ else if(silent_mode == FALSE && vib_status==TRUE)
+ {
+ /* Vibration Only Mode */
+ show_image_icon(PROFILE_VIBRATION);
+ }
+ else
+ {
+ hide_image_icon();
}
- else if(sound_status == FALSE && vib_status==FALSE)
+ }
+ else
+ {
+ ERR("Failed to get current profile!");
+ }
+
+ return;
+}
+
+
+
+static void _system_setting_silent_change_cb(system_settings_key_e key, void *user_data)
+{
+ bool silent_mode = 0;
+ int vib_status = 0;
+ int ret;
+
+// ret = system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &silent_mode);
+ ret = vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+
+ if (ret == OK)
+ {
+ DBG("CURRENT Sound Status: %d vib_status: %d", silent_mode, vib_status);
+
+ if(silent_mode == TRUE && vib_status==FALSE)
{
/* Mute Mode */
show_image_icon(PROFILE_MUTE);
}
- else if(sound_status == FALSE && vib_status==TRUE)
+ else if(silent_mode == FALSE && vib_status==TRUE)
{
/* Vibration Only Mode */
show_image_icon(PROFILE_VIBRATION);
return;
}
+
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
+{
+ char *tmp = NULL;
+ char buf[256] = {0,};
+ int slient_mode = 0;
+ int vib_status = 0;
+// system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, &slient_mode);
+ vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, &vib_status);
+
+ if(slient_mode == TRUE && vib_status==FALSE)
+ {
+ /* Mute Mode */
+ snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_MUTE"),_("Sound profile"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ }
+ else if(slient_mode == FALSE && vib_status==TRUE)
+ {
+ /* Vibration Only Mode */
+ snprintf(buf, sizeof(buf), "%s, %s, %s", _("IDS_IDLE_BODY_VIBRATE"),_("Sound profile"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ }
+ else
+ {
+ //do nothing;
+ }
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
+}
+#endif
+
+
+
static int register_silent_module(void *data)
{
int ret;
- retif(data == NULL, FAIL, "Invalid parameter!");
+ retv_if(!data, 0);
set_app_state(data);
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- indicator_silent_change_cb, data);
- if (ret != OK)
- ERR("Fail: register VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+// ret = system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, _system_setting_silent_change_cb, data);
+ ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, _silent_change_cb, data);
- ret = vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- indicator_silent_change_cb, data);
- if (ret != OK)
- ERR("Fail: register VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
-
- indicator_silent_change_cb(NULL, data);
+ _silent_change_cb(NULL, data);
return ret;
}
+
+
static int unregister_silent_module(void)
{
int ret;
- ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- indicator_silent_change_cb);
- if (ret != OK)
- ERR("Fail: ignore VCONFKEY_SETAPPL_SOUND_STATUS_BOOL");
+// ret = system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE);
+ ret = ret | vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL, _silent_change_cb);
- ret = vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- indicator_silent_change_cb);
- if (ret != OK)
- ERR("Fail: ignore VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL");
- return OK;
+ return ret;
}
+/* End of file */
/*
- * Copyright 2012 Samsung Electronics Co., Ltd
+ * Indicator
*
- * Licensed under the Flora License, Version 1.1 (the "License");
+ * Copyright (c) 2000 - 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://floralicense.org/license/
+ * 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 "common.h"
#include "indicator.h"
-#include "indicator_icon_util.h"
+#include "icon.h"
#include "modules.h"
-#include "indicator_ui.h"
+#include "main.h"
+#include "util.h"
-#define ICON_PRIORITY INDICATOR_PRIORITY_SYSTEM_4
+#define ICON_PRIORITY INDICATOR_PRIORITY_FIXED8
#define MODULE_NAME "wifi_direct"
static int register_wifi_direct_module(void *data);
static int unregister_wifi_direct_module(void);
static int wake_up_cb(void *data);
+static void show_icon(void *data, int index);
+static void hide_icon(void);
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj);
+#endif
-Indicator_Icon_Object wifi_direct[INDICATOR_WIN_MAX] = {
-{
- .win_type = INDICATOR_WIN_PORT,
- .type = INDICATOR_IMG_ICON,
- .name = MODULE_NAME,
- .priority = ICON_PRIORITY,
- .always_top = EINA_FALSE,
- .exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
- .img_obj = {0,},
- .obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
- .init = register_wifi_direct_module,
- .fini = unregister_wifi_direct_module,
- .wake_up = wake_up_cb
-},
-{
- .win_type = INDICATOR_WIN_LAND,
+icon_s wifi_direct = {
.type = INDICATOR_IMG_ICON,
.name = MODULE_NAME,
.priority = ICON_PRIORITY,
.always_top = EINA_FALSE,
.exist_in_view = EINA_FALSE,
- .txt_obj = {0,},
.img_obj = {0,},
.obj_exist = EINA_FALSE,
- .area = INDICATOR_ICON_AREA_SYSTEM,
+ .area = INDICATOR_ICON_AREA_FIXED,
.init = register_wifi_direct_module,
.fini = unregister_wifi_direct_module,
- .wake_up = wake_up_cb
-}
-
+ .wake_up = wake_up_cb,
+#ifdef _SUPPORT_SCREEN_READER
+ .tts_enable = EINA_TRUE,
+ .access_cb = access_info_cb
+#endif
};
-static Eina_Bool wifi_direct_transferring = EINA_FALSE;
static int updated_while_lcd_off = 0;
+static int prevIndex = -1;
+Ecore_Timer *timer_wifi = NULL;
enum {
- WIFI_DIRECT_ACTIVATE = 0,
- WIFI_DIRECT_CONNECTED,
- WIFI_DIRECT_DISCOVERING,
- WIFI_DIRECT_GROUP_OWNER,
+ WIFI_DIRECT_CONNECTED = 0,
WIFI_DIRECT_MAX,
};
-#define WIFI_D_ICON_NOT_CONNECTED \
- "Bluetooth, NFC, GPS/B03_Wi-fi_direct On_not connected.png"
-
#define WIFI_D_ICON_CONNECTED \
- "Bluetooth, NFC, GPS/B03_Wi-fi_direct On_connected.png"
+ "Bluetooth, NFC, GPS/B03_Wi-fi_direct-On_connected.png"
static const char *icon_path[WIFI_DIRECT_MAX] = {
- [WIFI_DIRECT_ACTIVATE] = WIFI_D_ICON_NOT_CONNECTED,
- [WIFI_DIRECT_CONNECTED] = WIFI_D_ICON_CONNECTED,
- [WIFI_DIRECT_DISCOVERING] = NULL,
- [WIFI_DIRECT_GROUP_OWNER] = WIFI_D_ICON_CONNECTED,
+ [WIFI_DIRECT_CONNECTED] = WIFI_D_ICON_CONNECTED
};
+
+
static void set_app_state(void* data)
{
- int i = 0;
-
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- wifi_direct[i].ad = data;
- }
+ wifi_direct.ad = data;
}
+
+
static void show_icon(void *data, int index)
{
- int i = 0;
-
- if (index < WIFI_DIRECT_ACTIVATE || index >= WIFI_DIRECT_MAX)
- index = WIFI_DIRECT_ACTIVATE;
+ if (index < WIFI_DIRECT_CONNECTED || index >= WIFI_DIRECT_MAX)
+ index = WIFI_DIRECT_CONNECTED;
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- wifi_direct[i].img_obj.data = icon_path[index];
- indicator_util_icon_show(&wifi_direct[i]);
+ if(prevIndex == index) {
+ return;
}
+
+ wifi_direct.img_obj.data = icon_path[index];
+ icon_show(&wifi_direct);
+
+ prevIndex = index;
+ util_signal_emit(wifi_direct.ad,"indicator.wifidirect.show","indicator.prog");
}
static void hide_icon(void)
{
- int i = 0;
+ icon_hide(&wifi_direct);
- for (i=0 ; i<INDICATOR_WIN_MAX ; i++)
- {
- indicator_util_icon_hide(&wifi_direct[i]);
- }
+ prevIndex = -1;
+ util_signal_emit(wifi_direct.ad,"indicator.wifidirect.hide","indicator.prog");
}
static void indicator_wifi_direct_change_cb(keynode_t *node, void *data)
retif(data == NULL, , "Invalid parameter!");
- if(indicator_util_get_update_flag()==0)
+ if(icon_get_update_flag()==0)
{
updated_while_lcd_off = 1;
- DBG("need to update %d",updated_while_lcd_off);
return;
}
updated_while_lcd_off = 0;
ret = vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &status);
if (ret == OK) {
- INFO("wifi_direct STATUS: %d", status);
+ DBG("wifi_direct STATUS: %d", status);
switch (status) {
- case VCONFKEY_WIFI_DIRECT_ACTIVATED:
- show_icon(data, WIFI_DIRECT_ACTIVATE);
- break;
+ case VCONFKEY_WIFI_DIRECT_GROUP_OWNER:
case VCONFKEY_WIFI_DIRECT_CONNECTED:
show_icon(data, WIFI_DIRECT_CONNECTED);
break;
- case VCONFKEY_WIFI_DIRECT_DISCOVERING:
- break;
- case VCONFKEY_WIFI_DIRECT_GROUP_OWNER:
- show_icon(data, WIFI_DIRECT_GROUP_OWNER);
- break;
default:
hide_icon();
break;
{
if(updated_while_lcd_off==0)
{
- DBG("ICON WAS NOT UPDATED");
return OK;
}
return OK;
}
-static void
-indicator_wifi_direct_transfer_change_cb(keynode_t *node, void *data)
+#ifdef _SUPPORT_SCREEN_READER
+static char *access_info_cb(void *data, Evas_Object *obj)
{
- int status;
- int ret;
+ char *tmp = NULL;
+ char buf[256] = {0,};
+ int status = 0;
- retif(data == NULL, , "Invalid parameter!");
-
- ret = vconf_get_int(VCONFKEY_WIFI_DIRECT_TRANSFER_STATE, &status);
+ vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &status);
- if (ret == OK) {
- INFO("wifi_direct transferring STATUS: %d", status);
- switch (status) {
- case VCONFKEY_WIFI_DIRECT_TRANSFER_START:
- if (wifi_direct_transferring != EINA_TRUE) {
- wifi_direct_transferring = EINA_TRUE;
- }
- break;
- case VCONFKEY_WIFI_DIRECT_TRANSFER_FAIL:
- if (wifi_direct_transferring == EINA_TRUE) {
- wifi_direct_transferring = EINA_FALSE;
- }
- break;
- case VCONFKEY_WIFI_DIRECT_TRANSFER_FINISH:
- if (wifi_direct_transferring == EINA_TRUE) {
- wifi_direct_transferring = EINA_FALSE;
- }
- break;
- }
+ switch (status)
+ {
+ case VCONFKEY_WIFI_DIRECT_GROUP_OWNER:
+ case VCONFKEY_WIFI_DIRECT_CONNECTED:
+ snprintf(buf, sizeof(buf), "%s, %s", _("Wi-Fi direct On and Connected"),_("IDS_IDLE_BODY_STATUS_BAR_ITEM"));
+ break;
+ default:
+ break;
}
+
+ tmp = strdup(buf);
+ if (!tmp) return NULL;
+ return tmp;
}
+#endif
static int register_wifi_direct_module(void *data)
{
set_app_state(data);
ret = vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_STATE,
- indicator_wifi_direct_change_cb, data);
- if (ret != OK)
- ERR("Failed to register callback! : %s",
- VCONFKEY_WIFI_DIRECT_STATE);
-
- ret = vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_TRANSFER_STATE,
- indicator_wifi_direct_transfer_change_cb, data);
+ indicator_wifi_direct_change_cb, data);
indicator_wifi_direct_change_cb(NULL, data);
- indicator_wifi_direct_transfer_change_cb(NULL, data);
return ret;
}
int ret;
ret = vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_STATE,
- indicator_wifi_direct_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
-
- ret = vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_TRANSFER_STATE,
- indicator_wifi_direct_transfer_change_cb);
- if (ret != OK)
- ERR("Failed to unregister callback!");
-
- if (wifi_direct_transferring == EINA_TRUE) {
- wifi_direct_transferring = EINA_FALSE;
- }
+ indicator_wifi_direct_change_cb);
- return OK;
+ return ret;
}
--- /dev/null
+org.tizen.indicator org.tizen.fm-radio-lite rwx--- ------
+org.tizen.indicator org.tizen.call-ui::vconf rwx--- ------
+org.tizen.indicator deviced::haptic rwx--- ------
+org.tizen.indicator bt-service rw---- ------
+org.tizen.indicator system::use_internet r----l ------
+org.tizen.indicator org.tizen.pwlock rwx--l ------
+org.tizen.indicator org.tizen.oma-dm r-x--l ------
+org.tizen.indicator ail::db rw---l ------
+org.tizen.indicator notification::db rw---l ------
+org.tizen.indicator dbus rwx--l ------
+org.tizen.indicator immvibed rw---l ------
+org.tizen.indicator svi-data r-x--l ------
+org.tizen.indicator sound_server -w---- ------
+org.tizen.indicator email-service --x--- ------
+org.tizen.indicator xorg rwx--- ------
+org.tizen.indicator org.tizen.quickpanel r-x--- ------
+org.tizen.indicator isf r-x--- ------
+org.tizen.indicator stest-service -w---- ------
+org.tizen.indicator libslp-alarm::db rw---- ------
+org.tizen.indicator data-provider-master::notification rw---l ------
+org.tizen.indicator data-provider-master::notification.client -w---- ------
+org.tizen.indicator data-provider-master rw---l ------
+org.tizen.indicator device::sys_logging -w---- ------
+stest-service org.tizen.indicator r-x--l ------
+dbus org.tizen.indicator rwx--- ------
+org.tizen.indicator eas-engine::vconf r----l ------
+org.tizen.indicator system::vconf_inhouse rw---l ------
+org.tizen.indicator system::vconf_setting rw---l ------
+org.tizen.indicator system::vconf_network rw---l ------
+org.tizen.indicator system::vconf_multimedia rw---l ------
+org.tizen.indicator system::vconf_system rw---l ------
+org.tizen.indicator org.tizen.facebook::vconf_sync rw---l ------
+org.tizen.indicator system::vconf_deviced r----l ------
+org.tizen.indicator location_fw::vconf r----l ------
+org.tizen.indicator felicalock r----l ------
+org.tizen.indicator starter::vconf r----l ------
+org.tizen.indicator org.tizen.music-player r----l ------
+org.tizen.indicator org.tizen.voicerecorder r----l ------
+org.tizen.indicator csc-feature r----l ------
+org.tizen.indicator tts-server rwx--l ------
+org.tizen.indicator org.tizen.download-manager::vconf_public r----l ------
+org.tizen.indicator download-provider::vconf_public r----l ------
+org.tizen.indicator pkgmgr::db rw---l ------
+org.tizen.indicator google-pim-sync::vconf_sync_status r----l ------
+org.tizen.indicator cloud-pdm::vconf_sync r----l ------
+org.tizen.indicator org.tizen.setting::private r----l ------
+org.tizen.indicator aul::launch --x--- ------
+org.tizen.indicator bt-service::public -wx--- ------
+org.tizen.indicator org.tizen.music-live-share r----l ------
+org.tizen.indicator app-svc::db rw---l ------
+org.tizen.indicator org.tizen.videos r----l ------
+org.tizen.indicator email::vconf_sync_status rw---l ------
+org.tizen.indicator telephony_framework::vconf rw---l ------
+org.tizen.indicator telephony_framework::api_sim rwx--- ------
+org.tizen.indicator telephony_framework::properties rw---- ------
+org.tizen.indicator telephony_framework::api_network rw---l ------
+org.tizen.indicator ug-setting-call-efl::vconf rw---l ------
+org.tizen.indicator location_fw::client r----l ------
+org.tizen.indicator contacts-service::svc --x--- ------
+org.tizen.indicator system::homedir rwxat- ------
+org.tizen.indicator system::vconf rwxat- ------
+org.tizen.indicator system::media rwxat- ------
+org.tizen.indicator system::share rwxat- ------
+org.tizen.indicator pulseaudio rwxat- ------
+e17 org.tizen.indicator -w---- ------
+org.tizen.indicator device::app_logging -w---- ------
+org.tizen.indicator sys-assert::core rwxat- ------
+org.tizen.indicator privacy-manager::db r----l ------
+org.tizen.indicator system::vconf_privacy rw---- ------
+org.tizen.indicator system::vconf_misc rw---- ------
+org.tizen.indicator ecore::lock rwxat- ------
+org.tizen.indicator tizen::vconf::platform::rw r----- ------
+org.tizen.indicator connman::get rw---- ------
+org.tizen.indicator telephony_framework::api_ps_public rw---- ------
--- /dev/null
+<manifest>
+ <define>
+ <domain name="org.tizen.indicator"/>
+ </define>
+ <assign>
+ <filesystem path="/etc/init.d/indicator" label="_" exec_label="none"/>
+ <filesystem path="/etc/rc.d/rc5.d/S01indicator" label="_" exec_label="none"/>
+ <filesystem path="/etc/rc.d/rc3.d/S44indicator" label="_" exec_label="none"/>
+ </assign>
+ <request>
+ <domain name="org.tizen.indicator"/>
+ </request>
+</manifest>
--- /dev/null
+org.tizen.indicator system::vconf arwxt
+org.tizen.indicator system::homedir arwxt
+org.tizen.indicator system::use_internet r
+org.tizen.indicator system::media rwxat
+org.tizen.indicator system::share rwxat
+org.tizen.indicator sys-assert::core rwxat
+org.tizen.indicator org.tizen.pwlock rwx
+org.tizen.indicator org.tizen.oma-dm rx
+org.tizen.indicator pulseaudio rwxat
+org.tizen.indicator ail::db rw
+org.tizen.indicator notification::db rw
+org.tizen.indicator dbus rwx
+org.tizen.indicator immvibed rw
+org.tizen.indicator svi-data rx
+org.tizen.indicator sound_server w
+org.tizen.indicator email-service x
+org.tizen.indicator xorg rw
+org.tizen.indicator isf rx
+org.tizen.indicator stest-service w
+org.tizen.indicator libslp-alarm::db rw
+org.tizen.indicator data-provider-master::notification rw
+org.tizen.indicator data-provider-master::notification.client w
+org.tizen.indicator data-provider-master rw
+e17 org.tizen.indicator rw
+stest-service org.tizen.indicator rx
+dbus org.tizen.indicator rwx
+org.tizen.indicator eas-engine::vconf r
+org.tizen.indicator system::vconf_inhouse rwx
+org.tizen.indicator system::vconf_misc rw
+org.tizen.indicator system::vconf_setting r
+org.tizen.indicator system::vconf_network r
+org.tizen.indicator system::vconf_multimedia r
+org.tizen.indicator system::vconf_system rw
+org.tizen.indicator system::vconf_deviced r
+org.tizen.indicator location_fw::vconf rwx
+org.tizen.indicator starter::vconf r
+org.tizen.indicator _ rw
+org.tizen.indicator device::app_logging w
+org.tizen.indicator device::sys_logging w
+org.tizen.indicator e17 rw
+org.tizen.indicator org.tizen.download-manager::vconf_public r
+org.tizen.indicator download-provider::vconf_public r
+org.tizen.indicator pkgmgr::db rw
[Unit]
Description=Start the indicator
-Before=core-efl.target
-After=xorg.target starter.service e17.service
+After=starter.service wm_ready.service smack-default-labeling.service
+Requires=starter.service
[Service]
ExecStart=/usr/apps/org.tizen.indicator/bin/indicator
+KillSignal=SIGKILL
[Install]
-WantedBy=core-efl.target
+WantedBy=multi-user.target
--- /dev/null
+[Unit]
+Description=Start the indicator
+After=launchpad-preload.service wm_ready.service
+
+[Service]
+ExecStart=/usr/apps/org.tizen.indicator/bin/indicator
+Restart=always
+RestartSec=0
+OOMScoreAdjust=200
+EnvironmentFile=/run/tizen-mobile-env
+
+[Install]
+WantedBy=multi-user.target
+++ /dev/null
-* Tue Dec 31 2013 Maciej Wereski <m.wereski@partner.samsung.com> accepted/tizen/20130530.164813@f5fb9b0
-- Remove initscripts, label systemd service file
-- smack merge
-- fix battery percentage bug while unlock
-- fix battery percentage display error
-- change notice file
-- Merge "change license version/file" into tizen_2.1
-- change license version/file
-- Merge "fix prevent issue" into tizen_2.1
-- fix prevent issue
-- change license file
-- change license file
-- remove unused vconf
-- remove unused vconf
-- fix indicator touch error
-- fix quickpanel open problem
-- sync with private
-- sync with master
-- merge with master
-- Tizen 2.1 base
-- Initial empty repository
-
+++ /dev/null
-<manifest>
- <request>
- <domain name="_"/>
- </request>
-</manifest>
-%define PREFIX /usr/apps/%{name}
+%define PKGNAME org.tizen.indicator
+%define PREFIX /usr/apps/%{PKGNAME}
%define RESDIR %{PREFIX}/res
-%define PREFIXRW /opt/apps/%{name}
+%define PREFIXRW /opt/usr/apps/%{PKGNAME}
Name: org.tizen.indicator
-Summary: Indicator Window
-Version: 0.1.72
+Summary: indicator window
+Version: 0.2.53
Release: 1
-Group: Application Framework/Utilities
-License: Flora
+Group: utils
+License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
+Source1: indicator.service.system
Source101: indicator.service
-Source102: org.tizen.indicator.manifest
-
-BuildRequires: pkgconfig(capi-appfw-application)
-BuildRequires: pkgconfig(capi-appfw-app-manager)
-BuildRequires: pkgconfig(capi-system-runtime-info)
-BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(elementary)
-BuildRequires: pkgconfig(ecore)
-BuildRequires: pkgconfig(ecore-x)
-BuildRequires: pkgconfig(ecore-evas)
-BuildRequires: pkgconfig(edje)
-BuildRequires: pkgconfig(evas)
-BuildRequires: pkgconfig(eina)
-BuildRequires: pkgconfig(vconf)
-BuildRequires: pkgconfig(libprivilege-control)
-BuildRequires: pkgconfig(notification)
-BuildRequires: pkgconfig(utilX)
-BuildRequires: pkgconfig(minicontrol-monitor)
-BuildRequires: pkgconfig(icu-io)
-BuildRequires: pkgconfig(feedback)
+
+%if "%{?tizen_profile_name}" == "wearable"
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
+%if "%{?tizen_profile_name}"=="tv"
+ExcludeArch: %{arm} %ix86 x86_64
+%endif
+
+BuildRequires: pkgconfig(capi-appfw-application)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
+BuildRequires: pkgconfig(capi-system-runtime-info)
+BuildRequires: pkgconfig(capi-network-bluetooth)
+BuildRequires: pkgconfig(capi-appfw-preference)
+BuildRequires: pkgconfig(capi-system-system-settings)
+BuildRequires: pkgconfig(capi-media-player)
+BuildRequires: pkgconfig(capi-media-sound-manager)
+BuildRequires: pkgconfig(capi-media-metadata-extractor)
+BuildRequires: pkgconfig(capi-network-wifi)
+BuildRequires: pkgconfig(capi-ui-efl-util)
+BuildRequires: pkgconfig(appcore-common)
+BuildRequires: pkgconfig(dlog)
+BuildRequires: pkgconfig(elementary)
+BuildRequires: pkgconfig(ecore)
+#BuildRequires: pkgconfig(ecore-x)
+BuildRequires: pkgconfig(ecore-evas)
+BuildRequires: pkgconfig(edje)
+BuildRequires: pkgconfig(evas)
+BuildRequires: pkgconfig(eina)
+BuildRequires: pkgconfig(vconf)
+BuildRequires: pkgconfig(libprivilege-control)
+BuildRequires: pkgconfig(notification)
+#BuildRequires: pkgconfig(utilX)
+BuildRequires: pkgconfig(minicontrol-monitor)
+BuildRequires: pkgconfig(icu-io)
+BuildRequires: pkgconfig(feedback)
+BuildRequires: pkgconfig(pkgmgr-info)
+BuildRequires: pkgconfig(edbus)
+BuildRequires: pkgconfig(efl-assist)
+BuildRequires: pkgconfig(tapi)
+BuildRequires: pkgconfig(message-port)
BuildRequires: cmake
BuildRequires: edje-tools
BuildRequires: gettext-tools
+BuildRequires: hash-signer
Requires(post): /usr/bin/vconftool
%description
%prep
%setup -q
-cp %{SOURCE102} .
%build
+%if 0%{?tizen_build_binary_release_type_eng}
+export CFLAGS="$CFLAGS -DTIZEN_ENGINEER_MODE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_ENGINEER_MODE"
+export FFLAGS="$FFLAGS -DTIZEN_ENGINEER_MODE"
+%endif
+
+%if 0%{?sec_build_binary_debug_enable}
+export CFLAGS="$CFLAGS -DTIZEN_DEBUG_ENABLE"
+export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
+export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
+%endif
+
LDFLAGS+="-Wl,--rpath=%{PREFIX}/lib -Wl,--as-needed";export LDFLAGS
-CFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden"; export CFLAGS
+CFLAGS+=" -fvisibility=hidden"; export CFLAGS
CXXFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden"; export CXXFLAGS
FFLAGS+=" -fvisibility=hidden -fvisibility-inlines-hidden"; export FFLAGS
-cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} -DCMAKE_INSTALL_PREFIXRW=%{PREFIXRW}
+cmake . -DCMAKE_INSTALL_PREFIX=%{PREFIX} -DCMAKE_INSTALL_PREFIXRW=%{PREFIXRW} \
+
+
make %{?jobs:-j%jobs}
%install
rm -rf %{buildroot}
%make_install
+mkdir -p %{buildroot}/usr/share/license
+cp -f LICENSE %{buildroot}/usr/share/license/%{PKGNAME}
+
+%define tizen_sign 1
+%define tizen_sign_base /usr/apps/%{PKGNAME}
+%define tizen_sign_level public
+%define tizen_author_sign 1
+%define tizen_dist_sign 1
+
install -d %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants
install -m0644 %{SOURCE101} %{buildroot}%{_libdir}/systemd/user/
ln -sf ../indicator.service %{buildroot}%{_libdir}/systemd/user/core-efl.target.wants/indicator.service
+mkdir -p %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants
+install -m 0644 %SOURCE1 %{buildroot}%{_libdir}/systemd/system/indicator.service
+ln -s ../indicator.service %{buildroot}%{_libdir}/systemd/system/multi-user.target.wants/indicator.service
%clean
rm -rf %{buildroot}
%post
-vconftool set -t int memory/music/state 0 -i -g 6518 -f
-vconftool set -t bool memory/private/%{name}/started 0 -i -u 5000 -f
-vconftool set -t int memory/private/%{name}/battery_disp 0 -i -u 5000 -f
+vconftool set -t int memory/private/%{PKGNAME}/show_more_noti_port 0 -i -g 6518 -f -s %{PKGNAME}
+
+%postun -p /sbin/ldconfig
%files
%manifest org.tizen.indicator.manifest
%defattr(-,root,root,-)
-%license LICENSE.Flora NOTICE
%{PREFIX}/bin/*
-%{RESDIR}/locale/*
%{RESDIR}/icons/*
%{RESDIR}/edje/*
-/usr/share/packages/%{name}.xml
+/usr/share/packages/%{PKGNAME}.xml
%attr(775,app,app) %{PREFIXRW}/data
+%attr(755,-,-) %{_sysconfdir}/init.d/indicator
%{_libdir}/systemd/user/core-efl.target.wants/indicator.service
%{_libdir}/systemd/user/indicator.service
+%{_libdir}/systemd/system/multi-user.target.wants/indicator.service
+%{_libdir}/systemd/system/indicator.service
+/usr/share/license/%{PKGNAME}
+/etc/smack/accesses.d/%{PKGNAME}.efl
+/usr/apps/%{PKGNAME}/author-signature.xml
+/usr/apps/%{PKGNAME}/signature1.xml
+/usr/apps/%{PKGNAME}/shared/res/tables/org.tizen.indicator_ChangeableColorInfo.xml
+/usr/apps/%{PKGNAME}/shared/res/tables/org.tizen.indicator_ChangeableFontInfo.xml
msgstr "AM"
msgid "IDS_IDLE_OPT_PM_ABB"
-msgstr "PM"
+msgstr "ԿՀ"
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdarg.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <time.h>
-
-#ifndef LOGFILE
-#define LOGFILE DATADIR"/indicator.log"
-#endif
-
-#define MAXSIZE (1 << 17)
-
-static char buf[512];
-
-void debug_printf(const char *msg, ...)
-{
- int fd;
- va_list arg_list;
- int len;
- struct tm timeDate = { 0, };
- time_t ctime;
- int status;
- struct stat buffer;
-
- ctime = time(NULL);
-
- if (localtime_r(&ctime, &timeDate)) {
- snprintf(buf, 63, "[%04d/%02d/%02d %02d:%02d:%02d] ",
- timeDate.tm_year + 1900, timeDate.tm_mon + 1,
- timeDate.tm_mday, timeDate.tm_hour, timeDate.tm_min,
- timeDate.tm_sec);
- }
-
- len = strlen(buf);
-
- va_start(arg_list, msg);
-
- fd = open(LOGFILE, O_WRONLY | O_CREAT | O_APPEND,
- S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
- if (fd == -1) {
- fprintf(stderr, msg, arg_list);
- goto __CATCH;
- }
- status = fstat(fd, &buffer);
-
- if (!status && (buffer.st_size > MAXSIZE)) {
- ftruncate(fd, 0);
- }
-
- if (len < 0) {
- goto __CATCH;
- }
-
- len += vsnprintf(&buf[len], sizeof(buf), msg, arg_list);
-
- write(fd, buf, strlen(buf));
-
-__CATCH:
- if(fd != -1)
- {
- close(fd);
- }
- va_end(arg_list);
-}
+++ /dev/null
-/*
- * Copyright 2012 Samsung Electronics Co., Ltd
- *
- * Licensed under the Flora License, Version 1.1 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://floralicense.org/license/
- *
- * 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 <stdio.h>
-#include <stdlib.h>
-
-#include "common.h"
-#include "indicator_icon_util.h"
-#include "indicator_icon_list.h"
-#include "indicator_ui.h"
-#include "indicator_test_util.h"
-
-int print_indicator_icon_object(Indicator_Icon_Object *obj)
-{
-#ifdef DEBUG_MODE
- retif(cond, ret, str, args...)(obj == NULL, FAIL, "Invalid parameter!");
-
- INFO(str, args...)(%s : priority(%d) obj(%x), obj->name, obj->priority,
- (unsigned int)obj->obj);
-#endif
- return OK;
-}
-
-int print_indicator_icon_list(Eina_List *list)
-{
-#ifdef DEBUG_MODE
- Eina_List *l;
- void *data;
-
- retif(list == NULL, FAIL, "Invalid parameter!");
-
- INFO("*******Indicator_Icon List(%x) *******", (unsigned int)list);
- EINA_LIST_FOREACH(list, l, data) {
- if (data) {
- print_indicator_icon_object(data);
- }
- }
-#endif
- return OK;
-}