1c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen/*
2c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Copyright (C) 2009 The Android Open Source Project
3c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen *
4c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Licensed under the Apache License, Version 2.0 (the "License");
5c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * you may not use this file except in compliance with the License.
6c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * You may obtain a copy of the License at
7c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen *
8c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen *      http://www.apache.org/licenses/LICENSE-2.0
9c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen *
10c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Unless required by applicable law or agreed to in writing, software
11c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * distributed under the License is distributed on an "AS IS" BASIS,
12c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * See the License for the specific language governing permissions and
14c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * limitations under the License.
15c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen */
16c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
17c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenpackage com.svox.pico;
18c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
19c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.content.Intent;
20c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.net.Uri;
21c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.os.Bundle;
22c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.preference.Preference;
23c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.preference.PreferenceActivity;
24c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.preference.Preference.OnPreferenceClickListener;
25d64ebdacdb42fcae607ce7942e810b6047f2368aCharles Chenimport android.speech.tts.TextToSpeech;
26c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport android.util.Log;
27c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
28c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport java.util.ArrayList;
29c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenimport java.util.Locale;
30c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
31c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen/*
32c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * Checks if the voice data for the SVOX Pico Engine is present on the
33c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen * sd card.
34c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen */
35c0991bad280488a4b45b1819f8ac64a30820103dCharles Chenpublic class EngineSettings extends PreferenceActivity {
36c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    private final static String MARKET_URI_START = "market://search?q=pname:com.svox.pico.voice.";
37c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    private static final int VOICE_DATA_CHECK_CODE = 42;
38c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
39c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    @Override
40c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    protected void onCreate(Bundle savedInstanceState) {
41c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen        super.onCreate(savedInstanceState);
42c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
43c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen        Intent i = new Intent();
44c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen        i.setClass(this, CheckVoiceData.class);
45c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen        startActivityForResult(i, VOICE_DATA_CHECK_CODE);
46c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    }
47c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
48c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    @Override
49c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    public void onActivityResult(int requestCode, int resultCode, Intent data){
50c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen        if (requestCode == VOICE_DATA_CHECK_CODE){
51d64ebdacdb42fcae607ce7942e810b6047f2368aCharles Chen            ArrayList<String> available = data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_AVAILABLE_VOICES);
52d64ebdacdb42fcae607ce7942e810b6047f2368aCharles Chen            ArrayList<String> unavailable = data.getStringArrayListExtra(TextToSpeech.Engine.EXTRA_UNAVAILABLE_VOICES);
53c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
54c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen            addPreferencesFromResource(R.xml.voices_list);
55c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
56c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen            for (int i = 0; i < available.size(); i++){
57c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                Log.e("debug", available.get(i));
58c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                String[] languageCountry = available.get(i).split("-");
59c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                Locale loc = new Locale(languageCountry[0], languageCountry[1]);
60c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                Preference pref = findPreference(available.get(i));
61c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                pref.setTitle(loc.getDisplayLanguage() + " (" + loc.getDisplayCountry() + ")");
62c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                pref.setSummary(R.string.installed);
63c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                pref.setEnabled(false);
64c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen            }
65c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
66c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
67c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen            for (int i = 0; i < unavailable.size(); i++){
68c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                final String unavailableLang = unavailable.get(i);
69c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                String[] languageCountry = unavailableLang.split("-");
70c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                Locale loc = new Locale(languageCountry[0], languageCountry[1]);
71c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                Preference pref = findPreference(unavailableLang);
72c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                pref.setTitle(loc.getDisplayLanguage() + " (" + loc.getDisplayCountry() + ")");
73c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                pref.setSummary(R.string.not_installed);
74c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                pref.setEnabled(true);
75c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                pref.setOnPreferenceClickListener(new OnPreferenceClickListener(){
76c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                    public boolean onPreferenceClick(Preference preference) {
77c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                        Uri marketUri = Uri.parse(MARKET_URI_START + unavailableLang.toLowerCase().replace("-", "."));
78c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                        Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri);
79c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                        startActivity(marketIntent);
80c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                        return false;
81c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                    }
82c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen                });
83c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen            }
84c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen        }
85c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen    }
86c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
87c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen
88c0991bad280488a4b45b1819f8ac64a30820103dCharles Chen}
89