Merge lp:~mhr3/unity-lens-files/bug-839807 into lp:unity-lens-files

Proposed by Michal Hruby
Status: Merged
Merged at revision: 189
Proposed branch: lp:~mhr3/unity-lens-files/bug-839807
Merge into: lp:unity-lens-files
Diff against target: 205 lines (+109/-7)
2 files modified
src/daemon.vala (+108/-7)
src/utils.vala (+1/-0)
To merge this branch: bzr merge lp:~mhr3/unity-lens-files/bug-839807
Reviewer Review Type Date Requested Status
Mikkel Kamstrup Erlandsen (community) Approve
Review via email: mp+76359@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

Works well, and code looks nice and tidy. Good work!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/daemon.vala'
2--- src/daemon.vala 2011-09-20 14:44:54 +0000
3+++ src/daemon.vala 2011-09-21 09:19:22 +0000
4@@ -372,7 +372,11 @@
5 var bookmark_matches = bookmarks.prefix_search (search.search_string);
6 append_bookmarks (bookmark_matches, results_model, Categories.FOLDERS);
7
8- Unity.FilesLens.append_events_sorted (results, results_model);
9+ int64 min_size, max_size;
10+ get_current_size_limits (out min_size, out max_size);
11+
12+ Unity.FilesLens.append_events_sorted (results, results_model,
13+ min_size, max_size);
14
15 } catch (GLib.Error e) {
16 warning ("Error performing global search '%s': %s",
17@@ -447,9 +451,13 @@
18 var bookmark_matches = bookmarks.prefix_search (search.search_string);
19 append_bookmarks (bookmark_matches, results_model, Categories.FOLDERS);
20
21+ int64 min_size, max_size;
22+ get_current_size_limits (out min_size, out max_size);
23+
24 /* FIXME: Add downloads */
25
26- Unity.FilesLens.append_events_sorted (results, results_model);
27+ Unity.FilesLens.append_events_sorted (results, results_model,
28+ min_size, max_size);
29
30 } catch (GLib.Error e) {
31 warning ("Error performing global search '%s': %s",
32@@ -493,6 +501,76 @@
33 return new TimeRange.anytime ();
34 }
35
36+ private void get_current_size_limits (out int64 min_size, out int64 max_size)
37+ {
38+ var filter = scope.get_filter ("size") as MultiRangeFilter;
39+ Unity.FilterOption? min_opt = filter.get_first_active ();
40+ Unity.FilterOption? max_opt = filter.get_last_active ();
41+
42+ if (min_opt == null || max_opt == null)
43+ {
44+ min_size = 0;
45+ max_size = int64.MAX;
46+ return;
47+ }
48+
49+ int64[] sizes =
50+ {
51+ 0,
52+ 1024,
53+ 102400,
54+ 1048576,
55+ 10485760,
56+ 104857600,
57+ 1073741824,
58+ int64.MAX
59+ };
60+
61+ switch (min_opt.id)
62+ {
63+ case "1KB":
64+ min_size = sizes[0]; break;
65+ case "100KB":
66+ min_size = sizes[1]; break;
67+ case "1MB":
68+ min_size = sizes[2]; break;
69+ case "10MB":
70+ min_size = sizes[3]; break;
71+ case "100MB":
72+ min_size = sizes[4]; break;
73+ case "1GB":
74+ min_size = sizes[5]; break;
75+ case ">1GB":
76+ min_size = sizes[6]; break;
77+ default:
78+ warn_if_reached ();
79+ min_size = 0;
80+ break;
81+ }
82+
83+ switch (max_opt.id)
84+ {
85+ case "1KB":
86+ max_size = sizes[1]; break;
87+ case "100KB":
88+ max_size = sizes[2]; break;
89+ case "1MB":
90+ max_size = sizes[3]; break;
91+ case "10MB":
92+ max_size = sizes[4]; break;
93+ case "100MB":
94+ max_size = sizes[5]; break;
95+ case "1GB":
96+ max_size = sizes[6]; break;
97+ case ">1GB":
98+ max_size = sizes[7]; break;
99+ default:
100+ warn_if_reached ();
101+ max_size = int64.MAX;
102+ break;
103+ }
104+ }
105+
106 private async void update_without_search_async (LensSearch search)
107 {
108 var results_model = scope.results_model;
109@@ -531,9 +609,13 @@
110 if (type_id == "all" || type_id == "folder")
111 append_bookmarks (bookmarks.list(), results_model);
112
113+ int64 min_size, max_size;
114+ get_current_size_limits (out min_size, out max_size);
115+
116 yield update_downloads_async (results_model);
117-
118- Unity.FilesLens.append_events_sorted (results, results_model);
119+
120+ Unity.FilesLens.append_events_sorted (results, results_model,
121+ min_size, max_size);
122
123 } catch (GLib.Error e) {
124 warning ("Error performing empty search: %s",
125@@ -585,6 +667,8 @@
126 downloads.sort ((CompareFunc) Utils.cmp_file_info_by_mtime);
127
128 var timerange = get_current_timerange ();
129+ int64 min_size, max_size;
130+ get_current_size_limits (out min_size, out max_size);
131
132 foreach (var info in downloads)
133 {
134@@ -603,6 +687,11 @@
135 if (type_id != "all" && !Utils.file_info_matches_type (info, type_id))
136 continue;
137
138+ // check if size is within bounds
139+ int64 size = info.get_size ();
140+ if (size < min_size || size > max_size)
141+ continue;
142+
143 results_model.append (uri, icon_hint, Categories.DOWNLOADS,
144 mimetype, info.get_display_name (), uri);
145 }
146@@ -630,10 +719,15 @@
147
148 }
149
150+ private const string ATTR_HIDDEN = FILE_ATTRIBUTE_STANDARD_IS_HIDDEN;
151+ private const string ATTR_SIZE_AND_HIDDEN = FILE_ATTRIBUTE_STANDARD_SIZE +
152+ "," + FILE_ATTRIBUTE_STANDARD_IS_HIDDEN;
153+
154 /* Appends a set of Zeitgeist.Events to our Dee.Model assuming that
155 * these events are already sorted with descending timestamps */
156 public void append_events_sorted (Zeitgeist.ResultSet events,
157- Dee.Model results)
158+ Dee.Model results,
159+ int64 min_size, int64 max_size)
160 {
161 foreach (var ev in events)
162 {
163@@ -648,14 +742,21 @@
164 su.get_mimetype () : "application/octet-stream";
165 File file = File.new_for_uri (uri);
166
167+ bool check_size = min_size > 0 || max_size < int64.MAX;
168 /* Don't check existence on non-native files as http:// and
169 * friends are *very* expensive to query */
170 if (file.is_native()) {
171 // hidden files should be ignored
172 try {
173- FileInfo info = file.query_info(FILE_ATTRIBUTE_STANDARD_IS_HIDDEN, 0, null);
174+ FileInfo info = file.query_info (check_size ?
175+ ATTR_SIZE_AND_HIDDEN : ATTR_HIDDEN, 0, null);
176 if (info.get_is_hidden())
177 continue;
178+ if (check_size &&
179+ (info.get_size () < min_size || info.get_size () > max_size))
180+ {
181+ continue;
182+ }
183 } catch (GLib.Error e) {
184 // as error occurred file must be missing therefore ignoring it
185 continue;
186@@ -689,7 +790,7 @@
187 results.append (uri, icon, category_id, mimetype,
188 display_name, comment);
189
190- }
191+ }
192 }
193 }
194 } /* namespace */
195
196=== modified file 'src/utils.vala'
197--- src/utils.vala 2011-09-20 14:44:54 +0000
198+++ src/utils.vala 2011-09-21 09:19:22 +0000
199@@ -33,6 +33,7 @@
200 FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE + "," +
201 FILE_ATTRIBUTE_STANDARD_IS_HIDDEN + "," +
202 FILE_ATTRIBUTE_STANDARD_IS_BACKUP + "," +
203+ FILE_ATTRIBUTE_STANDARD_SIZE + "," +
204 FILE_ATTRIBUTE_TIME_MODIFIED + "," +
205 FILE_ATTRIBUTE_TIME_ACCESS;
206

Subscribers

People subscribed via source and target branches