123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- package com.epson.mobilephone.common.license;
- import android.content.Context;
- import android.content.Intent;
- import android.os.Bundle;
- import android.view.MenuItem;
- import android.view.Window;
- import android.widget.TextView;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.annotation.VisibleForTesting;
- import androidx.appcompat.app.ActionBar;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.appcompat.widget.Toolbar;
- import java.io.Serializable;
- import epson.print.R;
- /**
- * 用户协议页面
- */
- public class InfoDisplayActivity extends AppCompatActivity {
- private static final String KEY_SCROLL_Y = "scroll_y";
- private static final String PARAM_KEY_DOCUMENT_TYPE = "document_type";
- private static final String PARAM_KEY_LICENSE_INFO = "license_info";
- private static final String PARAM_KEY_TITLE_AND_DOCUMENT = "class_title_and_document";
- private RestoreScrollView mScrollView;
- public interface TitleAndDocument extends Serializable {
- @NonNull
- String getDocumentString(@NonNull Context context);
- @NonNull
- String getTitle(@NonNull Context context);
- }
- protected void onCreate(Bundle bundle) {
- super.onCreate(bundle);
- supportRequestWindowFeature(Window.FEATURE_ACTION_BAR);
- setContentView(R.layout.activity_info_display);
- setSupportActionBar(findViewById(R.id.toolbar));
- TitleAndDocument titleAndDocumentFromIntent = getTitleAndDocumentFromIntent(getIntent());
- if (titleAndDocumentFromIntent == null) {
- finish();
- return;
- }
- ((TextView) findViewById(R.id.contentText)).setText(titleAndDocumentFromIntent.getDocumentString(getApplicationContext()));
- mScrollView = (RestoreScrollView) findViewById(R.id.mainScrollView);
- setTitle(titleAndDocumentFromIntent.getTitle(getApplicationContext()));
- ActionBar supportActionBar = getSupportActionBar();
- if (supportActionBar != null) {
- supportActionBar.setDisplayHomeAsUpEnabled(true);
- }
- if (bundle != null) {
- mScrollView.setScrollY(bundle.getInt(KEY_SCROLL_Y, 0));
- }
- }
- @Nullable
- @VisibleForTesting
- static TitleAndDocument getTitleAndDocumentFromIntent(@Nullable Intent intent) {
- if (intent == null) {
- return null;
- }
- TitleAndDocument internalTitleAndDocumentFromIntent = getInternalTitleAndDocumentFromIntent(intent);
- if (internalTitleAndDocumentFromIntent != null) {
- return internalTitleAndDocumentFromIntent;
- }
- return getExternalTitleAndDocumentFromIntent(intent);
- }
- @Nullable
- private static TitleAndDocument getInternalTitleAndDocumentFromIntent(@NonNull Intent intent) {
- LicenseInfo licenseInfo = (LicenseInfo) intent.getSerializableExtra(PARAM_KEY_LICENSE_INFO);
- if (licenseInfo == null) {
- return null;
- }
- return new TitleAndTextInternal(intent.getIntExtra(PARAM_KEY_DOCUMENT_TYPE, 1), licenseInfo);
- }
- @Nullable
- private static TitleAndDocument getExternalTitleAndDocumentFromIntent(@NonNull Intent intent) {
- return (TitleAndDocument) intent.getSerializableExtra(PARAM_KEY_TITLE_AND_DOCUMENT);
- }
- private static int getTitleStringId(int i) {
- switch (i) {
- case 2:
- return R.string.Privacy_Statement_Title;
- case 3:
- return R.string.OSS_License_Title;
- default:
- return R.string.EULA_Title;
- }
- }
- public boolean onOptionsItemSelected(MenuItem menuItem) {
- if (menuItem.getItemId() != 16908332) {
- return super.onOptionsItemSelected(menuItem);
- }
- finish();
- return true;
- }
- protected void onSaveInstanceState(Bundle bundle) {
- super.onSaveInstanceState(bundle);
- bundle.putInt(KEY_SCROLL_Y, mScrollView.getLastY());
- }
- @NonNull
- public static Intent getStartIntent(@NonNull Context context, LicenseInfo licenseInfo, int i) {
- Intent intent = new Intent(context, InfoDisplayActivity.class);
- intent.putExtra(PARAM_KEY_LICENSE_INFO, licenseInfo);
- intent.putExtra(PARAM_KEY_DOCUMENT_TYPE, i);
- return intent;
- }
- @NonNull
- public static Intent getStartIntent(@NonNull Context context, @NonNull TitleAndDocument titleAndDocument) {
- Intent intent = new Intent(context, InfoDisplayActivity.class);
- intent.putExtra(PARAM_KEY_TITLE_AND_DOCUMENT, titleAndDocument);
- return intent;
- }
- @VisibleForTesting
- static class TitleAndTextInternal implements TitleAndDocument {
- private final int mDocumentType;
- private final LicenseInfo mLicenseInfo;
- TitleAndTextInternal(int i, @NonNull LicenseInfo licenseInfo) {
- mDocumentType = i;
- mLicenseInfo = licenseInfo;
- }
- @NonNull
- public String getTitle(@NonNull Context context) {
- return context.getString(InfoDisplayActivity.getTitleStringId(mDocumentType));
- }
- @NonNull
- public String getDocumentString(@NonNull Context context) {
- return mLicenseInfo.getDocumentString(context, mDocumentType);
- }
- }
- }
|