/* * Copyright (C) 2018 The Dirty Unicorns Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.syberia; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.app.Fragment; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.om.IOverlayManager; import android.content.om.OverlayInfo; import android.content.res.Configuration; import android.os.Bundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.UserHandle; import android.provider.Settings; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.GridLayout; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; public class AccentPicker extends InstrumentedDialogFragment implements OnClickListener { private static final String TAG_ACCENT_PICKER = "accent_picker"; private View mView; private int mUserId; private IOverlayManager mOverlayManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mUserId = UserHandle.myUserId(); mOverlayManager = IOverlayManager.Stub.asInterface( ServiceManager.getService(Context.OVERLAY_SERVICE)); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { mView = LayoutInflater.from(getActivity()).inflate(R.layout.accent_picker, null); initView(); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(mView) .setNegativeButton(R.string.cancel, this) .setNeutralButton(R.string.theme_accent_picker_default, this) .setCancelable(false); AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(true); return dialog; } private void initView() { ContentResolver resolver = getActivity().getContentResolver(); Button redAccent = null; if (mView != null) { redAccent = mView.findViewById(R.id.redAccent); } if (redAccent != null) { redAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 1, UserHandle.USER_CURRENT); dismiss(); } }); } Button pinkAccent = null; if (mView != null) { pinkAccent = mView.findViewById(R.id.pinkAccent); } if (pinkAccent != null) { pinkAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 2, UserHandle.USER_CURRENT); dismiss(); } }); } Button purpleAccent = null; if (mView != null) { purpleAccent = mView.findViewById(R.id.purpleAccent); } if (purpleAccent != null) { purpleAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 3, UserHandle.USER_CURRENT); dismiss(); } }); } Button deeppurpleAccent = null; if (mView != null) { deeppurpleAccent = mView.findViewById(R.id.deeppurpleAccent); } if (deeppurpleAccent != null) { deeppurpleAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 4, UserHandle.USER_CURRENT); dismiss(); } }); } Button rosyAccent = null; if (mView != null) { rosyAccent = mView.findViewById(R.id.rosyAccent); } if (rosyAccent != null) { rosyAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 20, UserHandle.USER_CURRENT); dismiss(); } }); } Button indigoAccent = null; if (mView != null) { indigoAccent = mView.findViewById(R.id.indigoAccent); } if (indigoAccent != null) { indigoAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 5, UserHandle.USER_CURRENT); dismiss(); } }); } Button blueAccent = null; if (mView != null) { blueAccent = mView.findViewById(R.id.blueAccent); } if (blueAccent != null) { blueAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 6, UserHandle.USER_CURRENT); dismiss(); } }); } Button lightblueAccent = null; if (mView != null) { lightblueAccent = mView.findViewById(R.id.lightblueAccent); } if (lightblueAccent != null) { lightblueAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 7, UserHandle.USER_CURRENT); dismiss(); } }); } Button cyanAccent = null; if (mView != null) { cyanAccent = mView.findViewById(R.id.cyanAccent); } if (cyanAccent != null) { cyanAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 8, UserHandle.USER_CURRENT); dismiss(); } }); } Button tealAccent = null; if (mView != null) { tealAccent = mView.findViewById(R.id.tealAccent); } if (tealAccent != null) { tealAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 9, UserHandle.USER_CURRENT); dismiss(); } }); } Button greenAccent = null; if (mView != null) { greenAccent = mView.findViewById(R.id.greenAccent); } if (greenAccent != null) { greenAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 10, UserHandle.USER_CURRENT); dismiss(); } }); } Button lightgreenAccent = null; if (mView != null) { lightgreenAccent = mView.findViewById(R.id.lightgreenAccent); } if (lightgreenAccent != null) { lightgreenAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 11, UserHandle.USER_CURRENT); dismiss(); } }); } Button limeAccent = null; if (mView != null) { limeAccent = mView.findViewById(R.id.limeAccent); } if (limeAccent != null) { limeAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 12, UserHandle.USER_CURRENT); dismiss(); } }); } Button yellowAccent = null; if (mView != null) { yellowAccent = mView.findViewById(R.id.yellowAccent); } if (yellowAccent != null) { yellowAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 13, UserHandle.USER_CURRENT); dismiss(); } }); } Button amberAccent = null; if (mView != null) { amberAccent = mView.findViewById(R.id.amberAccent); } if (amberAccent != null) { amberAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 14, UserHandle.USER_CURRENT); dismiss(); } }); } Button orangeAccent = null; if (mView != null) { orangeAccent = mView.findViewById(R.id.orangeAccent); } if (orangeAccent != null) { orangeAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 15, UserHandle.USER_CURRENT); dismiss(); } }); } Button deeporangeAccent = null; if (mView != null) { deeporangeAccent = mView.findViewById(R.id.deeporangeAccent); } if (deeporangeAccent != null) { deeporangeAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 16, UserHandle.USER_CURRENT); dismiss(); } }); } Button brownAccent = null; if (mView != null) { brownAccent = mView.findViewById(R.id.brownAccent); } if (brownAccent != null) { brownAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 17, UserHandle.USER_CURRENT); dismiss(); } }); } Button greyAccent = null; if (mView != null) { greyAccent = mView.findViewById(R.id.greyAccent); } if (greyAccent != null) { greyAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 18, UserHandle.USER_CURRENT); dismiss(); } }); } Button bluegreyAccent = null; if (mView != null) { bluegreyAccent = mView.findViewById(R.id.bluegreyAccent); } if (bluegreyAccent != null) { bluegreyAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 19, UserHandle.USER_CURRENT); dismiss(); } }); } Button newhouseorangeAccent = null; if (mView != null) { newhouseorangeAccent = mView.findViewById(R.id.newhouseorangeAccent); } if (newhouseorangeAccent != null) { newhouseorangeAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 21, UserHandle.USER_CURRENT); dismiss(); } }); } Button warmthorangeAccent = null; if (mView != null) { warmthorangeAccent = mView.findViewById(R.id.warmthorangeAccent); } if (warmthorangeAccent != null) { warmthorangeAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 22, UserHandle.USER_CURRENT); dismiss(); } }); } Button burningredAccent = null; if (mView != null) { burningredAccent = mView.findViewById(R.id.burningredAccent); } if (burningredAccent != null) { burningredAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 23, UserHandle.USER_CURRENT); dismiss(); } }); } Button candyredAccent = null; if (mView != null) { candyredAccent = mView.findViewById(R.id.candyredAccent); } if (candyredAccent != null) { candyredAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 24, UserHandle.USER_CURRENT); dismiss(); } }); } Button paleredAccent = null; if (mView != null) { paleredAccent = mView.findViewById(R.id.paleredAccent); } if (paleredAccent != null) { paleredAccent.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 25, UserHandle.USER_CURRENT); dismiss(); } }); } GridLayout gridlayout; if (mView != null) { int intOrientation = getResources().getConfiguration().orientation; gridlayout = mView.findViewById(R.id.Gridlayout); // Lets split this up instead of creating two different layouts // just so we can change the columns if (intOrientation == Configuration.ORIENTATION_PORTRAIT) { gridlayout.setColumnCount(5); } else { gridlayout.setColumnCount(8); } } } @Override public void onClick(DialogInterface dialog, int which) { ContentResolver resolver = getActivity().getContentResolver(); if (which == AlertDialog.BUTTON_NEGATIVE) { dismiss(); } if (which == AlertDialog.BUTTON_NEUTRAL) { Settings.System.putIntForUser(resolver, Settings.System.ACCENT_PICKER, 0, UserHandle.USER_CURRENT); dismiss(); } } public static void show(Fragment parent) { if (!parent.isAdded()) return; final AccentPicker dialog = new AccentPicker(); dialog.setTargetFragment(parent, 0); dialog.show(parent.getFragmentManager(), TAG_ACCENT_PICKER); } @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.SYBERIA; } }