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