Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Сетевое программирование
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2016, 15:13   #1
TommyChong
 
Регистрация: 16.10.2015
Сообщений: 6
По умолчанию Браузер (Tizen SDK: C++)

Добрый день. Никак не могу разобраться в туториале на сайте Тайзена. https://developer.tizen.org/developm...langredirect=1
То ли пример какой-то незаконченный, то ли я чего либо не понял.
Может быть кто-то сможет выполнить этот туториал? Тупо выводится пустое окно

Код:
#include "primer.h"
#include <Ecore.h>
#include <Ecore_Evas.h>
#include <Ecore_Getopt.h>
#include <Eet.h>
#include <Eina.h>
#include <Elementary.h>
#include <Evas.h>
#include <EWebKit.h>
#include <app.h>


typedef struct
_Browser_Window
{
   Evas_Object *elm_window;
   Evas_Object *ewk_view;
   Evas_Object *back_button;
   Evas_Object *forward_button;
} Browser_Window;

static void
win_delete_request_cb(void *data, Evas_Object *obj, void *event_info)
{
	ui_app_exit();
}

static void
win_back_cb(void *data, Evas_Object *obj, void *event_info)
{
	Browser_Window *ad = data;
	/* Let window go to hide state. */
	elm_win_lower(ad->elm_window);
}

static void
create_base_gui(Browser_Window *ad)
{
	/* Window */
	/* Create and initialize elm_win.
	   elm_win is mandatory to manipulate window. */
	ad->elm_window = elm_win_util_standard_add(PACKAGE, PACKAGE);
	elm_win_autodel_set(ad->elm_window, EINA_TRUE);

	if (elm_win_wm_rotation_supported_get(ad->elm_window)) {
		int rots[4] = { 0, 90, 180, 270 };
		elm_win_wm_rotation_available_rotations_set(ad->elm_window, (const int *)(&rots), 4);
	}

	evas_object_smart_callback_add(ad->elm_window, "delete,request", win_delete_request_cb, NULL);
	eext_object_event_callback_add(ad->elm_window, EEXT_CALLBACK_BACK, win_back_cb, ad);

	//ad->conform = elm_conformant_add(ad->win);
	elm_win_indicator_mode_set(ad->elm_window, ELM_WIN_INDICATOR_SHOW);
	elm_win_indicator_opacity_set(ad->elm_window, ELM_WIN_INDICATOR_OPAQUE);

	/* Show window after base gui is set up */
	evas_object_show(ad->elm_window);
}



static void
on_key_down(void *user_data, Evas *e, Evas_Object *ewk_view, void *event_info)
{
   Browser_Window *window = (Browser_Window *)user_data;
   Evas_Event_Key_Down *ev = (Evas_Event_Key_Down*) event_info;

   const Evas_Modifier *mod = evas_key_modifier_get(e);
   Eina_Bool ctrlPressed = evas_key_modifier_is_set(mod, "Control");
   Eina_Bool altPressed = evas_key_modifier_is_set(mod, "Alt");
}

static void
view_focus_set(Browser_Window *window, Eina_Bool focus)
{
   elm_object_focus_set(elm_object_top_widget_get(window->elm_window), EINA_FALSE);
   evas_object_focus_set(window->ewk_view, focus);
};

static void
on_mouse_down(void *user_data, Evas *e, Evas_Object *ewk_view, void *event_info)
{
   Browser_Window *window = (Browser_Window *)user_data;
   Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;

   if (ev->button == 1)
      view_focus_set(window, EINA_TRUE);
}

static Browser_Window*
window_create(Evas_Object *opener, int width, int height, Eina_Bool view_mode)
{
   // Allocate memory
   Browser_Window *window = calloc(1, sizeof(Browser_Window));
   if (!window)
   {
      // "ERROR: could not create browser window."
      return NULL;
   }

   // Create window
   window->elm_window = elm_win_add(NULL, "minibrowser-window", ELM_WIN_BASIC);
  // evas_object_smart_callback_add(window->win, "delete,request", on_window_deletion, &window);
   Evas_Object *vertical_layout = elm_box_add(window->elm_window);
   elm_box_padding_set(vertical_layout, 0, 2);
   evas_object_size_hint_weight_set(vertical_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
   elm_win_resize_object_add(window->elm_window, vertical_layout);
   evas_object_show(vertical_layout);
   // Create horizontal layout for top bar
   Evas_Object *horizontal_layout = elm_box_add(window->elm_window);
   elm_box_horizontal_set(horizontal_layout, EINA_TRUE);
   evas_object_size_hint_weight_set(horizontal_layout, EVAS_HINT_EXPAND, 0.0);
   evas_object_size_hint_align_set(horizontal_layout, EVAS_HINT_FILL, 0.0);
   elm_box_pack_end(vertical_layout, horizontal_layout);
   evas_object_show(horizontal_layout);

   Evas *evas = evas_object_evas_get(window->elm_window);
   window->ewk_view = ewk_view_add(evas);

   ewk_view_user_agent_set(window->ewk_view, NULL);

   evas_object_event_callback_add(window->ewk_view, EVAS_CALLBACK_KEY_DOWN, on_key_down, window);
   evas_object_event_callback_add(window->ewk_view, EVAS_CALLBACK_MOUSE_DOWN, on_mouse_down, window);
   elm_win_resize_object_add(window->elm_window, window->ewk_view);
   evas_object_show(window->ewk_view);

   evas_object_show(window->elm_window);

   view_focus_set(window, EINA_TRUE);

   return window;

}

static bool
app_create(void *data)
{


	Browser_Window *ad = data;
	window_create(NULL, 0, 0, EINA_FALSE);
	create_base_gui(ad);

	return true;
}

static Browser_Window*
window_find_with_elm_window(Evas_Object *elm_window)
{
   Eina_List *l;
   void *data;

   if (!elm_window)
      return NULL;

   //EINA_LIST_FOREACH(windows, l, data)
   {
      Browser_Window *window = (Browser_Window *)data;
      if (window->elm_window == elm_window)
         return window;
   }

   return NULL;
}

static Browser_Window*
window_find_with_ewk_view(Evas_Object *ewk_view)
{
   Eina_List *l;
   void *data;

   if (!ewk_view)
      return NULL;

   //EINA_LIST_FOREACH(windows, l, data)
   {
      Browser_Window *window = (Browser_Window *)data;
      if (window->ewk_view == ewk_view)
         return window;
   }

   return NULL;
}

static void
app_control(app_control_h app_control, void *data)
{
	/* Handle the launch request. */
}

static void
app_pause(void *data)
{
	/* Take necessary actions when application becomes invisible. */
}

static void
app_resume(void *data)
{
	/* Take necessary actions when application becomes visible. */
}


static void
app_terminate(void *data)
{
	ewk_shutdown();
}


static void
ui_app_lang_changed(app_event_info_h event_info, void *user_data)
{
	/*APP_EVENT_LANGUAGE_CHANGED*/
	char *locale = NULL;
	system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
	elm_language_set(locale);
	free(locale);
	return;
}

static void
ui_app_orient_changed(app_event_info_h event_info, void *user_data)
{
	/*APP_EVENT_DEVICE_ORIENTATION_CHANGED*/
	return;
}

static void
ui_app_region_changed(app_event_info_h event_info, void *user_data)
{
	/*APP_EVENT_REGION_FORMAT_CHANGED*/
}

static void
ui_app_low_battery(app_event_info_h event_info, void *user_data)
{
	/*APP_EVENT_LOW_BATTERY*/
}

static void
ui_app_low_memory(app_event_info_h event_info, void *user_data)
{
	/*APP_EVENT_LOW_MEMORY*/
}

int
main(int argc, char *argv[])
{
	Browser_Window ad = {0,};
	int ret = 0;

	ui_app_lifecycle_callback_s event_callback = {0,};
	app_event_handler_h handlers[5] = {NULL, };
	int args = 1;
	Browser_Window window;
	memset(&window, 0x00, sizeof(Browser_Window));

	ui_app_lifecycle_callback_s ops;
	memset(&ops, 0x00, sizeof(ui_app_lifecycle_callback_s));

	ops.create = app_create;
	ops.terminate = app_terminate;

	ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY], APP_EVENT_LOW_BATTERY, ui_app_low_battery, &ad);
	ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY], APP_EVENT_LOW_MEMORY, ui_app_low_memory, &ad);
	ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED], APP_EVENT_DEVICE_ORIENTATION_CHANGED, ui_app_orient_changed, &ad);
	ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, &ad);
	ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED], APP_EVENT_REGION_FORMAT_CHANGED, ui_app_region_changed, &ad);

	ret = ui_app_main(argc, argv, &event_callback, &ad);
	if (ret != APP_ERROR_NONE) {
		dlog_print(DLOG_ERROR, LOG_TAG, "app_main() is failed. err = %d", ret);
	}

	return ui_app_main(argc, argv, &ops, &window);
}

Последний раз редактировалось TommyChong; 02.02.2016 в 16:30. Причина: Добавил код
TommyChong вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SDK Дима212313123 Visual C++ 1 20.07.2014 16:53
SDK Михаил Юрьевич Общие вопросы Delphi 2 17.09.2013 23:26
Playground SDK bumer7721 Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 10.07.2011 15:30
Подключение SDK Alter1989 Общие вопросы Delphi 1 11.06.2011 01:53
Помогите SDK LuckyStr Общие вопросы по Java, Java SE, Kotlin 1 31.03.2008 14:20