summaryrefslogtreecommitdiff
path: root/src/bt-connection-main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bt-connection-main.c')
-rw-r--r--src/bt-connection-main.c274
1 files changed, 274 insertions, 0 deletions
diff --git a/src/bt-connection-main.c b/src/bt-connection-main.c
new file mode 100644
index 0000000..96df31d
--- /dev/null
+++ b/src/bt-connection-main.c
@@ -0,0 +1,274 @@
+/*
+* bt-connection-popup
+*
+* Copyright 2012 Samsung Electronics Co., Ltd
+*
+* Contact: Hocheol Seo <hocheol.seo@samsung.com>
+* Injun Yang <injun.yang@samsung.com>
+* Seungyoun Ju <sy39.ju@samsung.com>
+*
+* Licensed under the Flora License, Version 1.1 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.tizenopensource.org/license
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+*/
+
+#include <app.h>
+#include <efl_assist.h>
+
+#include "bt-connection-main.h"
+#include "bt-connection-view.h"
+#include "bt-connection-handler.h"
+#include "bt-connection-ipc.h"
+
+static Evas_Object* _create_win(const char *name)
+{
+ Evas_Object *eo;
+ int w;
+ int h;
+
+ eo = elm_win_add(NULL, name, ELM_WIN_DIALOG_BASIC);
+ if (eo) {
+ elm_win_title_set(eo, name);
+ elm_win_borderless_set(eo, EINA_TRUE);
+ ecore_x_window_size_get(ecore_x_window_root_first_get(),
+ &w, &h);
+ evas_object_resize(eo, w, h);
+ }
+
+ return eo;
+}
+
+static Eina_Bool _pop_cb(void *data, Elm_Object_Item *it)
+{
+ DBG("");
+
+ if (!data) {
+ return EINA_FALSE;
+ }
+
+ elm_exit();
+ return EINA_FALSE;
+}
+
+void __destory_app_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (data == NULL)
+ return;
+
+ DBG("EA Back on navi");
+
+ bt_app_data_t *ad = (bt_app_data_t *)data;
+
+ _bt_destroy_app(ad);
+}
+
+static Evas_Object* _create_layout_main(Evas_Object* parent)
+{
+ Evas_Object *layout;
+
+ if (parent == NULL)
+ return NULL;
+
+ layout = elm_layout_add(parent);
+ if (layout == NULL)
+ return NULL;
+
+ elm_layout_theme_set(layout, "layout", "application", "default");
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_object_part_content_set(parent, "elm.swallow.content", layout);
+ evas_object_show(layout);
+
+ return layout;
+}
+
+static Evas_Object* _create_naviframe(Evas_Object* parent)
+{
+ Evas_Object *naviframe;
+
+ if (parent == NULL)
+ return NULL;
+ naviframe = elm_naviframe_add(parent);
+ elm_object_part_content_set(parent, "elm.swallow.content", naviframe);
+
+ return naviframe;
+}
+
+static void _create_view_layout(bt_app_data_t *ad)
+{
+ if (ad == NULL || ad->navi == NULL)
+ return;
+
+ ea_object_event_callback_add(ad->navi, EA_CALLBACK_BACK,
+ __destory_app_cb, ad);
+
+ _bt_create_connection_query_popup(ad);
+
+ DBG("-");
+}
+
+static int __initialize_view(bt_app_data_t *ad)
+{
+ DBG("+");
+
+ Elm_Object_Item *navi_it;
+
+ if (ad == NULL)
+ return -1;
+
+ ad->layout_main = _create_layout_main(ad->window);
+ if (!ad->layout_main)
+ return -1;
+
+ ad->navi = _create_naviframe(ad->layout_main);
+
+ _create_view_layout(ad);
+
+ navi_it = elm_naviframe_item_push(ad->navi, NULL, NULL, NULL, ad->main_layout, NULL);
+ elm_naviframe_item_title_enabled_set(navi_it, EINA_FALSE, EINA_FALSE);
+ elm_naviframe_item_pop_cb_set(navi_it, _pop_cb, ad);
+ elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE);
+
+ DBG("-");
+
+ return 0;
+}
+
+static bool app_create(void *data)
+{
+ DBG("");
+
+ bt_app_data_t *ad;
+ ad = (bt_app_data_t *)data;
+
+ ad->initialize = FALSE;
+ ad->window = _create_win(PACKAGE);
+ if (ad->window == NULL)
+ return FALSE;
+
+ evas_object_show(ad->window);
+
+ /* Handle rotation */
+ if (elm_win_wm_rotation_supported_get(ad->window)) {
+ int rots[4] = {0, 90, 180, 270};
+ elm_win_wm_rotation_available_rotations_set(ad->window,
+ (const int*)(&rots), 4);
+ }
+
+ _bt_register_vconf_handler(ad);
+
+ return TRUE;
+}
+
+static void app_terminate(void *data)
+{
+ DBG("");
+
+ int status;
+ bt_app_data_t *ad = (bt_app_data_t *)data;
+ if (ad == NULL)
+ return;
+
+ status = _bt_get_wms_status();
+ if (status == WMS_DISCONNECTED) {
+ /* In case WMS_CONNECTED, */
+ /* we sent result on connected view */
+ DBG("App terminiated. Send response (Not Connected)");
+ _bt_send_result(ad, KEY_VAL_NOT_CONNECTED);
+ }
+
+ _bt_get_sap_status(); /* Check sap status */
+
+ return;
+}
+
+static void app_pause(void *data)
+{
+ DBG("");
+ return;
+}
+
+static void app_resume(void *data)
+{
+ DBG("");
+ return;
+}
+
+static void app_service(service_h service, void *data)
+{
+ DBG("");
+
+ char *caller = NULL;
+ bt_app_data_t *ad;
+
+ ad = (bt_app_data_t *)data;
+ if (ad == NULL)
+ return;
+
+ if (ad->dbus_conn == NULL) {
+ _bt_dbus_signal_init(ad);
+ }
+
+ ad->service = service;
+ service_clone(&ad->service_clone, service);
+ service_get_caller(service, &caller);
+ DBG_SECURE("Launched by %s", caller);
+
+ if (__initialize_view(ad) < 0) {
+ ERR("__initialize_view failed");
+ }
+
+ return;
+}
+
+static void app_lang_changed(void *data)
+{
+ return;
+}
+
+static void app_regeion_changed(void *data)
+{
+ return;
+}
+
+/**
+* @describe
+* The entry of the program
+*
+* @param argc
+* @param argv
+* @param int
+* @exception
+*/
+DLL_DEFAULT int main(int argc, char *argv[])
+{
+ bt_app_data_t ad;
+
+ app_event_callback_s event_callback;
+
+ event_callback.create = app_create;
+ event_callback.terminate = app_terminate;
+ event_callback.pause = app_pause;
+ event_callback.resume = app_resume;
+ event_callback.service = app_service;
+ event_callback.low_memory = NULL;
+ event_callback.low_battery = NULL;
+ event_callback.device_orientation = NULL;
+ event_callback.language_changed = app_lang_changed;
+ event_callback.region_format_changed = app_regeion_changed;
+
+ memset(&ad, 0x0, sizeof(bt_app_data_t));
+ setenv("EVAS_NO_DRI_SWAPBUF", "1", 1);
+
+ DBG("");
+ return app_efl_main(&argc, &argv, &event_callback, &ad);
+
+}