Navigation voice changer app for Android
Revisão | 789e2b0c9f5bc4877eb3640eda44103d8515985f (tree) |
---|---|
Hora | 2013-07-31 03:18:42 |
Autor | HMML <hmml3939@gmai...> |
Commiter | HMML |
Add action menu.
@@ -14,18 +14,25 @@ | ||
14 | 14 | android:id="@+id/btn_menu_install" |
15 | 15 | android:layout_width="fill_parent" |
16 | 16 | android:layout_height="wrap_content" |
17 | + android:drawableLeft="@android:drawable/ic_menu_add" | |
18 | + android:paddingRight="32dp" | |
17 | 19 | android:text="@string/menu_install" /> |
18 | 20 | |
19 | 21 | <Button |
20 | 22 | android:id="@+id/btn_download" |
21 | 23 | android:layout_width="fill_parent" |
22 | 24 | android:layout_height="wrap_content" |
25 | + android:drawableLeft="@android:drawable/ic_menu_search" | |
26 | + android:gravity="center_vertical|center_horizontal" | |
27 | + android:paddingRight="32dp" | |
23 | 28 | android:text="@string/menu_download" /> |
24 | 29 | |
25 | 30 | <Button |
26 | 31 | android:id="@+id/btn_menu_maint" |
27 | 32 | android:layout_width="fill_parent" |
28 | 33 | android:layout_height="wrap_content" |
34 | + android:drawableLeft="@android:drawable/ic_menu_manage" | |
35 | + android:paddingRight="32dp" | |
29 | 36 | android:text="@string/menu_maint" /> |
30 | 37 | |
31 | 38 | </LinearLayout> |
\ No newline at end of file |
@@ -1,9 +1,4 @@ | ||
1 | 1 | <menu xmlns:android="http://schemas.android.com/apk/res/android" > |
2 | - | |
3 | - <item | |
4 | - android:id="@+id/text_download_guide" | |
5 | - android:orderInCategory="100" | |
6 | - android:showAsAction="never" | |
7 | - android:title="@string/action_settings"/> | |
2 | + <item android:id="@+id/menu_go_install" android:showAsAction="always" android:icon="@android:drawable/ic_menu_add" android:onClick="goInstallListFromMenu" android:title="@string/title_activity_install_list"></item> | |
8 | 3 | |
9 | 4 | </menu> |
@@ -1,3 +1,4 @@ | ||
1 | 1 | <menu xmlns:android="http://schemas.android.com/apk/res/android" > |
2 | + <item android:id="@+id/menu_go_download" android:showAsAction="always" android:icon="@android:drawable/ic_menu_search" android:title="@string/title_activity_download" android:onClick="goDownloadActivityFromMenu"></item> | |
2 | 3 | |
3 | 4 | </menu> |
@@ -32,7 +32,7 @@ | ||
32 | 32 | |
33 | 33 | <string name="msg_installed_removed">Installed data has been removed.</string> |
34 | 34 | <string name="msg_downloaded_removed">Downloaded data has been removed.</string> |
35 | - <string name="title_activity_download">DownloadActivity</string> | |
35 | + <string name="title_activity_download">Download Voice Data</string> | |
36 | 36 | <string name="guide_download">Tap to download. Then push back button to move to install view to install.</string> |
37 | 37 | <string name="download_progress">Donwloading...</string> |
38 | 38 | <string name="err_no_sd">No external storage is detected. You need to check your SD card or storage setting.</string> |
@@ -5,15 +5,32 @@ import java.io.FileInputStream; | ||
5 | 5 | import java.io.FileOutputStream; |
6 | 6 | import java.io.InputStreamReader; |
7 | 7 | import java.io.OutputStreamWriter; |
8 | +import java.util.Collections; | |
9 | +import java.util.HashMap; | |
10 | +import java.util.Map; | |
8 | 11 | import java.util.Properties; |
9 | 12 | |
10 | 13 | import android.content.Context; |
14 | +import android.util.Log; | |
11 | 15 | |
12 | 16 | public class Config { |
13 | 17 | final static public String CONF_FILE = "config.ini"; |
14 | 18 | |
19 | + final static Map<String, String> DEFAULTS; | |
20 | + static { | |
21 | + Map<String, String> c = new HashMap<String, String>(); | |
22 | + c.put("server_url_base", "http://nvc.nekoteki.jp"); | |
23 | + DEFAULTS = Collections.unmodifiableMap(c); | |
24 | + } | |
25 | + | |
26 | + | |
15 | 27 | public static String get(Context context, String name) { |
16 | - return (String) getProp(context).get(name); | |
28 | + Log.d("Config", "Getting config key: "+name); | |
29 | + String v = (String) getProp(context).get(name); | |
30 | + if (v != null && !v.equals("")) | |
31 | + return v; | |
32 | + Log.d("Config", "Fallback to default for key: "+name); | |
33 | + return DEFAULTS.get(name); | |
17 | 34 | } |
18 | 35 | |
19 | 36 | public static void set(Context context, String name, String value) { |
@@ -32,6 +49,7 @@ public class Config { | ||
32 | 49 | Properties prop = new Properties(); |
33 | 50 | File conf = getConfFile(context); |
34 | 51 | if (conf == null) return prop; |
52 | + Log.d("Config", "Config prop file: "+conf.getAbsolutePath()); | |
35 | 53 | if (!conf.exists()) return prop; |
36 | 54 | try { |
37 | 55 | prop.load(new InputStreamReader(new FileInputStream(conf), "UTF-8")); |
@@ -31,14 +31,13 @@ import android.widget.TextView; | ||
31 | 31 | import android.support.v4.app.NavUtils; |
32 | 32 | import android.annotation.TargetApi; |
33 | 33 | import android.content.Context; |
34 | +import android.content.Intent; | |
34 | 35 | import android.graphics.Color; |
35 | 36 | import android.os.Build; |
36 | 37 | |
37 | 38 | public class DownloadActivity extends Activity { |
38 | 39 | |
39 | 40 | public class RemoteVoiceDataAdapter extends BaseAdapter { |
40 | - final static String SERVER_BASE_URL = "http://tempest.private.nemui.org:3000"; | |
41 | - | |
42 | 41 | protected boolean eol = false; |
43 | 42 | protected Context context; |
44 | 43 | protected List<RemoteVoiceData> list; |
@@ -78,8 +77,9 @@ public class DownloadActivity extends Activity { | ||
78 | 77 | |
79 | 78 | public void loadList(AbsListView view) { |
80 | 79 | if (this.loading || this.eol) return; |
80 | + if (this.loading || this.eol) return; | |
81 | 81 | this.loading = true; |
82 | - String url = SERVER_BASE_URL+"/navi_voices.json?page="+Integer.toString(this.cur_page); | |
82 | + String url = Config.get(context, "server_url_base") +"/navi_voices.json?page="+Integer.toString(this.cur_page); | |
83 | 83 | |
84 | 84 | new AsyncTask<Object, Void, RemoteVoiceData[]>() { |
85 | 85 | protected RemoteVoiceDataAdapter adapter; |
@@ -295,4 +295,8 @@ public class DownloadActivity extends Activity { | ||
295 | 295 | view.setVisibility(View.GONE); |
296 | 296 | } |
297 | 297 | } |
298 | + | |
299 | + public void goInstallListFromMenu(MenuItem item) { | |
300 | + startActivity(new Intent(DownloadActivity.this, InstallListActivity.class)); | |
301 | + } | |
298 | 302 | } |
@@ -125,7 +125,6 @@ public class InstallListActivity extends Activity { | ||
125 | 125 | @Override |
126 | 126 | public void onClick(View arg0) { |
127 | 127 | startActivity(new Intent(InstallListActivity.this, DownloadActivity.class)); |
128 | - | |
129 | 128 | } |
130 | 129 | }); |
131 | 130 | } |
@@ -233,4 +232,8 @@ public class InstallListActivity extends Activity { | ||
233 | 232 | } |
234 | 233 | dialog.show(); |
235 | 234 | } |
235 | + | |
236 | + public void goDownloadActivityFromMenu(MenuItem item) { | |
237 | + startActivity(new Intent(InstallListActivity.this, DownloadActivity.class)); | |
238 | + } | |
236 | 239 | } |