package tk.wasdennnoch.androidn_ify.systemui.qs.tiles;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import com.android.egg.neko.Food;
import com.android.egg.neko.NekoLand;
import com.android.egg.neko.NekoLockedActivity;
import tk.wasdennnoch.androidn_ify.R;
import tk.wasdennnoch.androidn_ify.XposedHook;
import tk.wasdennnoch.androidn_ify.systemui.qs.TilesManager;
public class NekoTile extends QSTile {
public static final String TILE_SPEC = "neko";
private static final String TAG = "NekoTile";
private static final String ACTION_UPDATE_STATE = "tk.wasdennnoch.androidn_ify.action.ACTION_NEKO_UPDATE_STATE";
private static final String EXTRA_ICON = "EXTRA_ICON";
private static final String EXTRA_NAME = "EXTRA_NAME";
private int mIcon = R.drawable.food_dish;
private String mName;
public NekoTile(TilesManager tilesManager, Object host, String key) {
super(tilesManager, host, key);
mName = mResUtils.getResources().getStringArray(R.array.food_names)[0];
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(NekoTile.ACTION_UPDATE_STATE);
mContext.registerReceiver(mBroadcastReceiver, intentFilter);
}
@Override
public void handleDestroy() {
mContext.unregisterReceiver(mBroadcastReceiver);
super.handleDestroy();
}
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
XposedHook.logD(TAG, "Broadcast received, action: " + intent.getAction());
switch (intent.getAction()) {
case ACTION_UPDATE_STATE:
updateState(intent);
break;
}
}
};
private void updateState(Intent intent) {
mIcon = intent.getIntExtra(EXTRA_ICON, 0);
mName = intent.getStringExtra(EXTRA_NAME);
refreshState();
}
@Override
public void handleUpdateState(Object state, Object arg) {
Drawable icon = mResUtils.getDrawable(mIcon);
icon.setTint(mIcon == R.drawable.food_dish ? 0x4DFFFFFF : 0xFFFFFFFF);
mState.icon = icon;
mState.label = mName;
super.handleUpdateState(state, arg);
}
@Override
public void handleClick() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("tk.wasdennnoch.androidn_ify",
NekoLockedActivity.class.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityDismissingKeyguard(intent);
}
@Override
public void handleLongClick() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("tk.wasdennnoch.androidn_ify",
NekoLand.class.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityDismissingKeyguard(intent);
}
public static void sendUpdate(Food food, Context context) {
Intent intent = new Intent(NekoTile.ACTION_UPDATE_STATE);
intent.putExtra(NekoTile.EXTRA_ICON, food.getIcon(context));
intent.putExtra(NekoTile.EXTRA_NAME, food.getName(context));
context.sendBroadcast(intent);
}
}