~ps-jenkins/unity-lens-files/latestsnapshot-7.1.0+13.10.20130920-0ubuntu1

« back to all changes in this revision

Viewing changes to src/daemon.vala

Port unity-lens-applications to libzeitgeist2. Fixes: https://bugs.launchpad.net/bugs/1196800, https://bugs.launchpad.net/bugs/1197569.

Approved by PS Jenkins bot, Marco Trevisan (Treviño).

Show diffs side-by-side

added added

removed removed

Lines of Context:
78
78
      index = new Zeitgeist.Index ();
79
79
 
80
80
      /* Listen for all file:// related events from Zeitgeist */
81
 
      var templates = new PtrArray ();
 
81
      var templates = new GenericArray<Event>();
82
82
      var event = new Zeitgeist.Event ();
83
83
      var subject = new Zeitgeist.Subject ();
84
 
      subject.set_uri ("file://*");
 
84
      subject.uri = "file://*";
85
85
      event.add_subject (subject);
86
 
      templates.add (event.ref ());
 
86
      templates.add (event);
87
87
      monitor = new Zeitgeist.Monitor (new Zeitgeist.TimeRange.from_now (),
88
 
                                       (owned) templates);
 
88
                                       templates);
89
89
      monitor.events_inserted.connect (on_zeitgeist_changed);
90
90
      monitor.events_deleted.connect (on_zeitgeist_changed);
91
91
      log.install_monitor (monitor);
216
216
                                 string manifestation, string uri_prefix)
217
217
    {
218
218
      Event event;
 
219
      Subject sub;
219
220
 
220
221
      /* Section.ALL_FILES */
221
 
      event = new Event.full("", manifestation, "",
222
 
                             new Subject.full (uri_prefix,
223
 
                                               "", "", "", "", "", ""));
 
222
      event = new Event.full("", manifestation, "", "");
 
223
      sub = new Subject.full(uri_prefix, "", "", "", "", "", "");
 
224
      event.add_subject(sub);
224
225
      templates["all"] = event;
225
226
 
226
227
      /* Section.DOCUMENTS */
227
 
      event = new Event.full("", manifestation, "",
228
 
                             new Subject.full (uri_prefix,
229
 
                                               NFO_DOCUMENT,
230
 
                                               "", "", "", "", ""),
231
 
                             new Subject.full ("",
232
 
                                               "!"+NFO_PRESENTATION,
233
 
                                               "", "", "", "", ""));
 
228
      event = new Event.full("", manifestation, "", "");
 
229
      sub = new Subject.full (uri_prefix, NFO.DOCUMENT, "", "", "", "", "");
 
230
      event.add_subject(sub);
 
231
      sub = new Subject.full ("", "!"+NFO.PRESENTATION, "", "", "", "", "");
 
232
      event.add_subject(sub);
234
233
      templates["documents"] = event;
235
234
 
236
235
      /* Section.FOLDERS
237
236
       * - we're using special ORIGIN queries here */
238
 
      event = new Event.full("", manifestation, "",
239
 
                             new Subject.full (uri_prefix,
240
 
                                               "", "", "", "", "", ""));
 
237
      event = new Event.full("", manifestation, "", "");
 
238
      sub =  new Subject.full (uri_prefix, "", "", "", "", "", "");
 
239
      event.add_subject(sub);
241
240
      templates["folders"] = event;
242
241
 
243
242
      /* Section.IMAGES */
244
 
      event = new Event.full("", manifestation, "",
245
 
                             new Subject.full (uri_prefix,
246
 
                                               NFO_IMAGE, "", "", "", "", ""));
 
243
      event = new Event.full("", manifestation, "", "");
 
244
      sub = new Subject.full (uri_prefix, NFO.IMAGE, "", "", "", "", "");
 
245
      event.add_subject(sub);
247
246
      templates["images"] = event;
248
247
 
249
248
      /* Section.AUDIO */
250
 
      event = new Event.full("", manifestation, "",
251
 
                             new Subject.full (uri_prefix,
252
 
                                               NFO_AUDIO, "", "", "", "", ""));
 
249
      event = new Event.full("", manifestation, "", "");
 
250
      sub = new Subject.full (uri_prefix, NFO.AUDIO, "", "", "", "", "");
 
251
      event.add_subject(sub);
253
252
      templates["audio"] = event;
254
253
 
255
254
      /* Section.VIDEOS */
256
 
      event = new Event.full("", manifestation, "",
257
 
                             new Subject.full (uri_prefix,
258
 
                                               NFO_VIDEO, "", "", "", "", ""));
 
255
      event = new Event.full("", manifestation, "", "" );
 
256
      sub = new Subject.full (uri_prefix, NFO.VIDEO, "", "", "", "", "");
 
257
      event.add_subject(sub);
259
258
      templates["videos"] = event;
260
259
 
261
260
      /* Section.PRESENTATIONS
262
261
       * FIXME: Zeitgeist logger needs to user finer granularity
263
262
       *        on classification as I am not sure it uses
264
 
       *        NFO_PRESENTATION yet */
265
 
      event = new Event.full("", manifestation, "",
266
 
                             new Subject.full (uri_prefix,
267
 
                                               NFO_PRESENTATION, "", "", "", "", ""));
 
263
       *        NFO.PRESENTATION yet */
 
264
      event = new Event.full("", manifestation, "", "");
 
265
      sub = new Subject.full (uri_prefix, NFO.PRESENTATION, "", "", "", "", "");
 
266
      event.add_subject(sub);
268
267
      templates["presentations"] = event;
269
268
 
270
269
      /* Section.OTHER
271
270
       * Note that subject templates are joined with logical AND */
272
271
      event = new Event.full("", manifestation, "");
273
272
      event.add_subject (new Subject.full (uri_prefix,
274
 
                                           "!"+NFO_DOCUMENT, "", "", "", "", ""));
275
 
      event.add_subject (new Subject.full ("",
276
 
                                           "!"+NFO_IMAGE,
277
 
                                           "",
278
 
                                           "", "", "", ""));
279
 
      event.add_subject (new Subject.full ("",
280
 
                                           "!"+NFO_AUDIO,
281
 
                                           "",
282
 
                                           "", "", "", ""));
283
 
      event.add_subject (new Subject.full ("",
284
 
                                           "!"+NFO_VIDEO,
285
 
                                           "",
286
 
                                           "", "", "", ""));
287
 
      event.add_subject (new Subject.full ("",
288
 
                                           "!"+NFO_PRESENTATION,
 
273
                                           "!"+NFO.DOCUMENT, "", "", "", "", ""));
 
274
      event.add_subject (new Subject.full ("",
 
275
                                           "!"+NFO.IMAGE,
 
276
                                           "",
 
277
                                           "", "", "", ""));
 
278
      event.add_subject (new Subject.full ("",
 
279
                                           "!"+NFO.AUDIO,
 
280
                                           "",
 
281
                                           "", "", "", ""));
 
282
      event.add_subject (new Subject.full ("",
 
283
                                           "!"+NFO.VIDEO,
 
284
                                           "",
 
285
                                           "", "", "", ""));
 
286
      event.add_subject (new Subject.full ("",
 
287
                                           "!"+NFO.PRESENTATION,
289
288
                                           "",
290
289
                                           "", "", "", ""));
291
290
      templates["other"] = event;
294
293
    private void prepare_type_templates ()
295
294
    {
296
295
      type_templates = new HashTable<string, Event> (str_hash, str_equal);
297
 
      init_templates (type_templates, ZG_USER_ACTIVITY, "file:*");
 
296
      init_templates (type_templates, ZG.USER_ACTIVITY, "file:*");
298
297
 
299
298
      unowned string download_path;
300
299
      download_path = Environment.get_user_special_dir (UserDirectory.DOWNLOAD);
675
674
      string date = option == null ? "all" : option.id;
676
675
 
677
676
      if (date == "last-7-days")
678
 
        return new TimeRange (Timestamp.now() - Timestamp.WEEK, Timestamp.now ());
 
677
        return new TimeRange (Timestamp.from_now() - Timestamp.WEEK, Timestamp.from_now ());
679
678
      else if (date == "last-30-days")
680
 
        return new TimeRange (Timestamp.now() - (Timestamp.WEEK * 4), Timestamp.now());
 
679
        return new TimeRange (Timestamp.from_now() - (Timestamp.WEEK * 4), Timestamp.from_now());
681
680
      else if (date == "last-year")
682
 
        return new TimeRange (Timestamp.now() - Timestamp.YEAR, Timestamp.now ());
 
681
        return new TimeRange (Timestamp.from_now() - Timestamp.YEAR, Timestamp.from_now ());
683
682
      else
684
683
        return new TimeRange.anytime ();
685
684
    }
769
768
      if (templates == null) return null;
770
769
 
771
770
      /* Copy the templates to a PtrArray which libzg expects */
772
 
      var ptr_arr = new PtrArray ();
 
771
      var ptr_arr = new GenericArray<Event>();
773
772
      for (int i = 0; i < templates.length; i++)
774
773
      {
775
774
        ptr_arr.add (templates[i]);
779
778
      if (is_search_empty (search))
780
779
      {
781
780
        results = yield log.find_events (time_range,
782
 
                                         (owned) ptr_arr,
 
781
                                         ptr_arr,
783
782
                                         Zeitgeist.StorageState.ANY,
784
783
                                         num_results,
785
784
                                         result_type,
791
790
 
792
791
        results = yield index.search (search_string,
793
792
                                      time_range,
794
 
                                      (owned) ptr_arr,
 
793
                                      ptr_arr,
795
794
                                      0, // offset
796
795
                                      num_results,
797
796
                                      result_type,
886
885
        // check if we match the timerange
887
886
        uint64 mtime = info.get_attribute_uint64 (FileAttribute.TIME_MODIFIED) * 1000;
888
887
 
889
 
        if (mtime < timerange.get_start() || mtime > timerange.get_end ())
 
888
        if (mtime < timerange.start || mtime > timerange.end)
890
889
          continue;
891
890
 
892
891
        // check if type matches
1231
1230
        {
1232
1231
          if (ev.num_subjects () > 0)
1233
1232
          {
1234
 
            string origin = ev.get_subject (0).get_origin ();
 
1233
            string origin = ev.get_subject (0).origin;
1235
1234
            if (origin == null || origin == "") continue;
1236
1235
            var f = File.new_for_uri (origin);
1237
1236
            origin = f.get_uri ();
1267
1266
          }
1268
1267
        }
1269
1268
        // we need this because of way ResultSet works with foreach
1270
 
        if (events.size () > 0) events.seek (0);
 
1269
        if (events.size () > 0) events.reset ();
1271
1270
      }
1272
1271
      foreach (var ev in events)
1273
1272
      {
1282
1281
 
1283
1282
          if (ResultFlags.USE_ORIGIN in flags)
1284
1283
          {
1285
 
            uri = su.get_origin ();
 
1284
            uri = su.origin;
1286
1285
            display_name = "";
1287
1286
            mimetype = "inode/directory";
1288
1287
          }
1289
1288
          else
1290
1289
          {
1291
 
            uri = su.get_current_uri ();
1292
 
            display_name = su.get_text ();
1293
 
            mimetype = su.get_mimetype ();
1294
 
            mimetype = su.get_mimetype () != null ?
1295
 
                       su.get_mimetype () : "application/octet-stream";
 
1290
            uri = su.current_uri;
 
1291
            display_name = su.text;
 
1292
            mimetype = su.mimetype;
 
1293
            mimetype = su.mimetype != null ?
 
1294
                       su.mimetype : "application/octet-stream";
1296
1295
          }
1297
1296
          if (uri == null) continue;
1298
1297
          File file = File.new_for_uri (uri);