[gnome-boxes] util: move foreach_from_dir ()
- From: Marc-Andre Lureau <malureau src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-boxes] util: move foreach_from_dir ()
- Date: Mon, 13 Aug 2012 12:20:28 +0000 (UTC)
commit 693d65d3529da456604ffad7cbbe9103e98b281c
Author: Marc-Andrà Lureau <marcandre lureau gmail com>
Date: Sat Aug 4 02:35:43 2012 +0200
util: move foreach_from_dir ()
This is fairly generic code, make app.vala a bit smaller and can be
later reused.
https://bugzilla.gnome.org/show_bug.cgi?id=681246
src/app.vala | 24 +++++-------------------
src/util.vala | 20 ++++++++++++++++++++
2 files changed, 25 insertions(+), 19 deletions(-)
---
diff --git a/src/app.vala b/src/app.vala
index 02c44fd..e41e78e 100644
--- a/src/app.vala
+++ b/src/app.vala
@@ -302,25 +302,11 @@ private class Boxes.App: Boxes.UI {
}
var dir = File.new_for_path (get_user_pkgconfig_source ());
- yield get_sources_from_dir (dir);
- }
-
- private async void get_sources_from_dir (File dir) {
- try {
- var enumerator = yield dir.enumerate_children_async (FileAttribute.STANDARD_NAME, 0);
- while (true) {
- var files = yield enumerator.next_files_async (10);
- if (files == null)
- break;
-
- foreach (var file in files) {
- var source = new CollectionSource.with_file (file.get_name ());
- add_collection_source.begin (source);
- }
- }
- } catch (GLib.Error error) {
- warning (error.message);
- }
+ yield foreach_filename_from_dir (dir, (filename) => {
+ var source = new CollectionSource.with_file (filename);
+ add_collection_source.begin (source);
+ return false;
+ });
}
private void save_window_geometry () {
diff --git a/src/util.vala b/src/util.vala
index 1ddefba..ef51328 100644
--- a/src/util.vala
+++ b/src/util.vala
@@ -627,4 +627,24 @@ namespace Boxes {
debug ("File '%s' was already deleted", file.get_path ());
}
}
+
+ public delegate bool ForeachFilenameFromDirFunc (string filename) throws GLib.Error;
+
+ public async void foreach_filename_from_dir (File dir, ForeachFilenameFromDirFunc func) {
+ try {
+ var enumerator = yield dir.enumerate_children_async (FileAttribute.STANDARD_NAME, 0);
+ while (true) {
+ var files = yield enumerator.next_files_async (10);
+ if (files == null)
+ break;
+
+ foreach (var file in files) {
+ if (func (file.get_name ()))
+ break;
+ }
+ }
+ } catch (GLib.Error error) {
+ warning (error.message);
+ }
+ }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]