-
Notifications
You must be signed in to change notification settings - Fork 17
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #546 from martenrebane/MOPPAND-1393
Show CAN info message
- Loading branch information
Showing
17 changed files
with
271 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
149 changes: 149 additions & 0 deletions
149
app/src/main/java/ee/ria/DigiDoc/android/utils/widget/NotificationDialog.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
package ee.ria.DigiDoc.android.utils.widget; | ||
|
||
import static androidx.core.content.ContextCompat.startActivity; | ||
|
||
import android.content.Context; | ||
import android.content.DialogInterface; | ||
import android.content.Intent; | ||
import android.graphics.Color; | ||
import android.net.Uri; | ||
import android.os.Bundle; | ||
import android.text.Html; | ||
import android.text.Spanned; | ||
import android.text.method.LinkMovementMethod; | ||
import android.view.Gravity; | ||
import android.view.ViewGroup; | ||
import android.view.accessibility.AccessibilityEvent; | ||
import android.widget.Button; | ||
import android.widget.CheckBox; | ||
import android.widget.LinearLayout; | ||
import android.widget.TextView; | ||
|
||
import androidx.annotation.NonNull; | ||
import androidx.annotation.StringRes; | ||
import androidx.appcompat.app.AlertDialog; | ||
import androidx.appcompat.widget.AppCompatCheckBox; | ||
import androidx.coordinatorlayout.widget.CoordinatorLayout; | ||
|
||
import ee.ria.DigiDoc.R; | ||
import ee.ria.DigiDoc.android.Activity; | ||
import ee.ria.DigiDoc.android.accessibility.AccessibilityUtils; | ||
import ee.ria.DigiDoc.android.utils.SecureUtil; | ||
import ee.ria.DigiDoc.android.utils.navigator.ContentView; | ||
import ee.ria.DigiDoc.sign.utils.UrlMessage; | ||
|
||
public final class NotificationDialog extends AlertDialog implements ContentView, | ||
DialogInterface.OnClickListener { | ||
|
||
private final Context context; | ||
private final int action; | ||
private CheckBox dontShowAgainCheckbox; | ||
|
||
public NotificationDialog(@NonNull Context context, @StringRes int message, int action) { | ||
super(context); | ||
SecureUtil.markAsSecure(context, getWindow()); | ||
|
||
this.context = context; | ||
|
||
if (action == R.id.nfcCanNotificationDialog) { | ||
int layoutPadding = 50; | ||
LinearLayout layout = new LinearLayout(context); | ||
layout.setOrientation(LinearLayout.VERTICAL); | ||
layout.setPadding(layoutPadding, layoutPadding, layoutPadding, layoutPadding); | ||
|
||
Spanned urlMessage = Html.fromHtml(UrlMessage.withURL( | ||
context, | ||
message, | ||
R.string.read_more_message, | ||
true | ||
), Html.FROM_HTML_MODE_LEGACY); | ||
|
||
TextView messageView = new TextView(context); | ||
messageView.setTextAppearance(R.style.MaterialTypography_Dense_Body1); | ||
messageView.setLayoutParams(new ViewGroup.LayoutParams( | ||
CoordinatorLayout.LayoutParams.WRAP_CONTENT, | ||
CoordinatorLayout.LayoutParams.WRAP_CONTENT) | ||
); | ||
messageView.setText(urlMessage); | ||
messageView.setPadding(15, 0, 15, 25); | ||
messageView.setGravity(Gravity.START); | ||
|
||
messageView.setMovementMethod(LinkMovementMethod.getInstance()); | ||
messageView.setClickable(true); | ||
|
||
messageView.setContentDescription(urlMessage); | ||
|
||
if (AccessibilityUtils.isTalkBackEnabled()) { | ||
messageView.setOnClickListener(view -> { | ||
String messageWithUrl = context.getString(R.string.signature_update_nfc_can_info); | ||
String url = UrlMessage.extractLink(messageWithUrl); | ||
if (!url.isEmpty()) { | ||
Intent uriIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); | ||
startActivity(context, uriIntent, null); | ||
} | ||
}); | ||
} else { | ||
messageView.setOnClickListener(null); | ||
} | ||
|
||
layout.addView(messageView); | ||
|
||
dontShowAgainCheckbox = new AppCompatCheckBox(context); | ||
dontShowAgainCheckbox.setId(android.R.id.checkbox); | ||
dontShowAgainCheckbox.setText(R.string.dont_show_again_message); | ||
layout.addView(dontShowAgainCheckbox); | ||
|
||
Button centerButton = new Button(context); | ||
centerButton.setText(context.getString(android.R.string.ok)); | ||
centerButton.setTextColor(Color.WHITE); | ||
LinearLayout.LayoutParams buttonLayoutParams = new LinearLayout.LayoutParams( | ||
LinearLayout.LayoutParams.WRAP_CONTENT, | ||
LinearLayout.LayoutParams.WRAP_CONTENT | ||
); | ||
|
||
buttonLayoutParams.setMargins(15, 50, 15, 25); | ||
buttonLayoutParams.gravity = Gravity.CENTER_HORIZONTAL; | ||
centerButton.setLayoutParams(buttonLayoutParams); | ||
|
||
centerButton.setOnClickListener(v -> onClick(this, DialogInterface.BUTTON_POSITIVE)); | ||
|
||
layout.addView(centerButton); | ||
|
||
setView(layout); | ||
} | ||
else { | ||
setMessage(context.getString(message)); | ||
setButton(BUTTON_POSITIVE, context.getString(android.R.string.ok), this); | ||
} | ||
|
||
this.action = action; | ||
} | ||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
} | ||
|
||
@Override | ||
public void onClick(DialogInterface dialog, int which) { | ||
if (action == R.id.nfcCanNotificationDialog) { | ||
if (context instanceof Activity) { | ||
Activity activity = (Activity) context; | ||
|
||
boolean isChecked = dontShowAgainCheckbox.isChecked(); | ||
activity.getSettingsDataStore().setShowCanMessage(!isChecked); | ||
} | ||
} | ||
dismiss(); | ||
} | ||
|
||
@Override | ||
public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) { | ||
if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { | ||
String confirmationDialogDescription = getContext().getResources().getString(R.string.confirmation_dialog); | ||
event.getText().add(confirmationDialogDescription + ","); | ||
return true; | ||
} | ||
return super.dispatchPopulateAccessibilityEvent(event); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
<vector xmlns:android="http://schemas.android.com/apk/res/android" | ||
android:width="124dp" | ||
android:height="120dp" | ||
android:viewportWidth="124" | ||
android:viewportHeight="120"> | ||
<path | ||
android:pathData="M122.2,60C122.2,92.27 95.29,118.5 62,118.5C28.71,118.5 1.8,92.27 1.8,60C1.8,27.73 28.71,1.5 62,1.5C95.29,1.5 122.2,27.73 122.2,60Z" | ||
android:strokeWidth="3" | ||
android:fillColor="#00000000" | ||
android:strokeColor="#D73E3E"/> | ||
<group> | ||
<clip-path | ||
android:pathData="M38.3,24h48v48h-48z"/> | ||
<path | ||
android:pathData="M60.8,53V34H63.8V53H60.8ZM60.8,62V59H63.8V62H60.8Z" | ||
android:fillColor="#D73E3E"/> | ||
</group> | ||
<path | ||
android:pathData="M57.92,77.05V87H55.87L51.87,80.33V87H49.82V77.05H51.87L55.88,83.73V77.05H57.92ZM61.76,77.05V87H59.71V77.05H61.76ZM65.72,81.3V82.9H61.2V81.3H65.72ZM66.2,77.05V78.65H61.2V77.05H66.2ZM73.16,83.7H75.2C75.16,84.37 74.98,84.96 74.65,85.48C74.33,86 73.87,86.41 73.29,86.7C72.71,86.99 72.01,87.14 71.2,87.14C70.56,87.14 69.99,87.03 69.48,86.81C68.98,86.59 68.54,86.27 68.18,85.85C67.83,85.44 67.56,84.94 67.37,84.35C67.18,83.76 67.09,83.1 67.09,82.37V81.68C67.09,80.95 67.19,80.29 67.38,79.71C67.57,79.11 67.85,78.61 68.21,78.2C68.58,77.78 69.01,77.46 69.52,77.24C70.02,77.01 70.59,76.9 71.21,76.9C72.04,76.9 72.74,77.05 73.31,77.35C73.88,77.66 74.33,78.07 74.64,78.6C74.96,79.13 75.15,79.73 75.22,80.4H73.17C73.14,80 73.06,79.66 72.93,79.38C72.79,79.1 72.58,78.89 72.31,78.75C72.03,78.6 71.67,78.53 71.21,78.53C70.87,78.53 70.57,78.59 70.32,78.72C70.06,78.85 69.85,79.04 69.67,79.3C69.5,79.56 69.37,79.89 69.28,80.29C69.2,80.68 69.16,81.14 69.16,81.67V82.37C69.16,82.89 69.2,83.34 69.28,83.73C69.35,84.12 69.47,84.45 69.63,84.72C69.8,84.98 70.01,85.18 70.26,85.32C70.52,85.45 70.83,85.52 71.2,85.52C71.63,85.52 71.98,85.45 72.26,85.31C72.54,85.17 72.75,84.97 72.89,84.7C73.04,84.43 73.13,84.1 73.16,83.7Z" | ||
android:fillColor="#D73E3E"/> | ||
</vector> |
Oops, something went wrong.