#include <app.h>
#include <Elementary.h>
#include <dbg.h>
+#include <AppCommon.h>
+#include <BaseApp.h>
#include "define.h"
#include "view_player.h"
#include "i18n.h"
+#define WIN_TITLE "Video Player"
#define PARAM_URI "uri"
#define PARAM_PLAYLIST_ID "playlist_id"
-struct _appdata {
+struct SAppData {
const char *name;
Evas_Object *win;
+ viewdata *vdata;
+};
- struct viewdata *vdata;
+class CVideoPlayerApp : public CBaseApp {
+private:
+ SAppData *m_pApp;
+
+private:
+ static Evas_Object *sm_AddWin(const char *name);
+
+public:
+ CVideoPlayerApp(void);
+ virtual ~CVideoPlayerApp(void);
+ virtual bool OnCreate(void);
+ virtual void OnPause(void);
+ virtual void OnResume(void);
+ virtual void OnTerminate(void);
+ virtual void OnService(service_h service);
+ virtual int Run(int argc, char **argv);
};
-static Evas_Object *_add_win(const char *name)
+CVideoPlayerApp::CVideoPlayerApp(void)
+{
+ m_pApp = new SAppData;
+}
+
+CVideoPlayerApp::~CVideoPlayerApp(void)
+{
+ delete m_pApp;
+ m_pApp = NULL;
+}
+
+Evas_Object *CVideoPlayerApp::sm_AddWin(const char *name)
{
Evas_Object *win;
Evas_Object *obj;
if (!win)
return NULL;
- elm_win_title_set(win, "Video player");
+ elm_win_title_set(win, WIN_TITLE);
evas_object_show(win);
return win;
}
-static bool _create(void *user_data)
+bool CVideoPlayerApp::OnCreate(void)
{
- struct _appdata *ad;
- Evas_Object *win;
+ ASSERT(m_pApp);
- if (!user_data)
- return false;
-
- ad = (_appdata *)user_data;
+ Evas_Object *win;
elm_theme_overlay_add(NULL, THEMEFILE);
elm_config_focus_move_policy_set(ELM_FOCUS_MOVE_POLICY_CLICK);
- win = _add_win(ad->name);
- if (!win)
+ win = sm_AddWin(m_pApp->name);
+ if (!win) {
+ _ERR("failed to add window");
return false;
-
- ad->win = win;
+ }
elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
elm_win_focus_highlight_style_set(win, STYLE_INVISIBLE);
+ m_pApp->win = win;
+
return true;
}
-static void _terminate(void *user_data)
+void CVideoPlayerApp::OnTerminate(void)
{
- struct _appdata *ad;
-
- if (!user_data)
- return;
+ ASSERT(m_pApp);
- ad = (_appdata *)user_data;
+ if (m_pApp->vdata)
+ view_player_fini(m_pApp->vdata);
- view_player_fini(ad->vdata);
+ if (m_pApp->win)
+ evas_object_del(m_pApp->win);
}
-static void _pause(void *user_data)
+void CVideoPlayerApp::OnPause(void)
{
- struct _appdata *ad;
+ ASSERT(m_pApp);
- if (!user_data) {
- _ERR("App Data is NULL");
- return;
- }
-
- ad = (_appdata *)user_data;
- if (!ad->vdata)
+ if (!m_pApp->vdata)
return;
- view_player_pause(ad->vdata);
+ view_player_pause(m_pApp->vdata);
}
-static void _resume(void *user_data)
+void CVideoPlayerApp::OnResume(void)
{
- struct _appdata *ad;
-
- if (!user_data) {
- _ERR("App Data is NULL");
- return;
- }
+ ASSERT(m_pApp);
- ad = (_appdata *)user_data;
- if (!ad->vdata)
+ if (!m_pApp->vdata)
return;
- view_player_resume(ad->vdata);
+ view_player_resume(m_pApp->vdata);
}
-static void _service(service_h service, void *user_data)
+void CVideoPlayerApp::OnService(service_h service)
{
- struct _appdata *ad;
- struct viewdata *vdata;
+ ASSERT(m_pApp);
+
+ viewdata *vdata;
char *uri;
char *playlist_id;
int r;
- if (!user_data)
- return;
-
- ad = (_appdata *)user_data;
-
r = service_get_extra_data(service, PARAM_URI, &uri);
if (r != SERVICE_ERROR_NONE)
uri = NULL;
if (r != SERVICE_ERROR_NONE)
playlist_id = NULL;
- vdata = view_player_init(ad->win, uri, playlist_id);
+ vdata = view_player_init(m_pApp->win, uri, playlist_id);
free(uri);
free(playlist_id);
if (view_player_create(vdata) == -1)
elm_exit();
- ad->vdata = vdata;
+ m_pApp->vdata = vdata;
+}
+
+int CVideoPlayerApp::Run(int argc, char **argv)
+{
+ ASSERT(m_pApp);
+
+ m_pApp->name = PACKAGE;
+
+ return CBaseApp::Run(argc, argv);
}
int main(int argc, char **argv)
{
- struct _appdata ad;
- app_event_callback_s cbs = {
- .create = _create,
- .terminate = _terminate,
- .pause = _pause,
- .resume = _resume,
- .service = _service,
- };
-
- memset(&ad, 0x00, sizeof(ad));
- ad.name = PACKAGE;
-
- memset(&cbs, 0x00, sizeof(cbs));
- cbs.create = _create;
- cbs.terminate = _terminate;
- cbs.pause = _pause;
- cbs.resume = _resume;
- cbs.service = _service;
-
- i18n_init();
-
- app_efl_main(&argc, &argv, &cbs, &ad);
+ CVideoPlayerApp app;
+
+ app.Run(argc, argv);
return 0;
}