tizen beta release
authorKibum Kim <kb0929.kim@samsung.com>
Mon, 27 Feb 2012 12:16:44 +0000 (21:16 +0900)
committerKibum Kim <kb0929.kim@samsung.com>
Mon, 27 Feb 2012 12:16:44 +0000 (21:16 +0900)
76 files changed:
AUTHORS [new file with mode: 0644]
CMakeLists.txt [new file with mode: 0644]
LICENSE [new file with mode: 0644]
TC/build.sh [new file with mode: 0755]
TC/execute.sh [new file with mode: 0755]
TC/tet_code [new file with mode: 0755]
TC/tet_scen [new file with mode: 0755]
TC/tetbuild.cfg [new file with mode: 0755]
TC/tetclean.cfg [new file with mode: 0755]
TC/tetexec.cfg [new file with mode: 0755]
TC/unit/Makefile [new file with mode: 0644]
TC/unit/tc_gen.sh [new file with mode: 0755]
TC/unit/tslist [new file with mode: 0644]
TC/unit/utc_MODULE_API_func.c.in [new file with mode: 0644]
data/syspopup_db.sql [new file with mode: 0755]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/syspopup-0.install.in [new file with mode: 0644]
debian/syspopup-0.postinst [new file with mode: 0644]
debian/syspopup-caller-0.install.in [new file with mode: 0644]
debian/syspopup-caller-0.postinst [new file with mode: 0644]
debian/syspopup-caller-dev.install.in [new file with mode: 0644]
debian/syspopup-dev.install.in [new file with mode: 0644]
image/README [new file with mode: 0644]
include/SLP_SYSPOPUP_PG.h [new file with mode: 0755]
include/pg-doxy/doxygen.conf [new file with mode: 0755]
include/pg-doxy/pg-doxy.sh [new file with mode: 0755]
include/pg-doxy/slp_doxy.css [new file with mode: 0644]
include/pg-doxy/tool/bin/doxygen [new file with mode: 0755]
include/pg-doxy/tool/bin/doxytag [new file with mode: 0755]
include/pg-doxy/tool/man/man1/doxygen.1 [new file with mode: 0644]
include/pg-doxy/tool/man/man1/doxytag.1 [new file with mode: 0644]
include/simple_util.h [new file with mode: 0755]
include/syspopup.h [new file with mode: 0755]
include/syspopup_api.h [new file with mode: 0755]
include/syspopup_caller.h [new file with mode: 0755]
include/syspopup_core.h [new file with mode: 0755]
include/syspopup_db.h [new file with mode: 0755]
packaging/syspopup.spec [new file with mode: 0644]
pg-doxy/doxygen.conf [new file with mode: 0755]
pg-doxy/pg-doxy.sh [new file with mode: 0755]
pg-doxy/slp_doxy.css [new file with mode: 0644]
pg-doxy/tool/bin/doxygen [new file with mode: 0755]
pg-doxy/tool/bin/doxytag [new file with mode: 0755]
pg-doxy/tool/man/man1/doxygen.1 [new file with mode: 0644]
pg-doxy/tool/man/man1/doxytag.1 [new file with mode: 0644]
src/syspopup_core.c [new file with mode: 0755]
src/syspopup_db.c [new file with mode: 0755]
syspopup-app/CMakeLists.txt [new file with mode: 0644]
syspopup-app/INSTALL [new file with mode: 0644]
syspopup-app/org.tizen.syspopup-app.desktop.in [new file with mode: 0755]
syspopup-app/org.tizen.syspopup-app.png [new file with mode: 0644]
syspopup-app/po/CMakeLists.txt [new file with mode: 0644]
syspopup-app/po/POTFILES.in [new file with mode: 0644]
syspopup-app/po/en_GB.po [new file with mode: 0644]
syspopup-app/po/en_US.po [new file with mode: 0644]
syspopup-app/po/ja.po [new file with mode: 0644]
syspopup-app/po/ko.po [new file with mode: 0644]
syspopup-app/po/syspopup-tempapp.pot [new file with mode: 0644]
syspopup-app/po/update-po.sh [new file with mode: 0755]
syspopup-app/po/zh_CN.po [new file with mode: 0644]
syspopup-app/syspopup-app.c [new file with mode: 0755]
syspopup-app/syspopup-app.h [new file with mode: 0755]
syspopup-caller/CMakeLists.txt [new file with mode: 0644]
syspopup-caller/syspopup-caller.pc.in [new file with mode: 0644]
syspopup-caller/syspopup_caller.c [new file with mode: 0755]
syspopup/CMakeLists.txt [new file with mode: 0644]
syspopup/syspopup.c [new file with mode: 0755]
syspopup/syspopup.pc.in [new file with mode: 0644]
syspopup/syspopup_efl.c [new file with mode: 0755]
test/CMakeLists.txt [new file with mode: 0644]
test/test.c [new file with mode: 0755]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..1e843b2
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,5 @@
+Kunhoon Baik <knhoon.baik@samsung.com>
+Noha Park <noha.park@samsung.com>
+Jayoun Lee <airjany@samsung.com>
+Sewook Park <sewook7.park@samsung.com>
+Jaeho Lee <jaeho81.lee@samsung.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..95bd4f9
--- /dev/null
@@ -0,0 +1,69 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup_mods C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(libpkgs REQUIRED aul dlog bundle sqlite3 glib-2.0 heynoti)
+
+FOREACH(flag ${libpkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+### Build ###
+
+# aul_mods : modules (static library)
+add_library(syspopup_mods STATIC
+               src/syspopup_db.c
+               src/syspopup_core.c
+               )
+
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/SLP_SYSPOPUP_PG.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/syspopup_db.sql DESTINATION /opt/share/)
+
+add_subdirectory(syspopup)
+add_subdirectory(syspopup-caller)
+
+# test
+add_subdirectory(test)
+add_subdirectory(syspopup-app)
diff --git a/LICENSE b/LICENSE
new file mode 100644 (file)
index 0000000..a06208b
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,204 @@
+Copyright (c) 2000 - 2011 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.
+
diff --git a/TC/build.sh b/TC/build.sh
new file mode 100755 (executable)
index 0000000..98ebeff
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+export TET_INSTALL_PATH=/scratchbox/tetware  # local tetware path
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+HTML_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.html
+JOURNAL_RESULT=$RESULT_DIR/build-tar-result-$FILE_NAME_EXTENSION.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -c -p ./
+tcc -b -j $JOURNAL_RESULT -p ./
+grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
diff --git a/TC/execute.sh b/TC/execute.sh
new file mode 100755 (executable)
index 0000000..6720da0
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+export TET_INSTALL_PATH=/mnt/nfs/tetware
+export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target
+export PATH=$TET_TARGET_PATH/bin:$PATH
+export LD_LIBRARY_PATH=$TET_TARGET_PATH/lib/tet3:$LD_LIBRARY_PATH
+
+export TET_ROOT=$TET_TARGET_PATH
+
+export TET_SUITE_ROOT=`pwd`
+FILE_NAME_EXTENSION=`date +%s`
+
+RESULT_DIR=results
+HTML_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.html
+JOURNAL_RESULT=$RESULT_DIR/exec-tar-result-$FILE_NAME_EXTENSION.journal
+
+mkdir -p $RESULT_DIR
+
+tcc -e -j $JOURNAL_RESULT -p ./
+grw -c 3 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
diff --git a/TC/tet_code b/TC/tet_code
new file mode 100755 (executable)
index 0000000..a2cf6c1
--- /dev/null
@@ -0,0 +1,12 @@
+# TET reserved codes
+0 "PASS"
+1 "FAIL"
+2 "UNRESOLVED"
+3 "NOTINUSE"
+4 "UNSUPPORTED"
+5 "UNTESTED"
+6 "UNINITIATED"
+7 "NORESULT"
+
+# Test suite additional codes
+33 "INSPECT"
diff --git a/TC/tet_scen b/TC/tet_scen
new file mode 100755 (executable)
index 0000000..43cbc9b
--- /dev/null
@@ -0,0 +1,7 @@
+all
+       ^TEST
+##### Scenarios for TEST #####
+
+# Test scenario
+TEST
+       :include:/unit/tslist
diff --git a/TC/tetbuild.cfg b/TC/tetbuild.cfg
new file mode 100755 (executable)
index 0000000..6192c78
--- /dev/null
@@ -0,0 +1,3 @@
+TET_OUTPUT_CAPTURE=False
+TET_BUILD_TOOL=make
+TET_PASS_TC_NAME=True
diff --git a/TC/tetclean.cfg b/TC/tetclean.cfg
new file mode 100755 (executable)
index 0000000..c66eda4
--- /dev/null
@@ -0,0 +1,2 @@
+TET_OUTPUT_CAPTURE=False
+TET_CLEAN_TOOL=make clean
diff --git a/TC/tetexec.cfg b/TC/tetexec.cfg
new file mode 100755 (executable)
index 0000000..0d9d39a
--- /dev/null
@@ -0,0 +1 @@
+TET_OUTPUT_CAPTURE=False
diff --git a/TC/unit/Makefile b/TC/unit/Makefile
new file mode 100644 (file)
index 0000000..631550c
--- /dev/null
@@ -0,0 +1,21 @@
+CC ?= gcc
+
+TARGETS = 
+PKGS = syspopup 
+
+LDFLAGS = `pkg-config --libs $(PKGS)`
+LDFLAGS += $(TET_ROOT)/lib/tet3/tcm_s.o
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -ltcm_s
+LDFLAGS += -L$(TET_ROOT)/lib/tet3 -lapi_s
+
+CFLAGS = -I. `pkg-config --cflags $(PKGS)`
+CFLAGS += -I$(TET_ROOT)/inc/tet3
+CFLAGS += -Wall
+
+all: $(TARGETS)
+
+$(TARGET): %: %.c
+       $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
+
+clean:
+       rm -f $(TARGETS)
diff --git a/TC/unit/tc_gen.sh b/TC/unit/tc_gen.sh
new file mode 100755 (executable)
index 0000000..54f482d
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+TMPSTR=$0
+SCRIPT=${TMPSTR##*/}
+
+if [ $# -lt 2 ]; then
+       echo "Usage) $SCRIPT module_name api_name"
+       exit 1
+fi
+
+MODULE=$1
+API=$2
+TEMPLATE=utc_MODULE_API_func.c.in
+TESTCASE=utc_${MODULE}_${API}_func
+
+sed -e '
+       s^@API@^'"$API"'^g
+       s^@MODULE@^'"$MODULE"'^g
+       ' $TEMPLATE > $TESTCASE.c
+
+if [ ! -e "$TESTCASE.c" ]; then
+       echo "Failed"
+       exit 1
+fi
+echo "Testcase file is $TESTCASE.c"
+echo "Done"
+echo "please put \"$TESTCASE\" as Target in Makefile"
+echo "please put \"/unit/$TESTCASE\" in tslist"
diff --git a/TC/unit/tslist b/TC/unit/tslist
new file mode 100644 (file)
index 0000000..8b13789
--- /dev/null
@@ -0,0 +1 @@
+
diff --git a/TC/unit/utc_MODULE_API_func.c.in b/TC/unit/utc_MODULE_API_func.c.in
new file mode 100644 (file)
index 0000000..0227150
--- /dev/null
@@ -0,0 +1,64 @@
+#include <tet_api.h>
+
+static void startup(void);
+static void cleanup(void);
+
+void (*tet_startup)(void) = startup;
+void (*tet_cleanup)(void) = cleanup;
+
+static void utc_@MODULE@_@API@_func_01(void);
+static void utc_@MODULE@_@API@_func_02(void);
+
+enum {
+       POSITIVE_TC_IDX = 0x01,
+       NEGATIVE_TC_IDX,
+};
+
+struct tet_testlist tet_testlist[] = {
+       { utc_@MODULE@_@API@_func_01, POSITIVE_TC_IDX },
+       { utc_@MODULE@_@API@_func_02, NEGATIVE_TC_IDX },
+};
+
+static void startup(void)
+{
+}
+
+static void cleanup(void)
+{
+}
+
+/**
+ * @brief Positive test case of @API@()
+ */
+static void utc_@MODULE@_@API@_func_01(void)
+{
+       int r = 0;
+       char buf[MAX_LOCAL_BUFSZ];
+       
+       r = @API@(...);
+
+       if (r<0) {
+               tet_infoline("@API@() failed in positive test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+       tet_result(TET_PASS);
+}
+
+/**
+ * @brief Negative test case of ug_init @API@()
+ */
+static void utc_@MODULE@_@API@_func_02(void)
+{
+       int r = 0;
+       char buf[MAX_LOCAL_BUFSZ];
+
+       r = @API@(...);
+
+       if (r>=0) {
+               tet_infoline("@API@() failed in negative test case");
+               tet_result(TET_FAIL);
+               return;
+       }
+       tet_result(TET_PASS);
+}
diff --git a/data/syspopup_db.sql b/data/syspopup_db.sql
new file mode 100755 (executable)
index 0000000..d5ffc61
--- /dev/null
@@ -0,0 +1,44 @@
+PRAGMA journal_mode = PERSIST;
+
+/* prio : 0~2 (0:low, 2:high) */
+/* focus : 0~1 (0:focus, 1:unfocus) */
+/* timeout : -1 ~ integer value (-1:infinite, 0:don't use) */
+/* term_act : 0~2(0:TERM, 1:HIDE, 2:IGNORE) */
+/* endkey_act : 0~2(0:TERM, 1:HIDE, 2:IGNORE) */
+CREATE TABLE IF NOT EXISTS syspopup_info (
+       id INTEGER PRIMARY KEY,
+       name TEXT UNIQUE NOT NULL,
+       prio INTEGER,
+       focus INTEGER,
+       timeout INTEGER,
+       term_act INTEGER,
+       endkey_act INTEGER,
+       pkgname TEXT
+);
+
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"syspopup-app",             2,1,5,0,0,"org.tizen.syspopup-app");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"incoming_call",            2,0,-1,2,2,"org.tizen.incoming_call");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"phone_lock",               2,0,-1,2,2,"org.tizen.screen_lock");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"screen_lock",              1,0,-1,0,2,"org.tizen.screen_lock");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"volume",                   1,1,-1,1,1,"org.tizen.volume");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"alarm",                    1,0,-1,0,2,"org.tizen.alarm");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"timer",                    1,0,5,0,2,"org.tizen.timer");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"schedule_alarm",           1,0,-1,0,2,"org.tizen.schedule_alarm");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"bt-syspopup",              0,0,-1,0,0,"org.tizen.bt-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"change_select_network",    0,0,-1,0,0,"org.tizen.change_select_network");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"wifi-qs",                  0,0,-1,0,0,"org.tizen.wifi-qs");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"privacy_lock",             0,0,-1,0,2,"org.tizen.privacy_lock");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"poweroff-syspopup",                0,1,-1,0,0,"org.tizen.poweroff-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"drm",                      0,0,5,0,0,"org.tizen.drm-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"active_sync_policy",       0,0,-1,0,0,"org.tizen.active_sync_policy");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"memory_full",              0,1,5,0,0,"org.tizen.memory_full");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"lowmem-syspopup",          0,1,5,0,0,"org.tizen.lowmem-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"lowbat-syspopup",          0,1,5,0,0,"org.tizen.lowbat-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"charger_conn",             0,1,5,0,0,"org.tizen.charger_conn");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"sim_extraction",           0,1,5,0,0,"org.tizen.sim_extraction");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"time_zone_update",         0,1,5,0,0,"org.tizen.time_zone_update");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"dnet-popup",               0,0,5,0,0,"org.tizen.dnet-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"nfc-syspopup",             0,1,3,0,0,"org.tizen.nfc-sys-popup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"push-syspopup",            2,0,5,0,0,"org.tizen.push-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"alert-3g-syspopup",                0,0,-1,0,0,"org.tizen.alert-3g-syspopup");
+INSERT OR REPLACE INTO "syspopup_info" VALUES(NULL,"usb-syspopup",             1,1,-1,2,2,"org.tizen.usb-syspopup");
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..2c4d0ca
--- /dev/null
@@ -0,0 +1,7 @@
+syspopup (0.0.67-1) unstable; urgency=low
+
+  * Initial Release.
+  * Git: pkgs/s/syspopup
+  * Tag: syspopup_0.0.67-1
+
+ -- Sewook Park <sewook7.park@samsung.com>  Wed, 07 Dec 2011 12:55:49 +0900
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..f262cdd
--- /dev/null
@@ -0,0 +1,43 @@
+Source: syspopup
+Section: devel
+Priority: extra
+Maintainer: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>, Jaeho Lee <jaeho81.lee@samsung.com>
+Build-Depends: debhelper (>= 5), libdbus-glib-1-dev, libsqlite3-dev, libx11-dev, libecore-dev, libbundle-dev, dlog-dev, libslp-utilx-dev, libheynoti-dev, sqlite3, libaul-1-dev, libevas-dev, libappcore-efl-dev
+Standards-Version: 0.1.0 
+
+Package: syspopup-caller-0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Description: syspopup-caller package
+
+Package: syspopup-caller-dev
+Section: libs
+Architecture: any
+Depends: syspopup-caller-0 (= ${Source-Version}), libdbus-glib-1-dev, libsqlite3-dev, libbundle-dev, dlog-dev, libheynoti-dev, libaul-1-dev
+Description: syspopup-caller dev package
+
+Package: syspopup-caller-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, syspopup-caller-0 (= ${Source-Version})
+Description: syspopup-caller dbg package 
+
+Package: syspopup-0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, sqlite3
+Description: syspopup package
+
+Package: syspopup-dev
+Section: libs
+Architecture: any
+Depends: syspopup-0 (= ${Source-Version}), libdbus-glib-1-dev, libsqlite3-dev, libbundle-dev, dlog-dev, libheynoti-dev, sqlite3, libslp-utilx-dev, libx11-dev, libecore-dev, libevas-dev, libappcore-efl-dev
+Description: syspopup dev package
+
+Package: syspopup-dbg
+Section: debug
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, syspopup-0 (= ${Source-Version})
+Description: syspopup dbg package 
+
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..ca882bb
--- /dev/null
@@ -0,0 +1,2 @@
+usr/bin
+usr/sbin
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..a65f12b
--- /dev/null
@@ -0,0 +1,122 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+export DH_VERBOSE=1
+
+CFLAGS ?= -Wall -g
+LDFLAGS ?= 
+PREFIX ?= /usr
+DATADIR ?= /opt
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+CFLAGS += -fvisibility=hidden -fpic
+LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed
+
+CMAKE_TMP_DIR = $(CURDIR)/cmake_tmp
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       mkdir -p $(CMAKE_TMP_DIR);
+       cd $(CMAKE_TMP_DIR); CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" cmake .. -DCMAKE_INSTALL_PREFIX=$(PREFIX)
+
+       touch configure-stamp
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       cd $(CMAKE_TMP_DIR) && $(MAKE) all test
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               cat $$f > $${f%.in}; \
+               sed -i -e "s#@PREFIX@#$(PREFIX)#g" $${f%.in}; \
+               sed -i -e "s#@DATADIR@#$(DATADIR)#g" $${f%.in}; \
+       done
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       rm -rf $(CMAKE_TMP_DIR)
+
+       for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
+               rm -f $${f%.in}; \
+       done
+
+       rm -rf include/pg-doxy/doxygen_output
+
+       rm -rf TC/results
+       rm -rf TC/tet_tmp_dir
+       cd TC/unit/ && make clean && cd ../../
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/wavplayer.
+       cd $(CMAKE_TMP_DIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+       mkdir -p $(CURDIR)/debian/tmp/opt/dbspace
+#      sqlite3 $(CURDIR)/debian/tmp/opt/dbspace/.syspopup.db < $(CURDIR)/data/syspopup_db.sql
+       touch $(CURDIR)/debian/tmp/usr/share/popup_noti_term
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+       dh_install --sourcedir=debian/tmp
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_python
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip --dbg-package=syspopup-dbg
+       dh_compress
+       dh_fixperms
+#      dh_perl
+       dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/debian/syspopup-0.install.in b/debian/syspopup-0.install.in
new file mode 100644 (file)
index 0000000..300e948
--- /dev/null
@@ -0,0 +1,5 @@
+@PREFIX@/lib/libsyspopup.*\r
+@PREFIX@/bin/*\r
+usr/share/popup_noti_term\r
+@PREFIX@/share/*\r
+/opt/share/*\r
diff --git a/debian/syspopup-0.postinst b/debian/syspopup-0.postinst
new file mode 100644 (file)
index 0000000..ac719d7
--- /dev/null
@@ -0,0 +1,18 @@
+#!/bin/sh
+mkdir -p /opt/dbspace/
+sqlite3 /opt/dbspace/.syspopup.db < /opt/share/syspopup_db.sql
+rm -rf /opt/share/syspopup_db.sql
+
+if [ ${USER} = "root" ]
+then
+       chown root:root /usr/lib/libsyspopup.so.0.1.0
+       chown root:5000 /opt/dbspace/.syspopup.db
+       chown root:5000 /opt/dbspace/.syspopup.db-journal
+fi
+
+chmod 644 /usr/lib/libsyspopup.so.0.1.0
+chmod 664 /opt/dbspace/.syspopup.db
+chmod 664 /opt/dbspace/.syspopup.db-journal
+
+
+
diff --git a/debian/syspopup-caller-0.install.in b/debian/syspopup-caller-0.install.in
new file mode 100644 (file)
index 0000000..9add798
--- /dev/null
@@ -0,0 +1 @@
+@PREFIX@/lib/libsyspopup_caller.*\r
diff --git a/debian/syspopup-caller-0.postinst b/debian/syspopup-caller-0.postinst
new file mode 100644 (file)
index 0000000..91f47b5
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+if [ ${USER} = "root" ]
+then
+       chown root:root /usr/lib/libsyspopup_caller.so.0.1.0
+fi
+
+chmod 644 /usr/lib/libsyspopup_caller.so.0.1.0
+
diff --git a/debian/syspopup-caller-dev.install.in b/debian/syspopup-caller-dev.install.in
new file mode 100644 (file)
index 0000000..107006c
--- /dev/null
@@ -0,0 +1,2 @@
+@PREFIX@/include/syspopup_caller.h
+@PREFIX@/lib/pkgconfig/syspopup-caller.pc
diff --git a/debian/syspopup-dev.install.in b/debian/syspopup-dev.install.in
new file mode 100644 (file)
index 0000000..f70f39e
--- /dev/null
@@ -0,0 +1,3 @@
+@PREFIX@/include/syspopup.h
+@PREFIX@/include/SLP_SYSPOPUP_PG.h
+@PREFIX@/lib/pkgconfig/syspopup.pc
diff --git a/image/README b/image/README
new file mode 100644 (file)
index 0000000..a8f7df0
--- /dev/null
@@ -0,0 +1 @@
+PG
diff --git a/include/SLP_SYSPOPUP_PG.h b/include/SLP_SYSPOPUP_PG.h
new file mode 100755 (executable)
index 0000000..fc03885
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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.
+ *
+ */
+
+
+/**
+
+ *
+ * @ingroup   SLP_PG
+ * @defgroup   SYSPOPUP Library for System Popup 
+
+@par SYSPOPUP Programming Guide
+
+<h1 class="pg"> Introduction</h1>
+<h2 class="pg"> Purpose of this document</h2>
+The purpose of this document is to describe how applications can use System Popup Library APIs.\n
+This document gives only programming guidelines to system popup application engineers.
+
+<h2 class="pg"> Scope</h2>
+The scope of this document is limited to Samsung platform System Popup API usage.
+
+<h1 class="pg"> Architecture</h1>
+<h2 class="pg"> Architecture overview</h2>
+
+<h2 class="pg"> SLP Features</h2>
+
+<h1 class="pg"> SYSPOPUP API descriptions</h1>
+<b> SEE API manual </b>
+
+<h1 class="pg"> SYSPOPUP features with sample code</h1>
+<h2 class="pg"> ... </h2>
+
+@code
+@endcode
+
+@code
+*/
+
+/**
+@}
+*/
+
diff --git a/include/pg-doxy/doxygen.conf b/include/pg-doxy/doxygen.conf
new file mode 100755 (executable)
index 0000000..a7cd424
--- /dev/null
@@ -0,0 +1,850 @@
+# Doxyfile 1.5.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           =  SLP-Developer Library
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ./doxygen_output
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = YES
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = YES
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = YES
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = YES
+SORT_BY_SCOPE_NAME     = YES
+SORT_GROUP_NAMES     = YES
+GENERATE_TODOLIST      = NO
+USE_INLINE_TREES      = NO
+SHOW_NAMESPACES                = NO
+HTML DYNAMIC SECTIONS          = YES
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = .. 
+
+# This tag can be used to specify the character encoding of the source files that 
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. 
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.h \
+                        *.doxy
+RECURSIVE              = YES
+EXCLUDE                =  
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = */test/* \
+                       */debian/* \
+                       */lost+found/* \
+                       */i386/* \
+                       */arm/* \
+                       */simulator/*  \
+                       *test* \
+                       */voda3rd/* 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = ../image 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 10
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =./slp_doxy.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 190
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = YES
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = NO
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to 
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to 
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to 
+# be found in the default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a caller dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable caller graphs for selected 
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = NO
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = jpg
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen will always 
+# show the root nodes and its direct children regardless of this setting.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = NO
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = YES
diff --git a/include/pg-doxy/pg-doxy.sh b/include/pg-doxy/pg-doxy.sh
new file mode 100755 (executable)
index 0000000..c756291
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Create doxygen from debian package server
+# By Jungbae Lee (yi_jungbae@samsung.com)
+
+cd `dirname $0`
+CWD=`pwd`
+
+# Use doxygen 1.7.0
+export PATH=/usr/local/bin:${HOME}/mytools/bin:${PATH}
+export LD_LIBRARY_PATH=${HOME}/mytools/lib:${LD_LIBRARY_PATH}
+
+
+### Configuration
+SBOX=/scratchbox/users/$USER/home/$USER
+DOXYGEN_OUTPUT_DIR=$CWD/doxygen_output
+DOXYGEN=./tool/bin/doxygen
+DOXY_CONF=doxygen.conf
+IMAGE_DIR=../../image #need to change
+#IMAGE_DIR=[fill your image path]
+
+
+
+####doxygen configuration :: output Directory
+mkdir $DOXYGEN_OUTPUT_DIR
+
+echo "Doxygen running..."
+if [ ! -e $CWD/doxygen_output ]; then
+       mkdir $CWD/doxygen_output
+fi
+# Run doxygen
+$DOXYGEN $DOXY_CONF 2>&1
+
+#image copy
+cp $CWD/$IMAGE_DIR/* $DOXYGEN_OUTPUT_DIR/html/
+
+echo "Finished!"
+exit;
+
diff --git a/include/pg-doxy/slp_doxy.css b/include/pg-doxy/slp_doxy.css
new file mode 100644 (file)
index 0000000..12c03ac
--- /dev/null
@@ -0,0 +1,699 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       font-size: 18pt;
+       color: #3366ED;
+}
+
+h1.pg {
+       font-size: 18pt;
+       color: #336666;
+       margin-right:-0.6pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.5pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+h2 {
+       font-size: 14pt;
+       color: #336666;
+}
+h2.pg {
+       font-size: 14pt;
+       color: #336666;
+       margin-right:-0.1pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.2pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+
+h3 {
+       font-size: 12pt;
+       color: #336666;
+}
+h3.pg {
+       font-size: 12pt;
+       color: #336666;
+}
+
+
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #9CAFD4;
+       color: #ffffff;
+       border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+       color: #4665A2;
+}
+
+a.codeRef {
+       color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #C4CFE5;
+       background-color: #FBFCFD;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+       padding: .2em;
+       border: solid thin #333;
+       border-radius: .5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 10px;
+       margin-right: 10px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F8 95%, #F0);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FF), color-stop(0.95,#F8), to(#F0));
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+       margin: 5px;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right: 15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+}
+
+.navpath a:hover
+{
+       color:#6884BD;
+}
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 10px;
+}
+
diff --git a/include/pg-doxy/tool/bin/doxygen b/include/pg-doxy/tool/bin/doxygen
new file mode 100755 (executable)
index 0000000..3662da8
Binary files /dev/null and b/include/pg-doxy/tool/bin/doxygen differ
diff --git a/include/pg-doxy/tool/bin/doxytag b/include/pg-doxy/tool/bin/doxytag
new file mode 100755 (executable)
index 0000000..adb0c90
Binary files /dev/null and b/include/pg-doxy/tool/bin/doxytag differ
diff --git a/include/pg-doxy/tool/man/man1/doxygen.1 b/include/pg-doxy/tool/man/man1/doxygen.1
new file mode 100644 (file)
index 0000000..a3d8c9a
--- /dev/null
@@ -0,0 +1,46 @@
+.TH DOXYGEN "1" "July 2010" "doxygen 1.7.0" "User Commands"
+.SH NAME
+doxygen \- documentation system for various programming languages
+.SH DESCRIPTION
+Doxygen is a documentation system for C++, C, Java, Objective-C, IDL
+(Corba and Microsoft flavors) and to some extent PHP, C#, and D.
+.PP
+You can use doxygen in a number of ways:
+.TP
+1) Use doxygen to generate a template configuration file:
+.IP
+doxygen [-s] \fB\-g\fR [configName]
+.IP
+If - is used for configName doxygen will write to standard output.
+.TP 
+2) Use doxygen to update an old configuration file:
+.IP
+doxygen [-s] \fB\-u\fR [configName]
+.TP
+3) Use doxygen to generate documentation using an existing configuration file:
+.IP
+doxygen [configName]
+.IP
+If - is used for configName doxygen will read from standard input.
+.TP
+4) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
+.TP
+RTF:
+doxygen \fB\-w\fR rtf styleSheetFile
+.TP
+HTML:
+doxygen \fB\-w\fR html headerFile footerFile styleSheetFile [configFile]
+.TP
+LaTeX: doxygen \fB\-w\fR latex headerFile styleSheetFile [configFile]
+.TP
+5) Use doxygen to generate an rtf extensions file
+.TP
+RTF:
+doxygen \fB\-e\fR rtf extensionsFile
+.PP
+If \fB\-s\fR is specified the comments in the config file will be omitted.
+If configName is omitted `Doxyfile' will be used as a default.
+.SH AUTHOR
+Doxygen version 1.7.0, Copyright Dimitri van Heesch 1997-2007
+.SH SEE ALSO
+doxytag(1), doxywizard(1).
diff --git a/include/pg-doxy/tool/man/man1/doxytag.1 b/include/pg-doxy/tool/man/man1/doxytag.1
new file mode 100644 (file)
index 0000000..f496899
--- /dev/null
@@ -0,0 +1,21 @@
+.TH DOXYTAG "1" "July 2010" "doxytag 1.7.0" "User Commands"
+.SH NAME
+doxytag \- generates a tag file and/or a search index for a set of HTML files
+.SH SYNOPSIS
+.B doxytag
+[\fI-t tag_file\fR] [\fI-s index_file\fR] [ \fIhtml_file \fR[\fIhtml_file\fR...] ]
+.SH DESCRIPTION
+Generates a tag file and/or a search index for a set of HTML files.  Use
+doxysearch as a CGI program to search the tag file generated by doxytag.
+.SH OPTIONS
+.TP
+\fB\-t\fR <tag_file>
+Generate tag file <tag_file>.
+.TP
+\fB\-s\fR <index_file>
+Generate search index <index_file>.
+.PP
+If no HTML files are given all files in the current dir that
+have a .html extension are parsed.
+.SH SEE ALSO
+doxygen(1), doxywizard(1).
diff --git a/include/simple_util.h b/include/simple_util.h
new file mode 100755 (executable)
index 0000000..0c24ee0
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 __SIMPLE_UTIL__
+#define __SIMPLE_UTIL__
+
+#include <unistd.h>
+#include <ctype.h>
+#include <dlog.h>
+
+#undef LOG_TAG
+#define LOG_TAG "SYSPOPUP"
+
+#define MAX_LOCAL_BUFSZ 128
+
+#define _E(fmt, arg...) LOGE("[%s,%d] "fmt , __FUNCTION__, __LINE__, ##arg)
+#define _D(fmt, arg...) LOGD("[%s,%d] "fmt , __FUNCTION__, __LINE__, ##arg)
+
+#endif
+
diff --git a/include/syspopup.h b/include/syspopup.h
new file mode 100755 (executable)
index 0000000..db742ab
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 __SYSPOPUP_H__
+#define __SYSPOPUP_H__
+
+#include <utilX.h>
+#include <bundle.h>
+#include <Elementary.h>
+
+/**
+ * @mainpage
+ * 
+ * This is System Popup Library 
+ * This library help to create system popup application & to launch/destroy system popup application
+ *
+ */
+
+/**
+ * @close
+ * @ingroup APPLICATION_FRAMEWORK
+ * @defgroup syspopup System Popup Library 
+ * @{
+ */
+
+/**
+ * @file        syspopup.h 
+ * @brief       System Popup UI Library
+ *
+ * Patched by   Knhoon Baik <knhoon.baik@samsung.com>
+ * Patched by  Noha Park <noha.park@samsung.com> 
+ */
+
+/**
+ * @defgroup syspopup_ui       Helper Library to create system popup application
+ * @ingroup syspopup 
+ * @brief                      Helper Library to create system popup application
+ */
+
+/**
+ * @addtogroup syspopup_ui
+ * @{
+ */
+
+/** 
+ *@brief action handler supplied by user 
+ *     def_term_fn is called when event to destroy all system popup occur
+ *     def_timeout_fn is called when the system popup's timeout is expired
+ */
+struct _syspopup_handler {
+       int (*def_term_fn) (bundle *, void *);
+       /**< handler supplied by user to process termination request */
+       int (*def_timeout_fn) (bundle *, void *);
+       /**< handler supplied by user to process timeout */
+};
+
+typedef struct _syspopup_handler syspopup_handler;
+
+/**
+ * @brief       This API make elm system popup window
+ *
+ *              This API make elm system popup window. 
+ *             and then, make given elm system popup window as system popup type
+ *             and set system popup properties based on system popup information DB.\n
+ *             system popup properties to be set : timeout, default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @param[in]   handler         user-supplied handler for handling system popup internal event.
+ * @param[in]  parent          parent window created with elm_win_add.
+ * @param[in]   user_data      user-supplied data
+ * @return      0 if success, -1 if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int syspopup_create(bundle *b, syspopup_handler *handler,
+                   Evas_Object *parent, void *user_data);
+
+/**
+ * @brief       This API reset created the elm system popup's properties
+ *
+ *             This API reset created the elm system popup's properties based on system popup information DB after extracting popup name from given bundle
+ *             system popup properties to be reset : timeout, default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int syspopup_reset(bundle *b);
+
+/**
+ * @brief       This API ask that the system popup is created and is running 
+ *
+ *             This API ask that the the system popup with popup name is created and is running after extracting popup name from given bundle. 
+ *
+ * @param[in]   b              bundle received by app_reset handler (included system popup name)
+ * @return     true / false      
+ * @retval     1       app already has the system popup
+ * @retval      0      app has not the system popup
+ */
+int syspopup_has_popup(bundle *b);
+
+/** @} */
+
+#endif
+
diff --git a/include/syspopup_api.h b/include/syspopup_api.h
new file mode 100755 (executable)
index 0000000..c107d76
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 API
+#define API __attribute__ ((visibility("default")))
+#endif
+
diff --git a/include/syspopup_caller.h b/include/syspopup_caller.h
new file mode 100755 (executable)
index 0000000..c534707
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 __SYSPOPUP_CALLER_H__
+#define __SYSPOPUP_CALLER_H__
+
+#include <bundle.h>
+#include <aul.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @file        syspopup_caller.h 
+ * @brief       Library to launch/destroy System Popup Application
+ *
+ * Patched by   Knhoon Baik <knhoon.baik@samsung.com>
+ * Patched by   Noha Park <noha.park@samsung.com> 
+ */
+
+/**
+ * @defgroup syspopup_caller    Helper Library to launch/destroy system popup application
+ * @ingroup syspopup 
+ * @brief                       Helper Library to launch/destroy system popup application
+ */
+
+/**
+ * @addtogroup syspopup_caller
+ * @{
+ */
+
+/**
+ * @brief       This API launch the system popup application with given popup name.
+ *
+ *              This API launch the system popup application.
+ *              This API find system popup application package name with given popup name from system popup infomation DB.\n
+ *              And then, launch found application package
+ *
+ * @param[in]   popup_name      system popup application name to launch (not package name)
+ * @param[in]   b               extra bundle(arguement) to toss the popup application 
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0               - success
+ * @retval      -1              - generic error
+ *
+ * @sample code
+ * @code
+ *
+ * ...
+ *     bundle *b = NULL;
+ *
+ *     b = bundle_create();
+ *     bundle_add(b, "_SYSPOPUP_TITLE_", "System Popup Title");
+ *     bundle_add(b, "_SYSPOPUP_CONTENT_", "System Popup Content");
+ *
+ *     ret = syspopup_launch("syspopup-app", b);
+ *
+ *     bundle_free(b);
+ * ...
+ *
+ * @endcode
+ */
+int syspopup_launch(char *popup_name, bundle *b);
+
+/**
+ * @brief       This API generate destroy event to all system popup application.
+ *             This API can call with proper permission (root or inhouse)
+ *
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0               - success
+ * @retval      -1              - generic error
+ */
+int syspopup_destroy_all();
+
+/** @} */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/include/syspopup_core.h b/include/syspopup_core.h
new file mode 100755 (executable)
index 0000000..463a60a
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 __SYSPOPUP_CORE_H__
+#define __SYSPOPUP_CORE_H__
+
+#include <glib.h>
+#include <bundle.h>
+#include "syspopup_db.h"
+
+#define SYSPOPUP_DEFAULT_TIMEOUT 20    /* sec */
+#define SYSPOPUP_TERM_NOTI_PATH  "/usr/share/popup_noti_term"
+
+struct _syspopup {
+       int id;
+       char *name;
+       int (*def_term_fn) (bundle *, void *);
+       int (*def_timeout_fn) (bundle *, void *);
+       guint timeout_id;
+       def_term_action_t term_act;
+       def_endkey_action_t endkey_act;
+       void *user_data;
+       void *internal_data;
+       void *win;
+       int (*rotate_cb) (void *, void *, void *);
+       bundle *dupped_bundle;
+       struct _syspopup *next;
+};
+
+typedef struct _syspopup syspopup;
+
+syspopup *_syspopup_get_head();
+int _syspopup_add_new(syspopup *pinfo);
+syspopup *_syspopup_find(const char *name);
+syspopup *_syspopup_find_by_id(int id);
+void _syspopup_del(int id);
+
+int _syspopup_init(void (*term_handler) (void *),
+                  gboolean(*timeout_handler) (void *));
+int _syspopup_reset_timeout(syspopup *sp, syspopup_info_t *info);
+int _syspopup_set_term_type(syspopup *sp, syspopup_info_t *info);
+int _syspopup_set_endkey_type(syspopup *sp, syspopup_info_t *info);
+
+const char *_syspopup_get_name_from_bundle(bundle *b);
+int _syspopup_set_name_to_bundle(bundle *b, char *popup_name);
+
+#endif
+
diff --git a/include/syspopup_db.h b/include/syspopup_db.h
new file mode 100755 (executable)
index 0000000..f57e0dd
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 __SYSPOPUP_DB_H__
+#define __SYSPOPUP_DB_H__
+
+enum _def_term_action_t {
+       SYSPOPUP_TERM,
+       SYSPOPUP_HIDE,
+       SYSPOPUP_IGNORE
+};
+
+typedef enum _def_term_action_t def_term_action_t;
+
+enum _def_endkey_action_t {
+       SYSPOPUP_KEYEND_TERM,
+       SYSPOPUP_KEYEND_HIDE,
+       SYSPOPUP_KEYEND_IGNORE
+};
+
+typedef enum _def_endkey_action_t def_endkey_action_t;
+
+struct _syspopup_info_t {
+       char *name;             /* system popup name */
+       int prio;               /* sys popup priority :
+                                        cf - Utilx_Notification_Level */
+       int focus;              /* sys popup focus : ecore_x_icccm_hints_set */
+       unsigned int timeout;   /* default system popup timeout */
+       def_term_action_t term_act;     /* default terminate act */
+       def_endkey_action_t endkey_act; /* default terminate act */
+       char *pkgname;          /* package name to be launched */
+};
+
+typedef struct _syspopup_info_t syspopup_info_t;
+
+int _syspopup_info_add(syspopup_info_t *pinfo);
+syspopup_info_t *_syspopup_info_get(const char *popup_name);
+void _syspopup_info_free(syspopup_info_t *pinfo);
+
+#endif
+
diff --git a/packaging/syspopup.spec b/packaging/syspopup.spec
new file mode 100644 (file)
index 0000000..f3f3460
--- /dev/null
@@ -0,0 +1,123 @@
+
+Name:       syspopup
+Summary:    syspopup package
+Version:    0.0.58
+Release:    1
+Group:      TO_BE/FILLED_IN
+License:    TO_BE/FILLED_IN
+Source0:    syspopup-%{version}.tar.gz
+Requires(post): /sbin/ldconfig
+Requires(post): /bin/touch
+Requires(postun): /sbin/ldconfig
+BuildRequires:  cmake
+BuildRequires:  pkgconfig(sqlite3)
+BuildRequires:  pkgconfig(bundle)
+BuildRequires:  pkgconfig(dlog)
+BuildRequires:  pkgconfig(utilX)
+BuildRequires:  pkgconfig(dbus-glib-1)
+BuildRequires:  pkgconfig(x11)
+BuildRequires:  pkgconfig(heynoti)
+BuildRequires:  pkgconfig(aul)
+BuildRequires:  pkgconfig(evas)
+BuildRequires:  pkgconfig(quickpanel)
+BuildRequires:  pkgconfig(appcore-efl)
+
+
+%description
+syspopup package for popup
+
+
+%package devel
+Summary:    syspopup development package
+Group:      Development/Libraries
+Requires:   %{name} = %{version}-%{release}
+
+%description devel
+syspopup development package popup
+
+%package caller
+Summary:    syspopup-caller package
+Group:      TO_BE/FILLED_IN
+Requires:   %{name} = %{version}-%{release}
+Requires(post): /sbin/ldconfig
+Requires(postun): /sbin/ldconfig
+
+%description caller
+syspopup-caller package for popup
+
+%package caller-devel
+Summary:    syspopup-caller development package
+Group:      TO_BE/FILLED_IN
+Requires:   %{name} = %{version}-%{release}
+
+%description caller-devel
+syspopup-caller development package for popup
+
+
+%prep
+%setup -q -n %{name}-%{version}
+
+CFLAGS=${_cflags} cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DEXTRA_CFLAGS=-fPIC
+
+%build
+
+
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+%make_install
+
+mkdir -p %{buildroot}/opt/dbspace
+#sqlite3 $(CURDIR)/debian/tmp/opt/dbspace/.syspopup.db < $(CURDIR)/data/syspopup_db.sql
+touch %{buildroot}%{_datadir}/popup_noti_term
+
+
+
+%post
+/sbin/ldconfig
+
+mkdir -p /opt/dbspace/
+sqlite3 /opt/dbspace/.syspopup.db < /opt/share/syspopup_db.sql
+rm -rf /opt/share/syspopup_db.sql
+
+%postun -p /sbin/ldconfig
+
+
+
+
+%post caller -p /sbin/ldconfig
+
+%postun caller -p /sbin/ldconfig
+
+
+
+
+%files
+%defattr(-,root,root,-)
+%{_datadir}/icons/default/small/org.tizen.syspopup-app.png
+%{_bindir}/sp_test
+%{_bindir}/syspopup-app
+%{_libdir}/libsyspopup.so.0.1.0
+/opt/share/syspopup_db.sql
+/opt/share/applications/org.tizen.syspopup-app.desktop
+%{_datadir}/popup_noti_term
+
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/SLP_SYSPOPUP_PG.h
+%{_includedir}/syspopup.h
+%{_libdir}/libsyspopup.so
+%{_libdir}/pkgconfig/syspopup.pc
+
+%files caller
+%defattr(-,root,root,-)
+%{_libdir}/libsyspopup_caller.so.0.1.0
+
+%files caller-devel
+%defattr(-,root,root,-)
+%{_libdir}/libsyspopup_caller.so
+%{_includedir}/syspopup_caller.h
+%{_libdir}/pkgconfig/syspopup-caller.pc
+
diff --git a/pg-doxy/doxygen.conf b/pg-doxy/doxygen.conf
new file mode 100755 (executable)
index 0000000..a7cd424
--- /dev/null
@@ -0,0 +1,850 @@
+# Doxyfile 1.5.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+#       TAG = value [value, ...]
+# For lists items can also be appended using:
+#       TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+DOXYFILE_ENCODING      = UTF-8
+PROJECT_NAME           =  SLP-Developer Library
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = ./doxygen_output
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = NO
+ALWAYS_DETAILED_SEC    = YES
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = YES
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = YES
+INHERIT_DOCS           = YES
+SEPARATE_MEMBER_PAGES  = YES
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = NO
+OPTIMIZE_OUTPUT_JAVA   = NO
+BUILTIN_STL_SUPPORT    = NO
+CPP_CLI_SUPPORT        = NO
+DISTRIBUTE_GROUP_DOC   = NO
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = YES
+EXTRACT_STATIC         = YES
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = YES
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = NO
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = YES
+SORT_BY_SCOPE_NAME     = YES
+SORT_GROUP_NAMES     = YES
+GENERATE_TODOLIST      = NO
+USE_INLINE_TREES      = NO
+SHOW_NAMESPACES                = NO
+HTML DYNAMIC SECTIONS          = YES
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= NO
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = NO
+FILE_VERSION_FILTER    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated 
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET                  = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are 
+# generated by doxygen. Possible values are YES and NO. If left blank 
+# NO is used.
+
+WARNINGS               = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED   = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
+# potential errors in the documentation, such as not documenting some 
+# parameters in a documented function, or documenting parameters that 
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR      = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for 
+# functions that are documented, but have no documentation for their parameters 
+# or return value. If set to NO (the default) doxygen will only warn about 
+# wrong or incomplete parameter documentation, but not about the absence of 
+# documentation.
+
+WARN_NO_PARAMDOC       = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that 
+# doxygen can produce. The string should contain the $file, $line, and $text 
+# tags, which will be replaced by the file and line number from which the 
+# warning originated and the warning text. Optionally the format may contain 
+# $version, which will be replaced by the version of the file (if it could 
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT            = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning 
+# and error messages should be written. If left blank the output is written 
+# to stderr.
+
+WARN_LOGFILE           = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain 
+# documented source files. You may enter file names like "myfile.cpp" or 
+# directories like "/usr/src/myproject". Separate the files or directories 
+# with spaces.
+
+INPUT                  = .. 
+
+# This tag can be used to specify the character encoding of the source files that 
+# doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
+# input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. 
+# See http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+INPUT_ENCODING         = UTF-8
+FILE_PATTERNS          = *.h \
+                        *.doxy
+RECURSIVE              = YES
+EXCLUDE                =  
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = */test/* \
+                       */debian/* \
+                       */lost+found/* \
+                       */i386/* \
+                       */arm/* \
+                       */simulator/*  \
+                       *test* \
+                       */voda3rd/* 
+EXCLUDE_SYMBOLS        = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = ../image 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
+# be generated. Documented entities will be cross-referenced with these sources. 
+# Note: To get rid of all source code in the generated output, make sure also 
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER         = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body 
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES         = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
+# doxygen to hide any special comment blocks from generated source code 
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS    = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default) 
+# then for each documented function all documented 
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default) 
+# then for each documented function all documented entities 
+# called/used by that function will be listed.
+
+REFERENCES_RELATION    = YES
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.  Otherwise they will link to the documentstion.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code 
+# will point to the HTML generated by the htags(1) tool instead of doxygen 
+# built-in source browser. The htags tool is part of GNU's global source 
+# tagging system (see http://www.gnu.org/software/global/global.html). You 
+# will need version 4.8.6 or higher.
+
+USE_HTAGS              = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
+# will generate a verbatim copy of the header file for each class for 
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS       = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
+# of all compounds will be generated. Enable this if the project 
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 10
+IGNORE_PREFIX          = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
+# generate HTML output.
+
+GENERATE_HTML          = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT            = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION    = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard header.
+
+HTML_HEADER            = 
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
+# each generated HTML page. If it is left blank doxygen will generate a 
+# standard footer.
+
+HTML_FOOTER            =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
+# style sheet that is used by each HTML page. It can be used to 
+# fine-tune the look of the HTML output. If the tag is left blank doxygen 
+# will generate a default style sheet. Note that doxygen will try to copy 
+# the style sheet file to the HTML output directory, so don't put your own 
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET        =./slp_doxy.css
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
+# files or namespaces will be aligned in HTML using tables. If set to 
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS     = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
+# will be generated that can be used as input for tools like the 
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) 
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP      = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
+# be used to specify the file name of the resulting .chm file. You 
+# can add a path in front of the file if the result should not be 
+# written to the html output directory.
+
+CHM_FILE               = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
+# be used to specify the location (absolute path including file name) of 
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION           = 
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
+# controls if a separate .chi index file is generated (YES) or that 
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI           = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
+# controls whether a binary table of contents is generated (YES) or a 
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC             = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members 
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND             = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at 
+# top of each HTML page. The value NO (the default) enables the index and 
+# the value YES disables it.
+
+DISABLE_INDEX          = NO
+
+# This tag can be used to set the number of enum values (range [1..20]) 
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE   = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that 
+# is generated for HTML Help). For this to work a browser that supports 
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, 
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are 
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW      = YES
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
+# used to set the initial width (in pixels) of the frame in which the tree 
+# is shown.
+
+TREEVIEW_WIDTH         = 190
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
+# generate Latex output.
+
+GENERATE_LATEX         = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT           = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME         = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
+# generate index for LaTeX. If left blank `makeindex' will be used as the 
+# default command name.
+
+MAKEINDEX_CMD_NAME     = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
+# LaTeX documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_LATEX          = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used 
+# by the printer. Possible values are: a4, a4wide, letter, legal and 
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE             = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES         = 
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
+# the generated latex document. The header should contain everything until 
+# the first chapter. If it is left blank doxygen will generate a 
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER           = 
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
+# contain links (just like the HTML output) instead of page references 
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS         = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
+# plain latex in the generated Makefile. Set this option to YES to get a 
+# higher quality PDF documentation.
+
+USE_PDFLATEX           = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
+# command to the generated LaTeX files. This will instruct LaTeX to keep 
+# running if errors occur, instead of asking the user for help. 
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE        = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
+# include the index chapters (such as File Index, Compound Index, etc.) 
+# in the output.
+
+LATEX_HIDE_INDICES     = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
+# The RTF output is optimized for Word 97 and may not look very pretty with 
+# other RTF readers or editors.
+
+GENERATE_RTF           = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT             = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
+# RTF documents. This may be useful for small projects and may help to 
+# save some trees in general.
+
+COMPACT_RTF            = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
+# will contain hyperlink fields. The RTF file will 
+# contain links (just like the HTML output) instead of page references. 
+# This makes the output suitable for online browsing using WORD or other 
+# programs which support those fields. 
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS         = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's 
+# config file, i.e. a series of assignments. You only have to provide 
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE    = 
+
+# Set optional variables used in the generation of an rtf document. 
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE    = 
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
+# generate man pages
+
+GENERATE_MAN           = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT             = man
+
+# The MAN_EXTENSION tag determines the extension that is added to 
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION          = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
+# then it will generate one additional man file for each entity 
+# documented in the real man page(s). These additional files 
+# only source the real man page, but without them the man command 
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS              = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will 
+# generate an XML file that captures the structure of 
+# the code including all documentation.
+
+GENERATE_XML           = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT             = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_SCHEMA             = 
+
+# The XML_DTD tag can be used to specify an XML DTD, 
+# which can be used by a validating XML parser to check the 
+# syntax of the XML files.
+
+XML_DTD                = 
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
+# dump the program listings (including syntax highlighting 
+# and cross-referencing information) to the XML output. Note that 
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING     = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
+# generate an AutoGen Definitions (see autogen.sf.net) file 
+# that captures the structure of the code including all 
+# documentation. Note that this feature is still experimental 
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF   = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
+# generate a Perl module file that captures the structure of 
+# the code including all documentation. Note that this 
+# feature is still experimental and incomplete at the 
+# moment.
+
+GENERATE_PERLMOD       = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX          = YES
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
+# nicely formatted so it can be parsed by a human reader.  This is useful 
+# if you want to understand what is going on.  On the other hand, if this 
+# tag is set to NO the size of the Perl module output will be much smaller 
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY         = YES
+
+# The names of the make variables in the generated doxyrules.make file 
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
+# This is useful so different doxyrules.make files included by the same 
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX = 
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
+# evaluate all C-preprocessor directives found in the sources and include 
+# files.
+
+ENABLE_PREPROCESSING   = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
+# names in the source code. If set to NO (the default) only conditional 
+# compilation will be performed. Macro expansion can be done in a controlled 
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION        = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
+# then the macro expansion is limited to the macros specified with the 
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF     = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES        = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that 
+# contain include files that are not input files but should be processed by 
+# the preprocessor.
+
+INCLUDE_PATH           = 
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
+# patterns (like *.h and *.hpp) to filter out the header-files in the 
+# directories. If left blank, the patterns specified with FILE_PATTERNS will 
+# be used.
+
+INCLUDE_FILE_PATTERNS  = 
+
+# The PREDEFINED tag can be used to specify one or more macro names that 
+# are defined before the preprocessor is started (similar to the -D option of 
+# gcc). The argument of the tag is a list of macros of the form: name 
+# or name=definition (no spaces). If the definition and the = are 
+# omitted =1 is assumed. To prevent a macro definition from being 
+# undefined via #undef or recursively expanded use the := operator 
+# instead of the = operator.
+
+PREDEFINED             = 
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
+# this tag can be used to specify a list of macro names that should be expanded. 
+# The macro definition that is found in the sources will be used. 
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED      = 
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
+# doxygen's preprocessor will remove all function-like macros that are alone 
+# on a line, have an all uppercase name, and do not end with a semicolon. Such 
+# function macros are typically used for boiler-plate code, and will confuse 
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS   = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. 
+# Optionally an initial location of the external documentation 
+# can be added for each tagfile. The format of a tag file without 
+# this location is as follows: 
+#   TAGFILES = file1 file2 ... 
+# Adding location for the tag files is done as follows: 
+#   TAGFILES = file1=loc1 "file2 = loc2" ... 
+# where "loc1" and "loc2" can be relative or absolute paths or 
+# URLs. If a location is present for each tag, the installdox tool 
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen 
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES               = 
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE       = 
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
+# in the class index. If set to NO only the inherited external classes 
+# will be listed.
+
+ALLEXTERNALS           = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
+# in the modules index. If set to NO, only the current project's groups will 
+# be listed.
+
+EXTERNAL_GROUPS        = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script 
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH              = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
+# or super classes. Setting the tag to NO turns the diagrams off. Note that 
+# this option is superseded by the HAVE_DOT option below. This is only a 
+# fallback. It is recommended to install and use dot, since it yields more 
+# powerful graphs.
+
+CLASS_DIAGRAMS         = NO
+
+# You can define message sequence charts within doxygen comments using the \msc 
+# command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to 
+# produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to 
+# specify the directory where the mscgen tool resides. If left empty the tool is assumed to 
+# be found in the default search path.
+
+MSCGEN_PATH            = 
+
+# If set to YES, the inheritance and collaboration graphs will hide 
+# inheritance and usage relations if the target is undocumented 
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS   = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
+# available from the path. This tool is part of Graphviz, a graph visualization 
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT               = NO
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect inheritance relations. Setting this tag to YES will force the 
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH            = NO
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for each documented class showing the direct and 
+# indirect implementation dependencies (inheritance, containment, and 
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH    = NO
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS           = NO
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
+# collaboration diagrams in a style similar to the OMG's Unified Modeling 
+# Language.
+
+UML_LOOK               = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the 
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS     = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
+# tags are set to YES then doxygen will generate a graph for each documented 
+# file showing the direct and indirect include dependencies of the file with 
+# other documented files.
+
+INCLUDE_GRAPH          = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
+# documented header file showing the documented files that directly or 
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH      = NO
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a call dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable call graphs for selected 
+# functions only using the \callgraph command.
+
+CALL_GRAPH             = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then doxygen will 
+# generate a caller dependency graph for every global function or class method. 
+# Note that enabling this option will significantly increase the time of a run. 
+# So in most cases it will be better to enable caller graphs for selected 
+# functions only using the \callergraph command.
+
+CALLER_GRAPH           = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY    = NO
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
+# then doxygen will show the dependencies a directory has on other directories 
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH        = NO
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT       = jpg
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be 
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH               = 
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that 
+# contain dot files that are included in the documentation (see the 
+# \dotfile command).
+
+DOTFILE_DIRS           = 
+
+# The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
+# nodes that will be shown in the graph. If the number of nodes in a graph 
+# becomes larger than this value, doxygen will truncate the graph, which is 
+# visualized by representing a node as a red box. Note that doxygen will always 
+# show the root nodes and its direct children regardless of this setting.
+
+DOT_GRAPH_MAX_NODES    = 50
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
+# background. This is disabled by default, which results in a white background. 
+# Warning: Depending on the platform used, enabling this option may lead to 
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
+# read).
+
+DOT_TRANSPARENT        = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
+# files in one run (i.e. multiple -o and -T options on the command line). This 
+# makes dot run faster, but since only newer versions of dot (>1.8.10) 
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS      = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
+# generate a legend page explaining the meaning of the various boxes and 
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND        = NO
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
+# remove the intermediate dot files that are used to generate 
+# the various graphs.
+
+DOT_CLEANUP            = NO
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be 
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE           = YES
diff --git a/pg-doxy/pg-doxy.sh b/pg-doxy/pg-doxy.sh
new file mode 100755 (executable)
index 0000000..f542386
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Create doxygen from debian package server
+# By Jungbae Lee (yi_jungbae@samsung.com)
+
+cd `dirname $0`
+CWD=`pwd`
+
+# Use doxygen 1.7.0
+export PATH=/usr/local/bin:${HOME}/mytools/bin:${PATH}
+export LD_LIBRARY_PATH=${HOME}/mytools/lib:${LD_LIBRARY_PATH}
+
+
+### Configuration
+SBOX=/scratchbox/users/$USER/home/$USER
+DOXYGEN_OUTPUT_DIR=$CWD/doxygen_output
+DOXYGEN=./tool/bin/doxygen
+DOXY_CONF=doxygen.conf
+IMAGE_DIR=../image #need to change
+#IMAGE_DIR=[fill your image path]
+
+
+
+####doxygen configuration :: output Directory
+mkdir $DOXYGEN_OUTPUT_DIR
+
+echo "Doxygen running..."
+if [ ! -e $CWD/doxygen_output ]; then
+       mkdir $CWD/doxygen_output
+fi
+# Run doxygen
+$DOXYGEN $DOXY_CONF 2>&1
+
+#image copy
+cp $CWD/$IMAGE_DIR/* $DOXYGEN_OUTPUT_DIR/html/
+
+echo "Finished!"
+exit;
+
diff --git a/pg-doxy/slp_doxy.css b/pg-doxy/slp_doxy.css
new file mode 100644 (file)
index 0000000..12c03ac
--- /dev/null
@@ -0,0 +1,699 @@
+/* The standard CSS for doxygen */
+
+body, table, div, p, dl {
+       font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;
+       font-size: 12px;
+}
+
+/* @group Heading Levels */
+
+h1 {
+       font-size: 18pt;
+       color: #3366ED;
+}
+
+h1.pg {
+       font-size: 18pt;
+       color: #336666;
+       margin-right:-0.6pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.5pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+h2 {
+       font-size: 14pt;
+       color: #336666;
+}
+h2.pg {
+       font-size: 14pt;
+       color: #336666;
+       margin-right:-0.1pt; 
+       margin-left:0cm; 
+       padding-top:0cm; 
+       padding-right:0cm; 
+       padding-bottom:1pt; 
+       padding-left:0cm; 
+       border-bottom-width:1.2pt; 
+       border-bottom-color:#336666; 
+       border-top-style:none; 
+       border-right-style:none; 
+       border-bottom-style:solid; 
+       border-left-style:none;
+}
+
+
+h3 {
+       font-size: 12pt;
+       color: #336666;
+}
+h3.pg {
+       font-size: 12pt;
+       color: #336666;
+}
+
+
+
+dt {
+       font-weight: bold;
+}
+
+div.multicol {
+       -moz-column-gap: 1em;
+       -webkit-column-gap: 1em;
+       -moz-column-count: 3;
+       -webkit-column-count: 3;
+}
+
+p.startli, p.startdd, p.starttd {
+       margin-top: 2px;
+}
+
+p.endli {
+       margin-bottom: 0px;
+}
+
+p.enddd {
+       margin-bottom: 4px;
+}
+
+p.endtd {
+       margin-bottom: 2px;
+}
+
+/* @end */
+
+caption {
+       font-weight: bold;
+}
+
+span.legend {
+        font-size: 70%;
+        text-align: center;
+}
+
+h3.version {
+        font-size: 90%;
+        text-align: center;
+}
+
+div.qindex, div.navtab{
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       padding: 2px;
+}
+
+div.qindex, div.navpath {
+       width: 100%;
+       line-height: 140%;
+}
+
+div.navtab {
+       margin-right: 15px;
+}
+
+/* @group Link Styling */
+
+a {
+       color: #3D578C;
+       font-weight: normal;
+       text-decoration: none;
+}
+
+.contents a:visited {
+       color: #4665A2;
+}
+
+a:hover {
+       text-decoration: underline;
+}
+
+a.qindex {
+       font-weight: bold;
+}
+
+a.qindexHL {
+       font-weight: bold;
+       background-color: #9CAFD4;
+       color: #ffffff;
+       border: 1px double #869DCA;
+}
+
+.contents a.qindexHL:visited {
+        color: #ffffff;
+}
+
+a.el {
+       font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code {
+       color: #4665A2;
+}
+
+a.codeRef {
+       color: #4665A2;
+}
+
+/* @end */
+
+dl.el {
+       margin-left: -1cm;
+}
+
+.fragment {
+       font-family: monospace, fixed;
+       font-size: 105%;
+}
+
+pre.fragment {
+       border: 1px solid #C4CFE5;
+       background-color: #FBFCFD;
+       padding: 4px 6px;
+       margin: 4px 8px 4px 2px;
+       overflow: auto;
+       word-wrap: break-word;
+       font-size:  9pt;
+       line-height: 125%;
+}
+
+div.ah {
+       background-color: black;
+       font-weight: bold;
+       color: #ffffff;
+       margin-bottom: 3px;
+       margin-top: 3px
+       padding: .2em;
+       border: solid thin #333;
+       border-radius: .5em;
+       -webkit-border-radius: .5em;
+       -moz-border-radius: .5em;
+       -webkit-box-shadow: 2px 2px 3px #999;
+       -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+       background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+       background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000);
+}
+
+div.groupHeader {
+       margin-left: 16px;
+       margin-top: 12px;
+       margin-bottom: 6px;
+       font-weight: bold;
+}
+
+div.groupText {
+       margin-left: 16px;
+       font-style: italic;
+}
+
+body {
+       background: white;
+       color: black;
+        margin: 0;
+}
+
+div.contents {
+       margin-top: 10px;
+       margin-left: 10px;
+       margin-right: 10px;
+}
+
+td.indexkey {
+       background-color: #EBEFF6;
+       font-weight: bold;
+       border: 1px solid #C4CFE5;
+       margin: 2px 0px 2px 0;
+       padding: 2px 10px;
+}
+
+td.indexvalue {
+       background-color: #EBEFF6;
+       border: 1px solid #C4CFE5;
+       padding: 2px 10px;
+       margin: 2px 0px;
+}
+
+tr.memlist {
+       background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+       text-align: center;
+}
+
+img.formulaDsp {
+       
+}
+
+img.formulaInl {
+       vertical-align: middle;
+}
+
+div.center {
+       text-align: center;
+        margin-top: 0px;
+        margin-bottom: 0px;
+        padding: 0px;
+}
+
+div.center img {
+       border: 0px;
+}
+
+address.footer {
+       text-align: right;
+       padding-right: 12px;
+}
+
+img.footer {
+       border: 0px;
+       vertical-align: middle;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+       color: #008000
+}
+
+span.keywordtype {
+       color: #604020
+}
+
+span.keywordflow {
+       color: #e08000
+}
+
+span.comment {
+       color: #800000
+}
+
+span.preprocessor {
+       color: #806020
+}
+
+span.stringliteral {
+       color: #002080
+}
+
+span.charliteral {
+       color: #008080
+}
+
+span.vhdldigit { 
+       color: #ff00ff 
+}
+
+span.vhdlchar { 
+       color: #000000 
+}
+
+span.vhdlkeyword { 
+       color: #700070 
+}
+
+span.vhdllogic { 
+       color: #ff0000 
+}
+
+/* @end */
+
+/*
+.search {
+       color: #003399;
+       font-weight: bold;
+}
+
+form.search {
+       margin-bottom: 0px;
+       margin-top: 0px;
+}
+
+input.search {
+       font-size: 75%;
+       color: #000080;
+       font-weight: normal;
+       background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+       font-size: 75%;
+}
+
+.dirtab {
+       padding: 4px;
+       border-collapse: collapse;
+       border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+       background: #EBEFF6;
+       font-weight: bold;
+}
+
+hr {
+       height: 0px;
+       border: none;
+       border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+       height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+       border-spacing: 0px;
+       padding: 0px;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+       background-color: #F9FAFC;
+       border: none;
+       margin: 4px;
+       padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+       padding: 0px 8px 4px 8px;
+       color: #555;
+}
+
+.memItemLeft, .memItemRight, .memTemplParams {
+       border-top: 1px solid #C4CFE5;
+}
+
+.memItemLeft, .memTemplItemLeft {
+        white-space: nowrap;
+}
+
+.memTemplParams {
+       color: #4665A2;
+        white-space: nowrap;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtemplate {
+       font-size: 80%;
+       color: #4665A2;
+       font-weight: normal;
+       margin-left: 3px;
+}
+
+.memnav {
+       background-color: #EBEFF6;
+       border: 1px solid #A3B4D7;
+       text-align: center;
+       margin: 2px;
+       margin-right: 15px;
+       padding: 2px;
+}
+
+.memitem {
+       padding: 0;
+       margin-bottom: 10px;
+}
+
+.memname {
+        white-space: nowrap;
+        font-weight: bold;
+        margin-left: 6px;
+}
+
+.memproto {
+        border-top: 1px solid #A8B8D9;
+        border-left: 1px solid #A8B8D9;
+        border-right: 1px solid #A8B8D9;
+        padding: 6px 0px 6px 0px;
+        color: #253555;
+        font-weight: bold;
+        text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+        /* firefox specific markup */
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        -moz-border-radius-topright: 8px;
+        -moz-border-radius-topleft: 8px;
+        /* webkit specific markup */
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        -webkit-border-top-right-radius: 8px;
+        -webkit-border-top-left-radius: 8px;
+        background-image:url('nav_f.png');
+        background-repeat:repeat-x;
+        background-color: #E2E8F2;
+
+}
+
+.memdoc {
+        border-bottom: 1px solid #A8B8D9;      
+        border-left: 1px solid #A8B8D9;      
+        border-right: 1px solid #A8B8D9; 
+        padding: 2px 5px;
+        background-color: #FBFCFD;
+        border-top-width: 0;
+        /* firefox specific markup */
+        -moz-border-radius-bottomleft: 8px;
+        -moz-border-radius-bottomright: 8px;
+        -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+        background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F8 95%, #F0);
+        /* webkit specific markup */
+        -webkit-border-bottom-left-radius: 8px;
+        -webkit-border-bottom-right-radius: 8px;
+        -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+        background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FF), color-stop(0.95,#F8), to(#F0));
+}
+
+.paramkey {
+       text-align: right;
+}
+
+.paramtype {
+       white-space: nowrap;
+}
+
+.paramname {
+       color: #602020;
+       white-space: nowrap;
+}
+.paramname em {
+       font-style: normal;
+}
+
+/* @end */
+
+/* @group Directory (tree) */
+
+/* for the tree view */
+
+.ftvtree {
+       font-family: sans-serif;
+       margin: 0px;
+}
+
+/* these are for tree view when used as main index */
+
+.directory {
+       font-size: 9pt;
+       font-weight: bold;
+       margin: 5px;
+}
+
+.directory h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+/*
+The following two styles can be used to replace the root node title
+with an image of your choice.  Simply uncomment the next two styles,
+specify the name of your image and be sure to set 'height' to the
+proper pixel height of your image.
+*/
+
+/*
+.directory h3.swap {
+       height: 61px;
+       background-repeat: no-repeat;
+       background-image: url("yourimage.gif");
+}
+.directory h3.swap span {
+       display: none;
+}
+*/
+
+.directory > h3 {
+       margin-top: 0;
+}
+
+.directory p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory div {
+       display: none;
+       margin: 0px;
+}
+
+.directory img {
+       vertical-align: -30%;
+}
+
+/* these are for tree view when not used as main index */
+
+.directory-alt {
+       font-size: 100%;
+       font-weight: bold;
+}
+
+.directory-alt h3 {
+       margin: 0px;
+       margin-top: 1em;
+       font-size: 11pt;
+}
+
+.directory-alt > h3 {
+       margin-top: 0;
+}
+
+.directory-alt p {
+       margin: 0px;
+       white-space: nowrap;
+}
+
+.directory-alt div {
+       display: none;
+       margin: 0px;
+}
+
+.directory-alt img {
+       vertical-align: -30%;
+}
+
+/* @end */
+
+div.dynheader {
+        margin-top: 8px;
+}
+
+address {
+       font-style: normal;
+       color: #2A3D61;
+}
+
+table.doxtable {
+       border-collapse:collapse;
+}
+
+table.doxtable td, table.doxtable th {
+       border: 1px solid #2D4068;
+       padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+       background-color: #374F7F;
+       color: #FFFFFF;
+       font-size: 110%;
+       padding-bottom: 4px;
+       padding-top: 5px;
+       text-align:left;
+}
+
+.tabsearch {
+       top: 0px;
+       left: 10px;
+       height: 36px;
+       background-image: url('tab_b.png');
+       z-index: 101;
+       overflow: hidden;
+       font-size: 13px;
+}
+
+.navpath ul
+{
+       font-size: 11px;
+       background-image:url('tab_b.png');
+       background-repeat:repeat-x;
+       height:30px;
+       line-height:30px;
+       color:#8AA0CC;
+       border:solid 1px #C2CDE4;
+       overflow:hidden;
+       margin:0px;
+       padding:0px;
+}
+
+.navpath li
+{
+       list-style-type:none;
+       float:left;
+       padding-left:10px;
+       padding-right: 15px;
+       background-image:url('bc_s.png');
+       background-repeat:no-repeat;
+       background-position:right;
+       color:#364D7C;
+}
+
+.navpath a
+{
+       height:32px;
+       display:block;
+       text-decoration: none;
+       outline: none;
+}
+
+.navpath a:hover
+{
+       color:#6884BD;
+}
+
+div.summary
+{
+       float: right;
+       font-size: 8pt;
+       padding-right: 5px;
+       width: 50%;
+       text-align: right;
+}       
+
+div.summary a
+{
+       white-space: nowrap;
+}
+
+div.header
+{
+        background-image:url('nav_h.png');
+        background-repeat:repeat-x;
+       background-color: #F9FAFC;
+       margin:  0px;
+       border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+       padding: 5px 5px 5px 10px;
+}
+
diff --git a/pg-doxy/tool/bin/doxygen b/pg-doxy/tool/bin/doxygen
new file mode 100755 (executable)
index 0000000..3662da8
Binary files /dev/null and b/pg-doxy/tool/bin/doxygen differ
diff --git a/pg-doxy/tool/bin/doxytag b/pg-doxy/tool/bin/doxytag
new file mode 100755 (executable)
index 0000000..adb0c90
Binary files /dev/null and b/pg-doxy/tool/bin/doxytag differ
diff --git a/pg-doxy/tool/man/man1/doxygen.1 b/pg-doxy/tool/man/man1/doxygen.1
new file mode 100644 (file)
index 0000000..a3d8c9a
--- /dev/null
@@ -0,0 +1,46 @@
+.TH DOXYGEN "1" "July 2010" "doxygen 1.7.0" "User Commands"
+.SH NAME
+doxygen \- documentation system for various programming languages
+.SH DESCRIPTION
+Doxygen is a documentation system for C++, C, Java, Objective-C, IDL
+(Corba and Microsoft flavors) and to some extent PHP, C#, and D.
+.PP
+You can use doxygen in a number of ways:
+.TP
+1) Use doxygen to generate a template configuration file:
+.IP
+doxygen [-s] \fB\-g\fR [configName]
+.IP
+If - is used for configName doxygen will write to standard output.
+.TP 
+2) Use doxygen to update an old configuration file:
+.IP
+doxygen [-s] \fB\-u\fR [configName]
+.TP
+3) Use doxygen to generate documentation using an existing configuration file:
+.IP
+doxygen [configName]
+.IP
+If - is used for configName doxygen will read from standard input.
+.TP
+4) Use doxygen to generate a template style sheet file for RTF, HTML or Latex.
+.TP
+RTF:
+doxygen \fB\-w\fR rtf styleSheetFile
+.TP
+HTML:
+doxygen \fB\-w\fR html headerFile footerFile styleSheetFile [configFile]
+.TP
+LaTeX: doxygen \fB\-w\fR latex headerFile styleSheetFile [configFile]
+.TP
+5) Use doxygen to generate an rtf extensions file
+.TP
+RTF:
+doxygen \fB\-e\fR rtf extensionsFile
+.PP
+If \fB\-s\fR is specified the comments in the config file will be omitted.
+If configName is omitted `Doxyfile' will be used as a default.
+.SH AUTHOR
+Doxygen version 1.7.0, Copyright Dimitri van Heesch 1997-2007
+.SH SEE ALSO
+doxytag(1), doxywizard(1).
diff --git a/pg-doxy/tool/man/man1/doxytag.1 b/pg-doxy/tool/man/man1/doxytag.1
new file mode 100644 (file)
index 0000000..f496899
--- /dev/null
@@ -0,0 +1,21 @@
+.TH DOXYTAG "1" "July 2010" "doxytag 1.7.0" "User Commands"
+.SH NAME
+doxytag \- generates a tag file and/or a search index for a set of HTML files
+.SH SYNOPSIS
+.B doxytag
+[\fI-t tag_file\fR] [\fI-s index_file\fR] [ \fIhtml_file \fR[\fIhtml_file\fR...] ]
+.SH DESCRIPTION
+Generates a tag file and/or a search index for a set of HTML files.  Use
+doxysearch as a CGI program to search the tag file generated by doxytag.
+.SH OPTIONS
+.TP
+\fB\-t\fR <tag_file>
+Generate tag file <tag_file>.
+.TP
+\fB\-s\fR <index_file>
+Generate search index <index_file>.
+.PP
+If no HTML files are given all files in the current dir that
+have a .html extension are parsed.
+.SH SEE ALSO
+doxygen(1), doxywizard(1).
diff --git a/src/syspopup_core.c b/src/syspopup_core.c
new file mode 100755 (executable)
index 0000000..2e05e3c
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 <glib.h>
+#include <heynoti.h>
+#include <stdlib.h>
+#include <string.h>
+#include "syspopup_core.h"
+#include "simple_util.h"
+
+#define SYSPOPUP_NAME "_INTERNAL_SYSPOPUP_NAME_"
+
+static syspopup *syspopup_head = NULL;
+
+static int initialized = 0;
+static int noti_fd = -1;
+static int sp_id = 0;
+
+static void (*_term_handler) (void *data);
+static gboolean(*_timeout_handler) (void *data);
+
+syspopup *_syspopup_get_head()
+{
+       return syspopup_head;
+}
+
+int _syspopup_add_new(syspopup *sp)
+{
+       if (sp == NULL)
+               return -1;
+
+       sp->id = sp_id++;
+       sp->next = syspopup_head;
+       syspopup_head = sp;
+
+       return 0;
+}
+
+syspopup *_syspopup_find(const char *name)
+{
+       syspopup *tmp;
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->name) {
+                       if (strcmp(tmp->name, name) == 0)
+                               return tmp;
+               }
+               tmp = tmp->next;
+       }
+       return NULL;
+}
+
+syspopup *_syspopup_find_by_id(int id)
+{
+       syspopup *tmp;
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->id == id)
+                       return tmp;
+               tmp = tmp->next;
+       }
+       return NULL;
+}
+
+static void __syspopup_free(syspopup *sp)
+{
+       if (sp->name != NULL)
+               free(sp->name);
+       if (sp->dupped_bundle != NULL)
+               bundle_free(sp->dupped_bundle);
+       free(sp);
+}
+
+void _syspopup_del(int id)
+{
+       syspopup *tmp;
+       syspopup *target;
+
+       target = _syspopup_find_by_id(id);
+
+       if (syspopup_head == NULL || target == NULL)
+               return;
+
+       if (syspopup_head == target) {
+               syspopup_head = target->next;
+               __syspopup_free(target);
+               return;
+       }
+
+       tmp = syspopup_head;
+       while (tmp) {
+               if (tmp->next == target) {
+                       tmp->next = target->next;
+                       __syspopup_free(target);
+                       return;
+               }
+               tmp = tmp->next;
+       }
+}
+
+int _syspopup_init(void (*term_handler) (void *),
+                  gboolean(*timeout_handler) (void *))
+{
+       if (initialized)
+               return 0;
+
+       _term_handler = term_handler;
+       _timeout_handler = timeout_handler;
+
+       noti_fd = heynoti_init();
+       if (noti_fd < 0) {
+               _E("heynoti add failed\n");
+               return -1;
+       }
+
+       if (heynoti_subscribe_file(noti_fd, SYSPOPUP_TERM_NOTI_PATH,
+                                  _term_handler, NULL,
+                                  IN_CLOSE_WRITE | IN_DELETE_SELF) < 0) {
+               _E("heynoti subscribe file failed");
+               return -1;
+       } else {
+               if (heynoti_attach_handler(noti_fd) < 0)
+                       _E("heynoti attach failed");
+       }
+
+       initialized = 1;
+       return 0;
+}
+
+int _syspopup_reset_timeout(syspopup *sp, syspopup_info_t *info)
+{
+       if (!initialized) {
+               _E("no initialized");
+               return -1;
+       }
+       if (sp == NULL) {
+               _E("syspopup is NULL");
+               return -1;
+       }
+       if (info == NULL) {
+               _E("syspopup info is NULL");
+               return -1;
+       }
+
+       if (sp->timeout_id != 0)
+               g_source_remove(sp->timeout_id);
+       sp->timeout_id = g_timeout_add_seconds(info->timeout, _timeout_handler,
+                                              (void *)sp->id);
+       _D("add timeout - timeout : id=%d,timeout=%d(sec)", sp->id,
+          info->timeout);
+
+       return 0;
+}
+
+int _syspopup_set_term_type(syspopup *sp, syspopup_info_t *info)
+{
+       sp->term_act = info->term_act;
+       return 0;
+}
+
+int _syspopup_set_endkey_type(syspopup *sp, syspopup_info_t *info)
+{
+       sp->endkey_act = info->endkey_act;
+       return 0;
+}
+
+const char *_syspopup_get_name_from_bundle(bundle *b)
+{
+       const char *name;
+
+       if (getuid() != 0 && getuid() != 5000) {
+               _E("syspopup permission error");
+               return NULL;
+       }
+
+       if (b == NULL) {
+               _E("bundle is NULL");
+               return NULL;
+       }
+
+       name = bundle_get_val(b, SYSPOPUP_NAME);
+       if (name == NULL) {
+               _E("this is no bundle for syspopup");
+       }
+       return name;
+}
+
+int _syspopup_set_name_to_bundle(bundle *b, char *popup_name)
+{
+       if ((b == NULL) || (popup_name == NULL))
+               return -1;
+       bundle_add(b, SYSPOPUP_NAME, popup_name);
+       return 0;
+}
+
diff --git a/src/syspopup_db.c b/src/syspopup_db.c
new file mode 100755 (executable)
index 0000000..9721b4a
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 <string.h>
+#include <stdlib.h>
+#include <sqlite3.h>
+#include "syspopup_db.h"
+#include "simple_util.h"
+
+#define SYSPOPUP_DB_PATH       "/opt/dbspace/.syspopup.db"
+#define QUERY_MAXLEN   4096
+
+#define SP_INFO_TBL            "syspopup_info"
+#define SP_INFO_TBL_F_NAME     "name"
+
+static sqlite3 *db = NULL;
+
+/**
+ * exec  
+ * param[in] db handler
+ * param[in] query query
+ * return This method returns 0 (SUCCESS) or -1 (FAIL)
+ */
+static int __exec(sqlite3 *db, char *query)
+{
+       int rc = 0;
+       char *errmsg = NULL;
+
+       if (db == NULL) {
+               _E("DB handler is null");
+               return -1;
+       }
+       rc = sqlite3_exec(db, query, NULL, 0, &errmsg);
+
+       if (rc != SQLITE_OK) {
+               _D("Query: [%s]", query);
+               _E("SQL error: %s\n", errmsg);
+               sqlite3_free(errmsg);
+               return (-1);
+       }
+
+       return 0;
+}
+
+/**
+ * db initialize
+ */
+static int __init(void)
+{
+       int rc;
+
+       if (db) {
+               _D("Already initialized\n");
+               return 0;
+       }
+
+       rc = sqlite3_open(SYSPOPUP_DB_PATH, &db);
+       if (rc) {
+               _E("Can't open database: %s", sqlite3_errmsg(db));
+               goto err;
+       }
+       /* Enable persist journal mode*/
+       rc = sqlite3_exec(db, "PRAGMA journal_mode = PERSIST", NULL, NULL,
+                         NULL);
+       if (SQLITE_OK != rc) {
+               _D("Fail to change journal mode\n");
+               goto err;
+       }
+
+       return 0;
+err:
+       sqlite3_close(db);
+       return -1;
+}
+
+static int __fini(void)
+{
+       if (db) {
+               sqlite3_close(db);
+               db = NULL;
+       }
+       return 0;
+}
+
+static int __delete_all(const char *tbl_name)
+{
+       char *_sqlbuf;
+       int rc;
+
+       _sqlbuf = sqlite3_mprintf("DELETE FROM %s;", tbl_name);
+       rc = __exec(db, _sqlbuf);
+       sqlite3_free(_sqlbuf);
+
+       return rc;
+}
+
+static int __delete_with_field(const char *tbl_name, const char *f_name,
+                              const char *val)
+{
+       char *_sqlbuf;
+       int rc;
+
+       _sqlbuf = sqlite3_mprintf("DELETE FROM %s WHERE %s = '%s';",
+                                 tbl_name, f_name, val);
+       rc = __exec(db, _sqlbuf);
+       sqlite3_free(_sqlbuf);
+
+       return rc;
+}
+
+static int __count_with_field(const char *tbl_name, const char *f_name,
+                             const char *val)
+{
+       char *_sqlbuf;
+       int rc;
+       char **db_result = NULL;
+       char *db_err = NULL;
+       int nrows = 0;
+       int ncols = 0;
+       int cnt;
+
+       _sqlbuf = sqlite3_mprintf("SELECT COUNT(*) FROM %s WHERE %s = '%s';",
+                                 tbl_name, f_name, val);
+
+       rc = sqlite3_get_table(db, _sqlbuf, &db_result, &nrows, &ncols,
+                              &db_err);
+       if (rc == -1 || nrows == 0) {
+               _E("get count = 0 or fail");
+               sqlite3_free_table(db_result);
+               sqlite3_free(_sqlbuf);
+               return 0;
+       } else {
+               cnt = atoi(db_result[1]);
+               sqlite3_free_table(db_result);
+               sqlite3_free(_sqlbuf);
+       }
+
+       return cnt;
+}
+
+int _syspopup_info_add(syspopup_info_t *pinfo)
+{
+       int rc = -1;
+       int cnt = 0;
+       char *_sqlbuf;
+
+       if (pinfo->name == NULL) {
+               _E("Name is null\n");
+               return -1;
+       }
+
+       if (__init() < 0)
+               return -1;
+
+       cnt = __count_with_field(SP_INFO_TBL, SP_INFO_TBL_F_NAME, pinfo->name);
+
+       if (cnt == 0) {
+               _sqlbuf = sqlite3_mprintf("INSERT INTO %s "
+                                         "(name,prio,focus,timeout,term_act,endkey_act,pkgname) values "
+                                         "(\"%s\", %d, %d, %d, \"%s\");",
+                                         SP_INFO_TBL,
+                                         pinfo->name, pinfo->prio,
+                                         pinfo->focus, pinfo->timeout,
+                                         pinfo->term_act, pinfo->endkey_act,
+                                         pinfo->pkgname);
+               rc = __exec(db, _sqlbuf);
+               sqlite3_free(_sqlbuf);
+       } else {
+               _E("already exist - %s", pinfo->name);
+               rc = -1;
+       }
+
+       if (rc < 0)
+               _E("Fail to insert\n");
+
+       __fini();
+       return rc;
+}
+
+syspopup_info_t *_syspopup_info_get(const char *popup_name)
+{
+       int rc = 0;
+       char *_sqlbuf;
+       sqlite3_stmt *stmt;
+       syspopup_info_t *pinfo = NULL;
+
+       if (popup_name == NULL) {
+               _E("no popup name");
+               return NULL;
+       }
+
+       if (__init() < 0)
+               return NULL;
+
+       _sqlbuf = sqlite3_mprintf("SELECT name,prio,focus,timeout,term_act,endkey_act,pkgname "
+                                 "FROM %s WHERE %s='%s';",
+                                 SP_INFO_TBL, SP_INFO_TBL_F_NAME, popup_name);
+
+       rc = sqlite3_prepare_v2(db, _sqlbuf, -1, &stmt, NULL);
+       if (rc == SQLITE_OK) {
+               rc = sqlite3_step(stmt);
+               if (rc == SQLITE_ROW) {
+                       pinfo = (syspopup_info_t *) malloc(sizeof(syspopup_info_t));
+                       if (pinfo == NULL) {
+                               __fini();
+                               return NULL;
+                       }
+                       pinfo->name = strdup((char *) sqlite3_column_text(stmt, 0));
+                       pinfo->prio = sqlite3_column_int(stmt, 1);
+                       pinfo->focus = sqlite3_column_int(stmt, 2);
+                       pinfo->timeout = sqlite3_column_int(stmt, 3);
+                       pinfo->term_act = sqlite3_column_int(stmt, 4);
+                       pinfo->endkey_act = sqlite3_column_int(stmt, 5);
+                       if (sqlite3_column_text(stmt, 6) != NULL)
+                               pinfo->pkgname = strdup((char *) sqlite3_column_text(stmt, 6));
+                       else
+                               pinfo->pkgname = NULL;
+               }
+               sqlite3_finalize(stmt);
+       }
+
+       sqlite3_free(_sqlbuf);
+       __fini();
+       return pinfo;
+}
+
+void _syspopup_info_free(syspopup_info_t *pinfo)
+{
+       if (pinfo->name)
+               free(pinfo->name);
+       if (pinfo->pkgname)
+               free(pinfo->pkgname);
+       free(pinfo);
+}
+
diff --git a/syspopup-app/CMakeLists.txt b/syspopup-app/CMakeLists.txt
new file mode 100644 (file)
index 0000000..c2ca450
--- /dev/null
@@ -0,0 +1,64 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(syspopup-app C)
+
+SET(SRCS syspopup-app.c)
+
+SET(VENDOR "tizen")
+SET(PACKAGE ${PROJECT_NAME})
+SET(PKGNAME "org.${VENDOR}.${PACKAGE}")
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(BINDIR "${PREFIX}/bin")
+SET(DATADIR "${PREFIX}/share")
+SET(LOCALEDIR "${DATADIR}/locale")
+SET(ICONDIR "${DATADIR}/icons")
+SET(EDJDIR "${DATADIR}/edje/${PACKAGE}")
+
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR})
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/syspopup)
+
+INCLUDE(FindPkgConfig)
+pkg_check_modules(syspopup_app_pkgs REQUIRED appcore-efl)
+
+FOREACH(flag ${syspopup_app_pkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DVENDOR=\"${VENDOR}\"")
+ADD_DEFINITIONS("-DPACKAGE=\"${PACKAGE}\"")
+ADD_DEFINITIONS("-DPACKAGE_NAME=\"${PKGNAME}\"")
+ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"")
+ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"")
+ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"")
+
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+ADD_EXECUTABLE(${PROJECT_NAME} ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} syspopup ${syspopup_app_pkgs_LDFLAGS})
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR})
+
+
+# install desktop file & icon
+CONFIGURE_FILE(${PKGNAME}.desktop.in ${CMAKE_BINARY_DIR}/${PKGNAME}.desktop)
+INSTALL(FILES ${CMAKE_BINARY_DIR}/${PKGNAME}.desktop DESTINATION /opt/share/applications)
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/syspopup-app/${PKGNAME}.png DESTINATION share/icons/default/small)
+
+# i18n
+#ADD_SUBDIRECTORY(po)
+
diff --git a/syspopup-app/INSTALL b/syspopup-app/INSTALL
new file mode 100644 (file)
index 0000000..ddf4e78
--- /dev/null
@@ -0,0 +1,33 @@
+1. make the build directory
+
+  ex) 
+
+   $ mkdir build
+
+
+2. change the working directory to the build directory
+
+  ex)
+
+   $ cd build
+
+
+3. run 'cmake'
+
+  $ cmake ${SOURCE_DIR} -DCMAKE_INSTALL_PREFIX=/usr
+
+  ex)
+
+   $ cmake .. -DCMAKE_INSTALL_PREFIX=/usr
+
+   or
+
+   $ cmake ..
+
+
+4. make & make install
+
+  ex)
+
+   $ make -j 2 && make install
+
diff --git a/syspopup-app/org.tizen.syspopup-app.desktop.in b/syspopup-app/org.tizen.syspopup-app.desktop.in
new file mode 100755 (executable)
index 0000000..8b1a846
--- /dev/null
@@ -0,0 +1,11 @@
+Name=@PROJECT_NAME@
+Exec=@BINDIR@/@PROJECT_NAME@
+Icon=@PKGNAME@.png
+Type=Application
+Hidden=true
+X-SLP-BaseLayoutWidth=720
+X-SLP-BaseLayoutHeight=1280
+X-SLP-IsHorizontalScale=1
+X-SLP-TaskManage=false
+X-XLP-Removable=false
+Version=0.1.0-0
diff --git a/syspopup-app/org.tizen.syspopup-app.png b/syspopup-app/org.tizen.syspopup-app.png
new file mode 100644 (file)
index 0000000..bffa6bb
Binary files /dev/null and b/syspopup-app/org.tizen.syspopup-app.png differ
diff --git a/syspopup-app/po/CMakeLists.txt b/syspopup-app/po/CMakeLists.txt
new file mode 100644 (file)
index 0000000..0500c3f
--- /dev/null
@@ -0,0 +1,24 @@
+# for i18n
+
+SET(POFILES en_US.po en_GB.po ja.po ko.po zh_CN.po)
+
+SET(MSGFMT "/usr/bin/msgfmt")
+
+FOREACH(pofile ${POFILES})
+       SET(pofile ${CMAKE_CURRENT_SOURCE_DIR}/${pofile})
+       MESSAGE("PO: ${pofile}")
+       GET_FILENAME_COMPONENT(absPofile ${pofile} ABSOLUTE)
+       GET_FILENAME_COMPONENT(lang ${absPofile} NAME_WE)
+       SET(moFile ${CMAKE_CURRENT_BINARY_DIR}/${lang}.mo)
+       ADD_CUSTOM_COMMAND(
+                       OUTPUT ${moFile}
+                       COMMAND ${MSGFMT} -o ${moFile} ${absPofile}
+                       DEPENDS ${absPofile}
+       )
+       INSTALL(FILES ${moFile}
+                       DESTINATION share/locale/${lang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
+       SET(moFiles ${moFiles} ${moFile})
+ENDFOREACH(pofile)
+
+MESSAGE(".mo files: ${moFiles}")
+ADD_CUSTOM_TARGET(po ALL DEPENDS ${moFiles})
diff --git a/syspopup-app/po/POTFILES.in b/syspopup-app/po/POTFILES.in
new file mode 100644 (file)
index 0000000..86963bc
--- /dev/null
@@ -0,0 +1,2 @@
+# List of source files containing translatable strings.
+syspopup-tempapp.c
diff --git a/syspopup-app/po/en_GB.po b/syspopup-app/po/en_GB.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/syspopup-app/po/en_US.po b/syspopup-app/po/en_US.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/syspopup-app/po/ja.po b/syspopup-app/po/ja.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/syspopup-app/po/ko.po b/syspopup-app/po/ko.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/syspopup-app/po/syspopup-tempapp.pot b/syspopup-app/po/syspopup-tempapp.pot
new file mode 100644 (file)
index 0000000..2c5d98e
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/syspopup-app/po/update-po.sh b/syspopup-app/po/update-po.sh
new file mode 100755 (executable)
index 0000000..966360e
--- /dev/null
@@ -0,0 +1,60 @@
+#!/bin/sh
+
+PACKAGE=syspopup-tempapp
+SRCROOT=..
+POTFILES=POTFILES.in
+
+#ALL_LINGUAS= am az be ca cs da de el en_CA en_GB es et fi fr hr hu it ja ko lv mk ml ms nb ne nl pa pl pt pt_BR ru rw sk sl sr sr@Latn sv ta tr uk vi zh_CN zh_TW
+ALL_LINGUAS="en_US en_GB ja ko zh_CN"
+
+XGETTEXT=/usr/bin/xgettext
+MSGMERGE=/usr/bin/msgmerge
+
+echo -n "Make ${PACKAGE}.pot  "
+if [ ! -e $POTFILES ] ; then
+       echo "$POTFILES not found"
+       exit 1
+fi
+
+$XGETTEXT --default-domain=${PACKAGE} --directory=${SRCROOT} \
+               --add-comments --keyword=_ --keyword=N_ --files-from=$POTFILES
+if [ $? -ne 0 ]; then
+       echo "xgettext error"
+       exit 1
+fi
+
+if [ ! -f ${PACKAGE}.po ]; then
+       echo "No such file: ${PACKAGE}.po"
+       exit 1
+fi
+
+rm -f ${PACKAGE}.pot && mv ${PACKAGE}.po ${PACKAGE}.pot
+echo "done"
+
+for LANG in $ALL_LINGUAS; do 
+       echo "$LANG : "
+
+       if [ ! -e $LANG.po ] ; then
+               sed 's/CHARSET/UTF-8/g' ${PACKAGE}.pot > ${LANG}.po
+               echo "${LANG}.po created"
+       else
+               if $MSGMERGE ${LANG}.po ${PACKAGE}.pot -o ${LANG}.new.po ; then
+                       if cmp ${LANG}.po ${LANG}.new.po > /dev/null 2>&1; then
+                               rm -f ${LANG}.new.po
+                       else
+                               if mv -f ${LANG}.new.po ${LANG}.po; then
+                                       echo "" 
+                               else
+                                       echo "msgmerge for $LANG.po failed: cannot move $LANG.new.po to $LANG.po" 1>&2
+                                       rm -f ${LANG}.new.po
+                                       exit 1
+                               fi
+                       fi
+               else
+                       echo "msgmerge for $LANG failed!"
+                       rm -f ${LANG}.new.po
+               fi
+       fi
+       echo ""
+done
+
diff --git a/syspopup-app/po/zh_CN.po b/syspopup-app/po/zh_CN.po
new file mode 100644 (file)
index 0000000..21f2d74
--- /dev/null
@@ -0,0 +1,25 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-10-04 15:19+0900\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: syspopup-tempapp.c:24
+msgid "Application template"
+msgstr ""
+
+#: syspopup-tempapp.c:25
+msgid "Click to exit"
+msgstr ""
diff --git a/syspopup-app/syspopup-app.c b/syspopup-app/syspopup-app.c
new file mode 100755 (executable)
index 0000000..8c6d143
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 <appcore-efl.h>
+#include <Ecore_X.h>
+
+#include "syspopup.h"
+#include "syspopup-app.h"
+
+/*#include <quickpanel.h> */
+#include <time.h>
+/*
+struct quickpanel {
+       int type;
+       int priv_id; 
+       char *title;
+       char *content;
+       time_t rtime;
+       bundle *args; 
+       bundle *args_group;
+       int group_id;
+};
+*/
+
+int myterm(bundle *b, void *data)
+{
+       /*
+       char b_str[QP_BUF_LEN];
+       int ret = 0;
+       const char* val;
+
+       struct appdata *ad = data;
+       struct quickpanel* qp;
+
+       val = bundle_get_val(b,"_INTERNAL_SYSPOPUP_NAME_");
+       printf("[SYSTEM POPUP] Popup Name : %s\n", val);
+
+       qp = malloc(sizeof(struct quickpanel));
+       memset(qp,0,sizeof(struct quickpanel));
+
+       //qp->type = QP_TYPE_SYSPOPUP;
+       qp->type = quickpanel_get_type_id("org.tizen.syspopup-app", NULL, 0);
+       qp->priv_id = QP_PRIVID;
+       qp->title = ad->title;
+       qp->content = ad->content;
+       qp->args = b;
+       qp->group_id = qp->priv_id;
+
+       ret = quickpanel_insert(qp);
+       if (ret < 0)
+               printf("[SYSTEM POPUP] Error!! Cannot insert to quickpanel!\n");
+
+       free(qp);
+       */
+       return 0;
+}
+
+int mytimeout(bundle *b, void* data)
+{
+       /*
+       char b_str[QP_BUF_LEN];
+       int ret = 0;
+       const char* val;
+
+       struct appdata *ad = data;
+       struct quickpanel* qp;
+
+       val = bundle_get_val(b,"_INTERNAL_SYSPOPUP_NAME_");
+       printf("[SYSTEM POPUP] Popup Name : %s\n", val);
+
+       qp = malloc(sizeof(struct quickpanel));
+       memset(qp,0,sizeof(struct quickpanel));
+
+       //qp->type = QP_TYPE_SYSPOPUP;
+       qp->type = quickpanel_get_type_id("org.tizen.syspopup-app", NULL, 0);
+       qp->priv_id = QP_PRIVID;
+       qp->title = ad->title;
+       qp->content = ad->content;
+       qp->args = b;
+       qp->group_id = qp->priv_id;
+
+       ret = quickpanel_insert(qp);
+       if (ret < 0)
+               printf("[SYSTEM POPUP] Error!! Cannot insert to quickpanel!\n");
+
+       free(qp);
+       */
+       return 0;
+}
+
+syspopup_handler handler = {
+       .def_term_fn = myterm,
+       .def_timeout_fn = mytimeout
+};
+
+static void __win_del(void *data, Evas_Object * obj, void *event)
+{
+       elm_exit();
+}
+
+
+static Evas_Object *__create_win(const char *name)
+{
+       Evas_Object *eo;
+       int w;
+       int h;
+
+       eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
+       if (eo) {
+               elm_win_title_set(eo, name);
+               elm_win_borderless_set(eo, EINA_TRUE);
+
+               elm_win_alpha_set(eo, EINA_TRUE);
+
+               evas_object_smart_callback_add(eo, "delete,request",
+                                              __win_del, NULL);
+               ecore_x_window_size_get(ecore_x_window_root_first_get(),
+                                       &w, &h);
+               evas_object_resize(eo, w, h);
+       }
+
+       return eo;
+}
+
+static int __app_create(void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *win;
+       int r;
+
+       /* create window */
+       win = __create_win(PACKAGE);
+       if (win == NULL)
+               return -1;
+       ad->win = win;
+       /* evas_object_show(win);*/
+
+       /* init internationalization */
+       r = appcore_set_i18n(PACKAGE, LOCALEDIR);
+       if (r)
+               return -1;
+
+       appcore_measure_start();
+       return 0;
+}
+
+static int __app_terminate(void *data)
+{
+       struct appdata *ad = data;
+
+       printf("[SYSPOPUP] %s, %d\n", __func__, __LINE__);
+
+       if (ad->win)
+               evas_object_del(ad->win);
+
+       return 0;
+}
+
+static int __app_pause(void *data)
+{
+       struct appdata *ad = data;
+
+       return 0;
+}
+
+static int __app_resume(void *data)
+{
+       struct appdata *ad = data;
+
+       return 0;
+}
+
+static void __prt_recvd_bundle(const char *key, const char *value, void *d)
+{
+       printf("recvd - key: %s, value: %s\n", key, value);
+}
+
+static void __response_cb(void *data, Evas_Object * obj, void *event_info)
+{
+       if ((int)event_info != 5)
+               evas_object_del(obj);
+       elm_exit();
+}
+
+static int __app_reset(bundle *b, void *data)
+{
+       struct appdata *ad = data;
+       Evas_Object *popup;
+       const char *val;
+       int ret = 0;
+
+       ad->b = bundle_dup(b);
+
+       bundle_iterate(b, __prt_recvd_bundle, NULL);
+
+       if (syspopup_has_popup(b)) {
+               syspopup_reset(b);
+       } else {
+               popup = elm_popup_add(ad->win);
+               if (popup != NULL) {
+                       ret = syspopup_create(b, &handler, ad->win, ad);
+                       evas_object_show(ad->win);
+
+                       if (ret == 0) {
+                               val = bundle_get_val(b,
+                                                  "_INTERNAL_SYSPOPUP_NAME_");
+
+                               val = bundle_get_val(b, "_SYSPOPUP_TITLE_");
+                               if (val) {
+                                       snprintf(ad->title, TITLE_BUF_LEN, "%s",
+                                                val);
+                               } else {
+                                       snprintf(ad->title, TITLE_BUF_LEN, "%s",
+                                                "Unknown Title");
+                               }
+
+                               val = bundle_get_val(b, "_SYSPOPUP_CONTENT_");
+                               if (val) {
+                                       snprintf(ad->content, CONTENT_BUF_LEN,
+                                                "%s", val);
+                               } else {
+                                       snprintf(ad->content, CONTENT_BUF_LEN,
+                                                "%s", "Unknown Content");
+                               }
+
+                               elm_object_style_set(popup, "char_wrap_style");
+                               evas_object_size_hint_weight_set(popup,
+                                                       EVAS_HINT_EXPAND,
+                                                       EVAS_HINT_EXPAND);
+                               elm_popup_mode_set(popup, ELM_POPUP_TYPE_ALERT);
+                               elm_popup_title_label_set(popup, ad->title);
+                               elm_popup_desc_set(popup, ad->content);
+                               evas_object_smart_callback_add(popup,
+                                                              "response",
+                                                              __response_cb,
+                                                              NULL);
+
+                               evas_object_show(popup);
+                       }
+               }
+       }
+
+       return 0;
+}
+
+int main(int argc, char *argv[])
+{
+       struct appdata ad;
+       struct appcore_ops ops = {
+               .create = __app_create,
+               .terminate = __app_terminate,
+               .pause = __app_pause,
+               .resume = __app_resume,
+               .reset = __app_reset,
+       };
+
+//     unsetenv("ELM_SCALE");
+
+       /* appcore measure time example */
+       printf("from AUL to %s(): %d msec\n", __func__,
+              appcore_measure_time_from("APP_START_TIME"));
+
+       memset(&ad, 0x0, sizeof(struct appdata));
+       ops.data = &ad;
+
+       return appcore_efl_main(PACKAGE, &argc, &argv, &ops);
+}
+
diff --git a/syspopup-app/syspopup-app.h b/syspopup-app/syspopup-app.h
new file mode 100755 (executable)
index 0000000..558d4ae
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 __SYSPOPUP_APP_H__
+#define __SYSPOPUP_APP_H__
+
+#include <Elementary.h>
+
+#if !defined(PACKAGE)
+#  define PACKAGE "syspopup-app"
+#endif
+
+#define NAME_BUF_LEN   256
+#define TITLE_BUF_LEN  256
+#define CONTENT_BUF_LEN        256
+
+#define QP_BUF_LEN     10
+#define QP_PRIVID 1
+#define QP_TERM        1
+#define QP_TIMEOUT     1
+
+struct appdata {
+       Evas_Object *win;
+       Evas_Object *popup;
+       bundle *b;
+       char title[TITLE_BUF_LEN];
+       char content[CONTENT_BUF_LEN];
+
+       /* add more variables here */
+};
+
+#endif                         /* __SYSPOPUP_APP_H__ */
+
diff --git a/syspopup-caller/CMakeLists.txt b/syspopup-caller/CMakeLists.txt
new file mode 100644 (file)
index 0000000..81dee16
--- /dev/null
@@ -0,0 +1,67 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup_caller C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(spcpkgs REQUIRED dlog bundle sqlite3 glib-2.0 heynoti aul)
+
+FOREACH(flag ${spcpkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+### Build ###
+
+add_library(syspopup_caller SHARED syspopup_caller.c)
+target_link_libraries(syspopup_caller syspopup_mods ${spcpkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(syspopup_caller PROPERTIES SOVERSION 0.1.0)
+
+# pkgconfig file
+#CONFIGURE_FILE(syspopup-caller.pc.in syspopup-caller/syspopup-caller.pc @ONLY)
+CONFIGURE_FILE(syspopup-caller.pc.in ${CMAKE_CURRENT_BINARY_DIR}/syspopup-caller.pc @ONLY)
+
+### Install ###
+INSTALL(TARGETS syspopup_caller DESTINATION lib COMPONENT RuntimeLibraries)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../include/syspopup_caller.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/syspopup-caller.pc DESTINATION lib/pkgconfig)
+
diff --git a/syspopup-caller/syspopup-caller.pc.in b/syspopup-caller/syspopup-caller.pc.in
new file mode 100644 (file)
index 0000000..c3fc022
--- /dev/null
@@ -0,0 +1,13 @@
+# Package Information for pkg-config
+
+prefix=/usr
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIBDIR@
+includedir=@INCLUDEDIR@
+
+Name: libsyspopup_caller
+Description: system popup caller library - may be integrated in AUL
+Version: @VERSION@
+Requires: dlog bundle sqlite3 glib-2.0 aul 
+Libs: -L${libdir} -lsyspopup_caller
+Cflags: -I${includedir}
diff --git a/syspopup-caller/syspopup_caller.c b/syspopup-caller/syspopup_caller.c
new file mode 100755 (executable)
index 0000000..56c6d13
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <aul.h>
+
+#include "syspopup_core.h"
+#include "syspopup_db.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+
+API int syspopup_launch(char *popup_name, bundle *b)
+{
+       syspopup_info_t *info = NULL;
+       int ret;
+       int is_bundle = 0;
+
+       if (popup_name == NULL) {
+               _E("popup_name is NULL");
+               return -1;
+       }
+
+       info = _syspopup_info_get(popup_name);
+       if (info == NULL || info->pkgname == NULL) {
+               _E("info or info->pkgname is NULL");
+               if(info)
+                       _syspopup_info_free(info);
+               return -1;
+       }
+
+       if (b == NULL) {
+               b = bundle_create();
+               is_bundle = 1;
+       }
+
+       if (_syspopup_set_name_to_bundle(b, popup_name) < 0) {
+               _E("bundle set error\n");
+               _syspopup_info_free(info);
+
+               if (is_bundle == 1) {
+                       bundle_free(b);
+               }
+               return -1;
+       }
+
+       ret = aul_launch_app(info->pkgname, b);
+       if (ret < 0) {
+               _E("aul launch error - %d", ret);
+       }
+
+       if (is_bundle == 1) {
+               bundle_free(b);
+       }
+
+       _syspopup_info_free(info);
+
+       return ret;
+}
+
+API int syspopup_destroy_all()
+{
+       int fd;
+       fd = open(SYSPOPUP_TERM_NOTI_PATH, O_CREAT | O_TRUNC | O_RDWR, 0644);
+       close(fd);
+       return 0;
+}
+
diff --git a/syspopup/CMakeLists.txt b/syspopup/CMakeLists.txt
new file mode 100644 (file)
index 0000000..f2fe86c
--- /dev/null
@@ -0,0 +1,68 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
+
+PROJECT(syspopup C)
+SET(VERSION 1.1)
+
+### Global setting ###
+
+SET(PREFIX ${CMAKE_INSTALL_PREFIX})
+SET(EXEC_PREFIX "\${prefix}")
+SET(LIBDIR "\${prefix}/lib")
+SET(INCLUDEDIR "\${prefix}/include")
+
+# Build type : Release
+IF("${CMAKE_BUILD_TYPE}" STREQUAL "")
+       SET(CMAKE_BUILD_TYPE "Release")
+ENDIF()
+MESSAGE("Build type: ${CMAKE_BUILD_TYPE}")
+
+# Set required packages
+INCLUDE(FindPkgConfig)
+
+pkg_check_modules(sppkgs REQUIRED dlog bundle sqlite3 glib-2.0 heynoti evas elementary utilX ecore-x x11 ecore ecore-input)
+
+FOREACH(flag ${sppkgs_CFLAGS})
+       SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
+ENDFOREACH(flag)
+
+# Compiler flags
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -Wl,-zdefs" )
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+
+SET(CMAKE_SKIP_BUILD_RPATH true)
+
+# Get uname value to set 'TARGET' definition 
+# TODO: Is this needed?
+FIND_PROGRAM(UNAME NAMES uname)
+EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH")
+IF("${ARCH}" STREQUAL "arm")
+       ADD_DEFINITIONS("-DTARGET")
+       MESSAGE("add -DTARGET")
+ENDIF("${ARCH}" STREQUAL "arm")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
+ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"")
+
+# Linker flags
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed")
+
+
+### Build ###
+
+add_library(syspopup SHARED syspopup.c syspopup_efl.c)
+target_link_libraries(syspopup syspopup_mods ${sppkgs_LDFLAGS})
+SET_TARGET_PROPERTIES(syspopup PROPERTIES SOVERSION 0.1.0)
+
+# pkgconfig file
+#CONFIGURE_FILE(syspopup.pc.in syspopup/syspopup.pc @ONLY)
+CONFIGURE_FILE(syspopup.pc.in ${CMAKE_CURRENT_BINARY_DIR}/syspopup.pc @ONLY)
+
+### Install ###
+INSTALL(TARGETS syspopup DESTINATION lib COMPONENT RuntimeLibraries)
+INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../include/syspopup.h DESTINATION include)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/syspopup.pc DESTINATION lib/pkgconfig)
+
diff --git a/syspopup/syspopup.c b/syspopup/syspopup.c
new file mode 100755 (executable)
index 0000000..0ad0b54
--- /dev/null
@@ -0,0 +1,426 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 "syspopup_core.h"
+#include "syspopup.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+static int __utilx_ss_get_window_property(Display *dpy, Window win, Atom atom,
+                                         Atom type, unsigned int *val,
+                                         unsigned int len)
+{
+       unsigned char *prop_ret;
+       Atom type_ret;
+       unsigned long bytes_after;
+       unsigned long  num_ret;
+       int format_ret;
+       unsigned int i;
+       int num;
+
+       prop_ret = NULL;
+       if (XGetWindowProperty(dpy, win, atom, 0, 0x7fffffff, False,
+                              type, &type_ret, &format_ret, &num_ret,
+                              &bytes_after, &prop_ret) != Success)
+               return -1;
+
+       if (type_ret != type || format_ret != 32)
+               num = -1;
+       else if (num_ret == 0 || !prop_ret)
+               num = 0;
+       else {
+               if (num_ret < len)
+                       len = num_ret;
+               for (i = 0; i < len; i++) {
+                       val[i] = ((unsigned long *)prop_ret)[i];
+               }
+               num = len;
+       }
+
+       if (prop_ret)
+               XFree(prop_ret);
+
+       return num;
+}
+
+/*
+static Window get_active_win(Display *dpy, Window win, Atom property)
+{
+    Window active_win = None;
+    Atom actual_type;
+    int actual_format;
+    unsigned long nitems, bytes_after;
+    unsigned char *prop_return = NULL;
+
+    if(Success == XGetWindowProperty(dpy, win, property, 0L, sizeof(Window),
+                                    False, XA_WINDOW, &actual_type,
+                                    &actual_format, &nitems, &bytes_after,
+                                    &prop_return) && prop_return) {
+       active_win = *(Window *)prop_return;
+       XFree(prop_return);
+    }
+
+    return active_win;
+}
+*/
+
+static void __X_syspopup_term_handler(void *data)
+{
+       syspopup *tmp;
+       Display *d;
+       Window win;
+
+       _D("enter syspopup term handler");
+
+       d = XOpenDisplay(NULL);
+       tmp = _syspopup_get_head();
+       while (tmp) {
+               switch (tmp->term_act) {
+               case SYSPOPUP_TERM:
+                       if (tmp->def_term_fn != NULL)
+                               tmp->def_term_fn(tmp->dupped_bundle,
+                                                tmp->user_data);
+
+                       win = (Window) tmp->internal_data;
+                       XKillClient(d, win);
+                       /*XDestroyWindow(d, win);*/ 
+                       /* TODO :modify for multi popup */
+                       break;
+               case SYSPOPUP_HIDE:
+                       if (tmp->def_term_fn != NULL)
+                               tmp->def_term_fn(tmp->dupped_bundle,
+                                                tmp->user_data);
+
+                       win = (Window) tmp->internal_data;
+                       XUnmapWindow(d, win);
+                       break;
+               default:
+                       _D("term action IGNORED - %s", tmp->name);
+               }
+               tmp = tmp->next;
+       }
+
+       XCloseDisplay(d);
+       /*TODO : if there is no popup window, kill client*/
+}
+
+static gboolean __X_syspopup_timeout_handler(void *user_data)
+{
+       syspopup *sp = NULL;
+       Display *d;
+       int id;
+       Window win;
+
+       id = (int)user_data;
+
+       d = XOpenDisplay(NULL);
+
+       sp = _syspopup_find_by_id(id);
+       if (sp != NULL) {
+               _D("find timeout - %s", sp->name);
+               if (sp->def_timeout_fn != NULL)
+                       sp->def_timeout_fn(sp->dupped_bundle, sp->user_data);
+               win = (Window) sp->internal_data;
+               XKillClient(d, win);
+       } else {
+               _E("no find timeout");
+       }
+
+       XCloseDisplay(d);
+
+       return 0;
+}
+
+static int __X_syspopup_change_xwin_type(Display *dpy, Window win)
+{
+       Atom win_type_atom;
+       Atom win_type_utility_atom;
+
+       win_type_atom = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False);
+       win_type_utility_atom =
+           XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_NOTIFICATION", False);
+       XChangeProperty(dpy, win, win_type_atom, XA_ATOM, 32, PropModeReplace,
+                       (unsigned char *)&win_type_utility_atom, 1);
+
+       return 0;
+}
+
+static int __X_syspopup_disable_focus(Display *dpy, Window win)
+{
+       XWMHints *hints;
+
+       hints = XAllocWMHints();
+       if (!hints) return -1;
+
+       hints->flags = InputHint | StateHint;
+       hints->input = 0;
+       hints->initial_state = NormalState;
+
+       XSetWMHints(dpy, win, hints);
+       XFree(hints);
+
+       return 0;
+}
+
+int X_syspopup_rotation_get(Display *dpy, Window win)
+{
+       Window active_win;
+       Window root_win;
+       int rotation = -1;
+       int ret;
+
+       int angles[2];
+
+       Atom atom_active_win;
+       Atom atom_win_rotate_angle;
+
+       root_win = XDefaultRootWindow(dpy);
+
+       atom_active_win = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
+       ret = __utilx_ss_get_window_property(dpy, root_win, atom_active_win,
+                                            XA_WINDOW,
+                                            (unsigned int *)&active_win, 1);
+
+       /*printf("[SYSPOPUP] Active win : %x, Window %x\n", active_win, win);*/
+
+       /*active_win = get_active_win(dpy, root_win, atom_active_win);*/
+       if (ret < 0)
+               return ret;
+
+       atom_win_rotate_angle =
+               XInternAtom(dpy, "_E_ILLUME_ROTATE_ROOT_ANGLE", False);
+       ret = __utilx_ss_get_window_property(dpy, root_win,
+                                         atom_win_rotate_angle, XA_CARDINAL,
+                                         (unsigned int *)&rotation, 1);
+
+       /*printf("[SYSPOPUP] Rotation %d\n", rotation);*/
+
+       if (ret != -1)
+               return rotation;
+
+       return -1;
+}
+
+int X_syspopup_process_keydown(int id, const char *keyname)
+{
+       Display *d;
+       Window win;
+       syspopup *sp = NULL;
+
+       if (strcmp(keyname, KEY_END) == 0) {
+               d = XOpenDisplay(NULL);
+               sp = _syspopup_find_by_id(id);
+               if (sp != NULL) {
+                       _D("find key down - %s", sp->name);
+                       if (sp->endkey_act == SYSPOPUP_KEYEND_TERM) {
+                               if (sp->def_term_fn != NULL)
+                                       sp->def_term_fn(sp->dupped_bundle,
+                                                       sp->user_data);
+                               win = (Window) sp->internal_data;
+                               XKillClient(d, win);
+
+                       } else if (sp->endkey_act == SYSPOPUP_KEYEND_HIDE) {
+                               if (sp->def_term_fn != NULL)
+                                       sp->def_term_fn(sp->dupped_bundle,
+                                                       sp->user_data);
+                               win = (Window) sp->internal_data;
+                               XUnmapWindow(d, win);
+                       }
+
+               } else {
+                       _E("no find key down");
+               }
+
+               XCloseDisplay(d);
+       }
+
+       return 0;
+}
+
+int X_syspopup_process_rotate(int id)
+{
+       Display *d;
+       Window win;
+       syspopup *sp = NULL;
+
+       sp = _syspopup_find_by_id(id);
+
+       if (sp == NULL)
+               return -1;
+
+       win = (Window) sp->internal_data;
+
+       d = XOpenDisplay(NULL);
+       sp->rotate_cb(d, win, sp);
+       XCloseDisplay(d);
+
+       return 0;
+}
+
+int X_make_syspopup(bundle *b, Display *dpy, Window xwin, void *win,
+                   int (*rotate_func) (Display*, Window, syspopup*),
+                   syspopup_handler *handler, void *user_data)
+{
+       syspopup *sp = NULL;
+       syspopup_info_t *info;
+       const char *popup_name = _syspopup_get_name_from_bundle(b);
+       XWindowAttributes attr;
+       int is_unviewable = 0;
+
+       if (popup_name == NULL || handler == NULL)
+               return -1;
+
+       info = _syspopup_info_get(popup_name);
+       if (info == NULL)
+               return -1;
+
+       if (_syspopup_init(__X_syspopup_term_handler,
+                          __X_syspopup_timeout_handler) < 0){
+               _syspopup_info_free(info);
+               return -1;
+       }
+
+       XGetWindowAttributes(dpy, xwin, &attr);
+
+       if (attr.map_state == IsViewable) {
+               XUnmapWindow(dpy, xwin);
+               is_unviewable = 1;
+       }
+
+       sp = (syspopup *) malloc(sizeof(syspopup));
+       if (sp == NULL) {
+               _syspopup_info_free(info);
+               return -1;
+       }
+       
+       sp->name = strdup(info->name);
+       sp->def_term_fn = handler->def_term_fn;
+       sp->def_timeout_fn = handler->def_timeout_fn;
+       sp->user_data = user_data;
+       sp->internal_data = (void *)xwin;
+       sp->win = (void *)win;
+       sp->rotate_cb = rotate_func;
+       sp->timeout_id = 0;
+       sp->dupped_bundle = bundle_dup(b);
+       _syspopup_add_new(sp);
+
+       _syspopup_set_term_type(sp, info);
+       _syspopup_set_endkey_type(sp, info);
+
+       _syspopup_reset_timeout(sp, info);
+
+       __X_syspopup_change_xwin_type(dpy, xwin);
+       utilx_set_system_notification_level(dpy, xwin, info->prio);
+
+       utilx_grab_key(dpy, xwin, KEY_END, TOP_POSITION_GRAB);
+
+       if (info->focus == 1) {
+               __X_syspopup_disable_focus (dpy, xwin);
+       }
+
+       rotate_func(dpy, xwin, sp);
+
+       if (is_unviewable == 1) {
+               XMapWindow(dpy, xwin);
+       }
+
+       _syspopup_info_free(info);
+
+       return sp->id;
+}
+
+/**
+ * @brief       This API reset created the system popup's properties
+ *
+ *             This API reset created the system popup's properties based on
+ *             system popup information DB after extracting popup name from 
+ *             given bundle system popup properties to be reset : timeout, 
+ *             default action type, ....
+ *
+ * @param[in]   b              bundle received by app_reset handler
+ *                             (included system popup name)
+ * @return      0 if success, negative value(<0) if fail
+ * @retval      0              - success
+ * @retval      -1             - generic error
+ */
+int X_syspopup_reset(bundle *b)
+{
+       const char *popup_name;
+       syspopup_info_t *info;
+       syspopup *sp = NULL;
+       int (*rotate_func) (Display *, Window, syspopup *);
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL)
+               return -1;
+
+       sp = _syspopup_find(popup_name);
+       if (!sp)
+               return -1;
+       else {
+               Display *d;
+               Window win;
+
+               info = _syspopup_info_get(popup_name);
+               if (info == NULL)
+                       return -1;
+               _syspopup_reset_timeout(sp, info);
+
+               if (sp->dupped_bundle)
+                       free(sp->dupped_bundle);
+               sp->dupped_bundle = bundle_dup(b);
+
+               d = XOpenDisplay(NULL);
+               win = (Window) sp->internal_data;
+               utilx_set_system_notification_level(d, win, info->prio);
+
+               if (info->focus == 1) {
+                       __X_syspopup_disable_focus (d, win);
+               }
+               rotate_func = sp->rotate_cb;
+               rotate_func(d, win, sp);
+
+               XMapWindow(d, win);
+               /*XMapRaised(d,win);*/
+               XCloseDisplay(d);
+
+               _syspopup_info_free(info);
+       }
+       return 0;
+}
+
+API int syspopup_has_popup(bundle *b)
+{
+       const char *popup_name;
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL)
+               return 0;
+
+       if (_syspopup_find(popup_name) != NULL)
+               return 1;
+       else
+               return 0;
+}
+
diff --git a/syspopup/syspopup.pc.in b/syspopup/syspopup.pc.in
new file mode 100644 (file)
index 0000000..47a35ef
--- /dev/null
@@ -0,0 +1,13 @@
+# Package Information for pkg-config
+
+prefix=/usr
+exec_prefix=@EXEC_PREFIX@
+libdir=@LIBDIR@
+includedir=@INCLUDEDIR@
+
+Name: libsyspopup
+Description: system popup library for ui 
+Version: @VERSION@
+Requires: dlog bundle sqlite3 glib-2.0 heynoti elementary utilX ecore-x
+Libs: -L${libdir} -lsyspopup
+Cflags: -I${includedir}
diff --git a/syspopup/syspopup_efl.c b/syspopup/syspopup_efl.c
new file mode 100755 (executable)
index 0000000..4360b01
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 "syspopup_core.h"
+#include "syspopup.h"
+#include "syspopup_api.h"
+#include "simple_util.h"
+#include <Evas.h>
+#include <Ecore.h>
+#include <Ecore_Input.h>
+#include <Ecore_X.h>
+
+static void __elm_popupwin_del_cb(void *data, Evas * e, Evas_Object * obj,
+                                 void *event_info)
+{
+       int id;
+
+       id = (int)data;
+       _D("callback del called, destroy internal data - id = %d\n", id);
+
+       _syspopup_del(id);
+}
+
+static Eina_Bool __x_keydown_cb(void *data, int type, void *event)
+{
+       int id = (int)data;
+       Ecore_Event_Key *ev = event;
+
+       if (ev == NULL)
+               return 0;
+
+       X_syspopup_process_keydown(id, ev->keyname);
+
+       return ECORE_CALLBACK_DONE;
+}
+
+static Eina_Bool __x_rotate_cb(void *data, int type, void *event)
+{
+       int id = (int)data;
+       Ecore_X_Event_Client_Message *ev = event;
+
+       if (!event)
+               return ECORE_CALLBACK_RENEW;
+
+       if (ev->message_type == ECORE_X_ATOM_E_ILLUME_ROTATE_ROOT_ANGLE)
+               X_syspopup_process_rotate(id);
+
+       return ECORE_CALLBACK_RENEW;
+}
+
+static int __efl_rotate(Display *dpy, Window win, syspopup *sp)
+{
+       int rotation;
+
+       rotation = X_syspopup_rotation_get(dpy, win);
+
+       if (rotation == -1) {
+               rotation = 0;
+       }
+
+       if (rotation >= 0)
+               elm_win_rotation_with_resize_set(sp->win, rotation);
+
+       return 0;
+}
+
+API int syspopup_create(bundle *b, syspopup_handler *handler,
+                       Evas_Object *parent, void *user_data)
+{
+       Ecore_X_Window xwin;
+       Display *dpy;
+       const char *popup_name;
+       syspopup *sp = NULL;
+       int id;
+       XWindowAttributes attr;
+       int is_unviewable = 0;
+
+       popup_name = _syspopup_get_name_from_bundle(b);
+       if (popup_name == NULL || handler == NULL) {
+               _E("popup_name or handler is NULL");
+               return -1;
+       }
+
+       if (parent == NULL) {
+               _E("parent window is NULL");
+               return -1;
+       }
+
+       sp = _syspopup_find(popup_name);
+       if (sp) {
+               _E("already exist - syspopup %s", popup_name);
+               return -1;
+       } else {
+               xwin = elm_win_xwindow_get(parent);
+               dpy = ecore_x_display_get();
+
+               id = X_make_syspopup(b, dpy, xwin, parent, __efl_rotate,
+                                    handler, user_data);
+               if (id < 0) {   
+                       _E("fail to make X syspopup");
+                       return -1;
+               }
+
+               ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, __x_keydown_cb,
+                                       (void *)id);
+
+               evas_object_event_callback_add(parent, EVAS_CALLBACK_DEL,
+                                        __elm_popupwin_del_cb, (void *)id);
+
+               /* X_syspopup_core should process 2 events */
+               /* First, rotate event */
+               /* Second, keydown event */
+               ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
+                                       __x_rotate_cb, (void *)id);
+
+       }
+
+       return 0;
+}
+
+API int syspopup_reset(bundle *b)
+{
+       return X_syspopup_reset(b);
+}
+
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
new file mode 100644 (file)
index 0000000..86f105d
--- /dev/null
@@ -0,0 +1,8 @@
+# Test executables
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TEST_CFLAGS}")
+
+INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/syspopup-caller)
+add_executable(sp_test test.c) 
+target_link_libraries(sp_test syspopup_caller ${pkgs_LDFLAGS})
+INSTALL(TARGETS sp_test DESTINATION bin)
+
diff --git a/test/test.c b/test/test.c
new file mode 100755 (executable)
index 0000000..b41704a
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * syspopup
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Jayoun Lee <airjany@samsung.com>, Sewook Park <sewook7.park@samsung.com>,
+ * Jaeho Lee <jaeho81.lee@samsung.com>
+ *
+ * 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 <stdlib.h>
+#include <string.h>
+#include "syspopup_caller.h"
+
+void usage()
+{
+       printf("[usage] sp_test launch/destroy popup_name..."
+                               "(key1,val1,key2,val2,...)\n");
+}
+
+int main(int argc, char **argv)
+{
+       bundle *b;
+       int i;
+
+       if (argc < 2) {
+               usage();
+               return -1;
+       }
+
+       if (strcmp(argv[1], "launch") == 0) {
+               if ((argc < 3) || (argc % 2 == 0)) {
+                       usage();
+                       return -1;
+               }
+
+               b = bundle_create();
+               for (i = 3; i < argc; i = i + 2)
+                       bundle_add(b, argv[i], argv[i + 1]);
+               syspopup_launch(argv[2], b);
+               bundle_free(b);
+       } else if (strcmp(argv[1], "destroy") == 0) {
+               syspopup_destroy_all();
+       } else {
+               usage();
+       }
+
+       return 0;
+}
+