mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.1 KiB
Java
79 lines
3.1 KiB
Java
package org.tasks.widget;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Intent;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.Canvas;
|
|
import android.graphics.drawable.AdaptiveIconDrawable;
|
|
import android.graphics.drawable.BitmapDrawable;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.os.Bundle;
|
|
import android.support.v4.content.ContextCompat;
|
|
|
|
import com.todoroo.astrid.api.Filter;
|
|
|
|
import org.tasks.R;
|
|
import org.tasks.activities.FilterSelectionActivity;
|
|
import org.tasks.analytics.Tracker;
|
|
import org.tasks.analytics.Tracking;
|
|
import org.tasks.injection.ActivityComponent;
|
|
import org.tasks.injection.InjectingAppCompatActivity;
|
|
import org.tasks.intents.TaskIntents;
|
|
import org.tasks.preferences.DefaultFilterProvider;
|
|
|
|
import javax.inject.Inject;
|
|
|
|
public class ShortcutConfigActivity extends InjectingAppCompatActivity {
|
|
|
|
private static final int REQUEST_FILTER = 1019;
|
|
|
|
@Inject DefaultFilterProvider defaultFilterProvider;
|
|
@Inject Tracker tracker;
|
|
|
|
@Override
|
|
public void onCreate(Bundle icicle) {
|
|
super.onCreate(icicle);
|
|
|
|
Intent intent = new Intent(this, FilterSelectionActivity.class);
|
|
intent.putExtra(FilterSelectionActivity.EXTRA_RETURN_FILTER, true);
|
|
startActivityForResult(intent, REQUEST_FILTER);
|
|
}
|
|
|
|
@Override
|
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
|
if (requestCode == REQUEST_FILTER) {
|
|
if (resultCode == Activity.RESULT_OK) {
|
|
tracker.reportEvent(Tracking.Events.WIDGET_ADD, getString(R.string.FSA_label));
|
|
Filter filter = data.getParcelableExtra(FilterSelectionActivity.EXTRA_FILTER);
|
|
String filterId = defaultFilterProvider.getFilterPreferenceValue(filter);
|
|
Intent shortcutIntent = TaskIntents.getTaskListByIdIntent(this, filterId);
|
|
|
|
Intent intent = new Intent();
|
|
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
|
|
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, filter.listingTitle);
|
|
Drawable launcher = ContextCompat.getDrawable(this, R.mipmap.ic_launcher);
|
|
if (launcher instanceof BitmapDrawable) {
|
|
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, ((BitmapDrawable) launcher).getBitmap());
|
|
} else if (launcher instanceof AdaptiveIconDrawable) {
|
|
Bitmap bitmap = Bitmap.createBitmap(launcher.getIntrinsicWidth(), launcher.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
|
|
Canvas canvas = new Canvas(bitmap);
|
|
launcher.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
|
|
launcher.draw(canvas);
|
|
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
|
|
}
|
|
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
|
|
setResult(RESULT_OK, intent);
|
|
}
|
|
|
|
finish();
|
|
} else {
|
|
super.onActivityResult(requestCode, resultCode, data);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void inject(ActivityComponent component) {
|
|
component.inject(this);
|
|
}
|
|
}
|