[easytag/wip/musicbrainz-support-merge: 50/75] Implemented Fetch More Data operation
- From: David King <davidk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [easytag/wip/musicbrainz-support-merge: 50/75] Implemented Fetch More Data operation
- Date: Sun, 7 Sep 2014 21:07:39 +0000 (UTC)
commit 7e4d2ef240bc7cfecc361fb26afd8f332d45c87d
Author: Abhinav <abhijangda hotmail com>
Date: Fri Aug 22 20:53:59 2014 +0530
Implemented Fetch More Data operation
Added Fetch More Data Button in musicbrainz_dialog.ui. Added support for
offset and fetching more data in mb_search.c. Changed Search in
musicbrainz_dialog.c to get offset & use it to fetch more data. Changed
mbentityview.c to fetch more data for AutomaticSearch.
data/musicbrainz_dialog.ui | 14 +++
src/mb_search.c | 101 +++++++++++++++++------
src/mb_search.h | 9 ++-
src/mbentityview.c | 20 ++++-
src/mbentityview.h | 2 +
src/musicbrainz_dialog.c | 194 +++++++++++++++++++++++++++++++++++++++-----
tests/test-musicbrainz.c | 20 +++---
7 files changed, 298 insertions(+), 62 deletions(-)
---
diff --git a/data/musicbrainz_dialog.ui b/data/musicbrainz_dialog.ui
index 5c0c7da..1763d0b 100644
--- a/data/musicbrainz_dialog.ui
+++ b/data/musicbrainz_dialog.ui
@@ -362,6 +362,20 @@
<property name="homogeneous">True</property>
</packing>
</child>
+ <child>
+ <object class="GtkToolButton" id="btn_fetch_more">
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip_text" translatable="yes">Fetch more results</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-save</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
diff --git a/src/mb_search.c b/src/mb_search.c
index 160cd0e..37758a4 100644
--- a/src/mb_search.c
+++ b/src/mb_search.c
@@ -31,9 +31,6 @@
* Declarations *
****************/
-#define SEARCH_LIMIT_STR "5"
-#define SEARCH_LIMIT_INT 5
-
static gchar *server = NULL;
static int port = 0;
@@ -199,8 +196,10 @@ et_musicbrainz_search_set_server_port (gchar *_server, int _port)
gboolean
et_musicbrainz_search_in_entity (MbEntityKind child_type,
MbEntityKind parent_type,
- gchar *parent_mbid, GNode *root,
- GError **error, GCancellable *cancellable)
+ gchar *parent_mbid,
+ GNode *root, int offset,
+ GError **error,
+ GCancellable *cancellable)
{
Mb5Query query;
Mb5Metadata metadata;
@@ -420,7 +419,7 @@ et_musicbrainz_search_in_entity (MbEntityKind child_type,
{
mb5_query_delete (query);
- return et_musicbrainz_search (parent_mbid, child_type, root, error,
+ return et_musicbrainz_search (parent_mbid, child_type, root, offset, error,
cancellable);
}
@@ -539,6 +538,49 @@ free_mb_node_children (GNode *node)
}
}
+EtMbEntity *
+et_mb_entity_copy (EtMbEntity *etentity)
+{
+ EtMbEntity *entity;
+
+ if (!etentity)
+ {
+ return NULL;
+ }
+
+ entity = g_slice_new (EtMbEntity);
+ entity->type = etentity->type;
+
+ switch (entity->type)
+ {
+ case MB_ENTITY_KIND_ARTIST:
+ entity->entity = mb5_artist_clone (etentity->entity);
+ break;
+
+ case MB_ENTITY_KIND_ALBUM:
+ entity->entity = mb5_release_clone (etentity->entity);
+ break;
+
+ case MB_ENTITY_KIND_TRACK:
+ entity->entity = mb5_recording_clone (etentity->entity);
+ break;
+
+ case MB_ENTITY_KIND_FREEDBID:
+ entity->entity = mb5_freedbdisc_clone (etentity->entity);
+ break;
+
+ case MB_ENTITY_KIND_DISCID:
+ entity->entity = mb5_disc_clone (etentity->entity);
+ break;
+
+ default:
+ g_slice_free (EtMbEntity, entity);
+ return NULL;
+ }
+
+ return entity;
+}
+
/*
* et_musicbrainz_search_artist:
* @string: String to search
@@ -551,26 +593,29 @@ free_mb_node_children (GNode *node)
* Search for Artists with name as @string
*/
static gboolean
-et_musicbrainz_search_artist (gchar *string, GNode *root, GError **error,
- GCancellable *cancellable)
+et_musicbrainz_search_artist (gchar *string, GNode *root, int offset,
+ GError **error, GCancellable *cancellable)
{
Mb5Query query;
Mb5Metadata metadata;
tQueryResult result;
- char *param_values[2];
- char *param_names[2];
+ char *param_values[3];
+ char *param_names[3];
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
param_names[0] = "query";
param_names[1] = "limit";
param_values[1] = SEARCH_LIMIT_STR;
+ param_names[2] = "offset";
+ param_values[2] = g_strdup_printf ("%d", offset);
query = mb5_query_new (USER_AGENT, server, port);
CHECK_CANCELLED(cancellable);
param_values[0] = g_strconcat ("artist:", string, NULL);
- metadata = mb5_query_query (query, "artist", "", "", 2, param_names,
+ metadata = mb5_query_query (query, "artist", "", "", 3, param_names,
param_values);
g_free (param_values[0]);
+ g_free (param_values[2]);
result = mb5_query_get_lastresult (query);
if (result == eQuery_Success)
@@ -640,15 +685,15 @@ et_musicbrainz_search_artist (gchar *string, GNode *root, GError **error,
* Search for Albums with name as @string
*/
static gboolean
-et_musicbrainz_search_album (gchar *string, GNode *root, GError **error,
- GCancellable *cancellable)
+et_musicbrainz_search_album (gchar *string, GNode *root, int offset,
+ GError **error, GCancellable *cancellable)
{
Mb5Query query;
Mb5Metadata metadata;
Mb5Metadata metadata_release;
tQueryResult result;
- char *param_values[2];
- char *param_names[2];
+ char *param_values[3];
+ char *param_names[3];
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
@@ -656,14 +701,17 @@ et_musicbrainz_search_album (gchar *string, GNode *root, GError **error,
metadata_release = NULL;
param_names[0] = "query";
param_names[1] = "limit";
+ param_names[2] = "offset";
+ param_values[2] = g_strdup_printf ("%d", offset);
param_values[1] = SEARCH_LIMIT_STR;
query = mb5_query_new (USER_AGENT, server, port);
param_values[0] = g_strconcat ("release:", string, NULL);
CHECK_CANCELLED(cancellable);
- metadata = mb5_query_query (query, "release", "", "", 2, param_names,
+ metadata = mb5_query_query (query, "release", "", "", 3, param_names,
param_values);
result = mb5_query_get_lastresult (query);
g_free (param_values[0]);
+ g_free (param_values[2]);
if (result == eQuery_Success)
{
@@ -797,30 +845,33 @@ et_musicbrainz_search_album (gchar *string, GNode *root, GError **error,
* Search for Tracks with name as @string
*/
static gboolean
-et_musicbrainz_search_track (gchar *string, GNode *root, GError **error,
- GCancellable *cancellable)
+et_musicbrainz_search_track (gchar *string, GNode *root, int offset,
+ GError **error, GCancellable *cancellable)
{
Mb5Query query;
Mb5Metadata metadata;
Mb5Metadata metadata_recording;
tQueryResult result;
- char *param_values[2];
- char *param_names[2];
+ char *param_values[3];
+ char *param_names[3];
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
metadata = NULL;
param_names[0] = "query";
param_names[1] = "limit";
+ param_names[2] = "offset";
+ param_values[2] = g_strdup_printf ("%d", offset);
param_values[1] = SEARCH_LIMIT_STR;
metadata_recording = NULL;
query = mb5_query_new (USER_AGENT, server, port);
param_values[0] = g_strconcat ("recordings:", string, NULL);
CHECK_CANCELLED(cancellable);
- metadata = mb5_query_query (query, "recording", "", "", 2,
+ metadata = mb5_query_query (query, "recording", "", "", 3,
param_names, param_values);
result = mb5_query_get_lastresult (query);
g_free (param_values[0]);
+ g_free (param_values[2]);
if (result == eQuery_Success)
{
@@ -1197,22 +1248,22 @@ et_musicbrainz_search_freedbid (gchar *string, GNode *root, GError **error,
* Returns: TRUE if successfull, FALSE if not.
*/
gboolean
-et_musicbrainz_search (gchar *string, MbEntityKind type, GNode *root,
+et_musicbrainz_search (gchar *string, MbEntityKind type, GNode *root, int offset,
GError **error, GCancellable *cancellable)
{
switch (type)
{
case MB_ENTITY_KIND_ARTIST:
- return et_musicbrainz_search_artist (string, root, error,
+ return et_musicbrainz_search_artist (string, root, offset, error,
cancellable);
case MB_ENTITY_KIND_ALBUM:
- return et_musicbrainz_search_album (string, root, error,
+ return et_musicbrainz_search_album (string, root, offset, error,
cancellable);
case MB_ENTITY_KIND_TRACK:
- return et_musicbrainz_search_track (string, root, error,
+ return et_musicbrainz_search_track (string, root, offset, error,
cancellable);
case MB_ENTITY_KIND_DISCID:
diff --git a/src/mb_search.h b/src/mb_search.h
index 327ed7a..3889b02 100644
--- a/src/mb_search.h
+++ b/src/mb_search.h
@@ -116,15 +116,18 @@ gboolean
et_musicbrainz_search_in_entity (MbEntityKind child_type,
MbEntityKind parent_type,
gchar *parent_mbid, GNode *root,
- GError **error, GCancellable *cancellable);
+ int offset, GError **error,
+ GCancellable *cancellable);
gboolean
-et_musicbrainz_search (gchar *string, MbEntityKind type, GNode *root,
- GError **error, GCancellable *cancellable);
+et_musicbrainz_search (gchar *string, MbEntityKind type, GNode *root,
+ int offset, GError **error, GCancellable *cancellable);
gchar *
et_mb5_release_get_artists_names (Mb5Release release);
gchar *
et_mb5_recording_get_artists_names (Mb5Recording recording);
void
free_mb_tree (GNode **node);
+EtMbEntity *
+et_mb_entity_copy (EtMbEntity *etentity);
#endif /* __MB_SEARCH_H__ */
#endif /* ENABLE_MUSICBRAINZ */
diff --git a/src/mbentityview.c b/src/mbentityview.c
index 7c4ecf6..65e52ae 100644
--- a/src/mbentityview.c
+++ b/src/mbentityview.c
@@ -800,8 +800,9 @@ search_in_levels_thread_func (GSimpleAsyncResult *res, GObject *obj,
if (!et_musicbrainz_search_in_entity (to_search,
((EtMbEntity *)thread_data->child->data)->type,
- mbid, thread_data->child, &error,
- cancellable))
+ mbid, thread_data->child,
+ g_node_n_children (thread_data->child),
+ &error, cancellable))
{
g_simple_async_report_gerror_in_idle (NULL,
mb5_search_error_callback,
@@ -813,6 +814,21 @@ search_in_levels_thread_func (GSimpleAsyncResult *res, GObject *obj,
}
/*
+ * et_mb_entity_view_fetch_more_at_current_level:
+ * @entity_view: Fetch more data at current level
+ *
+ * To Fetch more results at current level.
+ */
+void
+et_mb_entity_view_fetch_more_at_current_level (EtMbEntityView *entity_view)
+{
+ EtMbEntityViewPrivate *priv;
+
+ priv = ET_MB_ENTITY_VIEW_GET_PRIVATE (entity_view);
+ search_in_levels (entity_view, priv->mb_tree_current_node, NULL, TRUE);
+}
+
+/*
* tree_view_row_activated:
* @tree_view: the object on which the signal is emitted
* @path: the GtkTreePath for the activated row
diff --git a/src/mbentityview.h b/src/mbentityview.h
index c756542..f4f6ee1 100644
--- a/src/mbentityview.h
+++ b/src/mbentityview.h
@@ -182,6 +182,8 @@ et_mb_entity_view_get_selected_entity_list (EtMbEntityView *entity_view,
GList **list);
EtMbEntity *
et_mb_entity_view_get_current_entity (EtMbEntityView *entity_view);
+void
+et_mb_entity_view_fetch_more_at_current_level (EtMbEntityView *entity_view);
G_END_DECLS
#endif /* ENABLE_MUSICBRAINZ */
diff --git a/src/musicbrainz_dialog.c b/src/musicbrainz_dialog.c
index dd58f18..54a30bc 100644
--- a/src/musicbrainz_dialog.c
+++ b/src/musicbrainz_dialog.c
@@ -122,6 +122,7 @@ typedef struct
{
EtMbSearch parent;
GList *list_iter;
+ GArray *n_nodes;
} EtMbSelectedSearch;
/*
@@ -186,6 +187,7 @@ typedef struct
GHashTable *hash_table;
GList *list_iter;
GNode *node;
+ GArray *n_nodes;
} SelectedFindThreadData;
/*
@@ -231,7 +233,8 @@ static void
et_mb_set_search_manual (EtMbSearch **search, gchar *to_search,
GNode *node, MbEntityKind type);
static void
-et_mb_set_selected_search (EtMbSearch **search, GList *list_files);
+et_mb_set_selected_search (EtMbSearch **search, GArray *n_nodes,
+ GList *list_files);
static void
et_mb_set_automatic_search (EtMbSearch **search);
static void
@@ -362,6 +365,7 @@ et_mb_destroy_search (EtMbSearch **search)
{
g_list_free_full (((EtMbSelectedSearch *)(*search))->list_iter,
(GDestroyNotify)gtk_tree_iter_free);
+ g_array_free (((EtMbSelectedSearch *)(*search))->n_nodes, TRUE);
g_slice_free (EtMbSelectedSearch,
(EtMbSelectedSearch *)(*search));
break;
@@ -397,6 +401,8 @@ et_mb_set_search_manual (EtMbSearch **search, gchar *to_search,
manual_search->to_search_type = type;
*search = (EtMbSearch *)manual_search;
(*search)->type = ET_MB_SEARCH_TYPE_MANUAL;
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "btn_fetch_more")),
+ TRUE);
}
/*
@@ -407,12 +413,16 @@ et_mb_set_search_manual (EtMbSearch **search, gchar *to_search,
* Set the EtMbSearch as Selected Search.
*/
static void
-et_mb_set_selected_search (EtMbSearch **search, GList *list_files)
+et_mb_set_selected_search (EtMbSearch **search, GArray *n_nodes,
+ GList *list_files)
{
et_mb_destroy_search (search);
*search = (EtMbSearch *)g_slice_new (EtMbSelectedSearch);
(*search)->type = ET_MB_SEARCH_TYPE_SELECTED;
((EtMbSelectedSearch *)(*search))->list_iter = list_files;
+ ((EtMbSelectedSearch *)(*search))->n_nodes = n_nodes;
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "btn_fetch_more")),
+ TRUE);
}
/*
@@ -427,6 +437,8 @@ et_mb_set_automatic_search (EtMbSearch **search)
et_mb_destroy_search (search);
*search = (EtMbSearch *)g_slice_new (EtMbAutomaticSearch);
(*search)->type = ET_MB_SEARCH_TYPE_AUTOMATIC;
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "btn_fetch_more")),
+ FALSE);
}
/*
@@ -529,8 +541,9 @@ manual_search_thread_func (GSimpleAsyncResult *res, GObject *obj,
if (!et_musicbrainz_search (thread_data->text_to_search,
thread_data->type,
- thread_data->node, &error,
- cancellable))
+ thread_data->node,
+ g_node_n_children (thread_data->node),
+ &error, cancellable))
{
g_simple_async_report_gerror_in_idle (NULL,
mb5_search_error_callback,
@@ -553,6 +566,120 @@ manual_search_thread_func (GSimpleAsyncResult *res, GObject *obj,
}
/*
+ * btn_fetch_more_clicked:
+ * @btn: GtkButton
+ * @user_data: Additional Data
+ *
+ * Callback of "clicked" signal handler for btn_fetch_more.
+ */
+static void
+btn_fetch_more_clicked (GtkWidget *btn, gpointer user_data)
+{
+ EtMusicBrainzDialog *dlg;
+ EtMusicBrainzDialogPrivate *mb_dialog_priv;
+ int level;
+
+ dlg = ET_MUSICBRAINZ_DIALOG (mbDialog);
+ mb_dialog_priv = ET_MUSICBRAINZ_DIALOG_GET_PRIVATE (dlg);
+ level = et_mb_entity_view_get_current_level (ET_MB_ENTITY_VIEW (mb_dialog_priv->entityView));
+
+ if (mb_dialog_priv->search->type == ET_MB_SEARCH_TYPE_AUTOMATIC &&
+ level <= 2)
+ {
+ et_mb_entity_view_fetch_more_at_current_level (ET_MB_ENTITY_VIEW (mb_dialog_priv->entityView));
+ return;
+ }
+
+ if (level != 1)
+ {
+ return;
+ }
+
+ if (mb_dialog_priv->search->type == ET_MB_SEARCH_TYPE_MANUAL)
+ {
+ ManualSearchThreadData *thread_data;
+ EtMbManualSearch *manual_search;
+
+ manual_search = (EtMbManualSearch *)mb_dialog_priv->search;
+ thread_data = g_slice_new (ManualSearchThreadData);
+ thread_data->type = manual_search->to_search_type;
+ thread_data->node = g_node_copy_deep (mb_dialog_priv->mb_tree_root,
+ (GCopyFunc)et_mb_entity_copy, NULL);
+ thread_data->text_to_search = manual_search->to_search;
+ mb5_search_cancellable = g_cancellable_new ();
+ gtk_statusbar_push (mb_dialog_priv->statusbar, 0,
+ _("Starting MusicBrainz Search"));
+ mb_dialog_priv->async_result = g_simple_async_result_new (NULL,
+ manual_search_callback,
+ thread_data,
+ btn_fetch_more_clicked);
+ g_simple_async_result_run_in_thread (mb_dialog_priv->async_result,
+ manual_search_thread_func, 0,
+ mb5_search_cancellable);
+ et_music_brainz_dialog_stop_set_sensitive (TRUE);
+ }
+ else if (mb_dialog_priv->search->type == ET_MB_SEARCH_TYPE_SELECTED)
+ {
+ GList *iter_list;
+ GList *l;
+ GHashTable *hash_table;
+ SelectedFindThreadData *thread_data;
+ EtMbSelectedSearch *selected_search;
+ GtkTreeView *browser_list;
+ GtkTreeSelection *selection;
+
+ selection = et_application_window_browser_get_selection (ET_APPLICATION_WINDOW (MainWindow));
+ browser_list = gtk_tree_selection_get_tree_view (selection);
+ iter_list = NULL;
+ l = NULL;
+
+ if (!get_selected_iter_list (GTK_TREE_VIEW (browser_list), &iter_list))
+ {
+ gtk_statusbar_push (mb_dialog_priv->statusbar,
+ 0, _("No Files Selected"));
+ return;
+ }
+
+ hash_table = g_hash_table_new (g_str_hash, g_str_equal);
+
+ for (l = iter_list; l != NULL; l = g_list_next (l))
+ {
+ ET_File *etfile;
+ File_Tag *file_tag;
+
+ etfile = et_application_window_browser_get_et_file_from_iter (ET_APPLICATION_WINDOW (MainWindow),
+ (GtkTreeIter *)l->data);
+
+ file_tag = (File_Tag *)etfile->FileTag->data;
+
+ if (file_tag->album != NULL)
+ {
+ g_hash_table_add (hash_table, file_tag->album);
+ }
+ }
+
+ selected_search = (EtMbSelectedSearch *)mb_dialog_priv->search;
+ thread_data = g_slice_new (SelectedFindThreadData);
+ thread_data->hash_table = hash_table;
+ thread_data->list_iter = iter_list;
+ thread_data->node = g_node_copy_deep (mb_dialog_priv->mb_tree_root,
+ (GCopyFunc)et_mb_entity_copy, NULL);
+ thread_data->n_nodes = g_array_ref (selected_search->n_nodes);
+ mb5_search_cancellable = g_cancellable_new ();
+ mb_dialog_priv->async_result = g_simple_async_result_new (NULL,
+ selected_find_callback,
+ thread_data,
+ btn_fetch_more_clicked);
+ g_simple_async_result_run_in_thread (mb_dialog_priv->async_result,
+ selected_find_thread_func, 0,
+ mb5_search_cancellable);
+ gtk_statusbar_push (mb_dialog_priv->statusbar, 0,
+ _("Starting Selected Files Search"));
+ et_music_brainz_dialog_stop_set_sensitive (TRUE);
+ }
+}
+
+/*
* btn_manual_find_clicked:
* @btn: GtkButton
* @user_data: User data
@@ -819,7 +946,9 @@ selected_find_callback (GObject *source, GAsyncResult *res,
g_object_unref (res);
g_hash_table_destroy (thread_data->hash_table);
et_music_brainz_dialog_stop_set_sensitive (FALSE);
+ g_array_unref (thread_data->n_nodes);
g_slice_free (SelectedFindThreadData, user_data);
+
return;
}
@@ -840,6 +969,7 @@ selected_find_callback (GObject *source, GAsyncResult *res,
}
et_mb_set_selected_search (&mb_dialog_priv->search,
+ thread_data->n_nodes,
((SelectedFindThreadData *)user_data)->list_iter);
g_slice_free (SelectedFindThreadData, user_data);
}
@@ -860,18 +990,25 @@ selected_find_thread_func (GSimpleAsyncResult *res, GObject *obj,
GList *iter;
SelectedFindThreadData *thread_data;
GError *error;
+ int i;
+ int children;
+ i = 0;
g_simple_async_result_set_op_res_gboolean (res, FALSE);
error = NULL;
thread_data = g_async_result_get_user_data (G_ASYNC_RESULT (res));
list_keys = g_hash_table_get_keys (thread_data->hash_table);
+ g_array_set_size (thread_data->n_nodes, g_list_length (list_keys));
iter = g_list_first (list_keys);
while (iter)
{
+ children = g_node_n_children (thread_data->node);
+
if (!et_musicbrainz_search ((gchar *)iter->data, MB_ENTITY_KIND_ALBUM,
- thread_data->node, &error,
- cancellable))
+ thread_data->node,
+ g_array_index (thread_data->n_nodes, int, i),
+ &error, cancellable))
{
g_simple_async_report_gerror_in_idle (NULL,
mb5_search_error_callback,
@@ -880,6 +1017,8 @@ selected_find_thread_func (GSimpleAsyncResult *res, GObject *obj,
return;
}
+ g_array_index (thread_data->n_nodes, int, i) += g_node_n_children (thread_data->node) - children;
+
if (g_cancellable_is_cancelled (cancellable))
{
g_set_error (&error, ET_MB5_SEARCH_ERROR,
@@ -893,6 +1032,7 @@ selected_find_thread_func (GSimpleAsyncResult *res, GObject *obj,
}
iter = g_list_next (iter);
+ i++;
}
g_list_free (list_keys);
@@ -1029,6 +1169,7 @@ btn_selected_find_clicked (GtkWidget *button, gpointer data)
thread_data->hash_table = hash_table;
thread_data->list_iter = iter_list;
thread_data->node = g_node_new (NULL);
+ thread_data->n_nodes = g_array_new (FALSE, TRUE, sizeof (int));
mb5_search_cancellable = g_cancellable_new ();
mb_dialog_priv->async_result = g_simple_async_result_new (NULL,
selected_find_callback,
@@ -1037,8 +1178,8 @@ btn_selected_find_clicked (GtkWidget *button, gpointer data)
g_simple_async_result_run_in_thread (mb_dialog_priv->async_result,
selected_find_thread_func, 0,
mb5_search_cancellable);
- gtk_statusbar_push (mb_dialog_priv->statusbar,
- 0, _("Starting Selected Files Search"));
+ gtk_statusbar_push (mb_dialog_priv->statusbar, 0,
+ _("Starting Selected Files Search"));
et_music_brainz_dialog_stop_set_sensitive (TRUE);
}
@@ -1114,11 +1255,13 @@ discid_search_callback (GObject *source, GAsyncResult *res,
et_mb_entity_view_clear_all (ET_MB_ENTITY_VIEW (mb_dialog_priv->entityView));
et_mb_entity_view_set_tree_root (ET_MB_ENTITY_VIEW (mb_dialog_priv->entityView),
mb_dialog_priv->mb_tree_root);
- gtk_statusbar_push (mb_dialog_priv->statusbar,
- 0, _("Searching Completed"));
+ gtk_statusbar_push (mb_dialog_priv->statusbar, 0,
+ _("Searching Completed"));
g_object_unref (res);
g_slice_free (DiscIDSearchThreadData, thread_data);
et_music_brainz_dialog_stop_set_sensitive (FALSE);
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "btn_fetch_more")),
+ FALSE);
if (mb_dialog_priv->exit_on_complete)
{
@@ -1176,7 +1319,7 @@ discid_search_thread_func (GSimpleAsyncResult *res, GObject *obj,
thread_data = g_async_result_get_user_data (G_ASYNC_RESULT (res));
if (!et_musicbrainz_search (discid, MB_ENTITY_KIND_DISCID,
- thread_data->node,
+ thread_data->node, 0,
&error, cancellable))
{
g_simple_async_report_gerror_in_idle (NULL,
@@ -1265,6 +1408,7 @@ freedbid_search_callback (GObject *source, GAsyncResult *res,
return;
}
+ free_mb_tree (&mb_dialog_priv->mb_tree_root);
mb_dialog_priv->mb_tree_root = thread_data->node;
et_mb_entity_view_clear_all (ET_MB_ENTITY_VIEW (mb_dialog_priv->entityView));
et_mb_entity_view_set_tree_root (ET_MB_ENTITY_VIEW (mb_dialog_priv->entityView),
@@ -1316,7 +1460,7 @@ freedbid_search_thread_func (GSimpleAsyncResult *res, GObject *obj,
if (!et_musicbrainz_search (thread_data->cddb_discid,
MB_ENTITY_KIND_FREEDBID,
- thread_data->node,
+ thread_data->node, 0,
&error, cancellable))
{
g_simple_async_report_gerror_in_idle (NULL,
@@ -1819,9 +1963,9 @@ et_initialize_tag_choice_dialog (EtMusicBrainzDialogPrivate *mb_dialog_priv)
renderer = gtk_cell_renderer_text_new ();
column = gtk_tree_view_column_new_with_attributes ("Title",
- renderer, "text",
- TAG_CHOICE_TITLE,
- NULL);
+ renderer, "text",
+ TAG_CHOICE_TITLE,
+ NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (tag_choice_list),
column);
@@ -1871,7 +2015,8 @@ et_music_brainz_get_exit_on_complete (void)
{
EtMusicBrainzDialogPrivate *mb_dialog_priv;
- mb_dialog_priv = ET_MUSICBRAINZ_DIALOG_GET_PRIVATE (ET_MUSICBRAINZ_DIALOG (mbDialog));
+ mb_dialog_priv = ET_MUSICBRAINZ_DIALOG_GET_PRIVATE (ET_MUSICBRAINZ_DIALOG (mbDialog));
+
return mb_dialog_priv->exit_on_complete;
}
@@ -1956,7 +2101,7 @@ et_music_brainz_dialog_stop_set_sensitive (gboolean sensitive)
!sensitive);
gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "btn_apply_changes")),
!sensitive);
- gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "btnApplyChanges")),
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_builder_get_object (builder, "btn_fetch_more")),
!sensitive);
}
@@ -2073,7 +2218,7 @@ et_musicbrainz_dialog_init (EtMusicBrainzDialog *dialog)
gtk_window_set_title (GTK_WINDOW (dialog), "MusicBrainz Search");
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
box, TRUE, TRUE, 2);
- gtk_widget_set_size_request (GTK_WIDGET (dialog), 660, 500);
+ gtk_widget_set_size_request (GTK_WIDGET (dialog), 700, 500);
gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (builder, "central_box")),
priv->entityView, TRUE, TRUE, 2);
et_initialize_tag_choice_dialog (priv);
@@ -2119,10 +2264,12 @@ et_musicbrainz_dialog_init (EtMusicBrainzDialog *dialog)
g_signal_connect (gtk_builder_get_object (builder, "btn_apply_changes"),
"clicked", G_CALLBACK (btn_apply_changes_clicked),
NULL);
-
g_signal_connect (gtk_builder_get_object (builder, "btn_automatic_search"),
"clicked", G_CALLBACK (btn_automatic_search_clicked),
NULL);
+ g_signal_connect (gtk_builder_get_object (builder, "btn_fetch_more"),
+ "clicked", G_CALLBACK (btn_fetch_more_clicked),
+ NULL);
g_signal_connect_after (gtk_builder_get_object (builder, "entry_tree_view_search"),
"changed",
G_CALLBACK (entry_tree_view_search_changed),
@@ -2132,9 +2279,12 @@ et_musicbrainz_dialog_init (EtMusicBrainzDialog *dialog)
cb_manual_search_in = GTK_WIDGET (gtk_builder_get_object (builder,
"cb_manual_search_in"));
- gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb_manual_search_in), "Artist");
- gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb_manual_search_in), "Album");
- gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb_manual_search_in), "Track");
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb_manual_search_in),
+ _("Artist"));
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb_manual_search_in),
+ _("Album"));
+ gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (cb_manual_search_in),
+ _("Track"));
gtk_combo_box_set_active (GTK_COMBO_BOX (cb_manual_search_in), 1);
diff --git a/tests/test-musicbrainz.c b/tests/test-musicbrainz.c
index 1e696a5..68831c1 100644
--- a/tests/test-musicbrainz.c
+++ b/tests/test-musicbrainz.c
@@ -95,7 +95,7 @@ mb_search_test (void)
err = NULL;
mbTreeNode = g_node_new (NULL);
if (et_musicbrainz_search ("Westlife", MB_ENTITY_KIND_ARTIST, mbTreeNode,
- &err, NULL))
+ 0, &err, NULL))
{
EtMbEntity *etentity;
@@ -113,7 +113,7 @@ mb_search_test (void)
mbTreeNode = g_node_new (NULL);
if (et_musicbrainz_search ("Never Gone", MB_ENTITY_KIND_ALBUM, mbTreeNode,
- &err, NULL))
+ 0, &err, NULL))
{
EtMbEntity *etentity;
@@ -131,7 +131,7 @@ mb_search_test (void)
mbTreeNode = g_node_new (NULL);
if (et_musicbrainz_search ("I Still", MB_ENTITY_KIND_TRACK, mbTreeNode,
- &err, NULL))
+ 0, &err, NULL))
{
EtMbEntity *etentity;
@@ -150,7 +150,7 @@ mb_search_test (void)
if (et_musicbrainz_search ("lwHl8fGzJyLXQR33ug60E8jhf4k-",
MB_ENTITY_KIND_DISCID, mbTreeNode,
- &err, NULL))
+ 0, &err, NULL))
{
EtMbEntity *etentity;
@@ -169,7 +169,7 @@ mb_search_test (void)
if (et_musicbrainz_search ("24028103",
MB_ENTITY_KIND_FREEDBID, mbTreeNode,
- &err, NULL))
+ 0, &err, NULL))
{
EtMbEntity *etentity;
@@ -195,7 +195,7 @@ mb_search_in_test (void)
mbTreeNode = g_node_new (NULL);
if (et_musicbrainz_search ("Westlife", MB_ENTITY_KIND_ARTIST, mbTreeNode,
- &err, NULL))
+ 0, &err, NULL))
{
EtMbEntity *etentity;
GNode *westlife_node;
@@ -209,7 +209,7 @@ mb_search_in_test (void)
if (et_musicbrainz_search_in_entity (MB_ENTITY_KIND_ALBUM,
MB_ENTITY_KIND_ARTIST, mbid,
- westlife_node, &err, NULL))
+ westlife_node, 0, &err, NULL))
{
EtMbEntity *etentity;
@@ -230,7 +230,7 @@ mb_search_in_test (void)
mbTreeNode = g_node_new (NULL);
if (et_musicbrainz_search ("Never Gone", MB_ENTITY_KIND_ALBUM, mbTreeNode,
- &err, NULL))
+ 0, &err, NULL))
{
EtMbEntity *etentity;
GNode *never_gone_node;
@@ -243,7 +243,7 @@ mb_search_in_test (void)
if (et_musicbrainz_search_in_entity (MB_ENTITY_KIND_TRACK,
MB_ENTITY_KIND_ALBUM, mbid,
- never_gone_node, &err, NULL))
+ never_gone_node, 0, &err, NULL))
{
EtMbEntity *etentity;
@@ -564,4 +564,4 @@ main (int argc, char** argv)
g_thread_unref (thread);
return 0;
-}
\ No newline at end of file
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]