From ff853e0ce04683f7fa6f324dc18dee60f8673872 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Tue, 26 Jun 2012 17:55:11 -0700 Subject: [PATCH] Localized strings and added progress dialog to cloning process --- .../reusable/FeaturedTaskListFragment.java | 84 +++++++++++-------- .../tags/reusable/ReusableTaskAdapter.java | 2 + astrid/res/values/strings-actfm.xml | 10 +++ 3 files changed, 62 insertions(+), 34 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java index ccc212feb..43e8d6851 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/FeaturedTaskListFragment.java @@ -1,8 +1,11 @@ package com.todoroo.astrid.tags.reusable; +import android.app.Activity; +import android.app.ProgressDialog; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; +import android.widget.Toast; import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; @@ -47,44 +50,57 @@ public class FeaturedTaskListFragment extends TagViewFragment { protected void setUpMembersGallery() { // Repurposed this method to set up listener for clone list button View clone = getView().findViewById(R.id.clone_list); - if (taskAdapter == null || taskAdapter.getCount() == 0) { - clone.setOnClickListener(null); - } else { - clone.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - // Clone list - String localName = tagData.getValue(TagData.NAME) + " (Copy)"; - long remoteId = 0; - TodorooCursor existing = tagDataService.query(Query.select(TagData.REMOTE_ID) - .where(TagData.NAME.eqCaseInsensitive(localName))); - try { - if (existing.getCount() > 0) { - existing.moveToFirst(); - TagData match = new TagData(existing); - remoteId = match.getValue(TagData.REMOTE_ID); - } - - } finally { - existing.close(); + clone.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + // Clone list + if (taskAdapter == null || taskAdapter.getCount() == 0) { + Toast.makeText(getActivity(), R.string.actfm_feat_list_clone_empty, Toast.LENGTH_LONG); + return; + } + final String localName = tagData.getValue(TagData.NAME) + " " + getString(R.string.actfm_feat_list_suffix); //$NON-NLS-1$ + long remoteId = 0; + TodorooCursor existing = tagDataService.query(Query.select(TagData.REMOTE_ID) + .where(TagData.NAME.eqCaseInsensitive(localName))); + try { + if (existing.getCount() > 0) { + existing.moveToFirst(); + TagData match = new TagData(existing); + remoteId = match.getValue(TagData.REMOTE_ID); } - TodorooCursor tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES); - try { - Task t = new Task(); - for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { - t.readFromCursor(tasks); - taskService.cloneReusableTask(t, - localName, remoteId); + } finally { + existing.close(); + } + + final ProgressDialog pd = DialogUtilities.progressDialog(getActivity(), getString(R.string.actfm_feat_list_cloning)); + + final long finalRemoteId = remoteId; + new Thread(new Runnable() { + @Override + public void run() { + TodorooCursor tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES); + try { + Task t = new Task(); + for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) { + t.readFromCursor(tasks); + taskService.cloneReusableTask(t, + localName, finalRemoteId); + } + Activity activity = getActivity(); + if (activity != null) { + DialogUtilities.dismissDialog(activity, pd); + DialogUtilities.okDialog(activity, getString(R.string.actfm_feat_list_clone_success), null); + } + + Flags.set(Flags.REFRESH); + } finally { + tasks.close(); } - Flags.set(Flags.REFRESH); - DialogUtilities.okDialog(getActivity(), "Success!", null); - } finally { - tasks.close(); } - } - }); - } + }).start(); + } + }); } @Override diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/ReusableTaskAdapter.java b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/ReusableTaskAdapter.java index 48a1d8dc9..f36de3c78 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/reusable/ReusableTaskAdapter.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/reusable/ReusableTaskAdapter.java @@ -9,6 +9,7 @@ import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; @@ -49,6 +50,7 @@ public class ReusableTaskAdapter extends TaskAdapter { public void onClick(View v) { ReusableTaskViewHolder holder = (ReusableTaskViewHolder) v.getTag(); taskService.cloneReusableTask(holder.task, null, 0); + Toast.makeText(fragment.getActivity(), R.string.actfm_feat_list_task_clone_success, Toast.LENGTH_LONG); Flags.set(Flags.REFRESH); } }); diff --git a/astrid/res/values/strings-actfm.xml b/astrid/res/values/strings-actfm.xml index d9dbb2fe1..20f9c061c 100644 --- a/astrid/res/values/strings-actfm.xml +++ b/astrid/res/values/strings-actfm.xml @@ -274,6 +274,16 @@ Copy this list + (Copy) + + Copying... + + Success! + + Task copied + + No tasks to copy + Status - Logged in as %s