~sudopluto-deactivatedaccount/noise/fix-help-link

« back to all changes in this revision

Viewing changes to core/Playlists/SmartPlaylist.vala

  • Committer: Corentin Noël
  • Date: 2015-06-12 14:41:35 UTC
  • Revision ID: corentin@elementary.io-20150612144135-f1m4z7122ovz114e
Better Playlist internal design.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 */
31
31
 
32
32
public class Noise.SmartPlaylist : Playlist {
33
 
 
34
33
    public enum ConditionalType {
35
34
        ALL = true,
36
35
        ANY = false
50
49
     */
51
50
    public SmartPlaylist (Noise.Library library) {
52
51
        this.library = library;
53
 
        queries = new Gee.TreeSet<SmartQuery>();
54
 
        medias = new Gee.ArrayQueue<Media> ();
55
 
        icon = new ThemedIcon ("playlist-automatic");
56
52
        library.media_added.connect ((medias) => {
57
53
            analyse_list (medias);
58
54
        });
74
70
        });
75
71
    }
76
72
 
 
73
    construct {
 
74
        medias = new Gee.ArrayQueue<Media> ();
 
75
        icon = new ThemedIcon ("playlist-automatic");
 
76
        queries = new Gee.TreeSet<SmartQuery>();
 
77
    }
 
78
 
77
79
    /*
78
80
     * Common Playlist Functions.
79
81
     */
220
222
                break;
221
223
            case Noise.SmartQuery.FieldType.YEAR:
222
224
                if(q.comparator == SmartQuery.ComparatorType.IS_EXACTLY)
223
 
                    return int.parse(q.value) == s.year;
 
225
                    return int.parse (q.value) == s.year;
224
226
                else if(q.comparator == SmartQuery.ComparatorType.IS_AT_MOST)
225
 
                    return (s.year <= int.parse(q.value));
 
227
                    return (s.year <= int.parse (q.value));
226
228
                else if(q.comparator == SmartQuery.ComparatorType.IS_AT_LEAST)
227
 
                    return (s.year >= int.parse(q.value));
 
229
                    return (s.year >= int.parse (q.value));
228
230
                break;
229
231
            case Noise.SmartQuery.FieldType.LENGTH:
230
232
                if(q.comparator == SmartQuery.ComparatorType.IS_EXACTLY)
231
 
                    return int.parse(q.value) == s.length;
 
233
                    return int.parse (q.value) == s.length;
232
234
                else if(q.comparator == SmartQuery.ComparatorType.IS_AT_MOST)
233
 
                    return (s.length <= int.parse(q.value));
 
235
                    return (s.length <= int.parse (q.value));
234
236
                else if(q.comparator == SmartQuery.ComparatorType.IS_AT_LEAST)
235
 
                    return (s.length >= int.parse(q.value));
 
237
                    return (s.length >= int.parse (q.value));
236
238
                break;
237
239
            case Noise.SmartQuery.FieldType.RATING:
238
240
                if(q.comparator == SmartQuery.ComparatorType.IS_EXACTLY)
239
241
                    return int.parse(q.value) == s.rating;
240
242
                else if(q.comparator == SmartQuery.ComparatorType.IS_AT_MOST)
241
 
                    return (s.rating <= int.parse(q.value));
 
243
                    return (s.rating <= int.parse (q.value));
242
244
                else if(q.comparator == SmartQuery.ComparatorType.IS_AT_LEAST)
243
 
                    return (s.rating >= int.parse(q.value));
 
245
                    return (s.rating >= int.parse (q.value));
244
246
                break;
245
247
            case Noise.SmartQuery.FieldType.DATE_ADDED:
246
 
                var now = new DateTime.now_local();
247
 
                var played = new DateTime.from_unix_local(s.date_added);
248
 
                played = played.add_days(int.parse(q.value));
 
248
                var now = new DateTime.now_local ();
 
249
                var played = new DateTime.from_unix_local (s.date_added);
 
250
                played = played.add_days (int.parse (q.value));
249
251
            
250
 
                if(q.comparator == SmartQuery.ComparatorType.IS_EXACTLY)
251
 
                    return (now.get_day_of_year() == played.get_day_of_year() && now.get_year() == played.get_year());
252
 
                else if(q.comparator == SmartQuery.ComparatorType.IS_WITHIN) {
253
 
                    return played.compare(now) > 0;
254
 
                }
255
 
                else if(q.comparator == SmartQuery.ComparatorType.IS_BEFORE) {
256
 
                    return now.compare(played) > 0;
 
252
                if (q.comparator == SmartQuery.ComparatorType.IS_EXACTLY) {
 
253
                    return (now.get_day_of_year () == played.get_day_of_year () && now.get_year () == played.get_year ());
 
254
                } else if (q.comparator == SmartQuery.ComparatorType.IS_WITHIN) {
 
255
                    return played.compare (now) > 0;
 
256
                } else if (q.comparator == SmartQuery.ComparatorType.IS_BEFORE) {
 
257
                    return now.compare (played) > 0;
257
258
                }
258
259
                break;
259
260
            case Noise.SmartQuery.FieldType.DATE_RELEASED:
275
276
            case Noise.SmartQuery.FieldType.LAST_PLAYED:
276
277
                if(s.last_played == 0)
277
278
                    return false;
278
 
            
 
279
 
279
280
                var now = new DateTime.now_local();
280
 
                var played = new DateTime.from_unix_local(s.last_played);
281
 
                played = played.add_days(int.parse(q.value));
282
 
            
283
 
                if(q.comparator == SmartQuery.ComparatorType.IS_EXACTLY)
284
 
                    return (now.get_day_of_year() == played.get_day_of_year() && now.get_year() == played.get_year());
285
 
                else if(q.comparator == SmartQuery.ComparatorType.IS_WITHIN) {
286
 
                    return played.compare(now) > 0;
287
 
                }
288
 
                else if(q.comparator == SmartQuery.ComparatorType.IS_BEFORE) {
289
 
                    return now.compare(played) > 0;
 
281
                var played = new DateTime.from_unix_local (s.last_played);
 
282
                played = played.add_days (int.parse (q.value));
 
283
 
 
284
                if (q.comparator == SmartQuery.ComparatorType.IS_EXACTLY) {
 
285
                    return (now.get_day_of_year () == played.get_day_of_year () && now.get_year () == played.get_year ());
 
286
                } else if (q.comparator == SmartQuery.ComparatorType.IS_WITHIN) {
 
287
                    return played.compare (now) > 0;
 
288
                } else if (q.comparator == SmartQuery.ComparatorType.IS_BEFORE) {
 
289
                    return now.compare (played) > 0;
290
290
                }
291
291
                break;
292
292
        }