package com.achep.acdisplay.ui.drawables;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.achep.acdisplay.Config;
import com.achep.base.content.ConfigBase;
/**
* Created by Artem Chepurnoy on 13.05.2015.
*/
public class CornerIconDrawable extends Drawable {
private final String mKey;
private Drawable mDrawable;
private int mActionId;
private int mAlpha;
/**
* A config listener.
*/
@NonNull
private final ConfigBase.OnConfigChangedListener mConfigListener =
new ConfigBase.OnConfigChangedListener() {
@Override
public void onConfigChanged(@NonNull ConfigBase config,
@NonNull String key,
@NonNull Object value) {
if (key.equals(mKey)) update(config.getContext());
}
};
public CornerIconDrawable(@NonNull String key) {
mKey = key;
}
public void start(@NonNull Context context) {
Config.getInstance().registerListener(mConfigListener);
update(context);
}
public void stop() {
Config.getInstance().unregisterListener(mConfigListener);
}
private void update(@NonNull Context context) {
/*
Config config = Config.getInstance();
and_clear_current_drawable:
{
int actionId = (int) config.getOption(mKey).read(config);
if (mActionId == (mActionId = actionId)) return;
if (actionId == Config.CORNER_UNLOCK) break and_clear_current_drawable;
final int iconRes = CornerHelper.getIconResource(actionId);
Drawable drawable = ResUtils.getDrawable(context, iconRes);
if (drawable != null) {
drawable = drawable.mutate();
drawable.setAlpha(mAlpha);
drawable.setBounds(0, 0,
drawable.getIntrinsicWidth(),
drawable.getIntrinsicHeight());
// Update current bounds.
setBounds(drawable.getBounds());
}
setDrawable(drawable);
return;
}
setDrawable(null);
*/
}
private void setDrawable(@Nullable Drawable drawable) {
mDrawable = drawable;
}
/**
* {@inheritDoc}
*/
@Override
public void draw(Canvas canvas) {
if (mDrawable != null) mDrawable.draw(canvas);
}
/**
* {@inheritDoc}
*/
@Override
public void setAlpha(int alpha) {
if (mDrawable != null) mDrawable.setAlpha(alpha);
mAlpha = alpha;
}
/**
* {@inheritDoc}
*/
@Override
public void setColorFilter(ColorFilter cf) {
throw new RuntimeException();
}
/**
* {@inheritDoc}
*/
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}