Commit all the things--mostly working people view

pull/14/head
Sam Bosley 13 years ago
parent 6060b21757
commit 0ed664a663

@ -8,6 +8,7 @@ package com.todoroo.astrid.data;
import android.content.ContentValues; import android.content.ContentValues;
import android.net.Uri; import android.net.Uri;
import android.text.TextUtils;
import com.todoroo.andlib.data.AbstractModel; import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property; import com.todoroo.andlib.data.Property;
@ -91,6 +92,13 @@ public final class User extends RemoteModel {
super.readPropertiesFromCursor(cursor); super.readPropertiesFromCursor(cursor);
} }
public String getDisplayName() {
String name = getValue(NAME);
if (!TextUtils.isEmpty(name))
return name;
return getValue(EMAIL);
}
@Override @Override
public long getId() { public long getId() {
return getIdHelper(ID); return getIdHelper(ID);

@ -320,6 +320,16 @@
<activity android:name="com.todoroo.astrid.tags.TagFilterExposer$DeleteTagActivity" android:theme="@style/Theme.FullTransparent" /> <activity android:name="com.todoroo.astrid.tags.TagFilterExposer$DeleteTagActivity" android:theme="@style/Theme.FullTransparent" />
<activity android:name="com.todoroo.astrid.tags.TagFilterExposer$RenameTagActivity" android:theme="@style/Theme.FullTransparent" /> <activity android:name="com.todoroo.astrid.tags.TagFilterExposer$RenameTagActivity" android:theme="@style/Theme.FullTransparent" />
<!-- People view -->
<receiver android:name="com.todoroo.astrid.people.PeopleFilterExposer">
<intent-filter>
<action android:name="com.timsu.astrid.REQUEST_PEOPLE_FILTERS"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</receiver>
<activity android:name="com.todoroo.astrid.people.PeopleViewActivity"
android:windowSoftInputMode="stateHidden|adjustResize"/>
<!-- alarms --> <!-- alarms -->
<receiver android:name="com.todoroo.astrid.alarms.AlarmTaskRepeatListener"> <receiver android:name="com.todoroo.astrid.alarms.AlarmTaskRepeatListener">
<intent-filter> <intent-filter>

@ -8,6 +8,7 @@ import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria;
import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.dao.UserDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.service.AddOnService; import com.todoroo.astrid.service.AddOnService;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
@ -44,6 +45,9 @@ public final class PluginServices {
@Autowired @Autowired
StoreObjectDao storeObjectDao; StoreObjectDao storeObjectDao;
@Autowired
UserDao userDao;
private static PluginServices instance; private static PluginServices instance;
static { static {
@ -86,6 +90,10 @@ public final class PluginServices {
return getInstance().storeObjectDao; return getInstance().storeObjectDao;
} }
public static UserDao getUserDao() {
return getInstance().userDao;
}
// -- helpers // -- helpers
/** /**

@ -0,0 +1,38 @@
package com.todoroo.astrid.people;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
import android.widget.ListView;
import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.utility.Constants;
public class PeopleFilterAdapter extends FilterAdapter {
public static final String BROADCAST_REQUEST_PEOPLE_FILTERS = Constants.PACKAGE + ".REQUEST_PEOPLE_FILTERS"; //$NON-NLS-1$
public static final String BROADCAST_SEND_PEOPLE_FILTERS = Constants.PACKAGE + ".SEND_PEOPLE_FILTERS"; //$NON-NLS-1$
public PeopleFilterAdapter(Activity activity, ListView listView,
int rowLayout, boolean skipIntentFilters) {
super(activity, listView, rowLayout, skipIntentFilters);
}
@Override
public void getLists() {
Intent broadcastIntent = new Intent(BROADCAST_REQUEST_PEOPLE_FILTERS);
activity.sendBroadcast(broadcastIntent);
}
@Override
public void registerRecevier() {
IntentFilter peopleFilter = new IntentFilter(BROADCAST_SEND_PEOPLE_FILTERS);
activity.registerReceiver(filterReceiver, peopleFilter);
getLists();
}
@Override
public void unregisterRecevier() {
activity.unregisterReceiver(filterReceiver);
}
}

@ -0,0 +1,113 @@
package com.todoroo.astrid.people;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Field;
import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.Query;
import com.todoroo.andlib.sql.QueryTemplate;
import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.api.FilterWithUpdate;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.tags.TagService;
public class PeopleFilterExposer extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
FilterListItem[] listAsArray = prepareFilters(context);
Intent broadcastIntent = new Intent(PeopleFilterAdapter.BROADCAST_SEND_PEOPLE_FILTERS);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, listAsArray);
broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, "people"); //$NON-NLS-1$
context.sendBroadcast(broadcastIntent);
}
private FilterListItem[] prepareFilters(Context context) {
TodorooCursor<User> users = PluginServices.getUserDao().query(Query.select(User.PROPERTIES)
.orderBy(Order.asc(User.NAME), Order.asc(User.EMAIL)));
try {
FilterListItem[] items = new FilterListItem[users.getCount()];
User user = new User();
int i = 0;
for (users.moveToFirst(); !users.isAfterLast(); users.moveToNext()) {
user.readFromCursor(users);
Filter currFilter = filterFromUserData(user);
items[i] = currFilter;
i++;
}
return items;
} finally {
users.close();
}
}
@SuppressWarnings("nls")
public static FilterWithCustomIntent filterFromUserData(User user) {
String email = user.getValue(User.EMAIL);
String[] tags;
TodorooCursor<TagData> tagsWithUser = PluginServices.getTagDataService().query(Query.select(TagData.NAME)
.where(Criterion.or(
TagData.MEMBERS.like("%" + email + "%"),
TagData.USER.like("%" + email + "%"),
TagData.USER_ID.eq(user.getId()))));
try {
if (tagsWithUser.getCount() == 0) {
tags = new String[1];
tags[0] = "\"\"";
} else {
tags = new String[tagsWithUser.getCount()];
int i = 0;
TagData curr = new TagData();
for (tagsWithUser.moveToFirst(); !tagsWithUser.isAfterLast(); tagsWithUser.moveToNext()) {
curr.readFromCursor(tagsWithUser);
tags[i] = "\"" + curr.getValue(TagData.NAME) + "\"";
i++;
}
}
} finally {
tagsWithUser.close();
}
String title = user.getDisplayName();
QueryTemplate userTemplate = new QueryTemplate().join(Join.inner(Metadata.TABLE.as("mtags"),
Criterion.and(Task.ID.eq(Field.field("mtags." + Metadata.TASK.name)),
Field.field("mtags." + Metadata.KEY.name).eq(TagService.KEY),
Field.field("mtags." + TagService.TAG.name).in(tags),
Criterion.or(Task.USER.like("%" + email + "%"),
Task.USER_ID.eq(user.getValue(User.REMOTE_ID))))));
FilterWithUpdate filter = new FilterWithUpdate(title, title, userTemplate, null);
filter.customTaskList = new ComponentName(ContextManager.getContext(), PersonViewFragment.class);
ContentValues values = new ContentValues();
values.put(Task.USER_ID.name, user.getValue(User.REMOTE_ID));
filter.valuesForNewTasks = values;
String imageUrl = user.getValue(User.PICTURE);
filter.imageUrl = imageUrl;
Bundle extras = new Bundle();
extras.putLong(PersonViewFragment.EXTRA_USER_ID_LOCAL, user.getId());
filter.customExtras = extras;
return filter;
}
}

@ -0,0 +1,20 @@
package com.todoroo.astrid.people;
import android.app.Activity;
import com.timsu.astrid.R;
import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.adapter.FilterAdapter;
public class PeopleListFragment extends FilterListFragment {
@Override
protected FilterAdapter instantiateAdapter() {
return new PeopleFilterAdapter(getActivity(), null, R.layout.filter_adapter_row, false);
}
@Override
protected int getLayout(Activity activity) {
return R.layout.people_list_fragment;
}
}

@ -0,0 +1,80 @@
package com.todoroo.astrid.people;
import android.content.Intent;
import android.os.Bundle;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.activity.FilterListFragment;
import com.todoroo.astrid.activity.TaskListActivity;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.FilterWithUpdate;
import com.todoroo.astrid.helper.AsyncImageView;
import com.todoroo.astrid.ui.MainMenuPopover;
public class PeopleViewActivity extends TaskListActivity {
private AsyncImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
imageView = (AsyncImageView) findViewById(R.id.person_image);
imageView.setDefaultImageResource(R.drawable.icn_default_person_image);
}
@Override
protected int getContentView() {
return R.layout.people_view_wrapper_activity;
}
@Override
protected Filter getDefaultFilter() {
// TODO More suitable default
return super.getDefaultFilter();
}
@Override
protected Class<? extends FilterListFragment> getFilterListClass() {
return PeopleListFragment.class;
}
@Override
protected int getHeaderView() {
return R.layout.header_people_view;
}
@Override
public boolean onFilterItemClicked(FilterListItem item) {
boolean result = super.onFilterItemClicked(item);
if (result && item instanceof FilterWithUpdate)
imageView.setUrl(((FilterWithUpdate) item).imageUrl);
else
imageView.setUrl(null);
return result;
}
private static final int[] FORBIDDEN_MENU_ITEMS = {
TaskListFragment.MENU_NEW_FILTER_ID,
TaskListFragment.MENU_ADDONS_ID,
MainMenuPopover.MAIN_MENU_ITEM_FRIENDS
};
@Override
public boolean shouldAddMenuItem(int itemId) {
return AndroidUtilities.indexOf(FORBIDDEN_MENU_ITEMS, itemId) < 0;
}
@Override
public void mainMenuItemSelected(int item, Intent customIntent) {
if (item == MainMenuPopover.MAIN_MENU_ITEM_LISTS) {
finish();
return;
}
super.mainMenuItemSelected(item, customIntent);
}
}

@ -0,0 +1,23 @@
package com.todoroo.astrid.people;
import android.view.View;
import android.view.ViewGroup;
import com.timsu.astrid.R;
import com.todoroo.astrid.activity.TaskListFragment;
public class PersonViewFragment extends TaskListFragment {
public static final String EXTRA_USER_ID_LOCAL = "user_local_id"; //$NON-NLS-1$
@Override
protected View getListBody(ViewGroup root) {
ViewGroup parent = (ViewGroup) getActivity().getLayoutInflater().inflate(R.layout.task_list_body_person, root, false);
View taskListView = super.getListBody(parent);
parent.addView(taskListView);
return parent;
}
}

@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/main_menu"
android:layout_width="51dip"
android:layout_height="fill_parent"
android:src="?attr/asMainMenu"
android:scaleType="fitCenter"/>
<View
android:layout_width="1px"
android:layout_height="fill_parent"
android:layout_marginLeft="-1px"
android:background="?attr/asSeparatorBackground"
android:layout_marginBottom="4dip"
android:layout_marginTop="4dip"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical">
<RelativeLayout
android:id="@+id/lists_nav"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_margin="5dip"
android:paddingRight="5dip"
android:paddingLeft="5dip"
android:gravity="center_vertical">
<TextView
android:id="@+id/list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="@string/BFE_Active"
android:singleLine="true"
android:layout_weight="1"
android:ellipsize="end"
style="@style/TextAppearance.ActionBar_ListsHeader"/>
<ImageView
android:id="@+id/list_disclosure_arrow"
android:layout_width="12dip"
android:layout_height="12dip"
android:layout_marginLeft="10dip"
android:layout_toRightOf="@id/list_title"
android:layout_alignBottom="@id/list_title"
android:src="?attr/asListsDisclosure"
android:scaleType="fitCenter"/>
</RelativeLayout>
</LinearLayout>
<com.todoroo.astrid.helper.AsyncImageView
android:id="@+id/person_image"
android:layout_width="51dip"
android:layout_height="fill_parent"
android:scaleType="centerCrop"/>
<Button
android:id="@+id/comments"
android:layout_width="51dip"
android:layout_height="fill_parent"
android:background="?attr/asCommentButtonImg"
android:textColor="@android:color/white"
android:paddingBottom="6dip"
android:visibility="gone"/>
</LinearLayout>

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- See the file "LICENSE" for the full license governing this code. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="?attr/asListPopoverBg"
android:orientation="vertical">
<!-- List -->
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="370dip"
android:layout_alignParentTop="true"
android:scrollbars="vertical"
android:divider="@android:color/transparent"
android:cacheColorHint="#00000000"/>
</LinearLayout>

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/Content"
android:id="@+id/tasklist_fragment_container">
</FrameLayout>

@ -0,0 +1,11 @@
<?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">
<!-- List body goes here -->
</LinearLayout>

@ -118,14 +118,18 @@ public class FilterListFragment extends ListFragment {
// Check that the container activity has implemented the callback interface // Check that the container activity has implemented the callback interface
try { try {
mListener = (OnFilterItemClickedListener) activity; mListener = (OnFilterItemClickedListener) activity;
adapter = new FilterAdapter(getActivity(), null, adapter = instantiateAdapter();
R.layout.filter_adapter_row, false);
} catch (ClassCastException e) { } catch (ClassCastException e) {
throw new ClassCastException(activity.toString() throw new ClassCastException(activity.toString()
+ " must implement OnFilterItemClickedListener"); //$NON-NLS-1$ + " must implement OnFilterItemClickedListener"); //$NON-NLS-1$
} }
} }
protected FilterAdapter instantiateAdapter() {
return new FilterAdapter(getActivity(), null,
R.layout.filter_adapter_row, false);
}
/* (non-Javadoc) /* (non-Javadoc)
* @see com.todoroo.astrid.fragment.ExpandableListFragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle) * @see com.todoroo.astrid.fragment.ExpandableListFragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
*/ */
@ -133,15 +137,18 @@ public class FilterListFragment extends ListFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) { Bundle savedInstanceState) {
Activity activity = getActivity(); Activity activity = getActivity();
int layout; int layout = getLayout(activity);
if (AndroidUtilities.isTabletSized(activity))
layout = R.layout.filter_list_activity_3pane;
else
layout = R.layout.filter_list_activity;
ViewGroup parent = (ViewGroup) activity.getLayoutInflater().inflate(layout, container, false); ViewGroup parent = (ViewGroup) activity.getLayoutInflater().inflate(layout, container, false);
return parent; return parent;
} }
protected int getLayout(Activity activity) {
if (AndroidUtilities.isTabletSized(activity))
return R.layout.filter_list_activity_3pane;
else
return R.layout.filter_list_activity;
}
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
@ -152,15 +159,16 @@ public class FilterListFragment extends ListFragment {
//ImageView backButton = (ImageView) getView().findViewById(R.id.back); //ImageView backButton = (ImageView) getView().findViewById(R.id.back);
newListButton = getView().findViewById(R.id.new_list_button); newListButton = getView().findViewById(R.id.new_list_button);
newListButton.setOnClickListener(new OnClickListener() { if (newListButton != null)
@Override newListButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) { @Override
Intent intent = TagsPlugin.newTagDialog(getActivity()); public void onClick(View v) {
getActivity().startActivityForResult(intent, REQUEST_NEW_LIST); Intent intent = TagsPlugin.newTagDialog(getActivity());
if (!AndroidUtilities.isTabletSized(getActivity())) getActivity().startActivityForResult(intent, REQUEST_NEW_LIST);
AndroidUtilities.callOverridePendingTransition(getActivity(), R.anim.slide_left_in, R.anim.slide_left_out); if (!AndroidUtilities.isTabletSized(getActivity()))
} AndroidUtilities.callOverridePendingTransition(getActivity(), R.anim.slide_left_in, R.anim.slide_left_out);
}); }
});
AstridActivity activity = (AstridActivity) getActivity(); AstridActivity activity = (AstridActivity) getActivity();
if (activity.getFragmentLayout() > AstridActivity.LAYOUT_SINGLE) { if (activity.getFragmentLayout() > AstridActivity.LAYOUT_SINGLE) {

@ -44,6 +44,7 @@ import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.core.CustomFilterExposer;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.people.PeopleViewActivity;
import com.todoroo.astrid.service.StatisticsConstants; import com.todoroo.astrid.service.StatisticsConstants;
import com.todoroo.astrid.service.StatisticsService; import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
@ -147,19 +148,15 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
DependencyInjectionService.getInstance().inject(this); DependencyInjectionService.getInstance().inject(this);
if (AndroidUtilities.isTabletSized(this)) { int contentView = getContentView();
setContentView(R.layout.task_list_wrapper_activity_3pane); if (contentView == R.layout.task_list_wrapper_activity)
} else if (Preferences.getIntegerFromString(R.string.p_swipe_lists_performance_key, 3) == 0) {
setContentView(R.layout.task_list_wrapper_activity_no_swipe);
} else {
setContentView(R.layout.task_list_wrapper_activity);
swipeEnabled = true; swipeEnabled = true;
} setContentView(getContentView());
ActionBar actionBar = getSupportActionBar(); ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(R.layout.header_nav_views); actionBar.setCustomView(getHeaderView());
listsNav = actionBar.getCustomView().findViewById(R.id.lists_nav); listsNav = actionBar.getCustomView().findViewById(R.id.lists_nav);
listsNavDisclosure = (ImageView) actionBar.getCustomView().findViewById(R.id.list_disclosure_arrow); listsNavDisclosure = (ImageView) actionBar.getCustomView().findViewById(R.id.list_disclosure_arrow);
@ -191,7 +188,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
} }
if (savedFilter == null) if (savedFilter == null)
savedFilter = CoreFilterExposer.buildInboxFilter(getResources()); savedFilter = getDefaultFilter();
if (swipeIsEnabled()) { if (swipeIsEnabled()) {
@ -219,6 +216,23 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
abTestEventReportingService.trackUserRetention(); abTestEventReportingService.trackUserRetention();
} }
protected int getHeaderView() {
return R.layout.header_nav_views;
}
protected int getContentView() {
if (AndroidUtilities.isTabletSized(this))
return R.layout.task_list_wrapper_activity_3pane;
else if (Preferences.getIntegerFromString(R.string.p_swipe_lists_performance_key, 3) == 0)
return R.layout.task_list_wrapper_activity_no_swipe;
else
return R.layout.task_list_wrapper_activity;
}
protected Filter getDefaultFilter() {
return CoreFilterExposer.buildInboxFilter(getResources());
}
private boolean swipeIsEnabled() { private boolean swipeIsEnabled() {
return fragmentLayout == LAYOUT_SINGLE && swipeEnabled; return fragmentLayout == LAYOUT_SINGLE && swipeEnabled;
} }
@ -271,10 +285,26 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setDisplayHomeAsUpEnabled(true);
listsNav.setOnClickListener(popupMenuClickListener); listsNav.setOnClickListener(popupMenuClickListener);
createListsPopover(); createListsPopover();
setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0, FilterListFragment.class, true)); setupPopoverWithFilterList((FilterListFragment) setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, 0,
getFilterListClass(), true));
} }
} }
protected Class<? extends FilterListFragment> getFilterListClass() {
return FilterListFragment.class;
}
// private void togglePeopleView(boolean peopleMode) {
// if (fragmentLayout != LAYOUT_SINGLE) {
// if (peopleMode)
// setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT, R.id.filterlist_fragment_container,
// PeopleListFragment.class, false);
// else
// setupFragment(FilterListFragment.TAG_FILTERLIST_FRAGMENT,
// R.id.filterlist_fragment_container, FilterListFragment.class, false);
// }
// }
private void createListsPopover() { private void createListsPopover() {
listsPopover = new FragmentPopover(this, R.layout.list_dropdown_popover); listsPopover = new FragmentPopover(this, R.layout.list_dropdown_popover);
listsPopover.setOnDismissListener(new OnDismissListener() { listsPopover.setOnDismissListener(new OnDismissListener() {
@ -320,8 +350,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
else else
layout = R.layout.main_menu_popover; layout = R.layout.main_menu_popover;
mainMenuPopover = new MainMenuPopover(this, layout, (fragmentLayout != LAYOUT_SINGLE)); mainMenuPopover = new MainMenuPopover(this, layout, (fragmentLayout != LAYOUT_SINGLE), this);
mainMenuPopover.setMenuListener(this);
mainMenuPopover.setOnDismissListener(new OnDismissListener() { mainMenuPopover.setOnDismissListener(new OnDismissListener() {
@Override @Override
public void onDismiss() { public void onDismiss() {
@ -640,6 +669,11 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
getIntent().putExtra(TOKEN_SOURCE, Constants.SOURCE_DEFAULT); // Only report source once getIntent().putExtra(TOKEN_SOURCE, Constants.SOURCE_DEFAULT); // Only report source once
} }
@Override
public boolean shouldAddMenuItem(int itemId) {
return true;
}
@Override @Override
public void mainMenuItemSelected(int item, Intent customIntent) { public void mainMenuItemSelected(int item, Intent customIntent) {
TaskListFragment tlf = getTaskListFragment(); TaskListFragment tlf = getTaskListFragment();
@ -651,7 +685,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
onSearchRequested(); onSearchRequested();
return; return;
case MainMenuPopover.MAIN_MENU_ITEM_FRIENDS: case MainMenuPopover.MAIN_MENU_ITEM_FRIENDS:
// Doesn't exist yet Intent peopleIntent = new Intent(this, PeopleViewActivity.class);
startActivity(peopleIntent);
return; return;
case MainMenuPopover.MAIN_MENU_ITEM_SUGGESTIONS: case MainMenuPopover.MAIN_MENU_ITEM_SUGGESTIONS:
// Doesn't exist yet // Doesn't exist yet

@ -125,12 +125,12 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
// --- menu codes // --- menu codes
protected static final int MENU_ADDONS_ID = R.string.TLA_menu_addons; public static final int MENU_ADDONS_ID = R.string.TLA_menu_addons;
protected static final int MENU_SETTINGS_ID = R.string.TLA_menu_settings; protected static final int MENU_SETTINGS_ID = R.string.TLA_menu_settings;
protected static final int MENU_SORT_ID = R.string.TLA_menu_sort; protected static final int MENU_SORT_ID = R.string.TLA_menu_sort;
protected static final int MENU_SYNC_ID = R.string.TLA_menu_sync; protected static final int MENU_SYNC_ID = R.string.TLA_menu_sync;
protected static final int MENU_SUPPORT_ID = R.string.TLA_menu_support; protected static final int MENU_SUPPORT_ID = R.string.TLA_menu_support;
protected static final int MENU_NEW_FILTER_ID = R.string.FLA_new_filter; public static final int MENU_NEW_FILTER_ID = R.string.FLA_new_filter;
protected static final int MENU_ADDON_INTENT_ID = Menu.FIRST + 199; protected static final int MENU_ADDON_INTENT_ID = Menu.FIRST + 199;
protected static final int CONTEXT_MENU_EDIT_TASK_ID = R.string.TAd_contextEditTask; protected static final int CONTEXT_MENU_EDIT_TASK_ID = R.string.TAd_contextEditTask;

@ -80,7 +80,7 @@ public class FilterAdapter extends ArrayAdapter<Filter> {
private final DisplayMetrics metrics = new DisplayMetrics(); private final DisplayMetrics metrics = new DisplayMetrics();
/** receiver for new filters */ /** receiver for new filters */
private final FilterReceiver filterReceiver = new FilterReceiver(); protected final FilterReceiver filterReceiver = new FilterReceiver();
private final BladeFilterReceiver bladeFilterReceiver = new BladeFilterReceiver(); private final BladeFilterReceiver bladeFilterReceiver = new BladeFilterReceiver();
private boolean shouldUseBladeFilter = true; private boolean shouldUseBladeFilter = true;

@ -229,6 +229,7 @@ public class StartupService {
.setMessage(R.string.DB_corrupted_body) .setMessage(R.string.DB_corrupted_body)
.setPositiveButton(R.string.DLG_ok, null) .setPositiveButton(R.string.DLG_ok, null)
.create().show(); .create().show();
e.printStackTrace();
} }
/** /**

@ -28,6 +28,7 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
public static final int MAIN_MENU_ITEM_SETTINGS = R.string.TLA_menu_settings; public static final int MAIN_MENU_ITEM_SETTINGS = R.string.TLA_menu_settings;
public interface MainMenuListener { public interface MainMenuListener {
public boolean shouldAddMenuItem(int itemId);
public void mainMenuItemSelected(int item, Intent customIntent); public void mainMenuItemSelected(int item, Intent customIntent);
} }
@ -43,7 +44,7 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
this.mListener = listener; this.mListener = listener;
} }
public MainMenuPopover(Context context, int layout, boolean isTablet) { public MainMenuPopover(Context context, int layout, boolean isTablet, MainMenuListener listener) {
super(context, layout); super(context, layout);
TouchInterceptingFrameLayout rootLayout = (TouchInterceptingFrameLayout) getContentView(); TouchInterceptingFrameLayout rootLayout = (TouchInterceptingFrameLayout) getContentView();
@ -68,6 +69,8 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
topFixed = (LinearLayout) getContentView().findViewById(R.id.topFixedItems); topFixed = (LinearLayout) getContentView().findViewById(R.id.topFixedItems);
bottomFixed = (LinearLayout) getContentView().findViewById(R.id.bottomFixedItems); bottomFixed = (LinearLayout) getContentView().findViewById(R.id.bottomFixedItems);
mListener = listener;
addFixedItems(isTablet); addFixedItems(isTablet);
} }
@ -101,6 +104,9 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
addMenuItem(R.string.TLA_menu_search, addMenuItem(R.string.TLA_menu_search,
ThemeService.getDrawable(R.drawable.icn_menu_search, themeFlags), ThemeService.getDrawable(R.drawable.icn_menu_search, themeFlags),
MAIN_MENU_ITEM_SEARCH, null, topFixed); MAIN_MENU_ITEM_SEARCH, null, topFixed);
addMenuItem(R.string.TLA_menu_friends,
R.drawable.icn_anyone,
MAIN_MENU_ITEM_FRIENDS, null, topFixed);
addMenuItem(R.string.TLA_menu_settings, addMenuItem(R.string.TLA_menu_settings,
ThemeService.getDrawable(R.drawable.icn_menu_settings, themeFlags), ThemeService.getDrawable(R.drawable.icn_menu_settings, themeFlags),
MAIN_MENU_ITEM_SETTINGS, null, bottomFixed); // Settings item MAIN_MENU_ITEM_SETTINGS, null, bottomFixed); // Settings item
@ -136,11 +142,15 @@ public class MainMenuPopover extends FragmentPopover implements InterceptTouchLi
// --- Private helpers --- // --- Private helpers ---
private void addMenuItem(int title, int imageRes, int id, Intent customIntent, ViewGroup container) { private void addMenuItem(int title, int imageRes, int id, Intent customIntent, ViewGroup container) {
if (mListener != null && !mListener.shouldAddMenuItem(id))
return;
View item = setupItemWithParams(title, imageRes); View item = setupItemWithParams(title, imageRes);
addViewWithListener(item, container, id, customIntent); addViewWithListener(item, container, id, customIntent);
} }
private void addMenuItem(CharSequence title, Drawable image, int id, Intent customIntent, ViewGroup container) { private void addMenuItem(CharSequence title, Drawable image, int id, Intent customIntent, ViewGroup container) {
if (mListener != null && !mListener.shouldAddMenuItem(id))
return;
View item = setupItemWithParams(title, image); View item = setupItemWithParams(title, image);
addViewWithListener(item, container, id, customIntent); addViewWithListener(item, container, id, customIntent);
} }

Loading…
Cancel
Save