summaryrefslogtreecommitdiffstats
path: root/src/net/hoopajoo/android/SoftKeys/Prefs.java
blob: 4a93b1535b3912d38935abcf93af376a92af4320 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
 *
 *  Copyright (c) 2010 Steve Slaven
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
*/
package net.hoopajoo.android.SoftKeys;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceClickListener;

public class Prefs extends PreferenceActivity {    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.prefs);
        
        // setup launchers list
        Intent i = new Intent( Intent.ACTION_MAIN );
        i.addCategory( Intent.CATEGORY_HOME );

        fillListFromIntent( (ListPreference)findPreference( "launcher" ), i, null, null );
        fillListFromIntent( (ListPreference)findPreference( "launcher2" ), i, null, null );
        
        i = new Intent( "net.hoopajoo.android.SoftKeys.THEMES" );
        i.addCategory( Intent.CATEGORY_DEFAULT );
        fillListFromIntent( (ListPreference)findPreference( "theme" ), i, "Default", "" );
        
        String ver = "unknown";      
        try {
            PackageInfo info = getPackageManager().getPackageInfo( "net.hoopajoo.android.SoftKeys", PackageManager.GET_META_DATA );
            ver = info.versionName;
        }catch( Exception e ) {
        }

        Preference version = (Preference)findPreference( "pref_version" );
        version.setSummary( getString( R.string.pref_version_summary, ver ) );
        
        findPreference( "pref_help" )
            .setOnPreferenceClickListener(new OnPreferenceClickListener() {
                    @Override
                    public boolean onPreferenceClick(Preference preference) {
                        triggerHelp();
                        return false;
                    }
            } );
    }

    private void triggerHelp() {
        Intent intent = new Intent( this, QuickDoc.class );
        intent.putExtra( "type", "help" );
        startActivity( intent );
    }
    
    private void fillListFromIntent( ListPreference l, Intent i, String firstItem, String firstValue ) {
        PackageManager p = getPackageManager();
        List<ResolveInfo> packages = p.queryIntentActivities( i, 0 );
        ArrayList<String> display = new ArrayList<String>();
        ArrayList<String> values = new ArrayList<String>();
        
        if( firstItem != null ) {
            display.add( firstItem );
            values.add( firstValue );
        }
        
        for( Iterator<ResolveInfo> it = packages.iterator(); it.hasNext(); ) {
            ResolveInfo info = it.next();
            values.add(  info.activityInfo.applicationInfo.packageName );
            display.add( info.activityInfo.loadLabel( p ).toString() );
        }
        
        l.setEntryValues( values.toArray( new CharSequence[ values.size() ] ) );
        l.setEntries( display.toArray( new CharSequence[ values.size() ] ) );
    }
}