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.
107 lines
3.4 KiB
Java
107 lines
3.4 KiB
Java
9 years ago
|
package org.tasks.dashclock;
|
||
|
|
||
|
import android.content.BroadcastReceiver;
|
||
|
import android.content.Context;
|
||
|
import android.content.Intent;
|
||
|
import android.content.IntentFilter;
|
||
|
|
||
|
import com.google.android.apps.dashclock.api.ExtensionData;
|
||
|
import com.todoroo.astrid.activity.TaskListActivity;
|
||
|
import com.todoroo.astrid.api.AstridApiConstants;
|
||
|
import com.todoroo.astrid.api.Filter;
|
||
|
import com.todoroo.astrid.dao.TaskDao;
|
||
|
import com.todoroo.astrid.data.Task;
|
||
|
|
||
|
import org.tasks.R;
|
||
8 years ago
|
import org.tasks.injection.InjectingApplication;
|
||
9 years ago
|
import org.tasks.preferences.DefaultFilterProvider;
|
||
|
import org.tasks.preferences.Preferences;
|
||
|
|
||
|
import java.util.List;
|
||
|
|
||
|
import javax.inject.Inject;
|
||
|
|
||
9 years ago
|
import timber.log.Timber;
|
||
|
|
||
8 years ago
|
public class DashClockExtension extends com.google.android.apps.dashclock.api.DashClockExtension {
|
||
9 years ago
|
|
||
|
@Inject DefaultFilterProvider defaultFilterProvider;
|
||
|
@Inject TaskDao taskDao;
|
||
|
@Inject Preferences preferences;
|
||
|
|
||
|
private final BroadcastReceiver refreshReceiver = new BroadcastReceiver() {
|
||
|
@Override
|
||
|
public void onReceive(Context context, Intent intent) {
|
||
|
refresh();
|
||
|
}
|
||
|
};
|
||
|
|
||
|
@Override
|
||
|
public void onCreate() {
|
||
|
super.onCreate();
|
||
|
|
||
8 years ago
|
((InjectingApplication) getApplication())
|
||
|
.getComponent()
|
||
|
.inject(this);
|
||
|
|
||
9 years ago
|
registerReceiver(refreshReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void onDestroy() {
|
||
|
super.onDestroy();
|
||
|
|
||
|
unregisterReceiver(refreshReceiver);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
protected void onUpdateData(int i) {
|
||
|
refresh();
|
||
|
}
|
||
|
|
||
|
private void refresh() {
|
||
|
if (preferences.hasPurchase(R.string.p_purchased_dashclock)) {
|
||
|
final String filterPreference = preferences.getStringValue(R.string.p_dashclock_filter);
|
||
|
Filter filter = defaultFilterProvider.getFilterFromPreference(filterPreference);
|
||
|
|
||
|
int count = taskDao.count(filter);
|
||
|
|
||
|
if (count == 0) {
|
||
9 years ago
|
publish(null);
|
||
9 years ago
|
} else {
|
||
8 years ago
|
Intent clickIntent = new Intent(this, TaskListActivity.class);
|
||
|
clickIntent.putExtra(TaskListActivity.LOAD_FILTER, filterPreference);
|
||
9 years ago
|
ExtensionData extensionData = new ExtensionData()
|
||
|
.visible(true)
|
||
|
.icon(R.drawable.ic_check_white_24dp)
|
||
|
.status(Integer.toString(count))
|
||
|
.expandedTitle(getString(R.string.task_count, count))
|
||
|
.expandedBody(filter.listingTitle)
|
||
8 years ago
|
.clickIntent(clickIntent);
|
||
9 years ago
|
if (count == 1) {
|
||
|
List<Task> tasks = taskDao.query(filter);
|
||
|
if (!tasks.isEmpty()) {
|
||
|
extensionData.expandedTitle(tasks.get(0).getTitle());
|
||
|
}
|
||
|
}
|
||
9 years ago
|
publish(extensionData);
|
||
9 years ago
|
}
|
||
|
} else {
|
||
9 years ago
|
publish(new ExtensionData()
|
||
9 years ago
|
.visible(true)
|
||
|
.icon(R.drawable.ic_check_white_24dp)
|
||
|
.status(getString(R.string.buy))
|
||
|
.expandedTitle(getString(R.string.buy_dashclock_extension))
|
||
9 years ago
|
.clickIntent(new Intent(this, DashClockSettings.class)));
|
||
9 years ago
|
}
|
||
|
}
|
||
9 years ago
|
|
||
|
private void publish(ExtensionData data) {
|
||
|
try {
|
||
|
publishUpdate(data);
|
||
|
} catch (Exception e) {
|
||
|
Timber.e(e, e.getMessage());
|
||
|
}
|
||
|
}
|
||
9 years ago
|
}
|