[rygel] move directorysearch into own file



commit 542e761f609490193f4e44dcda2c9426d7beb546
Author: Jens Georg <mail jensge org>
Date:   Fri May 1 00:40:32 2009 +0200

    move directorysearch into own file
---
 src/plugins/folder/Makefile.am                     |    4 +
 .../folder/rygel-folder-directorysearch.vala       |   71 ++++++++++++++++++++
 2 files changed, 75 insertions(+), 0 deletions(-)

diff --git a/src/plugins/folder/Makefile.am b/src/plugins/folder/Makefile.am
index d802d67..490cc20 100644
--- a/src/plugins/folder/Makefile.am
+++ b/src/plugins/folder/Makefile.am
@@ -12,6 +12,7 @@ AM_CFLAGS = $(LIBGUPNP_CFLAGS) \
 
 BUILT_SOURCES = rygel-media-folder.stamp \
 	rygel-folder-rootcontainer.c \
+	rygel-folder-directorysearch.c \
 	rygel-folder-media-item.c \
 	rygel-folder-plugin.c
 
@@ -20,6 +21,9 @@ librygel_media_folder_la_SOURCES = \
 	rygel-folder-plugin.vala \
 	rygel-folder-rootcontainer.c \
 	rygel-folder-rootcontainer.vala \
+	rygel-folder-directorysearch.vala \
+	rygel-folder-directorysearch.c \
+	rygel-folder-directorysearch.vala \
 	rygel-folder-media-item.c \
 	rygel-folder-media-item.vala
 
diff --git a/src/plugins/folder/rygel-folder-directorysearch.vala b/src/plugins/folder/rygel-folder-directorysearch.vala
new file mode 100644
index 0000000..1e00196
--- /dev/null
+++ b/src/plugins/folder/rygel-folder-directorysearch.vala
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2009 Jens Georg <mail jensge 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 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 program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+using Gee;
+using Rygel;
+using GLib;
+
+public class Folder.DirectorySearchResult : Rygel.SimpleAsyncResult<Gee.List<MediaItem>> {
+    private uint max_count;
+    private uint offset;
+
+    public DirectorySearchResult(MediaContainer parent, uint offset, uint max_count, AsyncReadyCallback callback) {
+        base(parent, callback);
+
+        this.data = new ArrayList<MediaItem>();
+        this.offset = offset;
+        this.max_count = max_count;
+    }
+
+    public void enumerate_children_ready(Object obj, AsyncResult res) {
+        File file = (File)obj;
+        try {
+            var enumerator = file.enumerate_children_finish(res);
+            var file_info = enumerator.next_file(null);
+            while (file_info != null) {
+                var f = file.get_child(file_info.get_name());
+                try {
+                    var item = new FilesystemMediaItem((MediaContainer)source_object, f, file_info);
+                    if (item != null)
+                    data.add(item);
+                } catch (MediaItemError err) {
+                    // most likely invalid content type
+                }
+                file_info = enumerator.next_file(null);
+            }
+
+            this.complete();
+        }
+        catch (Error error) {
+            this.error = error;
+            this.complete();
+        }
+    }
+
+    public Gee.List<MediaItem> get_children() {
+        uint stop = offset + max_count;
+        stop = stop.clamp(0, data.size);
+        var children = data.slice ((int)offset, (int)stop);
+
+        return children;
+    }
+}
+
+



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]