summaryrefslogtreecommitdiff
path: root/src/plugins/tracker3/rygel-tracker-picture-item-factory.vala
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/tracker3/rygel-tracker-picture-item-factory.vala')
-rw-r--r--src/plugins/tracker3/rygel-tracker-picture-item-factory.vala91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/plugins/tracker3/rygel-tracker-picture-item-factory.vala b/src/plugins/tracker3/rygel-tracker-picture-item-factory.vala
new file mode 100644
index 00000000..e937fc2d
--- /dev/null
+++ b/src/plugins/tracker3/rygel-tracker-picture-item-factory.vala
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 Zeeshan Ali <zeenix@gmail.com>.
+ * Copyright (C) 2008 Nokia Corporation.
+ * Copyright (C) 2010 MediaNet Inh.
+ *
+ * Authors: Zeeshan Ali <zeenix@gmail.com>
+ * Sunil Mohan Adapa <sunil@medhas.org>
+ *
+ * This file is part of Rygel.
+ *
+ * Rygel is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Rygel is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+using Gee;
+using Tracker;
+
+/**
+ * Tracker picture item factory.
+ */
+public class Rygel.Tracker.PictureItemFactory : ItemFactory {
+ private enum PictureMetadata {
+ HEIGHT = Metadata.LAST_KEY,
+ WIDTH,
+
+ LAST_KEY
+ }
+
+ private const string CATEGORY = "nmm:Photo";
+ private const string CATEGORY_IRI = "http://www.tracker-project.org/" +
+ "temp/nmm#Photo";
+
+ public PictureItemFactory () {
+ var upload_folder = Environment.get_user_special_dir
+ (UserDirectory.PICTURES);
+ try {
+ var config = MetaConfig.get_default ();
+ upload_folder = config.get_picture_upload_folder ();
+ } catch (Error error) {};
+
+ base (CATEGORY, CATEGORY_IRI, PhotoItem.UPNP_CLASS, upload_folder);
+
+ // These must be in the same order as enum PictureMetadata
+ this.properties.add ("height");
+ this.properties.add ("width");
+ }
+
+ public override MediaFileItem create (string id,
+ string uri,
+ SearchContainer parent,
+ Sparql.Cursor metadata)
+ throws GLib.Error {
+ var item = new PhotoItem (id, parent, "");
+
+ this.set_metadata (item, uri, metadata);
+
+ return item;
+ }
+
+ protected override void set_metadata (MediaFileItem item,
+ string uri,
+ Sparql.Cursor metadata)
+ throws GLib.Error {
+ base.set_metadata (item, uri, metadata);
+
+ this.set_ref_id (item, "AllPictures");
+
+ var photo = item as PhotoItem;
+
+ if (metadata.is_bound (PictureMetadata.WIDTH)) {
+ photo.width = (int) metadata.get_integer (PictureMetadata.WIDTH);
+ }
+
+ if (metadata.is_bound (PictureMetadata.HEIGHT)) {
+ photo.height = (int) metadata.get_integer (PictureMetadata.HEIGHT);
+ }
+
+ base.add_resources(photo);
+ }
+}