InfoDisplayActivity.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package com.epson.mobilephone.common.license;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.MenuItem;
  6. import android.view.Window;
  7. import android.widget.TextView;
  8. import androidx.annotation.NonNull;
  9. import androidx.annotation.Nullable;
  10. import androidx.annotation.VisibleForTesting;
  11. import androidx.appcompat.app.ActionBar;
  12. import androidx.appcompat.app.AppCompatActivity;
  13. import androidx.appcompat.widget.Toolbar;
  14. import java.io.Serializable;
  15. import epson.print.R;
  16. /**
  17. * 用户协议页面
  18. */
  19. public class InfoDisplayActivity extends AppCompatActivity {
  20. private static final String KEY_SCROLL_Y = "scroll_y";
  21. private static final String PARAM_KEY_DOCUMENT_TYPE = "document_type";
  22. private static final String PARAM_KEY_LICENSE_INFO = "license_info";
  23. private static final String PARAM_KEY_TITLE_AND_DOCUMENT = "class_title_and_document";
  24. private RestoreScrollView mScrollView;
  25. public interface TitleAndDocument extends Serializable {
  26. @NonNull
  27. String getDocumentString(@NonNull Context context);
  28. @NonNull
  29. String getTitle(@NonNull Context context);
  30. }
  31. protected void onCreate(Bundle bundle) {
  32. super.onCreate(bundle);
  33. supportRequestWindowFeature(Window.FEATURE_ACTION_BAR);
  34. setContentView(R.layout.activity_info_display);
  35. setSupportActionBar(findViewById(R.id.toolbar));
  36. TitleAndDocument titleAndDocumentFromIntent = getTitleAndDocumentFromIntent(getIntent());
  37. if (titleAndDocumentFromIntent == null) {
  38. finish();
  39. return;
  40. }
  41. ((TextView) findViewById(R.id.contentText)).setText(titleAndDocumentFromIntent.getDocumentString(getApplicationContext()));
  42. mScrollView = (RestoreScrollView) findViewById(R.id.mainScrollView);
  43. setTitle(titleAndDocumentFromIntent.getTitle(getApplicationContext()));
  44. ActionBar supportActionBar = getSupportActionBar();
  45. if (supportActionBar != null) {
  46. supportActionBar.setDisplayHomeAsUpEnabled(true);
  47. }
  48. if (bundle != null) {
  49. mScrollView.setScrollY(bundle.getInt(KEY_SCROLL_Y, 0));
  50. }
  51. }
  52. @Nullable
  53. @VisibleForTesting
  54. static TitleAndDocument getTitleAndDocumentFromIntent(@Nullable Intent intent) {
  55. if (intent == null) {
  56. return null;
  57. }
  58. TitleAndDocument internalTitleAndDocumentFromIntent = getInternalTitleAndDocumentFromIntent(intent);
  59. if (internalTitleAndDocumentFromIntent != null) {
  60. return internalTitleAndDocumentFromIntent;
  61. }
  62. return getExternalTitleAndDocumentFromIntent(intent);
  63. }
  64. @Nullable
  65. private static TitleAndDocument getInternalTitleAndDocumentFromIntent(@NonNull Intent intent) {
  66. LicenseInfo licenseInfo = (LicenseInfo) intent.getSerializableExtra(PARAM_KEY_LICENSE_INFO);
  67. if (licenseInfo == null) {
  68. return null;
  69. }
  70. return new TitleAndTextInternal(intent.getIntExtra(PARAM_KEY_DOCUMENT_TYPE, 1), licenseInfo);
  71. }
  72. @Nullable
  73. private static TitleAndDocument getExternalTitleAndDocumentFromIntent(@NonNull Intent intent) {
  74. return (TitleAndDocument) intent.getSerializableExtra(PARAM_KEY_TITLE_AND_DOCUMENT);
  75. }
  76. private static int getTitleStringId(int i) {
  77. switch (i) {
  78. case 2:
  79. return R.string.Privacy_Statement_Title;
  80. case 3:
  81. return R.string.OSS_License_Title;
  82. default:
  83. return R.string.EULA_Title;
  84. }
  85. }
  86. public boolean onOptionsItemSelected(MenuItem menuItem) {
  87. if (menuItem.getItemId() != 16908332) {
  88. return super.onOptionsItemSelected(menuItem);
  89. }
  90. finish();
  91. return true;
  92. }
  93. protected void onSaveInstanceState(Bundle bundle) {
  94. super.onSaveInstanceState(bundle);
  95. bundle.putInt(KEY_SCROLL_Y, mScrollView.getLastY());
  96. }
  97. @NonNull
  98. public static Intent getStartIntent(@NonNull Context context, LicenseInfo licenseInfo, int i) {
  99. Intent intent = new Intent(context, InfoDisplayActivity.class);
  100. intent.putExtra(PARAM_KEY_LICENSE_INFO, licenseInfo);
  101. intent.putExtra(PARAM_KEY_DOCUMENT_TYPE, i);
  102. return intent;
  103. }
  104. @NonNull
  105. public static Intent getStartIntent(@NonNull Context context, @NonNull TitleAndDocument titleAndDocument) {
  106. Intent intent = new Intent(context, InfoDisplayActivity.class);
  107. intent.putExtra(PARAM_KEY_TITLE_AND_DOCUMENT, titleAndDocument);
  108. return intent;
  109. }
  110. @VisibleForTesting
  111. static class TitleAndTextInternal implements TitleAndDocument {
  112. private final int mDocumentType;
  113. private final LicenseInfo mLicenseInfo;
  114. TitleAndTextInternal(int i, @NonNull LicenseInfo licenseInfo) {
  115. mDocumentType = i;
  116. mLicenseInfo = licenseInfo;
  117. }
  118. @NonNull
  119. public String getTitle(@NonNull Context context) {
  120. return context.getString(InfoDisplayActivity.getTitleStringId(mDocumentType));
  121. }
  122. @NonNull
  123. public String getDocumentString(@NonNull Context context) {
  124. return mLicenseInfo.getDocumentString(context, mDocumentType);
  125. }
  126. }
  127. }