-
Notifications
You must be signed in to change notification settings - Fork 0
/
Utils.java
183 lines (152 loc) · 7.01 KB
/
Utils.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
package com.example.termproject;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatDelegate;
import android.view.View;
import android.widget.ImageView;
public class Utils
{
public final static int sREQUEST_CODE_SETTINGS = 100, sREQUEST_CODE_LOCATION_PERMISSION = 100;
// background
// ----------
public static void showHideBackground (boolean usePicBackground, ImageView background)
{
int visibilityMode = usePicBackground ? View.VISIBLE : View.INVISIBLE;
// Set the ImageView's visibility to be show or hidden as per the user preference
assert background != null;
background.setVisibility (visibilityMode);
}
// Location
public static void promptToAllowPermissionRequest (Activity activity)
{
DialogInterface.OnClickListener okListener =
getLocationPromptOkOnClickListener (activity);
DialogInterface.OnClickListener cancelListener =
Utils.getNewEmptyOnClickListener ();
Utils.showYesNoDialog (activity, "Permission Denied",
"The Location Permission is requested for Night Mode " +
"display purposes.\n\nWould you like to again " +
"be prompted to allow this permission?",
okListener, cancelListener);
}
@NonNull private static DialogInterface.OnClickListener getLocationPromptOkOnClickListener
(final Activity activity)
{
return new DialogInterface.OnClickListener ()
{
@Override public void onClick (DialogInterface dialog, int which)
{
Utils.getLocationPermission (activity, sREQUEST_CODE_LOCATION_PERMISSION);
}
};
}
// Night Mode
// ----------
public static void getLocationPermission (Activity activity, int code)
{
// Here, activity is the current activity
if (ContextCompat.checkSelfPermission (activity, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions
(activity, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION}, code);
}
}
public static void applyNightModePreference (Activity activity, boolean useNightMode)
{
int defaultNightMode = AppCompatDelegate.getDefaultNightMode ();
int userPrefNightMode = useNightMode
? AppCompatDelegate.MODE_NIGHT_AUTO
: AppCompatDelegate.MODE_NIGHT_NO;
if ((useNightMode && (defaultNightMode != userPrefNightMode)) ||
(!useNightMode && defaultNightMode == AppCompatDelegate.MODE_NIGHT_AUTO)) {
applyNightMode (activity, userPrefNightMode);
}
}
private static void applyNightMode (final Activity activity, int userPrefNightMode)
{
// Inform the user so they're not staring at a white screen while the Activity is recreated
//Toast.makeText (activity, "Applying Night Mode Preference", Toast.LENGTH_SHORT).show ();
// Set the Default Night Mode to match the User's Preference
AppCompatDelegate.setDefaultNightMode (userPrefNightMode);
// recreate the Activity to make the Night Mode Setting active
activity.recreate ();
}
// AlertDialog
// -----------
@NonNull public static DialogInterface.OnClickListener getNewEmptyOnClickListener ()
{
return new DialogInterface.OnClickListener ()
{
@Override public void onClick (DialogInterface dialog, int which)
{
}
};
}
/**
* Shows an Android (nicer) equivalent to JOptionPane
*
* @param strTitle Title of the Dialog box
* @param strMsg Message (body) of the Dialog box
*/
public static void showYesNoDialog (Context context, String strTitle, String strMsg,
DialogInterface.OnClickListener okListener,
DialogInterface.OnClickListener cancelListener)
{
// create the listener for the dialog
final DialogInterface.OnClickListener emptyOnClickListener = getNewEmptyOnClickListener ();
// Create the AlertDialog.Builder object
AlertDialog.Builder ADBuilder = new AlertDialog.Builder (context);
// Use the AlertDialog's Builder Class methods to set the title, icon, message, et al.
// These could all be chained as one long statement, if desired
ADBuilder.setTitle (strTitle);
ADBuilder.setIcon (android.R.drawable.ic_dialog_alert);
ADBuilder.setMessage (strMsg);
ADBuilder.setCancelable (true);
ADBuilder.setPositiveButton (context.getString (R.string.yes),
okListener != null ? okListener : emptyOnClickListener);
ADBuilder.setNegativeButton (context.getString (R.string.no),
cancelListener != null ? cancelListener : emptyOnClickListener);
// Create and Show the Dialog
ADBuilder.show ();
}
/**
* Shows an Android (nicer) equivalent to JOptionPane
*
* @param strTitle Title of the Dialog box
* @param strMsg Message (body) of the Dialog box
*/
public static void showInfoDialog (Context context, String strTitle, String strMsg)
{
// create the listener for the dialog
final DialogInterface.OnClickListener emptyOnClickListener = getNewEmptyOnClickListener ();
// Create the AlertDialog.Builder object
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder (context);
// Use the AlertDialog's Builder Class methods to set the title, icon, message, et al.
// These could all be chained as one long statement, if desired
alertDialogBuilder.setTitle (strTitle);
alertDialogBuilder.setIcon (android.R.drawable.ic_dialog_info);
alertDialogBuilder.setMessage (strMsg);
alertDialogBuilder.setCancelable (true);
alertDialogBuilder.setNeutralButton (context.getString (android.R.string.ok),
emptyOnClickListener);
// Create and Show the Dialog
alertDialogBuilder.show ();
}
/**
* Overloaded XML version of showInfoDialog(String, String) method
*
* @param titleID Title stored in XML resource (e.g. strings.xml)
* @param msgID Message (body) stored in XML resource (e.g. strings.xml)
*/
public static void showInfoDialog (Context context, int titleID, int msgID)
{
showInfoDialog (context, context.getString (titleID), context.getString (msgID));
}
}