#define STR_MP_DONT_ASK_AGAIN "IDS_MUSIC_BUTTON_DONT_ASK_AGAIN"
#define STR_MP_ENABLE_MOTION "IDS_MUSIC_BUTTON_ENABLE_MOTION"
#define STR_MP_DELETE ("IDS_MUSIC_OPT_DELETE")
+#define STR_MP_SHARE ("IDS_MUSIC_OPT_SHARE")
#define STR_MP_CANCEL "IDS_MUSIC_SK_CANCEL"
#define STR_MP_OK "IDS_COM_SK_OK"
#define STR_MP_CLOSE "IDS_COM_BODY_CLOSE"
msgid "IDS_MUSIC_OPT_DELETE"
msgstr "Delete"
+msgid "IDS_MUSIC_OPT_SHARE"
+msgstr "Share"
+
msgid "IDS_MUSIC_HEADER_SELECT"
msgstr "Select"
msgid "IDS_MUSIC_OPT_DELETE"
msgstr "Delete"
+msgid "IDS_MUSIC_OPT_SHARE"
+msgstr "Share"
+
msgid "IDS_MUSIC_HEADER_SELECT"
msgstr "Select"
msgid "IDS_MUSIC_OPT_DELETE"
msgstr "Delete"
+msgid "IDS_MUSIC_OPT_SHARE"
+msgstr "Share"
+
msgid "IDS_MUSIC_HEADER_SELECT"
msgstr "Select"
#include "music.h"
void mp_edit_create_delete_popup(void *data);
+void mp_edit_create_share(void *data);
void mp_edit_create_add_to_playlist_popup(void *data);
#ifndef MP_SOUND_PLAYER
void *mp_edit_get_delete_thread();
static int g_selected_tracklist_count;
static void *g_playlist_handle;
static char *g_playlist_name;
+static app_control_h g_share_service = NULL;
+static char **g_share_list = NULL;
+static int g_share_list_size = 0;
void mp_edit_cb_excute_track_delete(void *data);
static void _mp_edit_message_popup_response_cb(void *data, Evas_Object * obj, void *event_info);
return;
}
+static void mp_share_view_create_launch_share_panel()
+{
+ char *pOperation = MP_SHARE_OPERATION_SINGLE;
+ int counter;
+ int err = 0;
+
+ if (g_share_list_size > 1) {
+ pOperation = MP_SHARE_OPERATION_MULTIPLE;
+ }
+
+ if (!g_share_list) {
+ DEBUG_TRACE("[WARNING] Fail to get uri at first.");
+ goto ERROR_EXCEPTION;
+ }
+
+ if (!g_share_service) {
+ err = app_control_create(&g_share_service);
+ if (err != APP_CONTROL_ERROR_NONE) {
+ DEBUG_TRACE("Fail to create ug service handle - [0x%x]",
+ err);
+ goto ERROR_EXCEPTION;
+ }
+ }
+
+ err = app_control_set_uri(g_share_service, g_share_list[0]);
+ if (err != APP_CONTROL_ERROR_NONE) {
+ DEBUG_TRACE("Fail to set uri into ug service handle - [0x%x]",
+ err);
+ goto ERROR_EXCEPTION;
+ }
+
+ err = app_control_set_operation(g_share_service, pOperation);
+ if (err != APP_CONTROL_ERROR_NONE) {
+ DEBUG_TRACE("app_control_add_extra_data_array().. [0x%x]", err);
+ goto ERROR_EXCEPTION;
+ }
+
+ if (g_share_list_size >= 1) {
+ err = app_control_add_extra_data_array(g_share_service,
+ "http://tizen.org/appcontrol/data/path",
+ (const char
+ **) (&g_share_list[1]),
+ g_share_list_size - 1);
+ if (err != APP_CONTROL_ERROR_NONE) {
+ DEBUG_TRACE("[WARNING] app_control_add_extra_data_array() [0x%x]", err);
+ goto ERROR_EXCEPTION;
+ }
+ }
+
+ err = app_control_send_launch_request(g_share_service, NULL, NULL);
+ if (err != APP_CONTROL_ERROR_NONE) {
+ DEBUG_TRACE("[WARNING] app_control_send_launch_request().. [0x%x]", err);
+ goto ERROR_EXCEPTION;
+ }
+
+ elm_naviframe_item_pop(GET_NAVIFRAME);
+
+ return;
+ ERROR_EXCEPTION:
+ if (g_share_service) {
+ app_control_destroy(g_share_service);
+ g_share_service = NULL;
+ }
+
+ if (g_share_list) {
+ for (counter = 0; counter < g_share_list_size; counter++) {
+ if (g_share_list[counter]) {
+ free(g_share_list[counter]);
+ g_share_list[counter] = NULL;
+ }
+ }
+ free(g_share_list);
+ g_share_list = NULL;
+ }
+}
+
+void mp_edit_create_share(void *data)
+{
+ DEBUG_TRACE("");
+ struct appdata *ad = mp_util_get_appdata();
+ MP_CHECK(ad);
+
+ MpList_t *list = data;
+ MP_CHECK(list);
+
+ int counter = 0;
+ int total_items = 0;
+ int total_appended_items = 0;
+ int extra_data_size = 0;
+
+ g_share_list_size = 0;
+
+ char **service_extra_data_uri = NULL;
+
+ GList *selected_list;
+ GList *node;
+
+ mp_list_selected_item_data_get(list, &selected_list);
+ total_items = g_list_length(selected_list);
+
+ if (total_items == 0) {
+ DEBUG_TRACE("Nothing selected to share");
+ return;
+ }
+
+ extra_data_size = total_items;
+
+ if (extra_data_size) {
+ service_extra_data_uri =
+ (char **) calloc(extra_data_size, sizeof(char *));
+
+ /** Store the list so the share panel can be updated later
+ * g_share_list size needs to bigger than total music size
+ * because first url will be added twice, one for single share and
+ * one for multiple share.
+ * so g_share_list alloc size = extra_data_size + 1
+ */
+
+ g_share_list = (char **) calloc((extra_data_size + 1), sizeof(char *));
+ }
+
+ node = g_list_first(selected_list);
+ while (node) {
+ char *share_file_uri = NULL;
+ mp_list_item_data_t *item = node->data;
+ if (item && item->handle) {
+ char *file_path = NULL;
+ mp_media_info_get_file_path(item->handle, &file_path);
+ share_file_uri = g_strdup(file_path);
+ }
+
+ if (share_file_uri) {
+ counter++;
+ g_share_list[0] = strdup(share_file_uri);
+ g_share_list_size++;
+ break;
+ } else {
+ DEBUG_TRACE("share_file_uri does not exist.");
+ }
+ node = g_list_next(node);
+ IF_FREE(share_file_uri);
+ }
+
+ DEBUG_TRACE("counter = %d", counter);
+
+ node = g_list_first(selected_list);
+ if (extra_data_size > 0 && service_extra_data_uri) {
+ for (counter = 0; counter < total_items; counter++) {
+ char *share_file_uri = NULL;
+ mp_list_item_data_t *item = node->data;
+ if (item && item->handle) {
+ char *file_path = NULL;
+ mp_media_info_get_file_path(item->handle, &file_path);
+ char *path = g_strdup(file_path);
+ share_file_uri = path;
+ }
+ node = g_list_next(node);
+
+ if (share_file_uri) {
+ if (total_appended_items < extra_data_size) {
+ service_extra_data_uri[total_appended_items] = share_file_uri;
+ DEBUG_TRACE("Appending share item : %s, Total Appended item : %d",
+ (const char **)service_extra_data_uri[total_appended_items],
+ total_appended_items);
+ total_appended_items++;
+ g_share_list[g_share_list_size++] = strdup(share_file_uri);
+ continue;
+ } else {
+ DEBUG_TRACE("[WARNING] OVERFLOW ALOOCATED MEMORY SIZE.");
+ free(share_file_uri);
+ }
+ } else {
+ DEBUG_TRACE("share_file_uri does not exist.");
+ }
+ }
+ }
+
+ mp_share_view_create_launch_share_panel();
+
+ if (service_extra_data_uri) {
+ for (counter = 0; counter < extra_data_size; counter++) {
+ if (service_extra_data_uri[counter]) {
+ free(service_extra_data_uri[counter]);
+ service_extra_data_uri[counter] = NULL;
+ }
+ }
+ free(service_extra_data_uri);
+ service_extra_data_uri = NULL;
+ }
+}
+
void mp_edit_create_delete_popup(void *data)
{
DEBUG_TRACE("");
#define THEME_NAME "mp-custom-winset-style.edj"
+#define MP_SHARE_OPERATION_SINGLE "http://tizen.org/appcontrol/operation/share"
+#define MP_SHARE_OPERATION_MULTIPLE "http://tizen.org/appcontrol/operation/multi_share"
+
#define TITLE_H 90
#define START_Y_POSITION 94
MP_DONE_ADD_TRACK_TYPE,
MP_DONE_SELECT_ADD_TRACK_TYPE,
MP_DONE_MAX,
+ MP_DONE_SHARE_TYPE,
} mp_done_operator_type_t;
typedef enum {
#endif
void mp_edit_view_delete_cb(void *data, Evas_Object * obj,
void *event_info);
+void mp_edit_view_share_cb(void *data, Evas_Object * obj,
+ void *event_info);
void mp_edit_view_remove_cb(void *data, Evas_Object * obj,
void *event_info);
void mp_edit_view_list_item_reorder_update_cb(void *data,
Evas_Object * obj,
void *event_info);
+static void _mp_album_detail_view_share_cb(void *data,
+ Evas_Object * obj,
+ void *event_info);
+
static void _mp_album_detail_view_cb(void *data, Evas_Object * obj,
void *event_info)
{
MP_PLAYER_MORE_BTN_DELETE_IMAGE,
_mp_album_detail_view_tracklist_edit_cb,
view);
+ mp_util_ctxpopup_item_append(view->more_btn_ctxpopup,
+ STR_MP_SHARE,
+ MP_PLAYER_MORE_BTN_DELETE_IMAGE,
+ _mp_album_detail_view_share_cb,
+ view);
}
#ifdef MP_FEATURE_PERSONAL_PAGE
if (mp_util_is_personal_page_on()) {
mp_common_show_edit_view((MpListView_t *) view, MP_DONE_DELETE_TYPE);
}
+static void _mp_album_detail_view_share_cb(void *data,
+ Evas_Object * obj,
+ void *event_info)
+{
+ eventfunc;
+ MpAlbumDetailView_t *view = (MpAlbumDetailView_t *) data;
+ MP_CHECK(view);
+
+ mp_evas_object_del(view->more_btn_ctxpopup);
+ mp_common_show_edit_view((MpListView_t *) view, MP_DONE_SHARE_TYPE);
+}
+
Eina_Bool _mp_album_detail_view_tracklist_back_cb(void *data,
Elm_Object_Item * it)
{
static void _mp_all_view_edit_cb(void *data, Evas_Object * obj,
void *event_info);
+static void mp_all_view_share_cb(void *data, Evas_Object * obj,
+ void *event_info);
static void _mp_all_view_content_load(void *thiz, MpTab_e tab);
#define TAB_COUNT 4
mp_common_create_search_view_cb,
view);
}
+ if (index == MP_TAB_SONGS) {
+ mp_util_ctxpopup_item_append(view->more_btn_ctxpopup,
+ STR_MP_SHARE, NULL,
+ mp_all_view_share_cb,
+ view);
+ }
#ifdef MP_FEATURE_PERSONAL_PAGE
if (index == MP_TAB_SONGS) {
if (mp_util_is_personal_page_on()) {
mp_common_show_edit_view((MpListView_t *) view, MP_DONE_DELETE_TYPE);
}
+static void mp_all_view_share_cb(void *data, Evas_Object * obj,
+ void *event_info)
+{
+ eventfunc;
+ MpAllView_t *view = (MpAllView_t *) data;
+ MP_CHECK(view);
+
+ mp_evas_object_del(view->more_btn_ctxpopup);
+ mp_common_show_edit_view((MpListView_t *) view, MP_DONE_SHARE_TYPE);
+}
+
Eina_Bool _mp_all_view_pop_cb(void *data, Elm_Object_Item * it)
{
startfunc;
static void _mp_artist_detail_view_tracklist_edit_cb(void *data,
Evas_Object * obj,
void *event_info);
+static void _mp_artist_detail_view_share_cb(void *data,
+ Evas_Object * obj,
+ void *event_info);
static void _mp_artist_detail_view_content_load(void *thiz);
static void _mp_artist_detail_view_cb(void *data, Evas_Object * obj,
MP_PLAYER_MORE_BTN_DELETE_IMAGE,
_mp_artist_detail_view_tracklist_edit_cb,
view);
+ mp_util_ctxpopup_item_append(view->more_btn_ctxpopup,
+ STR_MP_SHARE,
+ MP_PLAYER_MORE_BTN_DELETE_IMAGE,
+ _mp_artist_detail_view_share_cb,
+ view);
}
#ifdef MP_FEATURE_PERSONAL_PAGE
if (mp_util_is_personal_page_on()) {
mp_common_show_edit_view((MpListView_t *) view, MP_DONE_DELETE_TYPE);
}
+static void _mp_artist_detail_view_share_cb(void *data,
+ Evas_Object * obj,
+ void *event_info)
+{
+ eventfunc;
+ MpArtistDetailView_t *view = (MpArtistDetailView_t *) data;
+ MP_CHECK(view);
+
+ mp_evas_object_del(view->more_btn_ctxpopup);
+ mp_common_show_edit_view((MpListView_t *) view, MP_DONE_SHARE_TYPE);
+}
+
/*static Eina_Bool _mp_artist_detail_view_tracklist_back_cb(void *data, Elm_Object_Item *it)
{
eventfunc;
mp_edit_create_add_to_playlist_popup(view->content_to_show);
}
+void
+mp_edit_view_share_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ eventfunc;
+ MpEditView_t *view = data;
+ MP_CHECK(view);
+ mp_edit_create_share(view->content_to_show);
+}
+
void
mp_edit_view_delete_cb(void *data, Evas_Object * obj, void *event_info)
{
view->navi_it,
mp_select_track_view_add_to_playlist_cb,
view->content_to_show);
+ } else if (type == MP_DONE_SHARE_TYPE) {
+ done_button =
+ mp_widget_create_navi_right_btn(view->layout,
+ view->navi_it,
+ mp_edit_view_share_cb,
+ view);
}
MP_CHECK_NULL(done_button);
view->done_btn = done_button;
obj,
void
*event_info);
+static void mp_playlist_detail_view_share_cb(void *data,
+ Evas_Object * obj,
+ void *event_info);
static void _mp_playlist_detail_view_cb(void *data, Evas_Object * obj,
void *event_info) {
MP_PLAYER_MORE_BTN_EDIT,
mp_playlist_detail_view_tracklist_edit_cb,
view);
+ mp_util_ctxpopup_item_append(view->more_btn_ctxpopup,
+ STR_MP_SHARE,
+ NULL,
+ mp_playlist_detail_view_share_cb,
+ view);
}
if (count) {
- /*search */
+ /*search*/
mp_util_ctxpopup_item_append(view->more_btn_ctxpopup,
STR_MP_SEARCH, NULL,
mp_common_create_search_view_cb,
view);
+
}
+
#ifndef MP_FEATURE_NO_END
mp_util_ctxpopup_item_append(view->more_btn_ctxpopup,
STR_MP_END,
mp_common_show_edit_view((MpListView_t *) view, MP_DONE_REMOVED_TYPE);
}
+static void mp_playlist_detail_view_share_cb(void *data,
+ Evas_Object * obj,
+ void *event_info) {
+ eventfunc;
+ MpPlaylistDetailView_t *view = (MpPlaylistDetailView_t *) data;
+ MP_CHECK(view);
+
+ mp_evas_object_del(view->more_btn_ctxpopup);
+ mp_common_show_edit_view((MpListView_t *) view, MP_DONE_SHARE_TYPE);
+}
+
static void _mp_playlist_detail_view_tracklist_reorder_cb(void *data,
Evas_Object *
obj,