Merge commit 'upstream/0.2.7'
[debian/pino.git] / src / userpic.vala
1 /* user_info_list.vala
2  *
3  * Copyright (C) 2009-2010  troorl
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU Lesser General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  *
18  * Author:
19  *      troorl <troorl@gmail.com>
20  */
21
22 using Gtk;
23
24 public class Userpic : Image {
25         
26         private weak Thread thread_1;
27         private string url;
28         private Cache cache;
29         
30         public Userpic(Cache _cache) {
31                 cache = _cache;
32                 
33                 set_default();
34         }
35         
36         public void set_default() {
37                 set_from_file(Config.USERPIC_PATH);
38         }
39         
40         public void set_pic(string _url) {
41                 if (!Thread.supported()) {
42                         error("Cannot run without threads.");
43                         return;
44                 }
45                 
46                 url = _url;
47                 
48                 try {
49                         thread_1 = Thread.create(get_userpic, false);
50                 } catch(ThreadError e) {
51                         warning("Error: %s", e.message);
52                         return;
53                 }
54         }
55         
56         private void *get_userpic() {
57                 string path = cache.get_or_download(url, Cache.Method.SYNC, true);
58                 
59                 set_from_file(path);
60                 
61                 return null;
62         }
63 }