1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/*
2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License.
6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at
7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project *
10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and
14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License.
15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */
16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings;
18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.Activity;
20afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.ActivityManagerNative;
21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Configuration;
22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources;
23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.TypedArray;
24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle;
25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.RemoteException;
26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.DisplayMetrics;
27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.TypedValue;
28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.View;
29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.ArrayAdapter;
30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Button;
31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Spinner;
32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.TextView;
33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpublic class Display extends Activity implements View.OnClickListener {
36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public void onCreate(Bundle icicle) {
38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onCreate(icicle);
39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        setContentView(R.layout.display);
41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mFontSize = (Spinner) findViewById(R.id.fontSize);
43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mFontSize.setOnItemSelectedListener(mFontSizeChanged);
44afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        String[] states = new String[3];
45afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Resources r = getResources();
46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        states[0] = r.getString(R.string.small_font);
47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        states[1] = r.getString(R.string.medium_font);
48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        states[2] = r.getString(R.string.large_font);
49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                android.R.layout.simple_spinner_item, states);
51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        adapter.setDropDownViewResource(
52afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                android.R.layout.simple_spinner_dropdown_item);
53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mFontSize.setAdapter(adapter);
54afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
55afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPreview = (TextView) findViewById(R.id.preview);
56afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPreview.setText(r.getText(R.string.font_size_preview_text));
57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
58afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        Button save = (Button) findViewById(R.id.save);
59afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        save.setText(r.getText(R.string.font_size_save));
60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        save.setOnClickListener(this);
61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mTextSizeTyped = new TypedValue();
63afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        TypedArray styledAttributes =
64afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            obtainStyledAttributes(android.R.styleable.TextView);
65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        styledAttributes.getValue(android.R.styleable.TextView_textSize,
66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mTextSizeTyped);
67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        DisplayMetrics metrics = getResources().getDisplayMetrics();
69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics = new DisplayMetrics();
70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics.density = metrics.density;
71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics.heightPixels = metrics.heightPixels;
72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics.scaledDensity = metrics.scaledDensity;
73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics.widthPixels = metrics.widthPixels;
74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics.xdpi = metrics.xdpi;
75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics.ydpi = metrics.ydpi;
76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        styledAttributes.recycle();
78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    @Override
81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public void onResume() {
82afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        super.onResume();
83afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        try {
84afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mCurConfig.updateFrom(
85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                ActivityManagerNative.getDefault().getConfiguration());
86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (RemoteException e) {
87afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        if (mCurConfig.fontScale < 1) {
89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mFontSize.setSelection(0);
90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else if (mCurConfig.fontScale > 1) {
91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mFontSize.setSelection(2);
92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } else {
93afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            mFontSize.setSelection(1);
94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        updateFontScale();
96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private void updateFontScale() {
99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mDisplayMetrics.scaledDensity = mDisplayMetrics.density *
100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mCurConfig.fontScale;
101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        float size = mTextSizeTyped.getDimension(mDisplayMetrics);
103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        mPreview.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    public void onClick(View v) {
107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        try {
10892c8ebacc118f23df94431f531075a8837394829Dianne Hackborn            ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig);
109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        } catch (RemoteException e) {
110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        finish();
112afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    }
113afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
114afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Spinner.OnItemSelectedListener mFontSizeChanged
115afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                                    = new Spinner.OnItemSelectedListener() {
116afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onItemSelected(android.widget.AdapterView av, View v,
117afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                                    int position, long id) {
118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            if (position == 0) {
119afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mCurConfig.fontScale = .75f;
120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else if (position == 2) {
121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mCurConfig.fontScale = 1.25f;
122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            } else {
123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project                mCurConfig.fontScale = 1.0f;
124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            }
125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project            updateFontScale();
127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        public void onNothingSelected(android.widget.AdapterView av) {
130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project        }
131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    };
132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project
133afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Spinner mFontSize;
134afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TextView mPreview;
135afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private TypedValue mTextSizeTyped;
136afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private DisplayMetrics mDisplayMetrics;
137afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project    private Configuration mCurConfig = new Configuration();
138afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project}
139