~ubuntu-branches/ubuntu/trusty/gnome-documents/trusty

« back to all changes in this revision

Viewing changes to src/miner/gd-miner.c

  • Committer: Package Import Robot
  • Author(s): Andreas Henriksson, Thomas Bechtold
  • Date: 2013-04-04 13:32:08 UTC
  • mfrom: (3.1.4 experimental)
  • Revision ID: package-import@ubuntu.com-20130404133208-n19gqczi05z31ogb
Tags: 3.8.0-1
[ Thomas Bechtold ]
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
 
30
30
struct _GdMinerPrivate {
31
31
  GoaClient *client;
 
32
  GError *client_error;
 
33
 
32
34
  TrackerSparqlConnection *connection;
33
35
 
34
36
  GCancellable *cancellable;
35
37
  GSimpleAsyncResult *result;
36
38
 
37
39
  GList *pending_jobs;
 
40
 
 
41
  gchar *display_name;
38
42
};
39
43
 
40
44
static void
71
75
  g_clear_object (&self->priv->cancellable);
72
76
  g_clear_object (&self->priv->result);
73
77
 
 
78
  g_free (self->priv->display_name);
 
79
  g_clear_error (&self->priv->client_error);
 
80
 
74
81
  G_OBJECT_CLASS (gd_miner_parent_class)->dispose (object);
75
82
}
76
83
 
77
84
static void
 
85
gd_miner_init_goa (GdMiner *self)
 
86
{
 
87
  GoaAccount *account;
 
88
  GoaObject *object;
 
89
  const gchar *provider_type;
 
90
  GList *accounts, *l;
 
91
  GdMinerClass *miner_class = GD_MINER_GET_CLASS (self);
 
92
 
 
93
  self->priv->client = goa_client_new_sync (NULL, &self->priv->client_error);
 
94
 
 
95
  if (self->priv->client_error != NULL)
 
96
    {
 
97
      g_critical ("Unable to create GoaClient: %s - indexing for %s will not work",
 
98
                  self->priv->client_error->message, miner_class->goa_provider_type);
 
99
      return;
 
100
    }
 
101
 
 
102
  accounts = goa_client_get_accounts (self->priv->client);
 
103
  for (l = accounts; l != NULL; l = l->next)
 
104
    {
 
105
      object = l->data;
 
106
 
 
107
      account = goa_object_peek_account (object);
 
108
      if (account == NULL)
 
109
        continue;
 
110
 
 
111
      provider_type = goa_account_get_provider_type (account);
 
112
      if (g_strcmp0 (provider_type, miner_class->goa_provider_type) == 0)
 
113
        {
 
114
          g_free (self->priv->display_name);
 
115
          self->priv->display_name = goa_account_dup_provider_name (account);
 
116
          break;
 
117
        }
 
118
    }
 
119
 
 
120
  g_list_free_full (accounts, g_object_unref);
 
121
}
 
122
 
 
123
static void
 
124
gd_miner_constructed (GObject *obj)
 
125
{
 
126
  GdMiner *self = GD_MINER (obj);
 
127
 
 
128
  G_OBJECT_CLASS (gd_miner_parent_class)->constructed (obj);
 
129
 
 
130
  gd_miner_init_goa (self);
 
131
}
 
132
 
 
133
static void
78
134
gd_miner_init (GdMiner *self)
79
135
{
80
136
  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GD_TYPE_MINER, GdMinerPrivate);
 
137
  self->priv->display_name = g_strdup ("");
81
138
}
82
139
 
83
140
static void
85
142
{
86
143
  GObjectClass *oclass = G_OBJECT_CLASS (klass);
87
144
 
 
145
  oclass->constructed = gd_miner_constructed;
88
146
  oclass->dispose = gd_miner_dispose;
89
147
 
90
148
  g_type_class_add_private (klass, sizeof (GdMinerPrivate));
552
610
}
553
611
 
554
612
static void
555
 
client_ready_cb (GObject *source,
556
 
                 GAsyncResult *res,
557
 
                 gpointer user_data)
 
613
gd_miner_refresh_db_real (GdMiner *self)
558
614
{
559
 
  GdMiner *self = user_data;
560
615
  GoaDocuments *documents;
561
616
  GoaAccount *account;
562
617
  GoaObject *object;
563
618
  const gchar *provider_type;
564
 
  GError *error = NULL;
565
619
  GList *accounts, *doc_objects, *acc_objects, *l;
566
620
  GdMinerClass *miner_class = GD_MINER_GET_CLASS (self);
567
621
 
568
 
  self->priv->client = goa_client_new_finish (res, &error);
569
 
 
570
 
  if (error != NULL)
571
 
    {
572
 
      gd_miner_complete_error (self, error);
573
 
      return;
574
 
    }
575
 
 
576
622
  doc_objects = NULL;
577
623
  acc_objects = NULL;
578
624
 
619
665
      return;
620
666
    }
621
667
 
622
 
  goa_client_new (self->priv->cancellable, client_ready_cb, self);
 
668
  gd_miner_refresh_db_real (self);
 
669
}
 
670
 
 
671
const gchar *
 
672
gd_miner_get_display_name (GdMiner *self)
 
673
{
 
674
  return self->priv->display_name;
623
675
}
624
676
 
625
677
void
628
680
                           GAsyncReadyCallback callback,
629
681
                           gpointer user_data)
630
682
{
 
683
  if (self->priv->client_error != NULL)
 
684
    {
 
685
      gd_miner_complete_error (self, self->priv->client_error);
 
686
      return;
 
687
    }
 
688
 
631
689
  self->priv->result =
632
690
    g_simple_async_result_new (G_OBJECT (self),
633
691
                               callback, user_data,