示例#1
0
static void
mex_search_plugin_dispose (GObject *object)
{
  MexSearchPlugin *self = MEX_SEARCH_PLUGIN (object);
  MexSearchPluginPrivate *priv = self->priv;

  if (priv->model_info)
    {
      mex_model_info_free (priv->model_info);
      priv->model_info = NULL;
    }

  if (priv->suggest_model)
    {
      g_object_unref (priv->suggest_model);
      priv->suggest_model = NULL;
    }

  if (priv->suggest_timeout)
    {
      g_source_remove (priv->suggest_timeout);
      priv->suggest_timeout = 0;
    }

  if (priv->suggest_id)
    {
      MexDownloadQueue *dq = mex_download_queue_get_default ();
      mex_download_queue_cancel (dq, priv->suggest_id);
      priv->suggest_id = NULL;
    }

  if (priv->search_proxy)
    {
      g_object_unref (priv->search_proxy);
      priv->search_proxy = NULL;
    }

  if (priv->search_page)
    {
      g_object_unref (priv->search_page);
      priv->search_page = NULL;
    }

  if (priv->action_info.action)
    {
      g_object_unref (priv->action_info.action);
      priv->action_info.action = NULL;
    }

  G_OBJECT_CLASS (mex_search_plugin_parent_class)->dispose (object);
}
示例#2
0
static void
mex_library_plugin_dispose (GObject *object)
{
    MexLibraryPluginPrivate *priv = MEX_LIBRARY_PLUGIN (object)->priv;

    while (priv->models)
    {
        MexModelInfo *info = priv->models->data;
        mex_model_info_free (info);
        priv->models = g_list_delete_link (priv->models, priv->models);
    }

    G_OBJECT_CLASS (mex_library_plugin_parent_class)->dispose (object);
}
示例#3
0
static void
mex_queue_plugin_dispose (GObject *object)
{
  MexQueuePluginPrivate *priv = GET_PRIVATE (object);

  while (priv->models)
    {
      mex_model_info_free (priv->models->data);
      priv->models = g_list_delete_link (priv->models, priv->models);
    }

  while (priv->actions)
    {
      MexActionInfo *info = priv->actions->data;

      g_object_unref (info->action);
      g_strfreev (info->mime_types);
      g_free (info);

      priv->actions = g_list_delete_link (priv->actions, priv->actions);
    }

  G_OBJECT_CLASS (mex_queue_plugin_parent_class)->dispose (object);
}
示例#4
0
static void
mex_search_plugin_search_cb (MexSearchPlugin *self)
{
  MexModelInfo *info;
  MexSearchPluginPrivate *priv = self->priv;

  const gchar *search = mx_entry_get_text (MX_ENTRY (priv->search_entry));

  /* Stop the suggestions search */
  if (priv->suggest_timeout)
    {
      g_source_remove (priv->suggest_timeout);
      priv->suggest_timeout = 0;
    }

  /* Start a new search */
  mex_search_plugin_search (self, search);

  /* Update the history list */
  mex_search_plugin_update_history (self, search);

  /* Present the search model */
  info = mex_model_info_new_with_sort_funcs (priv->search_model,
                                             "search-results", 0);
  mex_model_provider_present_model (MEX_MODEL_PROVIDER (self), info);
  mex_model_info_free (info);

  /* Hide the search page, if it was visible */
  if (CLUTTER_ACTOR_IS_VISIBLE (priv->search_page))
    mex_tool_provider_remove_actor (MEX_TOOL_PROVIDER (self),
                                    priv->search_page);

  /* TODO: Maybe use weak references to stop the search if the application
   *       didn't use it?
   */
}