Featured lists fragment now mostly working, needs polish

pull/14/head
Sam Bosley 14 years ago
parent fb51a7334c
commit ba80ac686c

@ -96,8 +96,6 @@ public class TagViewFragment extends TaskListFragment {
private Filter originalFilter; private Filter originalFilter;
//private ImageAdapter galleryAdapter;
// --- UI initialization // --- UI initialization
@Override @Override
@ -142,7 +140,7 @@ public class TagViewFragment extends TaskListFragment {
*/ */
@Override @Override
protected View getListBody(ViewGroup root) { protected View getListBody(ViewGroup root) {
ViewGroup parent = (ViewGroup) getActivity().getLayoutInflater().inflate(R.layout.task_list_body_tag, root, false); ViewGroup parent = (ViewGroup) getActivity().getLayoutInflater().inflate(getTaskListBodyLayout(), root, false);
taskListView = super.getListBody(parent); taskListView = super.getListBody(parent);
parent.addView(taskListView); parent.addView(taskListView);
@ -150,6 +148,10 @@ public class TagViewFragment extends TaskListFragment {
return parent; return parent;
} }
protected int getTaskListBodyLayout() {
return R.layout.task_list_body_tag;
}
private void showListSettingsPopover() { private void showListSettingsPopover() {
if (!AstridPreferences.canShowPopover()) if (!AstridPreferences.canShowPopover())
return; return;
@ -295,7 +297,7 @@ public class TagViewFragment extends TaskListFragment {
Preferences.setLong(LAST_FETCH_KEY + tagData.getId(), DateUtilities.now()); Preferences.setLong(LAST_FETCH_KEY + tagData.getId(), DateUtilities.now());
} }
private void setUpMembersGallery() { protected void setUpMembersGallery() {
LinearLayout membersView = (LinearLayout)getView().findViewById(R.id.shared_with); LinearLayout membersView = (LinearLayout)getView().findViewById(R.id.shared_with);
membersView.setOnClickListener(settingsListener); membersView.setOnClickListener(settingsListener);
try { try {

@ -63,6 +63,8 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
@Autowired TagDataService tagDataService; @Autowired TagDataService tagDataService;
@Autowired GtasksPreferenceService gtasksPreferenceService; @Autowired GtasksPreferenceService gtasksPreferenceService;
protected boolean addUntaggedFilter = true;
/** Create filter from new tag object */ /** Create filter from new tag object */
@SuppressWarnings("nls") @SuppressWarnings("nls")
public static FilterWithCustomIntent filterFromTag(Context context, Tag tag, Criterion criterion) { public static FilterWithCustomIntent filterFromTag(Context context, Tag tag, Criterion criterion) {
@ -165,7 +167,8 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
} }
private FilterCategory filterFromTags(Tag[] tags, int name) { private FilterCategory filterFromTags(Tag[] tags, int name) {
Filter[] filters = new Filter[tags.length + 1]; int length = addUntaggedFilter ? tags.length + 1 : tags.length;
Filter[] filters = new Filter[length];
Context context = ContextManager.getContext(); Context context = ContextManager.getContext();
Resources r = context.getResources(); Resources r = context.getResources();
@ -174,18 +177,22 @@ public class TagFilterExposer extends BroadcastReceiver implements AstridFilterE
int themeFlags = isTablet ? ThemeService.FLAG_FORCE_LIGHT : 0; int themeFlags = isTablet ? ThemeService.FLAG_FORCE_LIGHT : 0;
// --- untagged // --- untagged
int untaggedLabel = gtasksPreferenceService.isLoggedIn() ? if (addUntaggedFilter) {
R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged; int untaggedLabel = gtasksPreferenceService.isLoggedIn() ?
Filter untagged = new Filter(r.getString(untaggedLabel), R.string.tag_FEx_untagged_w_astrid : R.string.tag_FEx_untagged;
r.getString(R.string.tag_FEx_untagged), Filter untagged = new Filter(r.getString(untaggedLabel),
TagService.untaggedTemplate(), r.getString(R.string.tag_FEx_untagged),
null); TagService.untaggedTemplate(),
untagged.listingIcon = ((BitmapDrawable)r.getDrawable( null);
ThemeService.getDrawable(R.drawable.gl_lists, themeFlags))).getBitmap(); untagged.listingIcon = ((BitmapDrawable)r.getDrawable(
filters[0] = untagged; ThemeService.getDrawable(R.drawable.gl_lists, themeFlags))).getBitmap();
filters[0] = untagged;
for(int i = 0; i < tags.length; i++) }
filters[i+1] = constructFilter(context, tags[i]);
for(int i = 0; i < tags.length; i++) {
int index = addUntaggedFilter ? i + 1 : i;
filters[index] = constructFilter(context, tags[i]);
}
FilterCategory filter = new FilterCategory(context.getString(name), filters); FilterCategory filter = new FilterCategory(context.getString(name), filters);
return filter; return filter;
} }

@ -1,28 +1,39 @@
package com.todoroo.astrid.tags.reusable; package com.todoroo.astrid.tags.reusable;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle;
import com.timsu.astrid.R; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.activity.TaskListActivity; import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.ui.MainMenuPopover;
public class FeaturedListActivity extends AstridActivity { public class FeaturedListActivity extends TaskListActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected Class<? extends FilterListFragment> getFilterListClass() {
super.onCreate(savedInstanceState); return FeaturedListFragment.class;
setContentView(R.layout.featured_list_activity);
} }
private static final int[] FORBIDDEN_MENU_ITEMS = {
TaskListFragment.MENU_NEW_FILTER_ID,
TaskListFragment.MENU_ADDONS_ID,
MainMenuPopover.MAIN_MENU_ITEM_FRIENDS
};
@Override @Override
public boolean onFilterItemClicked(FilterListItem item) { public boolean shouldAddMenuItem(int itemId) {
Intent taskList = new Intent(this, TaskListActivity.class); return AndroidUtilities.indexOf(FORBIDDEN_MENU_ITEMS, itemId) < 0;
taskList.putExtra(TaskListFragment.TOKEN_FILTER, item);
startActivity(taskList);
return true;
} }
@Override
public void mainMenuItemSelected(int item, Intent customIntent) {
if (item == MainMenuPopover.MAIN_MENU_ITEM_LISTS) {
finish();
return;
}
super.mainMenuItemSelected(item, customIntent);
}
} }

@ -27,6 +27,7 @@ public class FeaturedListFilterExposer extends TagFilterExposer {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
addUntaggedFilter = false;
FilterListItem[] listAsArray = prepareFilters(context); FilterListItem[] listAsArray = prepareFilters(context);
Intent broadcastIntent = new Intent(FeaturedListFilterAdapter.BROADCAST_SEND_FEATURED_LISTS); Intent broadcastIntent = new Intent(FeaturedListFilterAdapter.BROADCAST_SEND_FEATURED_LISTS);

@ -1,12 +1,15 @@
package com.todoroo.astrid.tags.reusable; package com.todoroo.astrid.tags.reusable;
import android.view.View;
import android.view.View.OnClickListener;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
public class FeaturedTaskListFragment extends TaskListFragment { public class FeaturedTaskListFragment extends TagViewFragment {
@Override @Override
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) { protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
@ -14,4 +17,31 @@ public class FeaturedTaskListFragment extends TaskListFragment {
cursor, sqlQueryTemplate, false, null); cursor, sqlQueryTemplate, false, null);
} }
@Override
protected void setupQuickAddBar() {
super.setupQuickAddBar();
quickAddBar.setVisibility(View.GONE);
}
@Override
public void onTaskListItemClicked(long taskId) {
// Do nothing
}
@Override
protected int getTaskListBodyLayout() {
return R.layout.task_list_body_featured_list;
}
@Override
protected void setUpMembersGallery() {
View clone = getView().findViewById(R.id.clone_list);
clone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
System.err.println("Cloning list");
}
});
}
} }

@ -2,10 +2,20 @@ package com.todoroo.astrid.tags.reusable;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.Task;
public class ReusableTaskAdapter extends TaskAdapter { public class ReusableTaskAdapter extends TaskAdapter {
@ -15,4 +25,56 @@ public class ReusableTaskAdapter extends TaskAdapter {
super(fragment, resource, c, query, autoRequery, onCompletedTaskListener); super(fragment, resource, c, query, autoRequery, onCompletedTaskListener);
} }
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
ViewGroup view = (ViewGroup)inflater.inflate(resource, parent, false);
ReusableTaskViewHolder viewHolder = new ReusableTaskViewHolder();
viewHolder.task = new Task();
viewHolder.clone = (ImageView) view.findViewById(R.id.clone_task);
viewHolder.title = (TextView) view.findViewById(R.id.title);
boolean showFullTaskTitle = Preferences.getBoolean(R.string.p_fullTaskTitle, false);
if (showFullTaskTitle) {
viewHolder.title.setMaxLines(Integer.MAX_VALUE);
}
view.setTag(viewHolder);
for(int i = 0; i < view.getChildCount(); i++)
view.getChildAt(i).setTag(viewHolder);
viewHolder.clone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Clone task
System.err.println("Cloning task");
}
});
return view;
}
@Override
public void bindView(View view, Context context, Cursor c) {
TodorooCursor<Task> cursor = (TodorooCursor<Task>)c;
ReusableTaskViewHolder viewHolder = (ReusableTaskViewHolder) view.getTag();
Task task = viewHolder.task;
task.clear();
task.readFromCursor(cursor);
viewHolder.title.setText(task.getValue(Task.TITLE));
if (Preferences.getBoolean(R.string.p_allowCompressedTaskRows, false)) {
view.setMinimumHeight(0);
} else {
view.setMinimumHeight(minRowHeight);
}
}
public static class ReusableTaskViewHolder {
public Task task;
public ImageView clone;
public TextView title;
}
} }

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="100">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="43dip"
android:layout_weight="1"
android:gravity="center"
android:background="?attr/asMembersHeaderBackground">
<TextView
android:id="@+id/clone_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
style="@style/TextAppearance"
android:textStyle="bold"
android:textColor="#333333"
android:text="@string/actfm_feat_list_clone"/>
<ImageView
android:id="@+id/members_edit"
android:layout_width="43dip"
android:layout_height="43dip"
android:padding="5dip"
android:layout_weight="1"
android:src="@drawable/list_settings"
android:scaleType="fitCenter"
android:visibility="gone"/>
</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 -->
</LinearLayout>

@ -270,6 +270,10 @@
<!-- share login: OAUTH Login Prompt --> <!-- share login: OAUTH Login Prompt -->
<string name="actfm_OLA_prompt">Please log in:</string> <string name="actfm_OLA_prompt">Please log in:</string>
<!-- ================================================ Featured Lists -->
<string name="actfm_feat_list_clone">Copy this list</string>
<!-- ================================================ Synchronization == --> <!-- ================================================ Synchronization == -->
<string name="actfm_status_title_logged_in">Status - Logged in as %s</string> <string name="actfm_status_title_logged_in">Status - Logged in as %s</string>

@ -163,8 +163,8 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
protected final HashMap<Long, Boolean> completedItems = new HashMap<Long, Boolean>(0); protected final HashMap<Long, Boolean> completedItems = new HashMap<Long, Boolean>(0);
protected OnCompletedTaskListener onCompletedTaskListener = null; protected OnCompletedTaskListener onCompletedTaskListener = null;
public boolean isFling = false; public boolean isFling = false;
private final int resource; protected final int resource;
private final LayoutInflater inflater; protected final LayoutInflater inflater;
private DetailLoaderThread detailLoader; private DetailLoaderThread detailLoader;
private ActionsLoaderThread actionsLoader; private ActionsLoaderThread actionsLoader;
private int fontSize; private int fontSize;
@ -174,7 +174,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
private final AtomicReference<String> query; private final AtomicReference<String> query;
private final int minRowHeight; protected final int minRowHeight;
// measure utilities // measure utilities
protected final Paint paint; protected final Paint paint;
@ -1008,7 +1008,6 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
public void notifyDataSetChanged() { public void notifyDataSetChanged() {
super.notifyDataSetChanged(); super.notifyDataSetChanged();
fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 18); fontSize = Preferences.getIntegerFromString(R.string.p_fontSize, 18);
} }
protected final View.OnClickListener completeBoxListener = new View.OnClickListener() { protected final View.OnClickListener completeBoxListener = new View.OnClickListener() {

Loading…
Cancel
Save