12c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang/*
22c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * Copyright (C) 2015 The Android Open Source Project
32c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang *
42c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * Licensed under the Apache License, Version 2.0 (the "License");
52c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * you may not use this file except in compliance with the License.
62c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * You may obtain a copy of the License at
72c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang *
82c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang *      http://www.apache.org/licenses/LICENSE-2.0
92c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang *
102c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * Unless required by applicable law or agreed to in writing, software
112c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * distributed under the License is distributed on an "AS IS" BASIS,
122c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * See the License for the specific language governing permissions and
142c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang * limitations under the License.
152c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang */
162c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
172c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangpackage com.example.android.rs.blasbenchmark;
182c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
192c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.view.Menu;
202c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.view.MenuItem;
212c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.view.MenuInflater;
222c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.text.method.ScrollingMovementMethod;
232c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
242c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.app.Activity;
252c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.os.Bundle;
262c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.os.Handler;
272c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.graphics.Point;
282c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.widget.AdapterView;
292c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.widget.ArrayAdapter;
302c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.widget.ToggleButton;
312c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.widget.TextView;
322c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.widget.CompoundButton;
332c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.widget.ListView;
342c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.view.View;
352c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport java.util.ArrayList;
362c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport java.util.ListIterator;
372c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.util.Log;
382c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.content.Intent;
392c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
402c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport android.os.Environment;
412c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport java.io.BufferedWriter;
422c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport java.io.File;
432c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport java.io.FileWriter;
442c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangimport java.io.IOException;
452c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
462c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wangpublic class BlasControls extends Activity {
472c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private final String TAG = "BLAS";
482c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    public final String RESULT_FILE = "blas_benchmark_result.csv";
492c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
502c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private ListView mTestListView;
512c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private TextView mResultView;
522c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
532c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private ArrayAdapter<String> mTestListAdapter;
542c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private ArrayList<String> mTestList = new ArrayList<String>();
552c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
562c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private boolean mSettings[] = {false, false};
572c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private static final int SETTING_LONG_RUN = 0;
582c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private static final int SETTING_PAUSE = 1;
592c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
602c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private float mResults[];
612c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private String mInfo[];
622c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
632c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    @Override
642c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    public boolean onCreateOptionsMenu(Menu menu) {
652c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        // Inflate the menu items for use in the action bar
662c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        MenuInflater inflater = getMenuInflater();
672c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        inflater.inflate(R.menu.main_activity_actions, menu);
682c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
692c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        return super.onCreateOptionsMenu(menu);
702c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
712c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
722c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    void init() {
732c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
742c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        for (int i=0; i < BlasTestList.TestName.values().length; i++) {
752c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            mTestList.add(BlasTestList.TestName.values()[i].toString());
762c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
772c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
782c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        mTestListView = (ListView) findViewById(R.id.test_list);
792c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        mTestListAdapter = new ArrayAdapter(this,
802c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                android.R.layout.simple_list_item_activated_1,
812c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                mTestList);
822c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
832c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        mTestListView.setAdapter(mTestListAdapter);
842c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        mTestListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
852c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        mTestListAdapter.notifyDataSetChanged();
862c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
872c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        mResultView = (TextView) findViewById(R.id.results);
882c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        mResultView.setMovementMethod(new ScrollingMovementMethod());
892c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
902c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
912c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    @Override
922c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    protected void onCreate(Bundle savedInstanceState) {
932c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        super.onCreate(savedInstanceState);
942c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        setContentView(R.layout.controls);
952c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        init();
962c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
972c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
982c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    @Override
992c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    protected void onPause() {
1002c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        super.onPause();
1012c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
1022c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1032c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    @Override
1042c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    protected void onResume() {
1052c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        super.onResume();
1062c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
1072c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1082c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    Intent makeBasicLaunchIntent() {
1092c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        Intent intent = new Intent(this, BlasBenchmark.class);
1102c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        intent.putExtra("enable long", mSettings[SETTING_LONG_RUN]);
1112c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        intent.putExtra("enable pause", mSettings[SETTING_PAUSE]);
1122c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        return intent;
1132c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
1142c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1152c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    public void btnRun(View v) {
1162c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        BlasTestList.TestName t[] = BlasTestList.TestName.values();
1172c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        int count = 0;
1182c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        for (int i = 0; i < t.length; i++) {
1192c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            if (mTestListView.isItemChecked(i)) {
1202c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                count++;
1212c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            }
1222c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
1232c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        if (count == 0) {
1242c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            return;
1252c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
1262c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1272c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        int testList[] = new int[count];
1282c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        count = 0;
1292c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        for (int i = 0; i < t.length; i++) {
1302c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            if (mTestListView.isItemChecked(i)) {
1312c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                testList[count++] = i;
1322c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            }
1332c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
1342c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1352c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        Intent intent = makeBasicLaunchIntent();
1362c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        intent.putExtra("tests", testList);
1372c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        startActivityForResult(intent, 0);
1382c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
1392c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1402c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    private void writeResults() {
1412c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        // write result into a file
1422c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        File externalStorage = Environment.getExternalStorageDirectory();
1432c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        if (!externalStorage.canWrite()) {
1442c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            Log.v(TAG, "sdcard is not writable");
1452c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            return;
1462c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
1472c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        File resultFile = new File(externalStorage, RESULT_FILE);
1482c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        resultFile.setWritable(true, false);
1492c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        try {
1502c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            BufferedWriter rsWriter = new BufferedWriter(new FileWriter(resultFile));
1512c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            Log.v(TAG, "Saved results in: " + resultFile.getAbsolutePath());
1522c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            java.text.DecimalFormat df = new java.text.DecimalFormat("######.####");
1532c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1542c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            for (int ct=0; ct < BlasTestList.TestName.values().length; ct++) {
1552c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                String t = BlasTestList.TestName.values()[ct].toString();
1562c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                final float r = mResults[ct];
1572c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                String s = new String("" + t + ", " + df.format(r));
1582c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                rsWriter.write(s + "\n");
1592c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            }
1602c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            rsWriter.close();
1612c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        } catch (IOException e) {
1622c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            Log.v(TAG, "Unable to write result file " + e.getMessage());
1632c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
1642c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
1652c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1662c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
1672c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        if (requestCode == 0) {
1682c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            if (resultCode == RESULT_OK) {
1692c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                java.text.DecimalFormat df = new java.text.DecimalFormat("######.####");
1702c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                mResults = new float[BlasTestList.TestName.values().length];
1712c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                mInfo = new String[BlasTestList.TestName.values().length];
1722c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1732c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                float r[] = data.getFloatArrayExtra("results");
1742c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                String inf[] = data.getStringArrayExtra("testinfo");
1752c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                int id[] = data.getIntArrayExtra("tests");
1762c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1772c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                String mOutResult = "";
1782c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                for (int ct=0; ct < id.length; ct++) {
1792c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                    String t = inf[ct];
1802c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                    String sl = BlasTestList.TestName.values()[id[ct]].toString() + ":   " + df.format(r[ct]) + "ms";
1812c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                    String s = t + ":   " + df.format(r[ct]) + "ms";
1822c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                    mTestList.set(id[ct], sl);
1832c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                    mTestListAdapter.notifyDataSetChanged();
1842c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                    mOutResult += s + '\n';
1852c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                    mResults[id[ct]] = r[ct];
1862c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                }
1872c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1882c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                mResultView.setText(mOutResult);
1892c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                writeResults();
1902c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            }
1912c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
1922c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
1932c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
1942c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    public void btnSelAll(View v) {
1952c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        BlasTestList.TestName t[] = BlasTestList.TestName.values();
1962c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        for (int i=0; i < t.length; i++) {
1972c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            mTestListView.setItemChecked(i, true);
1982c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
1992c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
2002c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
2012c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    public boolean onOptionsItemSelected(MenuItem item) {
2022c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        // Handle presses on the action bar items
2032c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        switch(item.getItemId()) {
2042c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            case R.id.action_settings:
2052c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                BlasSettings newFragment = new BlasSettings(mSettings);
2062c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                newFragment.show(getFragmentManager(), "settings");
2072c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                return true;
2082c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            default:
2092c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang                return super.onOptionsItemSelected(item);
2102c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
2112c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
2122c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
2132c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    public void btnSelNone(View v) {
2142c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        BlasTestList.TestName t[] = BlasTestList.TestName.values();
2152c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        for (int i=0; i < t.length; i++) {
2162c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang            mTestListView.setItemChecked(i, false);
2172c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        }
2182c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
2192c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang
2202c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    public void btnSettings(View v) {
2212c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        BlasSettings newFragment = new BlasSettings(mSettings);
2222c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang        newFragment.show(getFragmentManager(), "settings");
2232c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang    }
2242c9b10f9b72ebec0b1861532e4ccb6e68ac769a4Miao Wang}
225