1c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian/* 2c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * Copyright (C) 2017 The Android Open Source Project 3c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * 4c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * you may not use this file except in compliance with the License. 6c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * You may obtain a copy of the License at 7c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * 8c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * 10c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * Unless required by applicable law or agreed to in writing, software 11c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * See the License for the specific language governing permissions and 14c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian * limitations under the License 15c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian */ 16c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 17c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianpackage com.android.dialer.about; 18c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 19c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport android.os.Bundle; 2027b5eaeb2d0cdffb0b89db4971894548da8afdd4Aurimas Liutikasimport android.support.v7.app.AppCompatActivity; 21c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport android.view.MenuItem; 22c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport android.widget.ScrollView; 23c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport android.widget.TextView; 24c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 25c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian/** Simple Activity that renders locally stored open source legal info in a text view. */ 2627b5eaeb2d0cdffb0b89db4971894548da8afdd4Aurimas Liutikaspublic final class LicenseActivity extends AppCompatActivity { 27c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian private static final String TAG = "LicenseActivity"; 28c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian private static final String STATE_SCROLL_POS = "scroll_pos"; 29c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 30c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 31c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian public void onCreate(Bundle bundle) { 32c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian super.onCreate(bundle); 33c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian setContentView(R.layout.license_scrollview); 34c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 35c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian License license = getIntent().getParcelableExtra(LicenseMenuActivity.ARGS_LICENSE); 36c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian getSupportActionBar().setTitle(license.getLibraryName()); 37c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 38c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian // Show 'up' button with no logo. 39c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian getSupportActionBar().setDisplayShowHomeEnabled(true); 40c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian getSupportActionBar().setDisplayHomeAsUpEnabled(true); 41c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian getSupportActionBar().setLogo(null); 42c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 43c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian TextView textView = (TextView) findViewById(R.id.license_activity_textview); 44c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian String licenseText = Licenses.getLicenseText(this, license); 45c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian if (licenseText == null) { 46c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian finish(); 47c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian return; 48c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 49c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian textView.setText(licenseText); 50c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 51c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 52c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 53c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian public void onSaveInstanceState(Bundle outState) { 54c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian super.onSaveInstanceState(outState); 55c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview); 56c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian TextView textView = (TextView) findViewById(R.id.license_activity_textview); 57c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian int firstVisibleLine = textView.getLayout().getLineForVertical(scrollView.getScrollY()); 58c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian int firstVisibleChar = textView.getLayout().getLineStart(firstVisibleLine); 59c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian outState.putInt(STATE_SCROLL_POS, firstVisibleChar); 60c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 61c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 62c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 63c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian public void onRestoreInstanceState(Bundle savedInstanceState) { 64c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian super.onRestoreInstanceState(savedInstanceState); 65c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian final ScrollView scrollView = (ScrollView) findViewById(R.id.license_activity_scrollview); 66c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian final int firstVisibleChar = savedInstanceState.getInt(STATE_SCROLL_POS); 67c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian scrollView.post( 68c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian new Runnable() { 69c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 70c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian public void run() { 71c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian TextView textView = (TextView) findViewById(R.id.license_activity_textview); 72c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian int firstVisibleLine = textView.getLayout().getLineForOffset(firstVisibleChar); 73c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian int offset = textView.getLayout().getLineTop(firstVisibleLine); 74c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian scrollView.scrollTo(0, offset); 75c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 76c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian }); 77c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 78c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian 79c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian @Override 80c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian public boolean onOptionsItemSelected(final MenuItem item) { 81c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian if (item.getItemId() == android.R.id.home) { 82c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian finish(); 83c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian return true; 84c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 85c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian return super.onOptionsItemSelected(item); 86c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 87c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian} 88