Show analytic snackbar from task list activity

pull/384/head
Alex Baker 9 years ago
parent 7de4e98746
commit 452fd35d2e

@ -10,6 +10,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.graphics.drawable.DrawableCompat;
@ -31,6 +32,7 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.actfm.FilterSettingsActivity;
import com.todoroo.astrid.actfm.TagSettingsActivity;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.CustomFilter;
import com.todoroo.astrid.api.Filter;
@ -52,7 +54,9 @@ import com.todoroo.astrid.widget.TasksWidget;
import org.tasks.R;
import org.tasks.activities.SortActivity;
import org.tasks.analytics.Tracker;
import org.tasks.preferences.ActivityPreferences;
import org.tasks.preferences.BasicPreferences;
import org.tasks.receivers.RepeatConfirmationReceiver;
import org.tasks.ui.MenuColorizer;
import org.tasks.ui.NavigationDrawerFragment;
@ -71,6 +75,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
@Inject GtasksPreferenceService gtasksPreferenceService;
@Inject VoiceInputAssistant voiceInputAssistant;
@Inject BuiltInFilters builtInFilters;
@Inject Tracker tracker;
private static final int REQUEST_EDIT_TAG = 11543;
private static final int REQUEST_EDIT_FILTER = 11544;
@ -149,17 +154,13 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
Filter savedFilter = getIntent().getParcelableExtra(TaskListFragment.TOKEN_FILTER);
if (savedFilter == null) {
savedFilter = getDefaultFilter();
savedFilter = builtInFilters.getMyTasks();
extras.putAll(configureIntentAndExtrasWithFilter(getIntent(), savedFilter));
}
extras.putParcelable(TaskListFragment.TOKEN_FILTER, savedFilter);
setupTasklistFragmentWithFilter(savedFilter, extras);
if (savedFilter != null) {
setListsTitle(savedFilter.listingTitle);
}
setListsTitle(savedFilter.listingTitle);
}
public NavigationDrawerFragment getNavigationDrawerFragment() {
@ -204,8 +205,11 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
completed.setEnabled(false);
} else if(tlf instanceof TagViewFragment) {
menu.findItem(R.id.menu_tag_settings).setVisible(true);
} else if(tlf.getFilter() instanceof CustomFilter && ((CustomFilter) tlf.getFilter()).getId() > 0) {
menu.findItem(R.id.menu_filter_settings).setVisible(true);
} else {
Filter filter = tlf.getFilter();
if(filter != null && filter instanceof CustomFilter && ((CustomFilter) filter).getId() > 0) {
menu.findItem(R.id.menu_filter_settings).setVisible(true);
}
}
if (tlf instanceof SubtasksTagListFragment || tlf instanceof SubtasksListFragment) {
@ -249,10 +253,6 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
return true;
}
protected Filter getDefaultFilter() {
return builtInFilters.getMyTasks();
}
@Override
public boolean onFilterItemClicked(FilterListItem item) {
TaskEditFragment.removeExtrasFromIntent(getIntent());
@ -295,8 +295,7 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
try {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.tasklist_fragment_container, newFragment,
TaskListFragment.TAG_TASKLIST_FRAGMENT);
transaction.replace(R.id.tasklist_fragment_container, newFragment, TaskListFragment.TAG_TASKLIST_FRAGMENT);
transaction.commit();
runOnUiThread(new Runnable() {
@Override
@ -359,6 +358,33 @@ public class TaskListActivity extends AstridActivity implements OnPageChangeList
if (getIntent().getBooleanExtra(TOKEN_CREATE_NEW_LIST, false)) {
newListFromLaunch();
}
if (getResources().getBoolean(R.bool.google_play_store_available) &&
!preferences.getBoolean(R.string.p_collect_statistics_notification, false)) {
try {
View taskList = findViewById(R.id.task_list_coordinator);
String text = getString(R.string.anonymous_usage_blurb);
//noinspection ResourceType
Snackbar.make(taskList, text, 10000)
.setActionTextColor(getResources().getColor(R.color.snackbar_undo))
.setCallback(new Snackbar.Callback() {
@Override
public void onDismissed(Snackbar snackbar, int event) {
preferences.setBoolean(R.string.p_collect_statistics_notification, true);
}
})
.setAction(R.string.opt_out, new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(TaskListActivity.this, BasicPreferences.class), FilterAdapter.REQUEST_SETTINGS);
}
})
.show();
} catch (Exception e) {
Timber.e(e, e.getMessage());
tracker.reportException(e);
}
}
}
private void newListFromLaunch() {

@ -206,6 +206,10 @@ public class Filter extends FilterListItem {
@Override
public String toString() {
return listingTitle;
return "Filter{" +
"sqlQuery='" + sqlQuery + '\'' +
", filterOverride='" + filterOverride + '\'' +
", valuesForNewTasks=" + valuesForNewTasks +
'}';
}
}

@ -10,15 +10,10 @@ import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteException;
import android.preference.PreferenceManager;
import android.support.design.widget.Snackbar;
import android.view.View;
import com.todoroo.andlib.data.DatabaseDao.ModelUpdateListener;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.activity.AstridActivity;
import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database;
@ -37,9 +32,7 @@ import com.todoroo.astrid.tags.TaskToTagMetadata;
import org.tasks.Broadcaster;
import org.tasks.BuildConfig;
import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.preferences.BasicPreferences;
import org.tasks.preferences.Preferences;
import java.io.File;
@ -68,16 +61,14 @@ public class StartupService {
private final Preferences preferences;
private final TasksXmlImporter xmlImporter;
private final TaskDeleter taskDeleter;
private Broadcaster broadcaster;
private DialogBuilder dialogBuilder;
private Tracker tracker;
private final Broadcaster broadcaster;
private final DialogBuilder dialogBuilder;
@Inject
public StartupService(TagDataDao tagDataDao, Database database, GtasksPreferenceService gtasksPreferenceService,
GtasksSyncService gtasksSyncService, MetadataDao metadataDao,
Preferences preferences, TasksXmlImporter xmlImporter,
TaskDeleter taskDeleter, Broadcaster broadcaster, DialogBuilder dialogBuilder,
Tracker tracker) {
TaskDeleter taskDeleter, Broadcaster broadcaster, DialogBuilder dialogBuilder) {
this.tagDataDao = tagDataDao;
this.database = database;
this.gtasksPreferenceService = gtasksPreferenceService;
@ -88,7 +79,6 @@ public class StartupService {
this.taskDeleter = taskDeleter;
this.broadcaster = broadcaster;
this.dialogBuilder = dialogBuilder;
this.tracker = tracker;
}
/**
@ -151,34 +141,6 @@ public class StartupService {
gtasksPreferenceService.stopOngoing();
gtasksSyncService.initialize();
if (activity.getResources().getBoolean(R.bool.google_play_store_available) &&
!preferences.getBoolean(R.string.p_collect_statistics_notification, false) &&
activity instanceof TaskListActivity) {
preferences.setBoolean(R.string.p_collect_statistics_notification, true);
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
View taskList = activity.findViewById(R.id.task_list_body);
String text = activity.getString(R.string.anonymous_usage_blurb);
//noinspection ResourceType
Snackbar.make(taskList, text, 10000)
.setActionTextColor(activity.getResources().getColor(R.color.snackbar_undo))
.setAction(R.string.opt_out, new View.OnClickListener() {
@Override
public void onClick(View v) {
activity.startActivityForResult(new Intent(activity, BasicPreferences.class), FilterAdapter.REQUEST_SETTINGS);
}
})
.show();
} catch (Exception e) {
Timber.e(e, e.getMessage());
tracker.reportException(e);
}
}
});
}
}
}).start();

@ -52,7 +52,7 @@ public class RepeatConfirmationReceiver extends InjectingBroadcastReceiver {
Task task = taskService.fetchById(taskId, REPEAT_RESCHEDULED_PROPERTIES);
try {
showSnackbar(activity.findViewById(R.id.task_list_body), task, oldDueDate, newDueDate);
showSnackbar(activity.findViewById(R.id.task_list_coordinator), task, oldDueDate, newDueDate);
} catch (WindowManager.BadTokenException e) { // Activity not running when tried to show dialog--rebroadcast
Timber.e(e, e.getMessage());
new Thread() {

@ -5,6 +5,7 @@
-->
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/task_list_coordinator"
android:background="?attr/asContentBackground"
android:layout_width="fill_parent"
android:layout_height="fill_parent"

Loading…
Cancel
Save