~elementary-apps/noise/source-view-api

« back to all changes in this revision

Viewing changes to plugins/LastFM/SimilarMedia.vala

  • Committer: Corentin Noël
  • Date: 2012-11-09 01:16:11 UTC
  • Revision ID: tintou@mailoo.org-20121109011611-k7af6jfveeezfzv4
Plugins, contextmenu and other work

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
        Noise.Media _base;
33
33
        bool working;
34
34
        
35
 
        Gee.LinkedList<Noise.Media> similar;
 
35
        public Noise.Playlist similar_playlist;
36
36
        
37
37
        Noise.Media similarToAdd;
38
38
        
41
41
        public class SimilarMedias(Noise.LibraryManager lm) {
42
42
                _lm = lm;
43
43
                working = false;
 
44
                similar_playlist = new Noise.Playlist ();
 
45
                similar_playlist.name = _("Similar");
 
46
                similar_playlist.read_only = true;
44
47
        }
45
48
        
46
49
        public virtual void queryForSimilar(Noise.Media s) {
59
62
        }
60
63
        
61
64
        public void* similar_thread_function () {       
62
 
                similar = new Gee.LinkedList<Noise.Media>();
63
65
                var similarIDs = new Gee.LinkedList<int>();
64
66
                var similarDont = new Gee.LinkedList<Noise.Media>();
65
67
                
66
68
                getSimilarTracks(_base.title, _base.artist);
67
 
                _lm.media_from_name(similar, ref similarIDs, ref similarDont);
 
69
                _lm.media_from_name(similar_playlist.media (), ref similarIDs, ref similarDont);
68
70
                similarIDs.offer_head(_base.rowid);
69
71
                
70
72
                Idle.add( () => {
113
115
        
114
116
        public void parse_similar_nodes(Xml.Node* node, string parent) {
115
117
                Xml.Node* iter;
 
118
                var add_list = new Gee.LinkedList<Noise.Media>();
116
119
                for (iter = node->children; iter != null; iter = iter->next) {
117
120
                        
118
121
            if (iter->type != ElementType.ELEMENT_NODE) {
125
128
            if(parent == "similartrackstrack") {
126
129
                                if(node_name == "name") {
127
130
                                        if(similarToAdd != null) {
128
 
                                                similar.add(similarToAdd);
 
131
                                                add_list.add(similarToAdd);
129
132
                                        }
130
133
                                        
131
134
                                        similarToAdd = new Noise.Media("");
143
146
                        
144
147
                        parse_similar_nodes(iter, parent+node_name);
145
148
                }
146
 
                
 
149
                similar_playlist.add_media (add_list);
147
150
                delete iter;
148
151
        }
149
152
}