Finished polishing the featured list view

pull/14/head
Sam Bosley 13 years ago
parent 3e19213803
commit 4083d8ea8b

@ -123,7 +123,8 @@ public class TagViewFragment extends TaskListFragment {
((EditText) getView().findViewById(R.id.quickAddText)).setOnTouchListener(onTouch); ((EditText) getView().findViewById(R.id.quickAddText)).setOnTouchListener(onTouch);
View membersEdit = getView().findViewById(R.id.members_edit); View membersEdit = getView().findViewById(R.id.members_edit);
membersEdit.setOnClickListener(settingsListener); if (membersEdit != null)
membersEdit.setOnClickListener(settingsListener);
originalFilter = filter; originalFilter = filter;
} }
@ -165,8 +166,9 @@ public class TagViewFragment extends TaskListFragment {
if (!Preferences.getBoolean(R.string.p_showed_list_settings_help, false)) { if (!Preferences.getBoolean(R.string.p_showed_list_settings_help, false)) {
Preferences.setBoolean(R.string.p_showed_list_settings_help, true); Preferences.setBoolean(R.string.p_showed_list_settings_help, true);
View tabView = getView().findViewById(R.id.members_edit); View tabView = getView().findViewById(R.id.members_edit);
HelpInfoPopover.showPopover(getActivity(), tabView, if (tabView != null)
R.string.help_popover_list_settings, null); HelpInfoPopover.showPopover(getActivity(), tabView,
R.string.help_popover_list_settings, null);
} }
} }
@ -214,10 +216,10 @@ public class TagViewFragment extends TaskListFragment {
} }
postLoadTagData(); postLoadTagData();
setUpMembersGallery();
super.initializeData(); super.initializeData();
setUpMembersGallery();
if (extras.getBoolean(TOKEN_START_ACTIVITY, false)) { if (extras.getBoolean(TOKEN_START_ACTIVITY, false)) {
extras.remove(TOKEN_START_ACTIVITY); extras.remove(TOKEN_START_ACTIVITY);
activity.showComments(); activity.showComments();
@ -334,12 +336,15 @@ public class TagViewFragment extends TaskListFragment {
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} }
getView().findViewById(R.id.filter_assigned).setOnClickListener(new OnClickListener() {
@Override View filterAssigned = getView().findViewById(R.id.filter_assigned);
public void onClick(View v) { if (filterAssigned != null)
resetAssignedFilter(); filterAssigned.setOnClickListener(new OnClickListener() {
} @Override
}); public void onClick(View v) {
resetAssignedFilter();
}
});
} }
@SuppressWarnings("nls") @SuppressWarnings("nls")
@ -395,11 +400,13 @@ public class TagViewFragment extends TaskListFragment {
Criterion assigned = Criterion.and(TaskCriteria.activeAndVisible(), assignedCriterion); Criterion assigned = Criterion.and(TaskCriteria.activeAndVisible(), assignedCriterion);
filter = TagFilterExposer.filterFromTag(getActivity(), new Tag(tagData), assigned); filter = TagFilterExposer.filterFromTag(getActivity(), new Tag(tagData), assigned);
TextView filterByAssigned = (TextView) getView().findViewById(R.id.filter_assigned); TextView filterByAssigned = (TextView) getView().findViewById(R.id.filter_assigned);
filterByAssigned.setVisibility(View.VISIBLE); if (filterByAssigned != null) {
if (id == Task.USER_ID_UNASSIGNED) filterByAssigned.setVisibility(View.VISIBLE);
filterByAssigned.setText(getString(R.string.actfm_TVA_filter_by_unassigned)); if (id == Task.USER_ID_UNASSIGNED)
else filterByAssigned.setText(getString(R.string.actfm_TVA_filter_by_unassigned));
filterByAssigned.setText(getString(R.string.actfm_TVA_filtered_by_assign, displayName)); else
filterByAssigned.setText(getString(R.string.actfm_TVA_filtered_by_assign, displayName));
}
setUpTaskList(); setUpTaskList();
} }
} }
@ -416,7 +423,9 @@ public class TagViewFragment extends TaskListFragment {
private void resetAssignedFilter() { private void resetAssignedFilter() {
currentId = Task.USER_ID_IGNORE; currentId = Task.USER_ID_IGNORE;
filter = originalFilter; filter = originalFilter;
getView().findViewById(R.id.filter_assigned).setVisibility(View.GONE); View filterAssigned = getView().findViewById(R.id.filter_assigned);
if (filterAssigned != null)
filterAssigned.setVisibility(View.GONE);
setUpTaskList(); setUpTaskList();
} }

@ -2,8 +2,15 @@ package com.todoroo.astrid.tags.reusable;
import android.app.Activity; import android.app.Activity;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.content.Intent;
import android.content.res.Resources;
import android.support.v4.view.Menu;
import android.support.v4.view.MenuItem;
import android.text.TextUtils;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@ -16,6 +23,7 @@ import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.helper.AsyncImageView;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
@ -23,6 +31,8 @@ public class FeaturedTaskListFragment extends TagViewFragment {
@Autowired private TagDataService tagDataService; @Autowired private TagDataService tagDataService;
private static final int MENU_CLONE_LIST = R.string.actfm_feat_list_clone;
@Override @Override
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) { protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
return new ReusableTaskAdapter(this, R.layout.reusable_task_adapter_row, return new ReusableTaskAdapter(this, R.layout.reusable_task_adapter_row,
@ -46,61 +56,104 @@ public class FeaturedTaskListFragment extends TagViewFragment {
return R.layout.task_list_body_featured_list; return R.layout.task_list_body_featured_list;
} }
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
MenuItem item = menu.add(Menu.NONE, MENU_CLONE_LIST, 0, R.string.actfm_feat_list_clone);
item.setIcon(R.drawable.ic_menu_list_copy);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
@Override
public boolean handleOptionsMenuItemSelected(int id, Intent intent) {
if (id == MENU_CLONE_LIST) {
cloneList();
return true;
}
return super.handleOptionsMenuItemSelected(id, intent);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// Do nothing
}
@Override @Override
protected void setUpMembersGallery() { protected void setUpMembersGallery() {
// Repurposed this method to set up listener for clone list button // Repurposed this method to set up the description view
View clone = getView().findViewById(R.id.clone_list); AsyncImageView imageView = (AsyncImageView) getView().findViewById(R.id.url_image);
clone.setOnClickListener(new OnClickListener() { String imageUrl = tagData.getValue(TagData.PICTURE);
if (!TextUtils.isEmpty(imageUrl)) {
imageView.setVisibility(View.VISIBLE);
imageView.setDefaultImageResource(R.drawable.default_list_0);
imageView.setUrl(imageUrl);
} else {
imageView.setVisibility(View.GONE);
}
final String description = tagData.getValue(TagData.TAG_DESCRIPTION);
final Resources r = getActivity().getResources();
TextView desc = (TextView) getView().findViewById(R.id.feat_list_desc);
desc.setText(description);
desc.setLines(4);
desc.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
// Clone list DialogUtilities.okDialog(getActivity(), r.getString(R.string.DLG_information_title),
if (taskAdapter == null || taskAdapter.getCount() == 0) { 0, description, null);
Toast.makeText(getActivity(), R.string.actfm_feat_list_clone_empty, Toast.LENGTH_LONG).show(); }
return; });
} }
final String localName = tagData.getValue(TagData.NAME) + " " + getString(R.string.actfm_feat_list_suffix); //$NON-NLS-1$
long remoteId = 0; private void cloneList() {
TodorooCursor<TagData> existing = tagDataService.query(Query.select(TagData.REMOTE_ID) // Clone list
.where(TagData.NAME.eqCaseInsensitive(localName))); if (taskAdapter == null || taskAdapter.getCount() == 0) {
Toast.makeText(getActivity(), R.string.actfm_feat_list_clone_empty, Toast.LENGTH_LONG).show();
return;
}
final String localName = tagData.getValue(TagData.NAME) + " " + getString(R.string.actfm_feat_list_suffix); //$NON-NLS-1$
long remoteId = 0;
TodorooCursor<TagData> 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();
}
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<Task> tasks = taskService.fetchFiltered(taskAdapter.getQuery(), null, Task.PROPERTIES);
try { try {
if (existing.getCount() > 0) { Task t = new Task();
existing.moveToFirst(); for (tasks.moveToFirst(); !tasks.isAfterLast(); tasks.moveToNext()) {
TagData match = new TagData(existing); t.readFromCursor(tasks);
remoteId = match.getValue(TagData.REMOTE_ID); 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 { } finally {
existing.close(); tasks.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<Task> 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();
}
}
}).start();
} }
}); }).start();
} }
@Override @Override

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 B

@ -6,50 +6,34 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="100"> android:layout_weight="100">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout <LinearLayout
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="43dip" android:layout_height="wrap_content"
android:layout_weight="1" android:layout_weight="1"
android:gravity="center" android:background="?attr/asMembersHeaderBackground"
android:background="?attr/asMembersHeaderBackground"> android:padding="15dip"
android:gravity="center_vertical">
<com.todoroo.astrid.helper.AsyncImageView
android:id="@+id/url_image"
android:layout_width="75dip"
android:layout_height="75dip"
android:scaleType="fitCenter"/>
<TextView <TextView
android:id="@+id/clone_list" android:id="@+id/feat_list_desc"
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:gravity="center" android:gravity="left"
android:paddingLeft="15dip"
style="@style/TextAppearance" style="@style/TextAppearance"
android:textStyle="bold" android:textStyle="bold"
android:textColor="#333333" android:textColor="#333333"
android:text="@string/actfm_feat_list_clone"/> android:singleLine="false"
<ImageView android:lines="4"
android:id="@+id/members_edit" android:ellipsize="end"/>
android:layout_width="43dip" <!-- For some reason this degrades to two lines on
android:layout_height="43dip" pre-ICS phones. May be an OS bug with ellipsize-->
android:padding="5dip"
android:layout_weight="1"
android:src="@drawable/list_settings"
android:scaleType="fitCenter"
android:visibility="gone"/>
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/filter_assigned"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:paddingTop="3dip"
android:paddingBottom="3dip"
style="@style/TextAppearance"
android:background="@android:color/darker_gray"
android:visibility="gone"/>
</LinearLayout>
<!-- List body goes here --> <!-- List body goes here -->

@ -273,7 +273,7 @@
<!-- ================================================ Featured Lists --> <!-- ================================================ Featured Lists -->
<string name="actfm_feat_list_clone">Copy this list</string> <string name="actfm_feat_list_clone">Copy list</string>
<string name="actfm_feat_list_suffix">(Copy)</string> <string name="actfm_feat_list_suffix">(Copy)</string>

Loading…
Cancel
Save