Initial commit
[mustard2:mustard2.git] / src / org / mustard2 / android / Preferences.java
1 /**
2  * MUSTARD: Android's Client for StatusNet
3  * 
4  * Copyright (C) 2009-2010 macno.org, Michele Azzolari
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14  * for more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19  * 
20  */
21 package org.mustard2.android;
22
23 import java.util.Date;
24
25 import android.content.Context;
26 import android.content.SharedPreferences;
27 import android.location.Location;
28 import android.preference.PreferenceManager;
29
30 /**
31  * @author macno
32  *
33  * This class should be accessed using Application.getPreferences()
34  */
35 public class Preferences {
36         
37         public static final String REFRESH_ON_POST_ENABLES_KEY="enable_refresh_on_post";
38         public static final String STATUS_IN_REPLY_TO="statusInReplyTo";
39         public static final String OUTGOING_ID="statusOutgoingId";
40         public static final String STATUS_TEXT="statusText";
41         public static final String STATUS_FILE="statusFile";
42         public static final String STATUS_TYPE="statusType";
43         public static final String STATUS_LOCATION="statusLocation";
44         public static final int STATUS_TYPE_REPLY=  1;
45         public static final int STATUS_TYPE_FORWARD= 2;
46
47         public static final String GEOLOCATION_FUZZY_KEY="geolocation_fuzzy";
48         public static final String GEOLOCATION_ENABLES_KEY="enable_geolocation";
49         public static final String GEOLOCATION_ENABLE="GEOLOCATION_ENABLE";
50
51         public static final String GEOLOCATION_LON="geo.lon";
52         public static final String GEOLOCATION_LAT="geo.lat";
53         public static final String GEOLOCATION_TIME="geo.time";
54         
55         public static  final int OSM=0;
56         public static  final int GN=1;
57         public static  final int GOOGLE=3;
58         
59         
60         public static final String URL_SHORTENER="url_shortener";
61         
62         public static final String CURRENT_VERSION = "cv";
63         
64         public static final String CHECK_UPDATES_KEY = "check_updates";
65         public static final String CHECK_UPDATE_INTERVAL_KEY =
66                 "check_update_interval";
67         public static final String VIBRATE_KEY = "vibrate";
68         public static final String REPLIES_ONLY_KEY = "replies_only";
69
70         public static final String AUTO_REFRESH_KEY = "auto_refresh";
71         public static final String AUTO_REFRESH_INTERVAL_KEY =
72                 "auto_refresh_interval";
73         public static final String SEND_SNAPSHOT_KEY="send_snapshot";
74         
75         public static String THEME_KEY = "theme";
76         
77         public static String RINGTONE_KEY = "ringtone";
78         public static final String RINGTONE_DEFAULT_KEY =
79                 "content://settings/system/notification_sound"; 
80
81         public static final String FETCH_MAX_ITEMS_KEY="max_items_to_fetch";
82         public static final int FETCH_MAX_ITEMS=25;
83
84         
85         public static final String NEW_REPEAT_ENABLES_KEY="enable_new_repeat";
86
87         public static final String DATE_FORMAT = "dd/MM/yyyy HH:mm:ss";
88                 
89         public static final String BOOKMARK_TYPE="btype";
90                 
91         public static final String LAYOUT_LEGACY="legacy_layout";
92         public static final String LAYOUT_NEW_BUTTON="new_button";
93         
94         
95         
96         /**
97          * I want geolocation lives max for 8h
98          */
99         private static long GEOLOCATION_FIX_MAXLIFE= 8 * 60 * 60 * 1000;
100         
101         SharedPreferences mSharedPreferences;
102         SharedPreferences mPreferences;
103         
104     public Preferences(Context context) {
105         mSharedPreferences = context.getSharedPreferences("Mustard.Main", Context.MODE_PRIVATE);
106         mPreferences = PreferenceManager.getDefaultSharedPreferences(context);
107     }
108     
109     public SharedPreferences getSharedPreferences() {
110         return mSharedPreferences;
111     }
112     
113     public Location getLocation() {
114         String lon = mSharedPreferences.getString(GEOLOCATION_LON, "0");
115         String lat = mSharedPreferences.getString(GEOLOCATION_LAT, "0");
116         if (lon.equals("0") && lat.equals("0")) 
117                         return null;
118         long time = mSharedPreferences.getLong(GEOLOCATION_TIME, 0);
119         Date d = new Date();
120         if (d.getTime()-time > GEOLOCATION_FIX_MAXLIFE) {
121                 resetLocation();
122                 return null;
123         }
124         Location l = new Location("mustard");
125         l.setLatitude(Double.parseDouble(lat));
126         l.setLongitude(Double.parseDouble(lon));        
127         return l;
128     }
129     
130     public void setLocation(Location location) {
131         mSharedPreferences.edit().putString(GEOLOCATION_LON, Double.toString(location.getLongitude()))
132                 .putString(GEOLOCATION_LAT, Double.toString(location.getLatitude()))
133                 .putLong(GEOLOCATION_TIME, (new Date()).getTime()).commit();
134     }
135     
136     public void resetLocation() {
137         mSharedPreferences.edit().remove(GEOLOCATION_LON).remove(GEOLOCATION_LAT).remove(GEOLOCATION_TIME).commit();
138     }
139     
140     public void setOAuthExchangeToken(String token, String tokenSecret, String sURL) {
141         mSharedPreferences.edit().putString("Request_token", token)
142         .putString("Token_secret", tokenSecret)
143         .putString("oauth_url",sURL).commit();
144     }
145  
146     public int getCurrentVersion() {
147         return mSharedPreferences.getInt("current_version", 0);
148     }
149
150     /** CurrentVersion: the currently installed version of Mustard */
151     public void setCurrentVersion(int version) {
152         mSharedPreferences.edit().putInt("current_version", version).commit();
153     }
154     
155     public boolean isNewRepeatMode() {
156         return mPreferences.getBoolean(NEW_REPEAT_ENABLES_KEY, false);
157     }
158     
159     public boolean isLegacyLayout() {
160                 return mPreferences.getBoolean(LAYOUT_LEGACY, false);
161     }
162     
163     public boolean isNewButton() {
164         return mPreferences.getBoolean(Preferences.LAYOUT_NEW_BUTTON, true);
165
166     }
167 }