Debug: add settings tiles

This commit is contained in:
M66B
2022-07-14 13:23:32 +02:00
parent 6295f1cbaa
commit 1c58eef4b6
3 changed files with 110 additions and 1 deletions

View File

@@ -23,16 +23,20 @@ import static android.app.Activity.RESULT_OK;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.StatusBarManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Paint;
import android.graphics.drawable.Icon;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.service.quicksettings.TileService;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -56,6 +60,8 @@ import androidx.lifecycle.Lifecycle;
import androidx.preference.PreferenceManager;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.function.Consumer;
public class FragmentOptionsNotifications extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener {
private ImageButton ibHelp;
@@ -109,12 +115,18 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
private SwitchCompat swBiometricsNotify;
private SwitchCompat swBackground;
private SwitchCompat swAlertOnce;
private ImageButton ibTileSync;
private ImageButton ibTileUnseen;
private TextView tvNoGrouping;
private TextView tvNoChannels;
private Group grpChannel;
private Group grpProperties;
private Group grpBackground;
private Group grpTiles;
private static final ExecutorService executor =
Helper.getBackgroundExecutor(1, "notifications");
private final static String[] RESET_OPTIONS = new String[]{
"notify_newest_first", "notify_summary",
@@ -192,12 +204,15 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
swBiometricsNotify = view.findViewById(R.id.swBiometricsNotify);
swBackground = view.findViewById(R.id.swBackground);
swAlertOnce = view.findViewById(R.id.swAlertOnce);
ibTileSync = view.findViewById(R.id.ibTileSync);
ibTileUnseen = view.findViewById(R.id.ibTileUnseen);
tvNoGrouping = view.findViewById(R.id.tvNoGrouping);
tvNoChannels = view.findViewById(R.id.tvNoChannels);
grpChannel = view.findViewById(R.id.grpChannel);
grpProperties = view.findViewById(R.id.grpProperties);
grpBackground = view.findViewById(R.id.grpBackground);
grpTiles = view.findViewById(R.id.grpTiles);
setOptions();
@@ -598,6 +613,22 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
}
});
ibTileSync.setOnClickListener(new View.OnClickListener() {
@Override
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
public void onClick(View v) {
addTile(v.getContext(), ServiceTileSynchronize.class, R.string.tile_synchronize, R.drawable.twotone_sync_24);
}
});
ibTileUnseen.setOnClickListener(new View.OnClickListener() {
@Override
@RequiresApi(api = Build.VERSION_CODES.TIRAMISU)
public void onClick(View v) {
addTile(v.getContext(), ServiceTileUnseen.class, R.string.tile_unseen, R.drawable.twotone_mail_outline_24);
}
});
// Initialize
FragmentDialogTheme.setBackground(getContext(), view, false);
@@ -618,6 +649,9 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
grpBackground.setVisibility(
Build.VERSION.SDK_INT < Build.VERSION_CODES.O || BuildConfig.DEBUG
? View.VISIBLE : View.GONE);
grpTiles.setVisibility(
Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU || !BuildConfig.DEBUG
? View.GONE : View.VISIBLE);
PreferenceManager.getDefaultSharedPreferences(getContext()).registerOnSharedPreferenceChangeListener(this);
@@ -775,4 +809,37 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared
prefs.edit().remove("sound").apply();
}
}
@RequiresApi(api = 33)
private void addTile(Context context, Class<? extends TileService> cls, int title, int icon) {
StatusBarManager sbm = Helper.getSystemService(context, StatusBarManager.class);
sbm.requestAddTileService(
ComponentName.createRelative(context, cls.getName()),
context.getString(title),
Icon.createWithResource(context, icon),
executor,
new Consumer<Integer>() {
@Override
public void accept(Integer result) {
Log.i("Tile result=" + result + " class=" + cls.getName());
if (result == null)
return;
switch (result) {
case StatusBarManager.TILE_ADD_REQUEST_RESULT_TILE_ADDED:
case StatusBarManager.TILE_ADD_REQUEST_RESULT_TILE_NOT_ADDED:
break;
case StatusBarManager.TILE_ADD_REQUEST_RESULT_TILE_ALREADY_ADDED:
getMainHandler().post(new Runnable() {
@Override
public void run() {
ToastEx.makeText(context, R.string.tile_already_added, Toast.LENGTH_LONG).show();
}
});
break;
default:
Log.e("Tile result=" + result + " class=" + cls.getName());
}
}
});
}
}