SET(INSTALL_HEADERS
minicontrol-error.h
minicontrol-type.h
+ minicontrol-internal.h
minicontrol-monitor.h
minicontrol-provider.h
+ minicontrol-provider-internal.h
minicontrol-viewer.h
- minicontrol-handler.h
+ minicontrol-viewer-internal.h
)
SET(SUBMODULES
minicontrol-provider
minicontrol-viewer
minicontrol-monitor
- minicontrol-handler
)
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include)
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -g -Wall -fPIC")
+SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -g -Wall -fPIC ")
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
ADD_LIBRARY(${PROJECT_NAME}-inter STATIC
src/minicontrol-internal.c
- src/minicontrol-internal-handler.c
)
TARGET_LINK_LIBRARIES(${PROJECT_NAME}-inter ${pkgs_LDFLAGS})
+++ /dev/null
-#!/bin/sh
-
-source ./config
-
-export TET_INSTALL_PATH=$TET_INSTALL_HOST_PATH # tetware root path
-#export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-simulator # tetware target path
-export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-target # tetware target path
-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
+++ /dev/null
-#!/bin/sh
-. ./config
-
-export TET_INSTALL_PATH=$TET_INSTALL_TARGET_PATH # path to path
-#export TET_TARGET_PATH=$TET_INSTALL_PATH/tetware-simulator
-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
+++ /dev/null
-#!/bin/sh
-
-. ./_export_env.sh # setting environment variables
-
-export TET_SUITE_ROOT=`pwd`
-RESULT_DIR=results
-
-tcc -c -p ./ # executing tcc, with clean option (-c)
-rm -r $RESULT_DIR
-rm -r tet_tmp_dir
-rm testcase/tet_captured
+++ /dev/null
-PKG_NAME=minicontrol
-TET_INSTALL_HOST_PATH=/var/tmp/dts_fw/TC/TETware
-TET_INSTALL_TARGET_PATH=/opt/home/$PKG_NAME/TETware
+++ /dev/null
-#!/bin/sh
-
-. ./config
-
-TC_PATH=/opt/home/$PKG_NAME
-
-echo $TC_PATH
-
-sdb shell "mkdir -p $TC_PATH"
-
-sdb push . $TC_PATH
-
-
+++ /dev/null
-#!/bin/sh
-
-source ./_export_target_env.sh
-
-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 7 -f chtml -o $HTML_RESULT $JOURNAL_RESULT
+++ /dev/null
-include ../config
-
-CC ?= gcc
-
-C_FILES = $(shell ls *.c)
-
-PKGS += minicontrol-monitor
-PKGS += minicontrol-provider
-PKGS += minicontrol-viewer
-PKGS += minicontrol-viewer
-PKGS += dlog
-PKGS += elementary
-PKGS += evas
-PKGS += ecore-evas
-PKGS += dbus-1
-PKGS += dbus-glib-1
-PKGS += glib-2.0
-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
-
-TCS := $(shell ls -1 *.c | cut -d. -f1)
-
-all: $(TCS)
-
-%: %.c
- $(CC) -o $@ $< $(CFLAGS) $(LDFLAGS)
-
-clean:
- rm -f $(TCS)
+++ /dev/null
-/testcase/utc_minicontrol
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <libintl.h>
-#include <tet_api.h>
-#include <Elementary.h>
-#include <minicontrol-monitor.h>
-#include <minicontrol-provider.h>
-#include <minicontrol-viewer.h>
-
-#define TEST_PKG "org.tizen.tetware"
-
-enum {
- POSITIVE_TC_IDX = 0x01,
- NEGATIVE_TC_IDX,
-};
-
-static void startup(void);
-static void cleanup(void);
-
-static void utc_minicontrol_monitor_start_n(void);
-static void utc_minicontrol_monitor_start_p(void);
-static void utc_minicontrol_monitor_stop_p(void);
-static void utc_minicontrol_win_add_n(void);
-static void utc_minicontrol_win_add_p(void);
-static void utc_minicontrol_request_n(void);
-static void utc_minicontrol_request_p(void);
-static void utc_minicontrol_viewer_add_n(void);
-static void utc_minicontrol_viewer_add_p(void);
-static void utc_minicontrol_viewer_image_object_get_n(void);
-static void utc_minicontrol_viewer_image_object_get_p(void);
-static void utc_minicontrol_viewer_request_n(void);
-static void utc_minicontrol_viewer_request_p(void);
-
-void (*tet_startup)(void) = startup;
-void (*tet_cleanup)(void) = cleanup;
-
-struct tet_testlist tet_testlist[] = {
- {utc_minicontrol_monitor_start_n, NEGATIVE_TC_IDX},
- {utc_minicontrol_monitor_start_p, POSITIVE_TC_IDX},
- {utc_minicontrol_monitor_stop_p, POSITIVE_TC_IDX},
- {utc_minicontrol_win_add_n, NEGATIVE_TC_IDX},
- {utc_minicontrol_win_add_p, POSITIVE_TC_IDX},
- {utc_minicontrol_request_n, NEGATIVE_TC_IDX},
- {utc_minicontrol_request_p, POSITIVE_TC_IDX},
- {utc_minicontrol_viewer_add_n, NEGATIVE_TC_IDX},
- {utc_minicontrol_viewer_add_p, POSITIVE_TC_IDX},
- {utc_minicontrol_viewer_image_object_get_n, NEGATIVE_TC_IDX},
- {utc_minicontrol_viewer_image_object_get_p, POSITIVE_TC_IDX},
- {utc_minicontrol_viewer_request_n, NEGATIVE_TC_IDX},
- {utc_minicontrol_viewer_request_p, POSITIVE_TC_IDX},
- { NULL, 0 },
-};
-
-static void _minicontrol_monitor_cb(minicontrol_action_e action,
- const char *name,
- unsigned int width,
- unsigned int height,
- minicontrol_priority_e priority,
- void *data) {
-
-}
-
-static Evas_Object *_ui_window_add(void)
-{
- Evas_Object *eo = NULL;
-
- eo = elm_win_add(NULL, "TETware", ELM_WIN_BASIC);
-
- if (eo != NULL) {
- elm_win_title_set(eo, "TETware");
- elm_win_borderless_set(eo, EINA_TRUE);
- elm_win_autodel_set(eo, EINA_TRUE);
- evas_object_show(eo);
- }
-
- return eo;
-}
-
-static void startup(void)
-{
- /* start of TC */
- tet_printf("\n TC start");
-}
-
-
-static void cleanup(void)
-{
- /* end of TC */
- tet_printf("\n TC end");
-}
-
-/**
- * @brief Negative test case of minicontrol_monitor_start()
- */
-static void utc_minicontrol_monitor_start_n(void)
-{
- int ret;
-
- ret = minicontrol_monitor_start(NULL, NULL);
-
- dts_check_eq("minicontrol_monitor_start", ret, MINICONTROL_ERROR_INVALID_PARAMETER,
- "Must return MINICONTROL_ERROR_INVALID_PARAMETER in case of invalid parameter");
-}
-
-/**
- * @brief Positive test case of minicontrol_monitor_start()
- */
-static void utc_minicontrol_monitor_start_p(void)
-{
- int ret;
-
- ret = minicontrol_monitor_start(_minicontrol_monitor_cb, NULL);
-
- dts_check_eq("minicontrol_monitor_start", ret, MINICONTROL_ERROR_NONE,
- "Must return MINICONTROL_ERROR_NONE in case of invalid parameter");
-}
-
-/**
- * @brief Positive test case of minicontrol_monitor_stop()
- */
-static void utc_minicontrol_monitor_stop_p(void)
-{
- int ret;
-
- ret = minicontrol_monitor_start(_minicontrol_monitor_cb, NULL);
- ret = minicontrol_monitor_stop();
-
- dts_check_eq("minicontrol_monitor_start", ret, MINICONTROL_ERROR_NONE,
- "Must return MINICONTROL_ERROR_NONE in case of invalid parameter");
-}
-
-/**
- * @brief Negative test case of minicontrol_win_add()
- */
-static void utc_minicontrol_win_add_n(void)
-{
- int ret;
- Evas_Object *win = NULL;
-
- win = minicontrol_win_add(NULL);
- dts_check_eq("minicontrol_win_add", win, NULL,
- "Must return NULL in case of invalid parameter");
-}
-
-/**
- * @brief Positive test case of minicontrol_win_add()
- */
-static void utc_minicontrol_win_add_p(void)
-{
- int ret;
- Evas_Object *win = NULL;
-
- elm_init(0, NULL);
- win = minicontrol_win_add("TETWARE-minicontrol");
- dts_check_eq("minicontrol_win_add", win, NULL,
- "Must return NULL in case of invalid parameter");
-}
-
-/**
- * @brief Negative test case of minicontrol_request()
- */
-static void utc_minicontrol_request_n(void)
-{
- int ret;
- Evas_Object *win = NULL;
-
- ret = minicontrol_request(NULL, MINICONTROL_REQ_HIDE_VIEWER);
- dts_check_eq("minicontrol_request", ret, MINICONTROL_ERROR_INVALID_PARAMETER,
- "Must return MINICONTROL_ERROR_INVALID_PARAMETER in case of invalid parameter");
-}
-
-/**
- * @brief Positive test case of minicontrol_request()
- */
-static void utc_minicontrol_request_p(void)
-{
- int ret;
- Evas_Object *win = NULL;
-
- elm_init(0, NULL);
- win = minicontrol_win_add("TETWARE-minicontrol");
- ret = minicontrol_request(win, MINICONTROL_REQ_HIDE_VIEWER);
- dts_check_eq("minicontrol_request", ret, MINICONTROL_ERROR_INVALID_PARAMETER,
- "Must return MINICONTROL_ERROR_NONE in case of invalid parameter");
-}
-
-/**
- * @brief Negative test case of minicontrol_viewer_add()
- */
-static void utc_minicontrol_viewer_add_n(void)
-{
- int ret;
- Evas_Object *win = NULL;
-
- win = minicontrol_viewer_add(NULL, NULL);
- dts_check_eq("minicontrol_viewer_add", win, NULL,
- "Must return NULL in case of invalid parameter");
-}
-
-/**
- * @brief Positive test case of minicontrol_viewer_add()
- */
-static void utc_minicontrol_viewer_add_p(void)
-{
- int ret;
- Evas_Object *win = NULL;
- Evas_Object *viewer = NULL;
-#if TBD
- Evas_Object *parent = _ui_window_add();
-#else
- Evas_Object *parent = NULL;
-#endif
-
- win = minicontrol_win_add("TETWARE-minicontrol");
- viewer = minicontrol_viewer_add(parent, "TETWARE-minicontrol");
-
- dts_check_eq("minicontrol_viewer_add", viewer, NULL,
- "Must return NULL in case of invalid parameter");
-}
-
-/**
- * @brief Negative test case of minicontrol_viewer_image_object_get()
- */
-static void utc_minicontrol_viewer_image_object_get_n(void)
-{
- int ret;
- Evas_Object *image = NULL;
- Evas_Object *viewer = NULL;
- Evas_Object *parent = NULL;
-
- image = minicontrol_viewer_image_object_get(NULL);
-
- dts_check_eq("minicontrol_viewer_image_object_get", image, NULL,
- "Must return NULL in case of invalid parameter");
-}
-
-/**
- * @brief Positive test case of minicontrol_viewer_image_object_get()
- */
-static void utc_minicontrol_viewer_image_object_get_p(void)
-{
- int ret;
- Evas_Object *win = NULL;
- Evas_Object *viewer = NULL;
-#if TBD
- Evas_Object *parent = _ui_window_add();
-#else
- Evas_Object *parent = NULL;
-#endif
- Evas_Object *image = NULL;
-
- win = minicontrol_win_add("TETWARE-minicontrol");
- viewer = minicontrol_viewer_add(parent, "TETWARE-minicontrol");
- image = minicontrol_viewer_image_object_get(viewer);
-
- dts_check_eq("minicontrol_viewer_image_object_get", image, NULL,
- "Must return NULL in case of invalid parameter");
-}
-
-/**
- * @brief Negative test case of minicontrol_viewer_request()
- */
-static void utc_minicontrol_viewer_request_n(void)
-{
- int ret;
-
- ret = minicontrol_viewer_request(NULL, MINICONTROL_REQ_HIDE_VIEWER, 0);
-
- dts_check_eq("minicontrol_viewer_request", ret, MINICONTROL_ERROR_INVALID_PARAMETER,
- "Must return MINICONTROL_ERROR_INVALID_PARAMETER in case of invalid parameter");
-}
-
-/**
- * @brief Positive test case of minicontrol_viewer_request()
- */
-static void utc_minicontrol_viewer_request_p(void)
-{
- int ret;
-
- ret = minicontrol_viewer_request("org.tizen.quickpanel", MINICONTROL_REQ_HIDE_VIEWER, 0);
-
- dts_check_eq("minicontrol_viewer_request", ret, MINICONTROL_ERROR_INVALID_PARAMETER,
- "Must return MINICONTROL_ERROR_NONE in case of invalid parameter");
-}
+++ /dev/null
-all
- ^TEST
-##### Scenarios for TEST #####
-
-# Test scenario
-TEST
- :include:/testcase/tslist
+++ /dev/null
-TET_OUTPUT_CAPTURE=True # capture option for build operation checking
-TET_BUILD_TOOL=make # build with using make command
-TET_BUILD_FILE=-f Makefile # execution file (Makefile) for build
-TET_API_COMPLIANT=True # use TET API in Test Case ?
-TET_PASS_TC_NAME=True # report passed TC name in Journal file?
+++ /dev/null
-TET_OUTPUT_CAPTURE=True # capture option
-TET_CLEAN_TOOL= make clean # clean tool
-TET_CLEAN_FILE= Makefile # file for clean
-TET_API_COMPLIANT=True # TET API useage
-TET_PASS_TC_NAME=True # showing name , passed TC
+++ /dev/null
-TET_OUTPUT_CAPTURE=True # capturing execution or not
-TET_EXEC_TOOL= # ex) exec : execution tool set up/ Optional
-TET_EXEC_FILE= # ex) exectool : execution file/ Optional
-TET_API_COMPLIANT=True # Test case or Tool usesTET API?
-TET_PASS_TC_NAME=True # showing Passed TC name ?
+++ /dev/null
-minicontrol (0.0.1-2) unstable; urgency=low
-
- * apply minicontrol priority
- * Git: slp/pkgs/m/minicontrol
- * Tag: minicontrol_0.0.1-2
-
- -- Jeonghoon Park <jh1979.park@samsung.com> Thu, 05 Apr 2012 12:12:49 +0900
-
-minicontrol (0.0.1-1) unstable; urgency=low
-
- * Initial Release.
- * Git: slp/pkgs/m/minicontrol
- * Tag: minicontrol_0.0.1-1
-
- -- Jeonghoon Park <jh1979.park@samsung.com> Mon, 27 Feb 2012 14:14:00 +0900
+++ /dev/null
-Source: minicontrol
-Section: libs
-Priority: optional
-Maintainer: Jeonghoon Park <jh1979.park@samsung.com>, Young-joo Park <yjoo93.park@samsung.com>
-Build-Depends: debhelper (>= 5), libecore-dev, libevas-dev, dlog-dev, libaul-1-dev, libelm-dev, libdbus-1-dev, libdbus-glib-1-dev
-Standards-Version: 3.7.2
-
-Package: libminicontrol
-Section: libs
-Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
-Description: Minicontrol supporting library (shared object)
-
-Package: libminicontrol-dev
-Section: libs
-Architecture: any
-Depends: libminicontrol (= ${Source-Version})
-Description: Minicontrol supporting library (development)
-
-Package: libminicontrol-dbg
-Section: debug
-Architecture: any
-Depends: ${misc:Depends}, libminicontrol (= ${Source-Version})
-Description: Minicontrol supporting library (unstripped)
-
+++ /dev/null
-usr/bin
-usr/sbin
+++ /dev/null
-CMakeLists.txt
+++ /dev/null
-@PREFIX@/include/@PROJECT_NAME@/*.h
-@PREFIX@/lib/pkgconfig/*.pc
+++ /dev/null
-@PREFIX@/lib/*.so*
+++ /dev/null
-#!/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 -Werror -Winline
-LDFLAGS ?=
-PREFIX ?= /usr
-DATADIR ?= /opt
-PROJECT_NAME ?= minicontrol
-
-BUILDDIR ?= $(CURDIR)/cmake-tmp
-
-ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
- CFLAGS += -O0
-else
- CFLAGS += -O2
-endif
-
-LDFLAGS += -Wl,--rpath=$(PREFIX)/lib -Wl,--as-needed -lm
-
-configure: configure-stamp
-configure-stamp:
- dh_testdir
- # Add here commands to configure the package.
- mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && 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 $(BUILDDIR) && $(MAKE)
- #docbook-to-man debian/wavplayer.sgml > wavplayer.1
-
- 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#@PROJECT_NAME@#$(PROJECT_NAME)#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 $(BUILDDIR)
- #rm -rf CMakeCache.txt CMakeFiles cmake_install.cmake Makefile install_manifest.txt
-
- for f in `find $(CURDIR)/debian/ -name "*.in"`; do \
- rm -f $${f%.in}; \
- done
-
- dh_clean
-
-install: build
- dh_testdir
- dh_testroot
- dh_clean -k
- dh_installdirs
-
- # Add here commands to install the package into debian/wavplayer.
- cd $(BUILDDIR) && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
-
-
-# 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=libminicontrol-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
# directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
-INPUT = ./minicontrol_doc.h ../include/minicontrol-error.h ../include/minicontrol.h ../include/minicontrol-monitor.h ../include/minicontrol-provider.h ../include/minicontrol-handler.h ../include/minicontrol-type.h ../include/minicontrol-viewer.h
+INPUT = ./minicontrol_doc.h ../include/minicontrol-error.h ../include/minicontrol.h ../include/minicontrol-monitor.h ../include/minicontrol-provider.h ../include/minicontrol-type.h ../include/minicontrol-viewer.h
# 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
* <th>Description</th>
* </tr>
* <tr>
- * <td>@ref MINICONTROL_MONITOR_MODULE </td>
- * <td>Provides functions for monitoring and viewing EFL socket window.</td>
- * </tr>
- * <tr>
* <td>@ref MINICONTROL_PROVIDER_MODULE </td>
- * <td>Provides functions for creating EFL socket window.</td>
+ * <td>Provides functions for creating EFL socket window. Application developers can make a minicontrol by composing ELF objects on this socket window</td>
* </tr>
* <tr>
* <td>@ref MINICONTROL_VIEWER_MODULE </td>
- * <td>Provides functions for displaying EFL socket window.</td>
+ * <td>Provides functions for displaying EFL socket window.<br>
+ * minicontrol holders calls this functions to attach minicontrols on UI area.</td>
* </tr>
* </table>
*/
-
-/**
- * @defgroup MINICONTROL_MONITOR_MODULE Monitor
- * @brief Minicontrol Monitor APIs
- * @ingroup MINICONTROL_LIBRARY
- *
- * @section MINICONTROL_MONITOR_MODULE_HEADER Required Header
- * \#include <minicontrol-minitor.h>
- * @section MINICONTROL_MONITOR_MODULE_OVERVIEW Overview
- * It provides functions for monitoring and viewing EFL socket window.
- *
- */
-
-
/**
* @defgroup MINICONTROL_PROVIDER_MODULE Provider
* @brief Minicontrol Provider APIs
*
*/
-
/**
* @defgroup MINICONTROL_VIEWER_MODULE Viewer
* @brief Minicontrol Viewer APIs
#ifndef _MINICTRL_ERROR_H_
#define _MINICTRL_ERROR_H_
+#include <tizen_error.h>
+
/**
* @file minicontrol-error.h
* @brief Minicontrol library error type.
*/
/**
- * @addtogroup MINICONTROL_MONITOR_MODULE
+ * @addtogroup MINICONTROL_LIBRARY
* @{
*/
/**
* @brief Enumeration for describing error code of minicontrol library.
+ * @since_tizen 2.4
*/
typedef enum _minicontrol_error {
- MINICONTROL_ERROR_NONE = 0, /**< MiniControl error none */
- MINICONTROL_ERROR_INVALID_PARAMETER = -1, /**< Invalid parameter */
- MINICONTROL_ERROR_OUT_OF_MEMORY = -2, /**< Out of memory */
- MINICONTROL_ERROR_DBUS = -3, /**< Dbus error */
- MINICONTROL_ERROR_BUNDLE = -4,
- MINICONTROL_ERROR_NO_DATA = -5,
- MINICONTROL_ERROR_UNKNOWN = -100, /**< Unknown error */
-}minicontrol_error_e;
+ MINICONTROL_ERROR_NONE = TIZEN_ERROR_NONE, /**< MiniControl error none */
+ MINICONTROL_ERROR_INVALID_PARAMETER = TIZEN_ERROR_INVALID_PARAMETER, /**< Invalid parameter */
+ MINICONTROL_ERROR_OUT_OF_MEMORY = TIZEN_ERROR_OUT_OF_MEMORY, /**< Out of memory */
+ MINICONTROL_ERROR_PERMISSION_DENIED = TIZEN_ERROR_PERMISSION_DENIED, /**< Permission denied */
+ MINICONTROL_ERROR_IPC_FAILURE = TIZEN_ERROR_MINICONTROL | 0x02, /**< IPC error */
+ MINICONTROL_ERROR_NOT_SUPPORTED = TIZEN_ERROR_NOT_SUPPORTED, /**< This function is not supported */
+ MINICONTROL_ERROR_ELM_FAILURE = TIZEN_ERROR_MINICONTROL | 0x03, /**< Some error occurred when creating a minicontrol window */
+ MINICONTROL_ERROR_UNKNOWN = TIZEN_ERROR_UNKNOWN, /**< Unknown error */
+} minicontrol_error_e;
/**
* @}
+++ /dev/null
-/*
- * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MINICTRL_HANDLER_H_
-#define _MINICTRL_HANDLER_H_
-
-#include <Evas.h>
-#include "minicontrol-error.h"
-#include "minicontrol-type.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @file minicontrol-handler.h
- * @brief This minicontrol handler library used to manage handler created with a minicontrol window
- */
-
-/**
- * @addtogroup MINICONTROL_HANDLER_MODULE
- * @{
- */
-
-/**
- * @brief minicontrol category : "UNKNOWN" is treated as "CLOCK"
- */
-#define MINICONTROL_HDL_CATEGORY_UNKNOWN "UNKNOWN"
-/**
- * @brief minicontrol category : CLOCK
- */
-#define MINICONTROL_HDL_CATEGORY_CLOCK "CLOCK"
-/**
- * @brief minicontrol category : NOTIFICATION
- */
-#define MINICONTROL_HDL_CATEGORY_NOTIFICATION "NOTIFICATION"
-/**
- * @brief minicontrol category : DASHBOARD
- */
-#define MINICONTROL_HDL_CATEGORY_DASHBOARD "DASHBOARD"
-
-/**
- * @brief minicontrol operation : NONE(do nothing)
- */
-#define MINICONTROL_HDL_OPERATION_NONE "NONE"
-/**
- * @brief minicontrol operation : add a minicontrol
- */
-#define MINICONTROL_HDL_OPERATION_ADD "ADD"
- /**
- * @brief minicontrol operation : show a minicontrol
- */
-#define MINICONTROL_HDL_OPERATION_SHOW "SHOW"
-/**
- * @brief minicontrol operation : remove a minicontrol
- */
-#define MINICONTROL_HDL_OPERATION_REMOVE "REMOVE"
-/**
- * @brief minicontrol operation : reload(rearrange) a minicontrol on the viewer
- */
-#define MINICONTROL_HDL_OPERATION_RELOAD "RELOAD"
-
-/**
- * @brief minicontrol priority : LV1(TOP)
- */
-#define MINICONTROL_HDL_PRIORITY_LV1 "LV1"
-/**
- * @brief minicontrol priority : LV2
- */
-#define MINICONTROL_HDL_PRIORITY_LV2 "LV2"
-/**
- * @brief minicontrol priority : LV3(BOTTOM)
- */
-#define MINICONTROL_HDL_PRIORITY_LV3 "LV3"
-
-/**
- * @addtogroup MINICONTROL_HANDLER_MODULE
- * @{
- */
-
-/**
- * @brief Creates a minicontrol handle.
- *
- * @remarks The @a minicontrol handler must be released with minicontrol_handler_destroy() by you.
- * @param [out] handler A minicontrol handle to be newly created on success
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY Out of memory
- * @see minicontrol_handler_destroy()
- */
-minicontrol_error_e minicontrol_handler_create(minicontrol_h *handler);
-
-/**
- * @brief Destroys the minicontrol handler and releases all its resources.
- *
- * @param [in] handler The minicontrol handler
- * @return MINICONTROL_ERROR_NONE on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY Out of memory
- * @see minicontrol_handler_create()
- */
-minicontrol_error_e minicontrol_handler_destroy(minicontrol_h handler);
-
-/**
- * @brief clone a minicontrol handler
- *
- * @param [in] handler The minicontrol handler
- * @param [in] handler_new The cloned minicontrol handler
- * @return MINICONTROL_ERROR_NONE on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY Out of memory
- * @see minicontrol_handler_create()
- */
-minicontrol_error_e minicontrol_handler_clone(minicontrol_h handler, minicontrol_h *handler_new);
-
-/**
- * @brief Sets the service name
- *
- * @remarks service name should be unique.
- * @param [in] handler The minicontrol handle
- * @param [in] name the service name
- * If the @a name is NULL, it clears the previous value.
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see minicontrol_handler_get_service_name()
- */
-minicontrol_error_e minicontrol_handler_set_service_name(minicontrol_h handler, const char *name);
-
-/**
- * @brief Gets the service name
- *
- * @remarks The @a name must be released with free() by you.
- * @param [in] handler The minicontrol handle
- * @param [out] name The service name
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY Out of memory
- * @see minicontrol_handler_set_service_name()
- */
-minicontrol_error_e minicontrol_handler_get_service_name(minicontrol_h handler, char **name);
-
-/**
- * @brief Sets the category
- *
- * @param [in] handler The minicontrol handle
- * @param [in] category the category
- * If the @a category is NULL, it clears the previous value.
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see minicontrol_handler_set_category()
- * @see MINICONTROL_HDL_CATEGORY_UNKNOWN
- * @see MINICONTROL_HDL_CATEGORY_CLOCK
- * @see MINICONTROL_HDL_CATEGORY_NOTIFICATION
- */
-minicontrol_error_e minicontrol_handler_set_category(minicontrol_h handler, const char *category);
-
-/**
- * @brief Gets the category
- *
- * @remarks The @a category must be released with free() by you.
- * @param [in] handler The minicontrol handle
- * @param [out] category The category
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see minicontrol_handler_set_service_name()
- * @see MINICONTROL_HDL_CATEGORY_UNKNOWN
- * @see MINICONTROL_HDL_CATEGORY_CLOCK
- * @see MINICONTROL_HDL_CATEGORY_NOTIFICATION
- */
-minicontrol_error_e minicontrol_handler_get_category(minicontrol_h handler, char **category);
-
-/**
- * @brief Sets the operation
- *
- * @param [in] handler The minicontrol handle
- * @param [in] operation the operation
- * If the @a operation is NULL, it clears the previous value.
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see minicontrol_handler_get_operation()
- * @see MINICONTROL_HDL_OPERATION_NONE
- * @see MINICONTROL_HDL_OPERATION_ADD
- * @see MINICONTROL_HDL_OPERATION_REMOVE
- * @see MINICONTROL_HDL_OPERATION_RELOAD
- */
-minicontrol_error_e minicontrol_handler_set_operation(minicontrol_h handler, const char *operation);
-
-/**
- * @brief Gets the operation
- *
- * @remarks The @a operation must be released with free() by you.
- * @param [in] handler The minicontrol handle
- * @param [out] operation The operation
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see minicontrol_handler_set_operation()
- */
-minicontrol_error_e minicontrol_handler_get_operation(minicontrol_h handler, char **operation);
-
-/**
- * @brief Sets the operation
- *
- * @param [in] handler The minicontrol handle
- * @param [in] priority the priority
- * If the @a priority is NULL, it clears the previous value.
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see minicontrol_handler_get_priority()
- * @see MINICONTROL_HDL_PRIORITY_LV1
- * @see MINICONTROL_HDL_PRIORITY_LV1
- * @see MINICONTROL_HDL_PRIORITY_LV1
- */
-minicontrol_error_e minicontrol_handler_set_priority(minicontrol_h handler, const char *priority);
-
-/**
- * @brief Gets the priority
- *
- * @remarks The @a priority must be released with free() by you.
- * @param [in] handler The minicontrol handle
- * @param [out] priority The priority
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see MINICONTROL_HDL_PRIORITY_LV1
- * @see MINICONTROL_HDL_PRIORITY_LV1
- * @see MINICONTROL_HDL_PRIORITY_LV1
- * @see minicontrol_handler_set_priority()
- */
-minicontrol_error_e minicontrol_handler_get_priority(minicontrol_h handler, char **priority);
-
-/**
- * @brief Sets the timestamp
- *
- * @param [in] handler The minicontrol handle
- * @param [in] timestamp the timestamp
- * If the @a timestamp is NULL, it clears the previous value.
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @see minicontrol_handler_get_timestamp()
- */
-minicontrol_error_e minicontrol_handler_set_timestamp(minicontrol_h handler, time_t timestamp);
-
-/**
- * @brief Gets the timestamp
- *
- * @param [in] handler The minicontrol handle
- * @param [out] timestamp The timestamp
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY Out of memory
- * @see minicontrol_handler_set_timestamp()
- */
-minicontrol_error_e minicontrol_handler_get_timestamp(minicontrol_h handler, time_t *timestamp);
-
-/**
- * @brief Gets the pid which create the minicontrol
- *
- * @param [in] handler The minicontrol handle
- * @param [out] pid The pid
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- */
-minicontrol_error_e minicontrol_handler_get_pid(minicontrol_h handler, int *pid);
-
-/**
- * @brief Gets the state which create the minicontrol
- *
- * @param [in] handler The minicontrol handle
- * @param [out] state The state
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- */
-minicontrol_error_e minicontrol_handler_state_get(minicontrol_h handler, int *state);
-
-/**
- * @brief Adds the extra data to the handler.
- *
- * @remarks The function replaces any existing value for the given key.
- * @remarks The function returns #MINICONTROL_ERROR_INVALID_PARAMETER if key or value is zero-length string.
- * @remarks The function returns #MINICONTROL_ERROR_INVALID_PARAMETER if the application tries to use same key with system-defined key
- * @param [in] handler The minicontrol handle
- * @param [in] key The name of the extra data
- * @param [in] value The value associated with given key
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Not available key
- * @see minicontrol_handler_get_data()
- * @see minicontrol_handler_remove_data()
- */
-minicontrol_error_e minicontrol_handler_add_data(minicontrol_h handler, const char *key, const char *value);
-
-/**
- * @brief Gets the extra data from the handler.
- *
- * @remarks The @a value must be released with free() by you.
- * @remarks The function returns #MINICONTROL_ERROR_INVALID_PARAMETER if the value is array data type.
- * @param [in] handler The minicontrol handle
- * @param [int] key The name of the extra data
- * @param [out] value The value associated with given key
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Specified key not found
- * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY Out of memory
- * @see minicontrol_handler_add_data()
- * @see minicontrol_handler_remove_data()
- */
-minicontrol_error_e minicontrol_handler_get_data(minicontrol_h handler, const char *key, char **value);
-
-/**
- * @brief Removes the extra data from the handler.
- *
- * @param [in] handler The minicontrol handle
- * @param [in] key The name of the extra data
- * @return 0 on success, otherwise a negative error value.
- * @retval #MINICONTROL_ERROR_NONE Successful
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid parameter
- * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Specified key not found
- * @see minicontrol_handler_add_data()
- * @see minicontrol_handler_get_data()
- */
-minicontrol_error_e minicontrol_handler_remove_data(minicontrol_h handler, const char *key);
-
-/**
- * @}
- */
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* _MINICTRL_HANDLER_H_ */
+++ /dev/null
-/*
- * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _MINICTRL_HANDLER_INTERNAL_H_
-#define _MINICTRL_HANDLER_INTERNAL_H_
-
-#include <dbus/dbus.h>
-#include <bundle.h>
-#include "minicontrol-type.h"
-#include "minicontrol-handler.h"
-
-struct _minicontrol_h {
- bundle *data;
-};
-
-/*!
- * contructor/deconstructor
- */
-minicontrol_error_e _minictrl_handler_create(minicontrol_h *handler);
-minicontrol_error_e _minictrl_handler_destroy(minicontrol_h handler);
-minicontrol_error_e _minictrl_handler_clone(minicontrol_h handler, minicontrol_h *handler_new);
-minicontrol_error_e _minictrl_handler_check_validation(minicontrol_h handler);
-
-/*!
- * pre-defined properties
- */
-minicontrol_error_e _minictrl_handler_set_service_name(minicontrol_h handler, const char *name);
-minicontrol_error_e _minictrl_handler_get_service_name(minicontrol_h handler, char **name);
-minicontrol_error_e _minictrl_handler_set_category(minicontrol_h handler, const char *category);
-minicontrol_error_e _minictrl_handler_get_category(minicontrol_h handler, char **category);
-minicontrol_error_e _minictrl_handler_set_operation(minicontrol_h handler, const char *operation);
-minicontrol_error_e _minictrl_handler_get_operation(minicontrol_h handler, char **operation);
-minicontrol_error_e _minictrl_handler_set_priority(minicontrol_h handler, const char *priority);
-minicontrol_error_e _minictrl_handler_get_priority(minicontrol_h handler, char **priority);
-minicontrol_error_e _minictrl_handler_set_pid(minicontrol_h handler);
-minicontrol_error_e _minictrl_handler_get_pid(minicontrol_h handler, int *pid);
-minicontrol_error_e _minictrl_handler_set_timestamp(minicontrol_h handler, time_t timestamp);
-minicontrol_error_e _minictrl_handler_get_timestamp(minicontrol_h handler, time_t *timestamp);
-
-/*!
- * user-defined properties
- */
-minicontrol_error_e _minictrl_handler_add_extradata(minicontrol_h handler, const char *key, const char *value);
-minicontrol_error_e _minictrl_handler_remove_extradata(minicontrol_h handler, const char *key);
-minicontrol_error_e _minictrl_handler_get_extradata(minicontrol_h handler, const char *key, char **value);
-
-/*!
- * utility functions
- */
-minicontrol_error_e _minictrl_handler_get_raw_data(minicontrol_h handler, char **raw_data, int *length);
-minicontrol_error_e _minictrl_handler_get_handler_from_raw_data(minicontrol_h *handler, char *raw_data, int length);
-
-#endif /* _MINICTRL_INTERNAL_H_ */
-
#define _MINICTRL_INTERNAL_H_
#include <dbus/dbus.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <bundle.h>
#include "minicontrol-type.h"
-#include "minicontrol-internal-handler.h"
-#include "minicontrol-handler.h"
#ifndef EXPORT_API
#define EXPORT_API __attribute__ ((visibility("default")))
#endif /* EXPORT_API */
-#define MINICTRL_DBUS_SIG_START "minicontrol_start"
-#define MINICTRL_DBUS_SIG_REALIZE "minicontrol_realize"
-#define MINICTRL_DBUS_SIG_STOP "minicontrol_stop"
-#define MINICTRL_DBUS_SIG_RESIZE "minicontrol_resize"
#define MINICTRL_DBUS_SIG_RUNNING_REQ "minicontrol_running_request"
-#define MINICTRL_DBUS_SIG_REQUEST "minicontrol_request"
+
+#define MINICTRL_DBUS_SIG_TO_PROVIDER "minicontrol_signal_to_provider"
+#define MINICTRL_DBUS_SIG_TO_VIEWER "minicontrol_signal_to_viewer"
+
+#define BUNDLE_BUFFER_LENGTH 100
+
+/**
+ * @brief Enumeration for describing type of dbus.
+ */
+
+enum _minictrl_PROC_DBUS_TYPE {
+ MINICONTROL_DBUS_PROC_EXCLUDE, /**< Request to exclude from the unfreezing process list */
+ MINICONTROL_DBUS_PROC_INCLUDE, /**< Request to include to the unfreezing process list */
+};
+
+/**
+ * @brief Enumeration for describing type of actions allowed to inhouse apps.
+ * @since_tizen 2.4
+ */
+typedef enum {
+ MINICONTROL_REQ_NONE = 0,
+ MINICONTROL_REQ_HIDE_VIEWER = 100, /**< Requests that the minicontrol viewer(s) close the provider's minicontrol */
+ MINICONTROL_REQ_FREEZE_SCROLL_VIEWER, /**< Requests that the minicontrol viewer(s) freeze its window scroll */
+ MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER, /**< Requests that the minicontrol viewer(s) unfreeze its window scroll */
+ MINICONTROL_REQ_REPORT_VIEWER_ANGLE, /**< Requests the current angle of the minicontrol viewer */
+ MINICONTROL_REQ_ROTATE_PROVIDER = 200, /**< Requests that the minicontrol provider rotate the provider's minicontrol */
+} minicontrol_request_e;
+
+/**
+ * @brief Enumeration for describing priority of a minicontrol provider.
+ * @since_tizen 2.4
+ */
+typedef enum {
+ MINICONTROL_PRIORITY_TOP = 1000, /**< Top priority */
+ MINICONTROL_PRIORITY_MIDDLE = 100, /**< Middle priority */
+ MINICONTROL_PRIORITY_LOW = 1, /**< Low priority */
+} minicontrol_priority_e;
+
+/**
+ * @brief Enumeration for describing type of events originated by a minicontrol provider.
+ * @since_tizen 2.4
+ */
+typedef enum _minicontrol_action {
+ MINICONTROL_ACTION_START = 0, /**< A minicontrol object is created */
+ MINICONTROL_ACTION_STOP, /**< A minicontrol object is deleted */
+ MINICONTROL_ACTION_RESIZE, /**< A minicontrol object is resized */
+ MINICONTROL_ACTION_REQUEST, /**< the viewer of the minicontrol object is asked to do something */
+} minicontrol_action_e;
+
+typedef enum {
+ MINICONTROL_EVENT_REQUEST_LOCK = 1001, /**< A minicontrol object should not be removed by user */
+} minicontrol_internal_provider_event_e;
typedef struct _minictrl_sig_handle minictrl_sig_handle;
-int _minictrl_provider_message_send(const char *sig_name, const char *svr_name,
- unsigned int witdh, unsigned int height,
- minicontrol_priority_e priority,
- minicontrol_h handler);
+int _minictrl_provider_message_send(int event, const char *minicontrol_name, unsigned int witdh, unsigned int height, minicontrol_priority_e priority);
int _minictrl_viewer_req_message_send(void);
int _minictrl_provider_proc_send(int type);
+/* new */
+int _minictrl_send_event(const char *signal_name, const char *minicontrol_name, int event, bundle *signal_arg);
+
#endif /* _MINICTRL_INTERNAL_H_ */
#include <minicontrol-error.h>
#include <minicontrol-type.h>
-#include <minicontrol-handler.h>
+#include <minicontrol-internal.h>
#ifdef __cplusplus
extern "C" {
#endif
-/**
- * @file minicontrol-monitor.h
- * @brief This minicontrol monitor library used to manage events triggered by minicontrol provider.
- */
-
-/**
- * @addtogroup MINICONTROL_MONITOR_MODULE
- * @{
- */
-
- /**
- * @brief Called when event is triggered.
- * @param[in] action The type of fired event
- * @param[in] name The name of provider
- * @param[in] width The width of provider
- * @param[in] height The height of provider
- * @param[in] priority The priority of provider
- * @param[in] data User data
- * @pre minicontrol_monitor_start() used to register this callback.
- * @see #minicontrol_action_e
- * @see #minicontrol_priority_e
- */
typedef void (*minicontrol_monitor_cb) (minicontrol_action_e action,
const char *name,
unsigned int width,
unsigned int height,
minicontrol_priority_e priority,
void *data);
-typedef void (*minicontrol_monitor_with_handler_cb) (minicontrol_action_e action,
- const char *name,
- unsigned int width,
- unsigned int height,
- minicontrol_priority_e priority,
- minicontrol_h handler,
- void *data);
-
-/**
- * @brief Registers a callback for events originated by minicontrol provider.
- * @param[in] callback Callback function
- * @param[in] data User data
- */
-minicontrol_error_e minicontrol_monitor_start(minicontrol_monitor_cb callback,
- void *data);
-/**
- * @brief Register a callback for events originated by minicontrol provider
- * @param[in] callback callback function
- * @param[in] data user data
- */
-minicontrol_error_e minicontrol_monitor_start_with_handler(
- minicontrol_monitor_with_handler_cb callback, void *data);
-/**
- * @brief Unregisters a callback for events originated by minicontrol provider.
- * @return #MINICONTROL_ERROR_NONE if success, other value if failure
- * @see #minicontrol_error_e
- */
-minicontrol_error_e minicontrol_monitor_stop(void);
+int minicontrol_monitor_start(minicontrol_monitor_cb callback, void *data) DEPRECATED;
-/**
- * @}
- */
+int minicontrol_monitor_stop(void) DEPRECATED;
#ifdef __cplusplus
}
--- /dev/null
+/*
+ * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _MINICONTROL_PROVIDER_INTERNAL_H_
+#define _MINICONTROL_PROVIDER_INTERNAL_H_
+
+#include <Evas.h>
+#include "minicontrol-error.h"
+#include "minicontrol-type.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Evas_Object *minicontrol_win_add(const char *name) DEPRECATED;
+
+int minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request) DEPRECATED;
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* _MINICONTROL_PROVIDER_INTERNAL_H_ */
#define _MINICTRL_PROVIDER_H_
#include <Evas.h>
+#include <bundle.h>
#include "minicontrol-error.h"
#include "minicontrol-type.h"
extern "C" {
#endif
-
/**
* @file minicontrol-provider.h
- * @brief This minicontrol provider library used to create evas socket window.
+ * @brief This minicontrol provider library used to create evas socket window.\n
+ * This library is providing functions for create a remote evas object to draw a minicontrol on a minicontrol viewer and\n
+ * sending some requests to the minicontrol viewer.\n
+ * Drawings on this remote evas object will be shown on the place ofthe minicontrol viewer.
*/
/**
*/
/**
- * @brief Creates evas socket window.
- * @param[in] name Name of socket window
- * @return Evas object of socket window
- */
-Evas_Object *minicontrol_win_add(const char *name);
-
-/**
- * @brief This function create evas socket window with a minicontrol handler
- *
- * @remarks minicontrol service name should be set before call this function
- * @param[in] handler handler of socket window
- * @return evas object of socket window
- */
-Evas_Object *minicontrol_win_add_by_handler(minicontrol_h handler);
-
-/**
- * @brief Requests various actions to the viewer.
- * @param[in] minicontrol Evas object of socket window
- * @param[in] action Type of action
- * @return Evas object of socket window
+ * @brief Called when a event comes from viewer
+ * @since_tizen 2.4
+ * @param[in] event_type The type of fired event
+ * @param[in] event_arg argument of the event
+ * @pre minicontrol_viewer_register_event_callback() used to register this callback.
+ * @see #minicontrol_create_window
+ * @see #minicontrol_viewer_event_e
*/
-minicontrol_error_e minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request);
+typedef void (*minicontrol_event_cb) (minicontrol_viewer_event_e event_type, bundle *event_arg);
/**
- * @remarks you don't have to destory handler, the handler will be referenced by minicontrol lib
- * @brief This function gets a minicontrol handler from the minicontrol object
- * @param[in] minicontrol evas object of socket window
- * @param[in] handler handler of socket window
- * @return minicontrol handler
+ * @brief Creates a window for minicontrol.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/minicontrol.provider
+ * @param[in] name Name of minicontrol socket window
+ * @param[in] target_viewer Target viewer for minicontrol. You can select multiple viewers by using bitwise OR operator.
+ * @param[in] callback a callback function for events originated by minicontrol viewer.
+ * @return Evas object of socket window. @c NULL failed to create, get_last_result() will returns reason of failure.
+ * @see #minicontrol_target_viewer_e
+ * @see #minicontrol_event_cb
*/
-minicontrol_error_e minicontrol_win_handler_get(Evas_Object *mincontrol, minicontrol_h *handler);
+Evas_Object* minicontrol_create_window(const char *name, minicontrol_target_viewer_e target_viewer, minicontrol_event_cb callback);
/**
- * @brief This function send request for updating with the updaed minicontrol handler
- * @param[in] minicontrol evas object of socket window
- * @param[in] handler handler of socket window
- * @return evas object of socket window
+ * @brief Sends a event to the viewer.
+ * @remarks When a viewer doesn't handle some events, it can be ignored.
+ * @since_tizen 2.4
+ * @privlevel public
+ * @privilege %http://tizen.org/privilege/minicontrol.provider
+ * @param[in] minicontrol minicontrol window
+ * @param[in] event Type of the event
+ * @param[in] event_arg Bundle argument of the event
+ * @return #MINICONTROL_ERROR_NONE on success,
+ * otherwise an error code (see #MINICONTROL_ERROR_XXX) on failure
+ * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid argument
+ * @retval #MINICONTROL_ERROR_PERMISSION_DENIED Permission denied
+ * @see #minicontrol_provider_event_e
+ * @see #minicontrol_create_window
+ * @see #minicontrol_request_to_viewer_e
*/
-minicontrol_error_e minicontrol_win_handler_update(Evas_Object *mincontrol, minicontrol_h handler);
+int minicontrol_send_event(Evas_Object *mincontrol, minicontrol_provider_event_e event, bundle *event_arg);
/**
* @}
*/
/**
- * @addtogroup MINICONTROL_MONITOR_MODULE
+ * @addtogroup MINICONTROL_LIBRARY
* @{
*/
-typedef struct _minicontrol_h *minicontrol_h;
+#ifndef DEPRECATED
+#define DEPRECATED __attribute__((deprecated))
+#endif /* DEPRECATED */
/**
- * @brief Enumeration for describing type of events originated by a minicontrol provider.
- */
-typedef enum _minicontrol_action {
- MINICONTROL_ACTION_START = 0, /**< A minicontrol object is created */
- MINICONTROL_ACTION_STOP, /**< A minicontrol object is deleted */
- MINICONTROL_ACTION_RESIZE, /**< A minicontrol object is resized */
- MINICONTROL_ACTION_REQUEST, /**< the viewer of the minicontrol object is asked to do something */
- MINICONTROL_ACTION_REALIZE, /**< the viewer of the minicontrol object is realized */
-} minicontrol_action_e;
+@section MINICONTROL_LIBRARY_EVENTS Events
+
+<TABLE>
+<TR>
+<TD>Event Type</TD><TD>Originated by</TD>
+<TD>Argument 1 Key</TD><TD>Argument 1 Type</TD>
+<TD>Argument 2 Key</TD><TD>Argument 2 Type</TD>
+<TD>Argument 3 Key</TD><TD>Argument 3 Type</TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_START</TD><TD>provider</TD>
+<TD>minicontrol_name</TD><TD>string</TD>
+<TD>width</TD><TD>integer</TD>
+<TD>height</TD><TD>integer</TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_STOP</TD><TD>provider</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_RESIZE</TD><TD>provider</TD>
+<TD>minicontrol_name</TD><TD>string</TD>
+<TD>width</TD><TD>integer</TD>
+<TD>height</TD><TD>integer</TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_REQUEST_HIDE</TD><TD>provider</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_REQUEST_ANGLE</TD><TD>provider</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_EVENT_REPORT_ANGLE</TD><TD>viewer</TD>
+<TD>angle</TD><TD>string</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_VIEWER_EVENT_SHOW</TD><TD>viewer</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+<TR>
+<TD>MINICONTROL_VIEWER_EVENT_HIDE</TD><TD>viewer</TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+<TD></TD><TD></TD>
+</TR>
+</TABLE>
+*/
/**
- * @brief Enumeration for describing priority of a minicontrol provider.
+ * @brief Enumerations for describing types of events originated by a minicontrol provider.
+ * @since_tizen 2.4
*/
typedef enum {
- MINICONTROL_PRIORITY_TOP = 1000, /**< Top priority */
- MINICONTROL_PRIORITY_MIDDLE = 100, /**< Middle priority */
- MINICONTROL_PRIORITY_LOW = 1, /**< Low priority */
-}minicontrol_priority_e;
+ MINICONTROL_EVENT_START, /**< A minicontrol object is created */
+ MINICONTROL_EVENT_STOP, /**< A minicontrol object is deleted */
+ MINICONTROL_EVENT_RESIZE, /**< A minicontrol object is resized */
+ MINICONTROL_EVENT_REQUEST_HIDE = 100, /**< Requests that the minicontrol viewer(s) close the provider's minicontrol */
+ MINICONTROL_EVENT_REQUEST_ANGLE = 103, /**< Requests the current angle of the minicontrol viewer */
+ MINICONTROL_EVENT_REPORT_ANGLE = 200, /**< Reports the current angle of the minicontrol viewer */
+} minicontrol_event_e;
/**
- * @brief Enumeration for describing type of actions.
+ * @brief Enumerations for types of events which will be sent by minicontrol_send_event.
+ * @since_tizen 2.4
*/
typedef enum {
- MINICONTROL_REQ_NONE = 0,/**< Request to viewer */
-
- /*!
- * request to viewer
- */
- MINICONTROL_REQ_HIDE_VIEWER = 100, /**< Request to hide the minicontrol viewer */
- MINICONTROL_REQ_FREEZE_SCROLL_VIEWER, /**< Request to freeze scroll of the minicontrol viewer */
- MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER, /**< Request to unfreeze scroll of the minicontrol viewer */
- MINICONTROL_REQ_REPORT_VIEWER_ANGLE, /**< Request to report the current angle of the minicontrol viewer */
- MINICONTROL_REQ_UPDATE_HANDLER,
-
- /*!
- * request to provider
- */
- MINICONTROL_REQ_ROTATE_PROVIDER = 200, /**< Request to provider */
- MINICONTROL_REQ_PROVIDER_PAUSE = 201,
- MINICONTROL_REQ_PROVIDER_RESUME = 202,
-}minicontrol_request_e;
+ MINICONTROL_PROVIDER_EVENT_REQUEST_HIDE = MINICONTROL_EVENT_REQUEST_HIDE, /**< Requests that the minicontrol viewer(s) close the provider's minicontrol. Required bundle argument : NULL. */
+ MINICONTROL_PROVIDER_EVENT_REQUEST_ANGLE = MINICONTROL_EVENT_REQUEST_ANGLE, /**< Requests the current angle of the minicontrol viewer. Required bundle argument : NULL. */
+} minicontrol_provider_event_e;
/**
- * @brief Enumeration for describing type of dbus.
+ * @brief Enumerations for types of events which will be sent by minicontrol_viewer_send_event.
+ * @since_tizen 2.4
*/
+typedef enum {
+ MINICONTROL_VIEWER_EVENT_REPORT_ANGLE = MINICONTROL_EVENT_REPORT_ANGLE, /**< Reports the current angle of the minicontrol viewer. Required argument : Angle of minicontrol viewer, Bundle Key : "angle", Bundle Value Type : string.*/
+ MINICONTROL_VIEWER_EVENT_SHOW = 201, /**< The minicontrol viewer is shown. Required argument : NULL.*/
+ MINICONTROL_VIEWER_EVENT_HIDE = 202, /**< The minicontrol viewer is hidden. Required argument : NULL.*/
+} minicontrol_viewer_event_e;
-enum _minictrl_PROC_DBUS_TYPE {
- MINICONTROL_DBUS_PROC_EXCLUDE, /**< Request to exclude from the unfreezing process list */
- MINICONTROL_DBUS_PROC_INCLUDE, /**< Request to include to the unfreezing process list */
-};
+/**
+ * @brief Enumerations for selecting target viewers.
+ * @since_tizen 2.4
+ */
+typedef enum {
+ MINICONTROL_TARGET_VIEWER_QUICK_PANEL = 0x0001, /**< Request to place the minicontrol on the quickpanel */
+ MINICONTROL_TARGET_VIEWER_STOCK_LOCK_SCREEN = 0x0002, /**< Request to place the minicontrol on the stock lock screen */
+ MINICONTROL_TARGET_VIEWER_CUSTOM_LOCK_SCREEN = 0x0004, /**< Request to place the minicontrol on a lock screen replacement application */
+} minicontrol_target_viewer_e;
/**
* @}
--- /dev/null
+/*
+ * minicontrol-viewer-internal.h
+ *
+ * Created on: 2015. 4. 13.
+ * Author: kyuho.jo
+ */
+
+#ifndef _MINICONTROL_VIEWER_INTERNAL_H_
+#define _MINICONTROL_VIEWER_INTERNAL_H_
+
+int minicontrol_viewer_request(const char *appid, minicontrol_request_e request, int value) DEPRECATED;
+
+Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj) DEPRECATED;
+
+#endif /* _MINICONTROL_VIEWER_INTERNAL_H_ */
#define _MINICTRL_VIEWER_H_
#include <Evas.h>
+#include <bundle.h>
#include "minicontrol-error.h"
#include "minicontrol-type.h"
/**
* @file minicontrol-viewer.h
- * @brief This minicontrol viewer library used to display minicontrol which created by minicontrol provider.
+ * @brief This minicontrol viewer library used to display minicontrol which created by the minicontrol provider.\n
+ * This library is providing functions for attach a minicontrol viewer to a parent evas object and sending some requests to a minicontrol provider.\n
+ * The minicontrol viewer places a space which will be used by the minicontrol provider to draw minicontrol.
*/
/**
*/
/**
- * @brief Adds minicontrol named as "svr_name" to a given parent evas object and returns it.
+ * @brief Adds minicontrol named as "minicontrol_name" to a given parent evas object and returns it.
+ * @since_tizen 2.4
* @param[in] parent Minicontrol object will be added to this parent evas object
- * @param[in] svr_name Name of minicontrol
- * @return Evas object of minicontrol
+ * @param[in] minicontrol_name Name of minicontrol
+ * @return Evas object of minicontrol. @c NULL failed to add, get_last_result() will returns reason of failure.
*/
-Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *svr_name);
+Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *minicontrol_name);
/**
- * @brief Gets the basic evas image object from given minicontrol object.
- * @param[in] obj Minicontrol object
- * @return Basic evas image object of minicontrol object
+ * @brief Sends a event to the provider.
+ * @since_tizen 2.4
+ * @param[in] minicontrol_name The name of the minicontrol window
+ * @param[in] event Type of the event
+ * @param[in] event_arg A bundle of arguments
+ * @return #MINICONTROL_ERROR_NONE on success,
+ * otherwise an error code (see #MINICONTROL_ERROR_XXX) on failure
+ * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid argument
+ * @see #minicontrol_viewer_event_e
*/
-Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj);
+int minicontrol_viewer_send_event(const char *minicontrol_name, minicontrol_viewer_event_e event, bundle *event_arg);
/**
- * @brief Requests various actions to the provider.
- * @param[in] minicontrol Evas object of socket window
- * @param[in] action Type of action
- * @return Evas object of socket window
+ * @brief Called when a event comes from the provider
+ * @since_tizen 2.4
+ * @param[in] event The type of fired event
+ * @param[in] minicontrol_name The name of the minicontrol window
+ * @param[in] event_arg A bundle of arguments
+ * @param[in] data User data
+ * @see #minicontrol_viewer_set_event_cb
*/
-minicontrol_error_e minicontrol_viewer_request(const char *appid, minicontrol_request_e request, int value);
+typedef void (*minicontrol_viewer_event_cb) (minicontrol_event_e event, const char *minicontrol_name, bundle *event_arg, void *data);
+
+/**
+ * @brief Registers a callback for events originated by minicontrol provider.
+ * @since_tizen 2.4
+ * @param[in] callback Callback function
+ * @param[in] user_data User data
+ * @return #MINICONTROL_ERROR_NONE on success,
+ * otherwise an error code (see #MINICONTROL_ERROR_XXX) on failure
+ * @retval #MINICONTROL_ERROR_INVALID_PARAMETER Invalid argument
+ * @retval #MINICONTROL_ERROR_IPC_FAILURE IPC failure
+ * @retval #MINICONTROL_ERROR_OUT_OF_MEMORY out of memory
+ * @see #minicontrol_viewer_unset_event_cb
+ * @see #minicontrol_viewer_event_cb
+ */
+int minicontrol_viewer_set_event_cb(minicontrol_viewer_event_cb callback, void *user_data);
+
+/**
+ * @brief Unregisters a callback for events originated by minicontrol provider.
+ * @since_tizen 2.4
+ * @return #MINICONTROL_ERROR_NONE if success, other value if failure
+ * @see #minicontrol_viewer_set_event_cb
+ */
+int minicontrol_viewer_unset_event_cb(void);
/**
* @}
#ifndef _MINICONTROL_H_DEF_
#define _MINICONTROL_H_DEF_
+#include <minicontrol-internal.h>
#include <minicontrol-provider.h>
+#include <minicontrol-provider_internal.h>
#include <minicontrol-viewer.h>
-#include <minicontrol-monitor.h>
+#include <minicontrol-viewer_internal.h>
+
#endif /* _MINICONTROL_H_DEF_ */
Name: minicontrol
Summary: minicontrol library
-Version: 0.0.16
+Version: 0.1.2
Release: 1
Group: TBD
-License: Apache
+License: Apache-2.0
Source0: %{name}-%{version}.tar.gz
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(dbus-glib-1)
export CXXFLAGS="$CXXFLAGS -DTIZEN_DEBUG_ENABLE"
export FFLAGS="$FFLAGS -DTIZEN_DEBUG_ENABLE"
%endif
+export CFLAGS+=" -fPIC "
export LDFLAGS+="-Wl,--rpath=%{_prefix}/lib -Wl,--as-needed"
LDFLAGS="$LDFLAGS" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix}
make %{?jobs:-j%jobs}
%{_libdir}/libminicontrol-provider.so*
%{_libdir}/libminicontrol-viewer.so*
%{_libdir}/libminicontrol-monitor.so*
-%{_libdir}/libminicontrol-handler.so*
/usr/share/license/%{name}
%files devel
%{_libdir}/pkgconfig/minicontrol-provider.pc
%{_libdir}/pkgconfig/minicontrol-monitor.pc
%{_libdir}/pkgconfig/minicontrol-viewer.pc
-%{_libdir}/pkgconfig/minicontrol-handler.pc
+++ /dev/null
-/*
- * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <time.h>
-#include <dbus/dbus.h>
-
-#include "minicontrol-error.h"
-#include "minicontrol-internal.h"
-#include "minicontrol-monitor.h"
-#include "minicontrol-log.h"
-#include "minicontrol-handler.h"
-
-/*!
- * handler APIs
- */
-EXPORT_API minicontrol_error_e minicontrol_handler_create(minicontrol_h *handler)
-{
- return _minictrl_handler_create(handler);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_destroy(minicontrol_h handler)
-{
- return _minictrl_handler_destroy(handler);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_clone(minicontrol_h handler, minicontrol_h *handler_new)
-{
- return _minictrl_handler_clone(handler, handler_new);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_set_service_name(minicontrol_h handler, const char *name)
-{
- return _minictrl_handler_set_service_name(handler, name);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_service_name(minicontrol_h handler, char **name)
-{
- return _minictrl_handler_get_service_name(handler, name);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_set_category(minicontrol_h handler, const char *category)
-{
- return _minictrl_handler_set_category(handler, category);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_category(minicontrol_h handler, char **category)
-{
- return _minictrl_handler_get_category(handler, category);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_set_operation(minicontrol_h handler, const char *operation)
-{
- return _minictrl_handler_set_operation(handler, operation);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_operation(minicontrol_h handler, char **operation)
-{
- return _minictrl_handler_get_operation(handler, operation);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_set_priority(minicontrol_h handler, const char *priority)
-{
- return _minictrl_handler_set_priority(handler, priority);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_priority(minicontrol_h handler, char **priority)
-{
- return _minictrl_handler_get_priority(handler, priority);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_set_timestamp(minicontrol_h handler, time_t timestamp)
-{
- return _minictrl_handler_set_timestamp(handler, timestamp);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_timestamp(minicontrol_h handler, time_t *timestamp)
-{
- return _minictrl_handler_get_timestamp(handler, timestamp);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_pid(minicontrol_h handler, int *pid)
-{
- return _minictrl_handler_get_pid(handler, pid);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_state(minicontrol_h handler, int *state)
-{
- return _minictrl_handler_get_state(handler, state);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_add_extradata(minicontrol_h handler, const char *key, const char *value)
-{
- return _minictrl_handler_add_extradata(handler, key, value);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_remove_extradata(minicontrol_h handler, const char *key)
-{
- return _minictrl_handler_remove_extradata(handler, key);
-}
-
-EXPORT_API minicontrol_error_e minicontrol_handler_get_extradata(minicontrol_h handler, const char *key, char **value)
-{
- return _minictrl_handler_get_extradata(handler, key, value);
-}
+++ /dev/null
-/*
- * Copyright (c) 2013-2015 Samsung Electronics Co., Ltd All Rights Reserved
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdlib.h>
-#include <time.h>
-#include <dbus/dbus.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#include "minicontrol-error.h"
-#include "minicontrol-type.h"
-#include "minicontrol-internal.h"
-#include "minicontrol-monitor.h"
-#include "minicontrol-log.h"
-#include "minicontrol-handler.h"
-
-#define BUNDLE_KEY_PID "__KEY_PID__"
-#define BUNDLE_KEY_STATE "__KEY_STATE__"
-#define BUNDLE_KEY_SERVICE_NAME "__KEY_SERVICE_NAME__"
-#define BUNDLE_KEY_CATEGORY "__KEY_CATEGORY__"
-#define BUNDLE_KEY_OPERATION "__KEY_OPERATION__"
-#define BUNDLE_KEY_PRIORITY "__KEY_PRIORITY__"
-#define BUNDLE_KEY_TIMESTAMP "__KEY_TIMESTAMP__"
-
-/*!
- * bundle utility
- */
-static int _bundle_set_byte(bundle *b, const char *key, void *value, int length)
-{
- int ret = 0;
- size_t ret_size = 0;
- void *ret_byte = NULL;
-
- ret = bundle_get_byte(b, key, &ret_byte, &ret_size);
- if (ret == 0 && ret_byte != NULL) {
- if(bundle_del(b, key) != 0) {
- ERR("Failed to del a previous value(key):%s", key);
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
- }
-
- if (value == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (bundle_add_byte(b, key, value, length) != 0) {
- ERR("Failed to set a new value(key):%s", key);
- return MINICONTROL_ERROR_BUNDLE;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-static int _bundle_set_str(bundle *b, const char *key, const char *value)
-{
- const char *val = NULL;
-
- val = bundle_get_val(b, key);
- if(val != NULL){
- if(bundle_del(b, key) != 0) {
- ERR("Failed to del a previous value(key):%s", key);
- return MINICONTROL_ERROR_BUNDLE;
- }
- }
-
- if(value == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if(bundle_add(b, key, value) != 0){
- ERR("Failed to set a new value(key):%s", key);
- return MINICONTROL_ERROR_BUNDLE;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-/*!
- * handler utility
- */
-static int _handler_validation_check(minicontrol_h handler) {
- if (handler != NULL) {
- if (handler->data != NULL) {
- return MINICONTROL_ERROR_NONE;
- }
- }
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-}
-
-static int _handler_extradata_key_validation_check(const char *key) {
- if (key != NULL) {
- if (strcmp(key, BUNDLE_KEY_PID) == 0) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-
- } else if (strcmp(key, BUNDLE_KEY_SERVICE_NAME) == 0) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-
- } else if (strcmp(key, BUNDLE_KEY_SERVICE_NAME) == 0) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-
- } else if (strcmp(key, BUNDLE_KEY_OPERATION) == 0) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-
- } else if (strcmp(key, BUNDLE_KEY_PRIORITY) == 0) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-
- } else if (strcmp(key, BUNDLE_KEY_TIMESTAMP) == 0) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-}
-
-/*!
- * handler bundle utility
- */
-static minicontrol_error_e __set_str_to_handler(minicontrol_h handler, const char *key, const char *value)
-{
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE
- || key == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (value != NULL) {
- return _bundle_set_str(handler->data, key, value);
- } else {
- bundle_del(handler->data, key);
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-static minicontrol_error_e __get_str_from_handler(minicontrol_h handler, const char *key, char **value)
-{
- const char *data_value;
-
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE
- || key == NULL
- || value == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;;
- }
-
- data_value = bundle_get_val(handler->data, key);
- if (data_value == NULL) {
- if (errno == ENOTSUP) {
- return MINICONTROL_ERROR_BUNDLE;
- } else {
- return MINICONTROL_ERROR_NO_DATA;
- }
- }
-
- *value = strdup(data_value);
-
- return MINICONTROL_ERROR_NONE;
-}
-
-/*!
- * handler APIs
- */
-minicontrol_error_e _minictrl_handler_create(minicontrol_h *handler)
-{
- minicontrol_h handler_new = NULL;
- if (handler == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- handler_new = calloc(1, sizeof(struct _minicontrol_h));
- if (handler_new == NULL) {
- ERR("Failed to create a handler");
- return MINICONTROL_ERROR_OUT_OF_MEMORY;
- }
-
- handler_new->data = bundle_create();
- if (handler_new->data == NULL)
- {
- free(handler_new);
- ERR("Failed to create a bundle");
- return MINICONTROL_ERROR_OUT_OF_MEMORY;
- }
-
- if (_minictrl_handler_set_pid(handler_new) != MINICONTROL_ERROR_NONE) {
- ERR("Failed to set PID to handler");
- }
- if (_minictrl_handler_set_state(handler_new, 0) != MINICONTROL_ERROR_NONE) {
- ERR("Failed to set state to handler");
- }
- if (_minictrl_handler_set_category(handler_new, MINICONTROL_HDL_CATEGORY_UNKNOWN) != MINICONTROL_ERROR_NONE) {
- ERR("Failed to set category to handler");
- }
-
- *handler = handler_new;
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_destroy(minicontrol_h handler)
-{
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- bundle_free(handler->data);
- handler->data = NULL;
- free(handler);
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_clone(minicontrol_h handler, minicontrol_h *handler_new)
-{
- int ret = 0;
-
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE || handler_new == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if ((ret = _minictrl_handler_create(handler_new)) == MINICONTROL_ERROR_NONE) {
- (*handler_new)->data = bundle_dup(handler->data);
- if ((*handler_new)->data == NULL) {
- _minictrl_handler_destroy(*handler_new);
- return MINICONTROL_ERROR_OUT_OF_MEMORY;
- }
- } else {
- return ret;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_check_validation(minicontrol_h handler)
-{
- return _handler_validation_check(handler);
-}
-
-minicontrol_error_e _minictrl_handler_set_service_name(minicontrol_h handler, const char *name)
-{
- return __set_str_to_handler(handler, BUNDLE_KEY_SERVICE_NAME, name);
-}
-
-minicontrol_error_e _minictrl_handler_get_service_name(minicontrol_h handler, char **name)
-{
- return __get_str_from_handler(handler, BUNDLE_KEY_SERVICE_NAME, name);
-}
-
-minicontrol_error_e _minictrl_handler_set_category(minicontrol_h handler, const char *category)
-{
- return __set_str_to_handler(handler, BUNDLE_KEY_CATEGORY, category);
-}
-
-minicontrol_error_e _minictrl_handler_get_category(minicontrol_h handler, char **category)
-{
- return __get_str_from_handler(handler, BUNDLE_KEY_CATEGORY, category);
-}
-
-minicontrol_error_e _minictrl_handler_set_operation(minicontrol_h handler, const char *operation)
-{
- return __set_str_to_handler(handler, BUNDLE_KEY_OPERATION, operation);
-}
-
-minicontrol_error_e _minictrl_handler_get_operation(minicontrol_h handler, char **operation)
-{
- return __get_str_from_handler(handler, BUNDLE_KEY_OPERATION, operation);
-}
-
-minicontrol_error_e _minictrl_handler_set_priority(minicontrol_h handler, const char *priority)
-{
- return __set_str_to_handler(handler, BUNDLE_KEY_PRIORITY, priority);
-}
-
-minicontrol_error_e _minictrl_handler_get_priority(minicontrol_h handler, char **priority)
-{
- return __get_str_from_handler(handler, BUNDLE_KEY_PRIORITY, priority);
-}
-
-minicontrol_error_e _minictrl_handler_set_timestamp(minicontrol_h handler, time_t timestamp)
-{
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (timestamp > 0) {
- return _bundle_set_byte(handler->data, BUNDLE_KEY_TIMESTAMP, (void *)×tamp, sizeof(time_t));
- } else {
- bundle_del(handler->data, BUNDLE_KEY_TIMESTAMP);
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_get_timestamp(minicontrol_h handler, time_t *timestamp)
-{
- int ret = 0;
- size_t ret_size = 0;
- void *ret_value = NULL;
-
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE || timestamp == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- ret = bundle_get_byte(handler->data, BUNDLE_KEY_TIMESTAMP, &ret_value, &ret_size);
- if (ret == 0 && ret_value != NULL && ret_size == sizeof(time_t)) {
- *timestamp = *((time_t *)ret_value);
- } else {
- *timestamp = 0;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_set_pid(minicontrol_h handler)
-{
- int pid = 0;
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- pid = getpid();
- if (pid > 0) {
- return _bundle_set_byte(handler->data, BUNDLE_KEY_PID, (void *)&pid, sizeof(int));
- } else {
- bundle_del(handler->data, BUNDLE_KEY_PID);
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_get_pid(minicontrol_h handler, int *pid)
-{
- int ret = 0;
- size_t ret_size = 0;
- void *ret_value = NULL;
-
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE || pid == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- ret = bundle_get_byte(handler->data, BUNDLE_KEY_PID, &ret_value, &ret_size);
- if (ret == 0 && ret_value != NULL && ret_size == sizeof(int)) {
- *pid = *((int *)ret_value);
- } else {
- *pid = 0;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_set_state(minicontrol_h handler, int state)
-{
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (state >= 0) {
- return _bundle_set_byte(handler->data, BUNDLE_KEY_STATE, (void *)&state, sizeof(int));
- } else {
- bundle_del(handler->data, BUNDLE_KEY_STATE);
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_get_state(minicontrol_h handler, int *state)
-{
- int ret = 0;
- size_t ret_size = 0;
- void *ret_value = NULL;
-
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE || state == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- ret = bundle_get_byte(handler->data, BUNDLE_KEY_STATE, &ret_value, &ret_size);
- if (ret == 0 && ret_value != NULL && ret_size == sizeof(int)) {
- *state = *((int *)ret_value);
- } else {
- *state = 0;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_add_extradata(minicontrol_h handler, const char *key, const char *value)
-{
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE
- || _handler_extradata_key_validation_check(key) != MINICONTROL_ERROR_NONE
- || value == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;;
- }
-
- return _bundle_set_str(handler->data, key, value);
-}
-
-minicontrol_error_e _minictrl_handler_remove_extradata(minicontrol_h handler, const char *key)
-{
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE
- || _handler_extradata_key_validation_check(key) != MINICONTROL_ERROR_NONE) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;;
- }
-
- if (bundle_del(handler->data, key)) {
- return MINICONTROL_ERROR_NO_DATA;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_get_extradata(minicontrol_h handler, const char *key, char **value)
-{
- const char *data_value;
-
- if (_handler_validation_check(handler) != MINICONTROL_ERROR_NONE
- || _handler_extradata_key_validation_check(key) != MINICONTROL_ERROR_NONE
- || value == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;;
- }
-
- data_value = bundle_get_val(handler->data, key);
- if (data_value == NULL) {
- if (errno == ENOTSUP) {
- return MINICONTROL_ERROR_BUNDLE;
- } else {
- return MINICONTROL_ERROR_NO_DATA;
- }
- }
-
- *value = strdup(data_value);
-
- return MINICONTROL_ERROR_NONE;
-}
-
-minicontrol_error_e _minictrl_handler_get_raw_data(minicontrol_h handler, char **raw_data, int *length)
-{
- if (handler == NULL || raw_data == NULL || length == NULL) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (handler->data != NULL) {
- bundle_encode(handler->data,
- (bundle_raw **) raw_data, length);
- } else {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-static void iterate_bundleforeach(const char *key,const int type, bundle_keyval_t *kv, void *data)
-{
- switch(type)
- {
- case BUNDLE_TYPE_STR:
- {
- size_t size;
- char *basic_val = NULL;
-
- bundle_keyval_get_basic_val(kv,(void *)&basic_val,&size);
- ERR("Key: %s ---- Val: %s\n",key,basic_val);
-
- break;
- }
- case BUNDLE_TYPE_BYTE:
- {
- size_t size;
- char *basic_val = NULL;
-
- bundle_keyval_get_basic_val(kv,(void *)&basic_val,&size);
- ERR("Key: %s ---- Val: %d\n",key, *((int *)basic_val));
-
- break;
- }
- default:
- {
- DBG("\n no match found");
- DBG("Key: %s is of type %d\n",key, type);
- break;
- }
- }
-}
-
-minicontrol_error_e _minictrl_handler_get_handler_from_raw_data(minicontrol_h *handler, char *raw_data, int length)
-{
- if (_minictrl_handler_create(handler) == MINICONTROL_ERROR_NONE) {
- (*handler)->data = bundle_decode((bundle_raw *)raw_data, length);
- bundle_foreach((*handler)->data,(void *)iterate_bundleforeach,NULL);
- } else {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
*/
#include <stdlib.h>
-#include <unistd.h>
#include <dbus/dbus.h>
#include <dbus/dbus-glib-lowlevel.h>
+#include <bundle.h>
#include "minicontrol-error.h"
#include "minicontrol-type.h"
#include "minicontrol-internal.h"
#include "minicontrol-log.h"
-#include "minicontrol-handler.h"
#define MINICTRL_DBUS_PATH "/org/tizen/minicontrol"
#define MINICTRL_DBUS_INTERFACE "org.tizen.minicontrol.signal"
connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
if (!connection) {
ERR("Fail to dbus_bus_get : %s", err.message);
- ret = MINICONTROL_ERROR_DBUS;
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
dbus_ret = dbus_connection_send(connection, message, NULL);
if (!dbus_ret) {
ERR("fail to send dbus viewer req message");
- ret = MINICONTROL_ERROR_DBUS;
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
conn = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
if (!conn) {
ERR("Fail to dbus_bus_get : %s", err.message);
- ret = MINICONTROL_ERROR_DBUS;
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
msg = dbus_message_new_signal(PROC_DBUS_OBJECT, // object name of the signal
}
-int _minictrl_provider_message_send(const char *sig_name, const char *svr_name,
- unsigned int witdh, unsigned int height,
- minicontrol_priority_e priority,
- minicontrol_h handler)
+int _minictrl_send_event(const char *signal_name, const char *minicontrol_name, int event, bundle *signal_arg)
{
DBusConnection *connection = NULL;
DBusMessage *message = NULL;
DBusError err;
dbus_bool_t dbus_ret;
+ bundle_raw *serialized_arg = NULL;
+ unsigned int serialized_arg_length = 0;
int ret = MINICONTROL_ERROR_NONE;
- int handler_raw_data_len = 0;
- char *handler_raw_data = NULL;
- if (!sig_name) {
- ERR("sig_name is NULL, invaild parameter");
+ if (minicontrol_name == NULL) {
+ ERR("Invaild parameter");
return MINICONTROL_ERROR_INVALID_PARAMETER;
}
- if (!svr_name) {
- ERR("svr_name is NULL, invaild parameter");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (handler != NULL) {
- _minictrl_handler_get_raw_data(handler, &handler_raw_data, &handler_raw_data_len);
- }
-
dbus_error_init(&err);
connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err);
if (!connection) {
ERR("Fail to dbus_bus_get : %s", err.message);
- ret = MINICONTROL_ERROR_DBUS;
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
- message = dbus_message_new_signal(MINICTRL_DBUS_PATH,
- MINICTRL_DBUS_INTERFACE,
- sig_name);
+ message = dbus_message_new_signal(MINICTRL_DBUS_PATH, MINICTRL_DBUS_INTERFACE, signal_name);
if (!message) {
ERR("fail to create dbus message");
goto release_n_return;
}
-
- if (handler_raw_data != NULL && handler_raw_data_len > 0) {
- dbus_ret = dbus_message_append_args(message,
- DBUS_TYPE_STRING, &svr_name,
- DBUS_TYPE_UINT32, &witdh,
- DBUS_TYPE_UINT32, &height,
- DBUS_TYPE_UINT32, &priority,
- DBUS_TYPE_STRING, &handler_raw_data,
- DBUS_TYPE_UINT32, &handler_raw_data_len,
- DBUS_TYPE_INVALID);
- } else {
- dbus_ret = dbus_message_append_args(message,
- DBUS_TYPE_STRING, &svr_name,
- DBUS_TYPE_UINT32, &witdh,
- DBUS_TYPE_UINT32, &height,
- DBUS_TYPE_UINT32, &priority,
- DBUS_TYPE_INVALID);
+ if (signal_arg != NULL) {
+ if (bundle_encode(signal_arg, &serialized_arg, (int*)&serialized_arg_length) != BUNDLE_ERROR_NONE) {
+ ERR("fail to serialize bundle argument");
+ ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
+ goto release_n_return;
+ }
}
+ else {
+ serialized_arg = (bundle_raw*)strdup("");
+ serialized_arg_length = 0;
+ }
+
+ dbus_ret = dbus_message_append_args(message,
+ DBUS_TYPE_STRING, &minicontrol_name,
+ DBUS_TYPE_INT32, &event,
+ DBUS_TYPE_STRING, &serialized_arg,
+ DBUS_TYPE_UINT32, &serialized_arg_length,
+ DBUS_TYPE_INVALID);
+
if (!dbus_ret) {
- ERR("fail to append name to dbus message : %s", svr_name);
+ ERR("fail to append arguments to dbus message : [%s][%d]", minicontrol_name, event);
ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
goto release_n_return;
}
dbus_ret = dbus_connection_send(connection, message, NULL);
+
if (!dbus_ret) {
- ERR("fail to send dbus message : %s", svr_name);
- ret = MINICONTROL_ERROR_DBUS;
+ ERR("fail to send dbus message : %s", minicontrol_name);
+ ret = MINICONTROL_ERROR_IPC_FAILURE;
goto release_n_return;
}
release_n_return:
dbus_error_free(&err);
+ if (serialized_arg)
+ free(serialized_arg);
+
if (message)
dbus_message_unref(message);
return ret;
}
-static DBusHandlerResult _minictrl_signal_filter(DBusConnection *conn,
- DBusMessage *msg, void *user_data)
+
+int _minictrl_provider_message_send(int event, const char *minicontrol_name, unsigned int witdh, unsigned int height, minicontrol_priority_e priority)
+{
+ bundle *event_arg_bundle = NULL;
+ int ret = MINICONTROL_ERROR_NONE;
+ char bundle_value_buffer[BUNDLE_BUFFER_LENGTH] = { 0, };
+
+ event_arg_bundle = bundle_create();
+
+ if (event_arg_bundle == NULL) {
+ ERR("fail to create a bundle instance");
+ ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
+ goto out;
+ }
+
+ snprintf(bundle_value_buffer, BUNDLE_BUFFER_LENGTH, "%s", minicontrol_name);
+
+ bundle_add_str(event_arg_bundle, "minicontrol_name", bundle_value_buffer);
+ bundle_add_byte(event_arg_bundle, "width", (void*)&witdh, sizeof(int));
+ bundle_add_byte(event_arg_bundle, "height", (void*)&height, sizeof(int));
+ bundle_add_byte(event_arg_bundle, "priority", (void*)&priority, sizeof(int));
+
+ _minictrl_send_event(MINICTRL_DBUS_SIG_TO_VIEWER, minicontrol_name, event, event_arg_bundle);
+
+out:
+ if (event_arg_bundle)
+ bundle_free(event_arg_bundle);
+
+ return ret;
+}
+
+static DBusHandlerResult _minictrl_signal_filter(DBusConnection *conn, DBusMessage *msg, void *user_data)
{
minictrl_sig_handle *handle = NULL;
const char *interface;
dbus_error_init(&err);
- dbus_connection_remove_filter(handle->conn,
- _minictrl_signal_filter, handle);
+ dbus_connection_remove_filter(handle->conn, _minictrl_signal_filter, handle);
snprintf(rule, 1024,
"path='%s',type='signal',interface='%s',member='%s'",
#include "minicontrol-error.h"
#include "minicontrol-internal.h"
#include "minicontrol-monitor.h"
+#include "minicontrol-viewer.h"
#include "minicontrol-log.h"
struct _minicontrol_monitor {
- minictrl_sig_handle *start_sh;
- minictrl_sig_handle *realize_sh;
- minictrl_sig_handle *stop_sh;
- minictrl_sig_handle *resize_sh;
- minictrl_sig_handle *request_sh;
+ minictrl_sig_handle *event_sh;
minicontrol_monitor_cb callback;
- minicontrol_monitor_with_handler_cb callback_with_handler;
void *user_data;
};
-static struct _minicontrol_monitor *g_monitor_h;
+static struct _minicontrol_monitor *g_monitor_h = NULL;
static minicontrol_priority_e _int_to_priority(unsigned int value)
{
return priority;
}
-static int _provider_get_data_from_dbus_message(
- DBusMessage *msg, char **name,
- unsigned int *w, unsigned int *h, unsigned int *pri,
- minicontrol_h *handler)
+static void _sig_to_viewer_handler_cb(minicontrol_event_e event, const char *minicontrol_name, bundle *event_arg, void *data)
{
+ minicontrol_action_e action;
+ int width = 0;
+ int height = 0;
+ int priority_from_signal = 0;
+ minicontrol_priority_e priority = 0;
+ size_t n_size;
+
+ switch(event) {
+ case MINICONTROL_EVENT_START:
+ action = MINICONTROL_ACTION_START;
+ break;
- DBusError err;
- dbus_bool_t dbus_ret;
- char *raw_data = NULL;
- int raw_data_len = 0;
-
- if (msg != NULL && name != NULL &&
- w != NULL && h != NULL && pri != NULL &&
- handler != NULL) {
- dbus_error_init(&err);
- dbus_ret = dbus_message_get_args(msg, &err,
- DBUS_TYPE_STRING, name,
- DBUS_TYPE_UINT32, w,
- DBUS_TYPE_UINT32, h,
- DBUS_TYPE_UINT32, pri,
- DBUS_TYPE_STRING, &raw_data,
- DBUS_TYPE_UINT32, &raw_data_len,
- DBUS_TYPE_INVALID);
- if (!dbus_ret) {
- ERR("fail to get args : %s", err.message);
- if (*name == NULL) {
- ERR("Failed to get a service name, give up");
- dbus_error_free(&err);
- return MINICONTROL_ERROR_DBUS;
- }
- }
-
- if (raw_data != NULL && raw_data_len > 0) {
- _minictrl_handler_get_handler_from_raw_data(handler, raw_data, raw_data_len);
- } else {
- ERR("failed to get handler from DBUS message");
- }
- dbus_error_free(&err);
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-static void _provider_start_cb(void *data, DBusMessage *msg)
-{
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_h handler = NULL;
- minicontrol_priority_e priority;
-
- if (_provider_get_data_from_dbus_message(msg, &svr_name, &w, &h, &pri, &handler) != MINICONTROL_ERROR_NONE) {
- ERR("fail to data from DBUS message");
- return ;
- }
-
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback) {
- g_monitor_h->callback(MINICONTROL_ACTION_START,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
- }
- if (g_monitor_h->callback_with_handler) {
- g_monitor_h->callback_with_handler(MINICONTROL_ACTION_START,
- svr_name, w, h, priority,
- handler,
- g_monitor_h->user_data);
- }
-
- if (handler != NULL) {
- _minictrl_handler_destroy(handler);
- }
-}
-
-static void _provider_realized_cb(void *data, DBusMessage *msg)
-{
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_h handler = NULL;
- minicontrol_priority_e priority;
-
- if (_provider_get_data_from_dbus_message(msg, &svr_name, &w, &h, &pri, &handler) != MINICONTROL_ERROR_NONE) {
- ERR("fail to data from DBUS message");
- return ;
- }
-
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback) {
- g_monitor_h->callback(MINICONTROL_ACTION_REALIZE,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
- }
- if (g_monitor_h->callback_with_handler) {
- g_monitor_h->callback_with_handler(MINICONTROL_ACTION_REALIZE,
- svr_name, w, h, priority,
- handler,
- g_monitor_h->user_data);
- }
-
- if (handler != NULL) {
- _minictrl_handler_destroy(handler);
- }
-}
-
-static void _provider_stop_cb(void *data, DBusMessage *msg)
-{
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_h handler = NULL;
- minicontrol_priority_e priority;
-
- if (_provider_get_data_from_dbus_message(msg, &svr_name, &w, &h, &pri, &handler) != MINICONTROL_ERROR_NONE) {
- ERR("fail to data from DBUS message");
- return ;
- }
-
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback) {
- g_monitor_h->callback(MINICONTROL_ACTION_STOP,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
- }
- if (g_monitor_h->callback_with_handler) {
- g_monitor_h->callback_with_handler(MINICONTROL_ACTION_STOP,
- svr_name, w, h, priority,
- handler,
- g_monitor_h->user_data);
- }
-
- if (handler != NULL) {
- _minictrl_handler_destroy(handler);
- }
-}
-
-static void _provider_resize_cb(void *data, DBusMessage *msg)
-{
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_h handler = NULL;
- minicontrol_priority_e priority;
-
- if (_provider_get_data_from_dbus_message(msg, &svr_name, &w, &h, &pri, &handler) != MINICONTROL_ERROR_NONE) {
- ERR("fail to data from DBUS message");
- return ;
- }
-
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback) {
- g_monitor_h->callback(MINICONTROL_ACTION_RESIZE,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
- }
- if (g_monitor_h->callback_with_handler) {
- g_monitor_h->callback_with_handler(MINICONTROL_ACTION_RESIZE,
- svr_name, w, h, priority,
- handler,
- g_monitor_h->user_data);
- }
+ case MINICONTROL_EVENT_STOP:
+ action = MINICONTROL_ACTION_STOP;
+ break;
- if (handler != NULL) {
- _minictrl_handler_destroy(handler);
- }
-}
+ case MINICONTROL_EVENT_RESIZE:
+ action = MINICONTROL_ACTION_RESIZE;
+ break;
-static void _provider_request_cb(void *data, DBusMessage *msg)
-{
- char *svr_name = NULL;
- unsigned int w = 0;
- unsigned int h = 0;
- unsigned int pri = 0;
- minicontrol_h handler = NULL;
- minicontrol_priority_e priority;
+ case MINICONTROL_EVENT_REQUEST_HIDE:
+ case MINICONTROL_EVENT_REQUEST_ANGLE:
+ action = MINICONTROL_ACTION_REQUEST;
+ break;
- if (_provider_get_data_from_dbus_message(msg, &svr_name, &w, &h, &pri, &handler) != MINICONTROL_ERROR_NONE) {
- ERR("fail to data from DBUS message");
- return ;
+ default:
+ WARN("Not supported event [%d]", event);
+ action = event;
+ break;
}
- priority = _int_to_priority(pri);
-
- if (g_monitor_h->callback) {
- g_monitor_h->callback(MINICONTROL_ACTION_REQUEST,
- svr_name, w, h, priority,
- g_monitor_h->user_data);
+ if (action == MINICONTROL_ACTION_START || action == MINICONTROL_ACTION_RESIZE || action == MINICONTROL_ACTION_REQUEST) {
+ bundle_get_byte(event_arg, "width", (void*)&width, &n_size);
+ bundle_get_byte(event_arg, "height", (void*)&height, &n_size);
+ bundle_get_byte(event_arg, "priority", (void*)&priority_from_signal, &n_size);
+ priority = _int_to_priority(priority_from_signal);
}
- if (g_monitor_h->callback_with_handler) {
- g_monitor_h->callback_with_handler(MINICONTROL_ACTION_REQUEST,
- svr_name, w, h, priority,
- handler,
- g_monitor_h->user_data);
+ else {
+ priority = MINICONTROL_PRIORITY_LOW;
}
- if (handler != NULL) {
- _minictrl_handler_destroy(handler);
- }
+ g_monitor_h->callback(action, minicontrol_name, width, height, priority, g_monitor_h->user_data);
}
-EXPORT_API minicontrol_error_e minicontrol_monitor_start(
- minicontrol_monitor_cb callback, void *data)
+EXPORT_API minicontrol_error_e minicontrol_monitor_start(minicontrol_monitor_cb callback, void *data)
{
if (!callback)
return MINICONTROL_ERROR_INVALID_PARAMETER;
- if (!g_monitor_h) {
- minictrl_sig_handle *start_sh;
- minictrl_sig_handle *realize_sh;
- minictrl_sig_handle *stop_sh;
- minictrl_sig_handle *resize_sh;
- minictrl_sig_handle *request_sh;
- struct _minicontrol_monitor *monitor_h;
-
- start_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_START,
- _provider_start_cb, NULL);
- if (!start_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_START);
- return MINICONTROL_ERROR_DBUS;
- }
-
- realize_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_REALIZE,
- _provider_realized_cb, NULL);
- if (!realize_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_REALIZE);
- return MINICONTROL_ERROR_DBUS;
- }
-
- stop_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_STOP,
- _provider_stop_cb, NULL);
- if (!stop_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_STOP);
- return MINICONTROL_ERROR_DBUS;
- }
-
- resize_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_RESIZE,
- _provider_resize_cb, NULL);
- if (!resize_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_RESIZE);
- return MINICONTROL_ERROR_DBUS;
- }
-
- request_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_REQUEST,
- _provider_request_cb, NULL);
- if (!request_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_REQUEST);
- return MINICONTROL_ERROR_DBUS;
- }
-
- monitor_h = calloc(1, sizeof(struct _minicontrol_monitor));
- if (!monitor_h) {
- ERR("fail to alloc monitor_h");
- _minictrl_dbus_sig_handle_dettach(start_sh);
- _minictrl_dbus_sig_handle_dettach(realize_sh);
- _minictrl_dbus_sig_handle_dettach(stop_sh);
- _minictrl_dbus_sig_handle_dettach(resize_sh);
- _minictrl_dbus_sig_handle_dettach(request_sh);
- return MINICONTROL_ERROR_OUT_OF_MEMORY;
- }
-
- monitor_h->start_sh = start_sh;
- monitor_h->realize_sh = realize_sh;
- monitor_h->stop_sh = stop_sh;
- monitor_h->resize_sh = resize_sh;
- monitor_h->request_sh = request_sh;
- monitor_h->callback = NULL;
- monitor_h->callback_with_handler = NULL;
- g_monitor_h = monitor_h;
- }
-
- g_monitor_h->callback = callback;
- g_monitor_h->user_data = data;
INFO("callback[%p], data[%p]", callback, data);
- return _minictrl_viewer_req_message_send();
-}
-
-EXPORT_API minicontrol_error_e minicontrol_monitor_start_with_handler(
- minicontrol_monitor_with_handler_cb callback, void *data)
-{
- if (!callback)
- return MINICONTROL_ERROR_INVALID_PARAMETER;
-
- if (!g_monitor_h) {
- minictrl_sig_handle *start_sh;
- minictrl_sig_handle *realize_sh;
- minictrl_sig_handle *stop_sh;
- minictrl_sig_handle *resize_sh;
- minictrl_sig_handle *request_sh;
- struct _minicontrol_monitor *monitor_h;
-
- start_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_START,
- _provider_start_cb, NULL);
- if (!start_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_START);
- return MINICONTROL_ERROR_DBUS;
- }
-
- realize_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_REALIZE,
- _provider_realized_cb, NULL);
- if (!realize_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_REALIZE);
- return MINICONTROL_ERROR_DBUS;
- }
-
- stop_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_STOP,
- _provider_stop_cb, NULL);
- if (!stop_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_STOP);
- return MINICONTROL_ERROR_DBUS;
- }
-
- resize_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_RESIZE,
- _provider_resize_cb, NULL);
- if (!resize_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_RESIZE);
- return MINICONTROL_ERROR_DBUS;
- }
-
- request_sh = _minictrl_dbus_sig_handle_attach(
- MINICTRL_DBUS_SIG_REQUEST,
- _provider_request_cb, NULL);
- if (!request_sh) {
- ERR("fail to _minictrl_dbus_sig_handle_attach - %s",
- MINICTRL_DBUS_SIG_REQUEST);
- return MINICONTROL_ERROR_DBUS;
- }
-
- monitor_h = calloc(1, sizeof(struct _minicontrol_monitor));
- if (!monitor_h) {
- ERR("fail to alloc monitor_h");
- _minictrl_dbus_sig_handle_dettach(start_sh);
- _minictrl_dbus_sig_handle_dettach(realize_sh);
- _minictrl_dbus_sig_handle_dettach(stop_sh);
- _minictrl_dbus_sig_handle_dettach(resize_sh);
- _minictrl_dbus_sig_handle_dettach(request_sh);
- return MINICONTROL_ERROR_OUT_OF_MEMORY;
- }
+ if (g_monitor_h) {
+ ERR("Already started");
+ return MINICONTROL_ERROR_UNKNOWN;
+ }
- monitor_h->start_sh = start_sh;
- monitor_h->realize_sh = realize_sh;
- monitor_h->stop_sh = stop_sh;
- monitor_h->resize_sh = resize_sh;
- monitor_h->request_sh = request_sh;
- monitor_h->callback = NULL;
- monitor_h->callback_with_handler = NULL;
- g_monitor_h = monitor_h;
+ g_monitor_h = malloc(sizeof(struct _minicontrol_monitor));
+ if (g_monitor_h == NULL) {
+ ERR("fail to alloc monitor_h");
+ return MINICONTROL_ERROR_OUT_OF_MEMORY;
}
- g_monitor_h->callback_with_handler = callback;
+ minicontrol_viewer_set_event_cb(_sig_to_viewer_handler_cb, data);
+
+ g_monitor_h->callback = callback;
g_monitor_h->user_data = data;
- INFO("callback[%p], data[%p]", callback, data);
return _minictrl_viewer_req_message_send();
}
if (!g_monitor_h)
return MINICONTROL_ERROR_NONE;
- if (g_monitor_h->start_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->start_sh);
-
- if (g_monitor_h->realize_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->realize_sh);
-
- if (g_monitor_h->stop_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->stop_sh);
-
- if (g_monitor_h->resize_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->resize_sh);
-
- if (g_monitor_h->request_sh)
- _minictrl_dbus_sig_handle_dettach(g_monitor_h->request_sh);
+ minicontrol_viewer_unset_event_cb();
free(g_monitor_h);
g_monitor_h = NULL;
return MINICONTROL_ERROR_NONE;
}
-
*/
#include <Elementary.h>
+#include <Ecore_Evas.h>
#include "minicontrol-error.h"
#include "minicontrol-type.h"
#include "minicontrol-internal.h"
#include "minicontrol-provider.h"
+#include "minicontrol-provider-internal.h"
#include "minicontrol-log.h"
-#include "minicontrol-handler.h"
#define MINICTRL_PRIORITY_SUFFIX_TOP "__minicontrol_top"
#define MINICTRL_PRIORITY_SUFFIX_LOW "__minicontrol_low"
MINICTRL_STATE_RUNNING,
};
-struct _provider_data {
+struct _minicontrol_provider {
char *name;
int state;
- minicontrol_priority_e priority;
Evas_Object *obj;
- minictrl_sig_handle *sh;
- minicontrol_h handler;
+ minictrl_sig_handle *running_sh;
+ minictrl_sig_handle *event_sh;
+ minicontrol_event_cb event_callback;
};
-static void __provider_data_free(struct _provider_data *pd)
+static void _minictrl_win_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _minictrl_win_hide_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _minictrl_win_show_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _minictrl_win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+static void __minicontrol_provider_free(struct _minicontrol_provider *pd)
{
if (pd) {
if (pd->name)
free(pd->name);
- if (pd->sh)
- _minictrl_dbus_sig_handle_dettach(pd->sh);
+ if (pd->running_sh)
+ _minictrl_dbus_sig_handle_dettach(pd->running_sh);
- if (pd->handler)
- _minictrl_handler_destroy(pd->handler);
+ if (pd->event_sh)
+ _minictrl_dbus_sig_handle_dettach(pd->event_sh);
free(pd);
}
}
-static int __str_has_suffix(const char *str, const char *suffix)
-{
- int str_len;
- int suffix_len;
-
- if (!str)
- return -1;
-
- if (!suffix)
- return -1;
-
- str_len = strlen (str);
- suffix_len = strlen (suffix);
-
- if (str_len < suffix_len)
- return -1;
-
- return strcmp(str + str_len - suffix_len, suffix);
-}
-
static void _running_req_cb(void *data, DBusMessage *msg)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
if (!data) {
ERR("data is NULL");
Evas_Coord w = 0;
Evas_Coord h = 0;
evas_object_geometry_get(pd->obj, NULL, NULL, &w, &h);
- _minictrl_provider_message_send(MINICTRL_DBUS_SIG_START,
- pd->name, w, h, pd->priority, pd->handler);
+ _minictrl_provider_message_send(MINICONTROL_EVENT_START, pd->name, w, h, 0);
}
}
-static int minicontrol_win_start(Evas_Object *mincontrol)
+static void _sig_to_provider_handler_cb(void *data, DBusMessage *msg)
+{
+ struct _minicontrol_provider *pd;
+ DBusError err;
+ char *minicontrol_name = NULL;
+ minicontrol_viewer_event_e event;
+ dbus_bool_t dbus_ret;
+ bundle *event_arg_bundle = NULL;
+ bundle_raw *serialized_arg = NULL;
+ unsigned int serialized_arg_length = 0;
+
+ if (!data) {
+ ERR("data is NULL");
+ return;
+ }
+ pd = data;
+
+ dbus_error_init(&err); /* Does not allocate any memory. the error only needs to be freed if it is set at some point. */
+
+ dbus_ret = dbus_message_get_args(msg, &err,
+ DBUS_TYPE_STRING, &minicontrol_name,
+ DBUS_TYPE_INT32, &event,
+ DBUS_TYPE_STRING, &serialized_arg,
+ DBUS_TYPE_UINT32, &serialized_arg_length,
+ DBUS_TYPE_INVALID);
+
+ if (!dbus_ret) {
+ ERR("fail to get args : %s", err.message);
+ dbus_error_free(&err);
+ return;
+ }
+
+ INFO("minicontrol_name[%s] event[%d] pd->name[%s]", minicontrol_name, event, pd->name);
+
+ if (minicontrol_name && pd->name && strcmp(minicontrol_name, pd->name) == 0) {
+ event_arg_bundle = bundle_decode(serialized_arg, serialized_arg_length);
+ /* event argument can be null */
+
+ if (event == MINICONTROL_VIEWER_EVENT_SHOW) {
+ Evas_Coord width;
+ Evas_Coord height;
+ evas_object_geometry_get (pd->obj, NULL, NULL, &width, &height);
+ INFO("width[%d] height[%d]", width, height);
+ _minictrl_provider_message_send(MINICONTROL_EVENT_RESIZE, pd->name, width, height, 0);
+ }
+
+ if (pd->event_callback)
+ pd->event_callback(event, event_arg_bundle);
+
+ if (event_arg_bundle)
+ bundle_free(event_arg_bundle);
+ }
+}
+
+
+
+static char *_minictrl_create_name(const char *name)
+{
+ char *buf;
+ int size = 0;
+
+ if (!name) {
+ ERR("name is NULL, invaild parameter");
+ set_last_result(MINICONTROL_ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ size = snprintf(NULL, 0, "[%s]", name) + 1;
+ buf = (char *)malloc(sizeof(char) * size);
+ if (!buf) {
+ ERR("fail to alloc buf");
+ set_last_result(MINICONTROL_ERROR_OUT_OF_MEMORY);
+ return NULL;
+ }
+
+ snprintf(buf, size, "[%s]", name);
+
+ return buf;
+}
+
+static void _access_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj));
+ if (ee != NULL) {
+ if (elm_config_access_get()) {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_TRUE);
+ */
+ }
+ else {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_FALSE);
+ */
+ }
+ }
+}
+
+
+EXPORT_API Evas_Object* minicontrol_create_window(const char *name, minicontrol_target_viewer_e target_viewer, minicontrol_event_cb event_callback)
+{
+ Evas_Object *win = NULL;
+ char *name_inter = NULL;
+ struct _minicontrol_provider *pd;
+
+ if (!name) {
+ ERR("invalid parameter");
+ set_last_result(MINICONTROL_ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
+ win = elm_win_add(NULL, "minicontrol", ELM_WIN_SOCKET_IMAGE);
+ if (!win) {
+ ERR("elm_win_add failed");
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
+ return NULL;
+ }
+
+ if (elm_config_access_get()) {
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win));
+
+ if (ee != NULL) {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_TRUE);
+ */
+ }
+
+ }
+ evas_object_smart_callback_add(win, "access,changed", _access_changed_cb, NULL);
+
+ name_inter = _minictrl_create_name(name);
+ if (!name_inter) {
+ ERR("Fail to create name_inter for : %s", name);
+ evas_object_del(win);
+ return NULL;
+ }
+
+ if (!elm_win_socket_listen(win, name_inter, 0, EINA_TRUE)) {
+ ERR("Fail to elm win socket listen");
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
+ evas_object_del(win);
+ free(name_inter);
+ return NULL;
+ }
+
+ pd = malloc(sizeof(struct _minicontrol_provider));
+ if (!pd) {
+ ERR("Fail to alloc memory");
+ set_last_result(MINICONTROL_ERROR_OUT_OF_MEMORY);
+ evas_object_del(win);
+ free(name_inter);
+ return NULL;
+
+ }
+ memset(pd, 0x00, sizeof(struct _minicontrol_provider));
+ pd->name = name_inter;
+ pd->state = MINICTRL_STATE_READY;
+ pd->obj = win;
+
+ evas_object_data_set(win ,MINICTRL_DATA_KEY,pd);
+
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _minictrl_win_del_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _minictrl_win_show_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_HIDE, _minictrl_win_hide_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _minictrl_win_resize_cb, pd);
+
+ pd->running_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_RUNNING_REQ, _running_req_cb, pd);
+ pd->event_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_TO_PROVIDER, _sig_to_provider_handler_cb, pd);
+ pd->event_callback = event_callback;
+
+ INFO("new minicontrol created - %s", pd->name);
+ return win;
+}
+
+EXPORT_API int minicontrol_send_event(Evas_Object *mincontrol, minicontrol_provider_event_e event, bundle *event_arg)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
int ret = MINICONTROL_ERROR_NONE;
if (!mincontrol) {
return MINICONTROL_ERROR_INVALID_PARAMETER;
}
- if (pd->state != MINICTRL_STATE_RUNNING) {
- Evas_Coord w = 0;
- Evas_Coord h = 0;
- pd->state = MINICTRL_STATE_RUNNING;
-
- evas_object_geometry_get(mincontrol, NULL, NULL, &w, &h);
- _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_EXCLUDE);
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_START,
- pd->name, w, h, pd->priority, pd->handler);
+ if (pd->state == MINICTRL_STATE_RUNNING) {
+ ret = _minictrl_send_event(MINICTRL_DBUS_SIG_TO_VIEWER, pd->name, event, event_arg);
}
return ret;
}
-static int minicontrol_win_realize(Evas_Object *mincontrol)
+static int minicontrol_win_start(Evas_Object *mincontrol)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
int ret = MINICONTROL_ERROR_NONE;
if (!mincontrol) {
return MINICONTROL_ERROR_INVALID_PARAMETER;
}
- Evas_Coord w = 0;
- Evas_Coord h = 0;
if (pd->state != MINICTRL_STATE_RUNNING) {
+ Evas_Coord w = 0;
+ Evas_Coord h = 0;
pd->state = MINICTRL_STATE_RUNNING;
- }
- evas_object_geometry_get(mincontrol, NULL, NULL, &w, &h);
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_REALIZE,
- pd->name, w, h, pd->priority, pd->handler);
+ evas_object_geometry_get(mincontrol, NULL, NULL, &w, &h);
+ _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_EXCLUDE);
+ ret = _minictrl_provider_message_send(MINICONTROL_EVENT_START, pd->name, w, h, 0);
+ }
return ret;
}
static int minicontrol_win_stop(Evas_Object *mincontrol)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
int ret = MINICONTROL_ERROR_NONE;
if (!mincontrol) {
if (pd->state != MINICTRL_STATE_READY) {
pd->state = MINICTRL_STATE_READY;
_minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_INCLUDE);
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_STOP,
- pd->name, 0, 0, pd->priority, pd->handler);
+ ret = _minictrl_provider_message_send(MINICONTROL_EVENT_STOP, pd->name, 0, 0, 0);
}
return ret;
}
-static void _minictrl_win_del(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
- struct _provider_data *pd = NULL;
+ struct _minicontrol_provider *pd = NULL;
minicontrol_win_stop(obj);
pd = evas_object_data_get(obj, MINICTRL_DATA_KEY);
- __provider_data_free(pd);
+ __minicontrol_provider_free(pd);
evas_object_data_set(obj, MINICTRL_DATA_KEY, NULL);
}
-static void _minictrl_win_hide(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_hide_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
{
minicontrol_win_stop(obj);
}
-static void _minictrl_win_show(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_show_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
{
minicontrol_win_start(obj);
}
-static void _minictrl_win_realize(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
-{
- struct _provider_data *pd;
-
- if (!data) {
- ERR("data is NULL, invaild parameter");
- return;
- }
- pd = data;
-
- if (!pd->obj) {
- ERR("minicontrol object is NULL, invalid parameter");
- return;
- }
-
- Evas *win_e = evas_object_evas_get(pd->obj);
- if (win_e != NULL) {
- evas_event_callback_del(win_e, EVAS_CALLBACK_RENDER_POST,
- _minictrl_win_realize);
- }
-
- minicontrol_win_realize(pd->obj);
-
- if (pd->handler != NULL) {
- _minictrl_handler_set_state(pd->handler, 1);
- }
-}
-
-static void _minictrl_win_resize(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+static void _minictrl_win_resize_cb(void *data, Evas *e,
+ Evas_Object *obj, void *event_info)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
if (!data) {
ERR("data is NULL, invaild parameter");
Evas_Coord h = 0;
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
- _minictrl_provider_message_send(MINICTRL_DBUS_SIG_RESIZE,
- pd->name, w, h, pd->priority, pd->handler);
+ _minictrl_provider_message_send(MINICONTROL_EVENT_RESIZE, pd->name, w, h, 0);
}
}
-static char *_minictrl_create_name(const char *name)
-{
- char *buf;
- int size = 0;
-
- if (!name) {
- ERR("name is NULL, invaild parameter");
- return NULL;
- }
-
- size = snprintf(NULL, 0, "[%s]", name) + 1;
- buf = (char *)malloc(sizeof(char) * size);
- if (!buf) {
- ERR("fail to alloc buf");
- return NULL;
- }
-
- snprintf(buf, size, "[%s]", name);
-
- return buf;
-}
-
-static minicontrol_priority_e _minictrl_get_priroty_by_name(const char *name)
-{
- minicontrol_priority_e priority = MINICONTROL_PRIORITY_MIDDLE;
-
- if (!__str_has_suffix(name, MINICTRL_PRIORITY_SUFFIX_TOP))
- priority = MINICONTROL_PRIORITY_TOP;
- else if (!__str_has_suffix(name, MINICTRL_PRIORITY_SUFFIX_LOW))
- priority = MINICONTROL_PRIORITY_LOW;
-
- return priority;
-}
-
EXPORT_API Evas_Object *minicontrol_win_add(const char *name)
{
- minicontrol_h handler = NULL;
Evas_Object *win = NULL;
-
- if (_minictrl_handler_create(&handler) == MINICONTROL_ERROR_NONE) {
- if (_minictrl_handler_set_service_name(handler, name) != MINICONTROL_ERROR_NONE) {
- ERR("failed to service name");
- _minictrl_handler_destroy(handler);
- return NULL;
- }
- if (_minictrl_handler_set_timestamp(handler, time(NULL)) != MINICONTROL_ERROR_NONE) {
- ERR("failed to set timestamp");
- }
- if (_minictrl_handler_set_priority(handler, MINICONTROL_HDL_PRIORITY_LV3) != MINICONTROL_ERROR_NONE) {
- ERR("failed to set priority");
- }
- } else {
- ERR("Failed to create minicontrol handler");
- return NULL;
- }
-
- win = minicontrol_win_add_by_handler(handler);
- _minictrl_handler_destroy(handler);
-
- return win;
-}
-
-EXPORT_API Evas_Object *minicontrol_win_add_by_handler(minicontrol_h handler)
-{
- Evas_Object *win = NULL;
- char *name = NULL;
char *name_inter = NULL;
- char *priority = NULL;
- struct _provider_data *pd;
- time_t timestamp_value = 0;
+ struct _minicontrol_provider *pd;
- if (_minictrl_handler_check_validation(handler) != MINICONTROL_ERROR_NONE) {
- ERR("handler is invalid, invaild parameter");
- return NULL;
- }
+ INFO("minicontrol_win_add [%s]", name);
- _minictrl_handler_get_service_name(handler, &name);
- if (name == NULL) {
- ERR("service name cannot be NULL");
+ if (!name) {
+ ERR("name is null");
return NULL;
}
- _minictrl_handler_get_timestamp(handler, ×tamp_value);
- if (timestamp_value == 0) {
- if (_minictrl_handler_set_timestamp(handler, time(NULL)) != MINICONTROL_ERROR_NONE) {
- ERR("failed to set timestamp");
- }
- }
- _minictrl_handler_get_priority(handler, &priority);
- if (priority == NULL) {
- if (_minictrl_handler_set_priority(handler, MINICONTROL_HDL_PRIORITY_LV3) != MINICONTROL_ERROR_NONE) {
- ERR("failed to set priority");
- }
- } else {
- free(priority);
- }
win = elm_win_add(NULL, "minicontrol", ELM_WIN_SOCKET_IMAGE);
if (!win) {
- free(name);
+ ERR("elm_win_add returns null for [%s]", name);
return NULL;
}
+ if (elm_config_access_get()) {
+ Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(win));
+
+ if (ee != NULL) {
+ /* TODO : Check this API is supported
+ ecore_evas_extn_socket_events_block_set(ee, EINA_TRUE);
+ */
+ }
+
+ }
+ evas_object_smart_callback_add(win, "access,changed", _access_changed_cb, NULL);
+
name_inter = _minictrl_create_name(name);
if (!name_inter) {
+
ERR("Fail to create name_inter for : %s", name);
- free(name);
evas_object_del(win);
return NULL;
}
if (!elm_win_socket_listen(win, name_inter, 0, EINA_TRUE)) {
ERR("Fail to elm win socket listen");
- free(name);
evas_object_del(win);
free(name_inter);
return NULL;
}
- pd = malloc(sizeof(struct _provider_data));
+ pd = malloc(sizeof(struct _minicontrol_provider));
if (!pd) {
ERR("Fail to alloc memory");
- free(name);
evas_object_del(win);
free(name_inter);
return NULL;
}
- memset(pd, 0x00, sizeof(struct _provider_data));
+ memset(pd, 0x00, sizeof(struct _minicontrol_provider));
pd->name = name_inter;
pd->state = MINICTRL_STATE_READY;
pd->obj = win;
- pd->priority = _minictrl_get_priroty_by_name(name);
-
- if (_minictrl_handler_clone(handler, &(pd->handler)) != MINICONTROL_ERROR_NONE) {
- ERR("Fail to clone handler");
- free(name);
- evas_object_del(win);
- free(name_inter);
- free(pd);
- return NULL;
- }
evas_object_data_set(win ,MINICTRL_DATA_KEY,pd);
elm_win_autodel_set(win, EINA_TRUE);
- evas_object_event_callback_add(win, EVAS_CALLBACK_DEL,
- _minictrl_win_del, pd);
-
- evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW,
- _minictrl_win_show, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _minictrl_win_del_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_SHOW, _minictrl_win_show_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_HIDE, _minictrl_win_hide_cb, pd);
+ evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _minictrl_win_resize_cb, pd);
- evas_object_event_callback_add(win, EVAS_CALLBACK_HIDE,
- _minictrl_win_hide, pd);
-
- evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE,
- _minictrl_win_resize, pd);
-
- Evas *win_e = evas_object_evas_get(win);
- if (win_e != NULL) {
- evas_event_callback_add(win_e, EVAS_CALLBACK_RENDER_POST,
- _minictrl_win_realize, pd);
- }
-
- pd->sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_RUNNING_REQ,
- _running_req_cb, pd);
+ pd->running_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_RUNNING_REQ, _running_req_cb, pd);
INFO("new minicontrol created - %s", pd->name);
-
- free(name);
-
return win;
}
-EXPORT_API minicontrol_error_e minicontrol_win_handler_get(Evas_Object *mincontrol, minicontrol_h *handler)
-{
- if (!mincontrol) {
- ERR("invaild mincontrol object");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
- if (!handler) {
- ERR("invaild mincontrol handler");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- struct _provider_data *pd = evas_object_data_get(mincontrol, MINICTRL_DATA_KEY);
- if (pd != NULL) {
- *handler = pd->handler;
- } else {
- return MINICONTROL_ERROR_NO_DATA;
- }
-
- return MINICONTROL_ERROR_NONE;
-}
-
-EXPORT_API minicontrol_error_e minicontrol_win_handler_update(Evas_Object *mincontrol, minicontrol_h handler)
+EXPORT_API int minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request)
{
- struct _provider_data *pd;
+ struct _minicontrol_provider *pd;
int ret = MINICONTROL_ERROR_NONE;
+ minicontrol_event_e event;
if (!mincontrol) {
ERR("mincontrol is NULL, invaild parameter");
return MINICONTROL_ERROR_INVALID_PARAMETER;
}
- if (_minictrl_handler_check_validation(handler) != MINICONTROL_ERROR_NONE) {
- ERR("handler is invalid, invaild parameter");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
pd = evas_object_data_get(mincontrol, MINICTRL_DATA_KEY);
if (!pd) {
return MINICONTROL_ERROR_INVALID_PARAMETER;
}
- if (pd->handler != handler) {
- if (pd->handler != NULL) {
- _minictrl_handler_destroy(pd->handler);
- pd->handler = NULL;
- }
- if (_minictrl_handler_clone(handler, &(pd->handler)) != MINICONTROL_ERROR_NONE) {
- ERR("failed to clone a minicontrol handler");
- return MINICONTROL_ERROR_OUT_OF_MEMORY;
+ if (pd->state == MINICTRL_STATE_RUNNING) {
+ switch(request) {
+ case MINICONTROL_REQ_HIDE_VIEWER :
+ event = MINICONTROL_EVENT_REQUEST_HIDE;
+ break;
+
+ case MINICONTROL_REQ_REPORT_VIEWER_ANGLE :
+ event = MINICONTROL_EVENT_REQUEST_ANGLE;
+ break;
+
+ case MINICONTROL_REQ_FREEZE_SCROLL_VIEWER :
+ case MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER :
+ case MINICONTROL_REQ_ROTATE_PROVIDER :
+ WARN("Could be not supported [%d]", request);
+ event = request;
+ break;
+
+ case MINICONTROL_REQ_NONE :
+ default :
+ ERR("Not supported request[%d]", request);
+ ret = MINICONTROL_ERROR_NOT_SUPPORTED;
+ goto out;
}
- }
- if (pd->state == MINICTRL_STATE_RUNNING) {
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_REQUEST,
- pd->name, MINICONTROL_REQ_UPDATE_HANDLER, MINICONTROL_REQ_UPDATE_HANDLER
- , pd->priority, pd->handler);
+ _minictrl_send_event(MINICTRL_DBUS_SIG_TO_VIEWER, pd->name, event, NULL);
}
-
+out:
return ret;
}
-EXPORT_API minicontrol_error_e minicontrol_request(Evas_Object *mincontrol, minicontrol_request_e request)
-{
- struct _provider_data *pd;
- int ret = MINICONTROL_ERROR_NONE;
-
- if (!mincontrol) {
- ERR("mincontrol is NULL, invaild parameter");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- pd = evas_object_data_get(mincontrol, MINICTRL_DATA_KEY);
- if (!pd) {
- ERR("pd is NULL, invaild parameter");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (!pd->name) {
- ERR("pd name is NULL, invaild parameter");
- return MINICONTROL_ERROR_INVALID_PARAMETER;
- }
-
- if (pd->state == MINICTRL_STATE_RUNNING) {
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_REQUEST,
- pd->name, request, request, pd->priority, pd->handler);
- }
-
- return ret;
-}
#include "minicontrol-internal.h"
#include "minicontrol-type.h"
#include "minicontrol-viewer.h"
+#include "minicontrol-viewer-internal.h"
#include "minicontrol-log.h"
#define MINICTRL_PLUG_DATA_KEY "__minictrl_plug_name"
-static void _minictrl_plug_server_del(Ecore_Evas *ee)
+struct _minicontrol_viewer {
+ minictrl_sig_handle *event_sh;
+ minicontrol_viewer_event_cb callback;
+ void *user_data;
+};
+
+static struct _minicontrol_viewer *g_minicontrol_viewer_h = NULL;
+
+EXPORT_API int minicontrol_viewer_send_event(const char *minicontrol_name, minicontrol_viewer_event_e event, bundle *event_arg)
+{
+ int ret = MINICONTROL_ERROR_NONE;
+
+ if (minicontrol_name == NULL) {
+ ERR("appid is NULL, invaild parameter");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
+
+ ret = _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, minicontrol_name, event, event_arg);
+
+ return ret;
+}
+
+
+static void _sig_to_viewer_handler_cb(void *data, DBusMessage *msg)
{
- char *svr_name = NULL;
+ DBusError err;
+ char *minicontrol_name = NULL;
+ minicontrol_event_e event;
+ dbus_bool_t dbus_ret;
+ bundle *event_arg_bundle = NULL;
+ bundle_raw *serialized_arg = NULL;
+ unsigned int serialized_arg_length = 0;
+
+ dbus_error_init(&err); /* Does not allocate any memory. the error only needs to be freed if it is set at some point. */
- svr_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
- if (!svr_name) {
- ERR("fail to get svr_name");
+ dbus_ret = dbus_message_get_args(msg, &err,
+ DBUS_TYPE_STRING, &minicontrol_name,
+ DBUS_TYPE_INT32, &event,
+ DBUS_TYPE_STRING, &serialized_arg,
+ DBUS_TYPE_UINT32, &serialized_arg_length,
+ DBUS_TYPE_INVALID);
+
+ if (!dbus_ret) {
+ ERR("fail to get args : %s", err.message);
+ dbus_error_free(&err);
return;
}
- INFO("server - %s is deleted", svr_name);
+ if (serialized_arg_length != 0) {
+ event_arg_bundle = bundle_decode(serialized_arg, serialized_arg_length);
- /* send message to remve plug */
- _minictrl_provider_message_send(MINICTRL_DBUS_SIG_STOP,
- svr_name, 0, 0,
- MINICONTROL_PRIORITY_LOW, NULL);
- _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_INCLUDE);
+ if (event_arg_bundle == NULL) {
+ ERR("fail to deserialize arguments");
+ return;
+ }
+ }
+
+ if (g_minicontrol_viewer_h->callback)
+ g_minicontrol_viewer_h->callback(event, minicontrol_name, event_arg_bundle, g_minicontrol_viewer_h->user_data);
+
+ bundle_free(event_arg_bundle);
+ dbus_error_free(&err);
}
-static void _minictrl_plug_del(void *data, Evas *e,
- Evas_Object *obj, void *event_info)
+
+EXPORT_API int minicontrol_viewer_set_event_cb(minicontrol_viewer_event_cb callback, void *data)
{
- Ecore_Evas *ee = NULL;
- char *svr_name = NULL;
+ if (!callback) {
+ ERR("MINICONTROL_ERROR_INVALID_PARAMETER");
+ return MINICONTROL_ERROR_INVALID_PARAMETER;
+ }
- ee = ecore_evas_ecore_evas_get(evas_object_evas_get(obj));
- if (!ee)
+ INFO("g_minicontrol_viewer_h [%p]", g_minicontrol_viewer_h);
+
+ if (g_minicontrol_viewer_h == NULL) {
+ minictrl_sig_handle *event_sh;
+ struct _minicontrol_viewer *minicontrol_viewer_h;
+
+ event_sh = _minictrl_dbus_sig_handle_attach(MINICTRL_DBUS_SIG_TO_VIEWER, _sig_to_viewer_handler_cb, NULL);
+ if (!event_sh) {
+ ERR("fail to _minictrl_dbus_sig_handle_attach - %s", MINICTRL_DBUS_SIG_TO_VIEWER);
+ return MINICONTROL_ERROR_IPC_FAILURE;
+ }
+
+ minicontrol_viewer_h = malloc(sizeof(struct _minicontrol_viewer));
+ if (!minicontrol_viewer_h) {
+ ERR("fail to alloc minicontrol_viewer_h");
+ _minictrl_dbus_sig_handle_dettach(event_sh);
+ return MINICONTROL_ERROR_OUT_OF_MEMORY;
+ }
+
+ minicontrol_viewer_h->event_sh = event_sh;
+ g_minicontrol_viewer_h = minicontrol_viewer_h;
+ }
+
+ g_minicontrol_viewer_h->callback = callback;
+ g_minicontrol_viewer_h->user_data = data;
+ INFO("callback[%p], data[%p]", callback, data);
+
+ return _minictrl_viewer_req_message_send();
+}
+
+EXPORT_API int minicontrol_viewer_unset_event_cb(void)
+{
+ if (!g_minicontrol_viewer_h)
+ return MINICONTROL_ERROR_NONE;
+
+ if (g_minicontrol_viewer_h->event_sh)
+ _minictrl_dbus_sig_handle_dettach(g_minicontrol_viewer_h->event_sh);
+
+ free(g_minicontrol_viewer_h);
+ g_minicontrol_viewer_h = NULL;
+
+ return MINICONTROL_ERROR_NONE;
+}
+
+static void _minictrl_plug_server_del(Ecore_Evas *ee)
+{
+ char *minicontrol_name = NULL;
+
+ minicontrol_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
+ if (!minicontrol_name) {
+ ERR("fail to get minicontrol_name");
return;
+ }
- svr_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
- if (svr_name)
- free(svr_name);
+ INFO("server - %s is deleted", minicontrol_name);
+ /* To avoid retrying to free minicontrol_name again, set MINICTRL_PLUG_DATA_KEY as NULL */
ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, NULL);
+
+ /* send message to remove plug */
+ _minictrl_provider_message_send(MINICONTROL_EVENT_STOP, minicontrol_name, 0, 0, MINICONTROL_PRIORITY_LOW);
+ _minictrl_provider_proc_send(MINICONTROL_DBUS_PROC_INCLUDE);
+ free(minicontrol_name);
}
-EXPORT_API
-Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj)
+static void _minictrl_plug_del(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
- return elm_plug_image_object_get(obj);
+ Ecore_Evas *ee = data;
+ char *minicontrol_name = NULL;
+
+ if (!ee)
+ return;
+
+ minicontrol_name = ecore_evas_data_get(ee, MINICTRL_PLUG_DATA_KEY);
+
+ if (minicontrol_name) {
+ /* Sending an event 'MINICONTROL_EVENT_REQUEST_HIDE' should be done by minicontrol viewer manually */
+ free(minicontrol_name);
+ ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, NULL);
+ }
}
-EXPORT_API Evas_Object *minicontrol_viewer_add(Evas_Object *parent,
- const char *svr_name)
+EXPORT_API Evas_Object *minicontrol_viewer_add(Evas_Object *parent, const char *minicontrol_name)
{
Evas_Object *plug = NULL;
Evas_Object *plug_img = NULL;
Ecore_Evas *ee = NULL;
+ if (parent == NULL || minicontrol_name == NULL) {
+ ERR("invalid parameter");
+ set_last_result(MINICONTROL_ERROR_INVALID_PARAMETER);
+ return NULL;
+ }
+
plug = elm_plug_add(parent);
+
if (!plug) {
ERR("fail to create plug");
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
return NULL;
}
- if (!elm_plug_connect(plug, svr_name, 0, EINA_TRUE)) {
- ERR("Cannot connect plug[%s]", svr_name);
+ if (!elm_plug_connect(plug, minicontrol_name, 0, EINA_TRUE)) {
+ ERR("Cannot connect plug[%s]", minicontrol_name);
+ set_last_result(MINICONTROL_ERROR_ELM_FAILURE);
evas_object_del(plug);
return NULL;
}
plug_img = elm_plug_image_object_get(plug);
ee = ecore_evas_object_ecore_evas_get(plug_img);
- ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, strdup(svr_name));
+ ecore_evas_data_set(ee, MINICTRL_PLUG_DATA_KEY, strdup(minicontrol_name));
ecore_evas_callback_delete_request_set(ee, _minictrl_plug_server_del);
- evas_object_event_callback_add(plug, EVAS_CALLBACK_DEL,
- _minictrl_plug_del, plug);
+ evas_object_event_callback_add(plug, EVAS_CALLBACK_DEL, _minictrl_plug_del, ee);
return plug;
}
-EXPORT_API minicontrol_error_e minicontrol_viewer_request(const char *appid, minicontrol_request_e request, int value)
+EXPORT_API Evas_Object *minicontrol_viewer_image_object_get(const Evas_Object *obj)
+{
+ return elm_plug_image_object_get(obj);
+}
+
+EXPORT_API int minicontrol_viewer_request(const char *minicontrol_name, minicontrol_request_e request, int value)
{
int ret = MINICONTROL_ERROR_NONE;
+ minicontrol_viewer_event_e event = 0;
+ bundle *event_arg_bundle = NULL;
+ char bundle_value_buffer[BUNDLE_BUFFER_LENGTH] = { 0, };
- if (appid == NULL) {
+ if (minicontrol_name == NULL) {
ERR("appid is NULL, invaild parameter");
return MINICONTROL_ERROR_INVALID_PARAMETER;
}
- if (request != MINICONTROL_REQ_ROTATE_PROVIDER
- && request != MINICONTROL_REQ_PROVIDER_PAUSE
- && request != MINICONTROL_REQ_PROVIDER_RESUME) {
- return MINICONTROL_ERROR_INVALID_PARAMETER;
+
+ switch(request) {
+ case MINICONTROL_REQ_ROTATE_PROVIDER: {
+ event = MINICONTROL_EVENT_REPORT_ANGLE;
+ event_arg_bundle = bundle_create();
+
+ if (event_arg_bundle == NULL) {
+ ERR("fail to create a bundle instance");
+ ret = MINICONTROL_ERROR_OUT_OF_MEMORY;
+ goto out;
+ }
+
+ snprintf(bundle_value_buffer, BUNDLE_BUFFER_LENGTH, "%d", value);
+
+ bundle_add_str(event_arg_bundle, "angle", bundle_value_buffer);
+ break;
}
+ case MINICONTROL_REQ_NONE:
+ case MINICONTROL_REQ_HIDE_VIEWER:
+ case MINICONTROL_REQ_FREEZE_SCROLL_VIEWER:
+ case MINICONTROL_REQ_UNFREEZE_SCROLL_VIEWER:
+ case MINICONTROL_REQ_REPORT_VIEWER_ANGLE:
+ default :
+ ret = MINICONTROL_ERROR_INVALID_PARAMETER;
+ goto out;
+ }
+
+ _minictrl_send_event(MINICTRL_DBUS_SIG_TO_PROVIDER, minicontrol_name, event, event_arg_bundle);
- ret = _minictrl_provider_message_send(MINICTRL_DBUS_SIG_REQUEST,
- appid, request, value, MINICONTROL_PRIORITY_MIDDLE, NULL);
+out:
+ if (event_arg_bundle)
+ bundle_free(event_arg_bundle);
return ret;
}