Dropdown menu for list selection

pull/14/head
Sam Bosley 13 years ago
parent bbde5fb531
commit 2a8134947c

@ -117,17 +117,6 @@
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
</intent-filter> </intent-filter>
</activity> </activity>
<!-- Activity that displays filter list -->
<activity android:name="com.todoroo.astrid.activity.FilterListWrapperActivity"
android:launchMode="singleTop"
android:finishOnTaskLaunch="true">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/filter_list_searchable" />
</activity>
<!-- Activity that creates or edits tasks --> <!-- Activity that creates or edits tasks -->
<activity android:name="com.todoroo.astrid.activity.TaskEditWrapperActivity" <activity android:name="com.todoroo.astrid.activity.TaskEditWrapperActivity"
android:windowSoftInputMode="stateHidden"> android:windowSoftInputMode="stateHidden">

@ -6,39 +6,6 @@
style="@style/Content" style="@style/Content"
android:orientation="vertical"> android:orientation="vertical">
<!-- Header -->
<LinearLayout
android:id="@+id/lists_header"
android:layout_width="fill_parent"
android:layout_height="43dip"
android:layout_weight="1"
android:orientation="horizontal"
android:layout_alignParentTop="true"
style="@style/Header">
<!-- List Label -->
<TextView android:id="@+id/listLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_weight="100"
android:singleLine="true"
android:ellipsize="end"
android:gravity="center"
android:text="@string/FLA_title"
style="@style/TextAppearance.TLA_Header"/>
<ImageView android:id="@+id/back"
android:layout_width="43dip"
android:layout_height="fill_parent"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/icn_tasks"
android:scaleType="fitCenter"
android:visibility="gone" />
</LinearLayout>
<!-- Footer --> <!-- Footer -->
<LinearLayout <LinearLayout
android:id="@+id/lists_footer" android:id="@+id/lists_footer"
@ -67,7 +34,7 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="100" android:layout_weight="100"
android:layout_below="@id/lists_header" android:layout_alignParentTop="true"
android:layout_above="@id/lists_footer" android:layout_above="@id/lists_footer"
android:scrollbars="vertical" android:scrollbars="vertical"
android:cacheColorHint="#00000000"/> android:cacheColorHint="#00000000"/>

@ -1,30 +0,0 @@
<?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">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/filterlist_fragment_container"
android:layout_weight="67">
<fragment
android:name="com.todoroo.astrid.activity.FilterListActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="filterlist_fragment">
<!-- Preview: layout=@layout/filter_list_activity -->
</fragment>
</FrameLayout>
<View
android:layout_width="1px"
android:layout_height="match_parent"
android:background="#000000"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tasklist_fragment_container"
android:layout_weight="33">
</FrameLayout>
</LinearLayout>

@ -7,82 +7,6 @@
style="@style/Content" style="@style/Content"
android:orientation="vertical"> android:orientation="vertical">
<!-- Header -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="43dip"
android:layout_weight="1"
android:orientation="horizontal">
<!-- Filters Button -->
<ImageView android:id="@+id/back"
android:layout_width="43dip"
android:layout_height="fill_parent"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/icn_lists"
android:scaleType="fitCenter"
android:visibility="gone" />
<LinearLayout
style="@style/Header"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="horizontal">
<!-- List Label -->
<TextView android:id="@+id/listLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_weight="100"
android:singleLine="true"
android:ellipsize="end"
android:gravity="center"
style="@style/TextAppearance.TLA_Header"/>
</LinearLayout>
<LinearLayout android:id="@+id/activityContainer"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:visibility="gone">
<View
android:layout_width="0.5dip"
android:layout_height="fill_parent"
android:background="#ff222222"/>
<ImageView android:id="@+id/activity"
android:layout_height="fill_parent"
android:layout_width="43dip"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/icn_cmmt_off"
android:scaleType="fitCenter" />
</LinearLayout>
<LinearLayout android:id="@+id/sortContainer"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
<View
android:layout_width="0.5dip"
android:layout_height="fill_parent"
android:background="#ff222222"/>
<ImageView android:id="@+id/sort_settings"
android:layout_height="fill_parent"
android:layout_width="43dip"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/ic_sort"
android:scaleType="fitCenter" />
</LinearLayout>
</LinearLayout>
<!-- Body goes here --> <!-- Body goes here -->
<!-- Footer --> <!-- Footer -->
@ -133,4 +57,4 @@
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

@ -9,13 +9,6 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="67" android:layout_weight="67"
android:id="@+id/filterlist_fragment_container"> android:id="@+id/filterlist_fragment_container">
<fragment
android:name="com.todoroo.astrid.activity.FilterListActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/filterlist_fragment">
<!-- Preview: layout=@layout/filter_list_activity -->
</fragment>
</FrameLayout> </FrameLayout>
<View <View
android:layout_width="1px" android:layout_width="1px"

@ -6,44 +6,6 @@
style="@style/Content" style="@style/Content"
android:orientation="vertical"> android:orientation="vertical">
<!-- Header -->
<LinearLayout
android:id="@+id/lists_header"
android:layout_width="fill_parent"
android:layout_height="43dip"
android:layout_weight="1"
android:orientation="horizontal"
android:layout_alignParentTop="true"
style="@style/Header">
<!-- List Label -->
<TextView android:id="@+id/listLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:paddingLeft="43dip"
android:layout_weight="100"
android:singleLine="true"
android:ellipsize="end"
android:gravity="center"
android:text="@string/FLA_title"
style="@style/TextAppearance.TLA_Header"/>
<View
android:layout_width="0.5dip"
android:layout_height="fill_parent"
android:background="#ff222222"/>
<ImageView android:id="@+id/back"
android:layout_width="43dip"
android:layout_height="fill_parent"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/icn_tasks"
android:scaleType="fitCenter" />
</LinearLayout>
<!-- Footer --> <!-- Footer -->
<LinearLayout <LinearLayout
android:id="@+id/lists_footer" android:id="@+id/lists_footer"
@ -72,7 +34,7 @@
android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:layout_height="fill_parent"
android:layout_weight="100" android:layout_weight="100"
android:layout_below="@id/lists_header" android:layout_alignParentTop="true"
android:layout_above="@id/lists_footer" android:layout_above="@id/lists_footer"
android:scrollbars="vertical" android:scrollbars="vertical"
android:cacheColorHint="#00000000"/> android:cacheColorHint="#00000000"/>

@ -1,13 +0,0 @@
<?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"
android:id="@+id/filterlist_fragment">
<fragment
android:name="com.todoroo.astrid.activity.FilterListActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:tag="filterlist_fragment">
</fragment>
</FrameLayout>

@ -7,85 +7,6 @@
style="@style/Content" style="@style/Content"
android:orientation="vertical"> android:orientation="vertical">
<!-- Header -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="43dip"
android:layout_weight="1"
android:orientation="horizontal">
<!-- Filters Button -->
<ImageView android:id="@+id/back"
android:layout_width="43dip"
android:layout_height="fill_parent"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/icn_lists"
android:scaleType="fitCenter" />
<View
android:layout_width="0.5dip"
android:layout_height="fill_parent"
android:background="#ff222222"/>
<LinearLayout
style="@style/Header"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:orientation="horizontal">
<!-- List Label -->
<TextView android:id="@+id/listLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginLeft="5dip"
android:layout_marginRight="5dip"
android:layout_weight="100"
android:singleLine="true"
android:ellipsize="end"
android:gravity="center"
style="@style/TextAppearance.TLA_Header"/>
</LinearLayout>
<LinearLayout android:id="@+id/activityContainer"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:visibility="gone">
<View
android:layout_width="0.5dip"
android:layout_height="fill_parent"
android:background="#ff222222"/>
<ImageView android:id="@+id/activity"
android:layout_height="fill_parent"
android:layout_width="43dip"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/icn_cmmt_off"
android:scaleType="fitCenter" />
</LinearLayout>
<LinearLayout android:id="@+id/sortContainer"
android:layout_width="wrap_content"
android:layout_height="fill_parent">
<View
android:layout_width="0.5dip"
android:layout_height="fill_parent"
android:background="#ff222222"/>
<ImageView android:id="@+id/sort_settings"
android:layout_height="fill_parent"
android:layout_width="43dip"
android:background="?attr/asHeaderButtonBackground"
android:padding="7dip"
android:src="@drawable/ic_sort"
android:scaleType="fitCenter" />
</LinearLayout>
</LinearLayout>
<!-- Body goes here --> <!-- Body goes here -->
<!-- Footer --> <!-- Footer -->

@ -41,7 +41,7 @@ public class AstridWrapperActivity extends FragmentActivity
public FilterListActivity getFilterListFragment() { public FilterListActivity getFilterListFragment() {
FilterListActivity frag = (FilterListActivity) getSupportFragmentManager() FilterListActivity frag = (FilterListActivity) getSupportFragmentManager()
.findFragmentById(R.id.filterlist_fragment); .findFragmentByTag(FilterListActivity.TAG_FILTERLIST_FRAGMENT);
return frag; return frag;
} }
@ -85,6 +85,10 @@ public class AstridWrapperActivity extends FragmentActivity
* Handles items being clicked from the filterlist-fragment. Return true if item is handled. * Handles items being clicked from the filterlist-fragment. Return true if item is handled.
*/ */
public boolean onFilterItemClicked(FilterListItem item) { public boolean onFilterItemClicked(FilterListItem item) {
if (this instanceof TaskListWrapperActivity) {
int selectedPosition = ((TaskListWrapperActivity) this).getFilterItemPosition(item);
getSupportActionBar().setSelectedNavigationItem(selectedPosition);
}
if (!mMultipleFragments || (item instanceof SearchFilter)) { if (!mMultipleFragments || (item instanceof SearchFilter)) {
if(item instanceof Filter) { if(item instanceof Filter) {
Filter filter = (Filter)item; Filter filter = (Filter)item;
@ -162,6 +166,20 @@ public class AstridWrapperActivity extends FragmentActivity
} }
} }
protected void setupFilterlistFragment() {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
FilterListActivity newFragment = new FilterListActivity();
if (findViewById(R.id.filterlist_fragment_container) != null) {
transaction.replace(R.id.filterlist_fragment_container, newFragment, FilterListActivity.TAG_FILTERLIST_FRAGMENT);
} else {
if (getFilterListFragment() != null)
return;
transaction.add(newFragment, FilterListActivity.TAG_FILTERLIST_FRAGMENT);
}
transaction.commit();
}
@Override @Override
public void onTaskListItemClicked(int category, int position) { public void onTaskListItemClicked(int category, int position) {

@ -57,7 +57,7 @@ public class DraggableTaskListActivity extends TaskListActivity {
@Override @Override
protected void setUpUiComponents() { protected void setUpUiComponents() {
super.setUpUiComponents(); super.setUpUiComponents();
getView().findViewById(R.id.sortContainer).setVisibility(View.GONE); //getView().findViewById(R.id.sortContainer).setVisibility(View.GONE);
} }
// --- task adapter // --- task adapter

@ -51,7 +51,6 @@ import android.widget.EditText;
import android.widget.ExpandableListView; import android.widget.ExpandableListView;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo; import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener; import android.widget.TextView.OnEditorActionListener;
@ -185,16 +184,16 @@ public class FilterListActivity extends ExpandableListFragment {
setHasOptionsMenu(true); setHasOptionsMenu(true);
getActivity().setDefaultKeyMode(Activity.DEFAULT_KEYS_SEARCH_LOCAL); getActivity().setDefaultKeyMode(Activity.DEFAULT_KEYS_SEARCH_LOCAL);
ImageView backButton = (ImageView) getView().findViewById(R.id.back); //ImageView backButton = (ImageView) getView().findViewById(R.id.back);
Button newListButton = (Button) getView().findViewById(R.id.new_list_button); Button newListButton = (Button) getView().findViewById(R.id.new_list_button);
backButton.setOnClickListener(new OnClickListener() { // backButton.setOnClickListener(new OnClickListener() {
@Override // @Override
public void onClick(View v) { // public void onClick(View v) {
getActivity().finish(); // getActivity().finish();
AndroidUtilities.callOverridePendingTransition(getActivity(), R.anim.slide_left_in, R.anim.slide_left_out); // AndroidUtilities.callOverridePendingTransition(getActivity(), R.anim.slide_left_in, R.anim.slide_left_out);
} // }
}); // });
newListButton.setOnClickListener(new OnClickListener() { newListButton.setOnClickListener(new OnClickListener() {
@Override @Override

@ -1,66 +0,0 @@
package com.todoroo.astrid.activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.widget.TextView;
import com.timsu.astrid.R;
import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.service.ThemeService;
public class FilterListWrapperActivity extends AstridWrapperActivity {
/**
* @see android.app.Activity#onCreate(Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
ThemeService.applyTheme(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.filter_list_wrapper_activity);
if (findViewById(R.id.tasklist_fragment_container) != null)
setupTasklistFragmentWithFilter((Filter)getIntent().getParcelableExtra(TaskListActivity.TOKEN_FILTER));
else {
Fragment tla = getTaskListFragment();
if (tla != null) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.remove(tla);
transaction.commit();
}
}
}
/* (non-Javadoc)
* @see android.support.v4.app.FragmentActivity#onResume()
*/
@Override
protected void onResume() {
super.onResume();
Fragment frag = getTaskListFragment();
if (frag != null) {
mMultipleFragments = true;
} else {
mMultipleFragments = false;
}
}
@Override
public void setTitle(CharSequence title) {
Fragment frag = getTaskListFragment();
if (frag != null)
((TextView)frag.getView().findViewById(R.id.listLabel)).setText(title);
// update the actionbar-title
getSupportActionBar().setTitle(title);
}
@Override
public void finish() {
super.finish();
AndroidUtilities.callOverridePendingTransition(this, R.anim.slide_left_in, R.anim.slide_left_out);
}
}

@ -3,7 +3,6 @@ package com.todoroo.astrid.activity;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.widget.TextView;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
@ -45,16 +44,6 @@ public class TaskEditWrapperActivity extends AstridWrapperActivity {
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }
@Override
public void setTitle(CharSequence title) {
Fragment frag = (Fragment) getSupportFragmentManager()
.findFragmentByTag(TaskListActivity.TAG_TASKLIST_FRAGMENT);
if (frag != null && frag.isInLayout())
((TextView)frag.getView().findViewById(R.id.listLabel)).setText(title);
// update the actionbar-title
getSupportActionBar().setTitle(title);
}
@Override @Override
public void finish() { public void finish() {
super.finish(); super.finish();

@ -16,7 +16,6 @@ import android.app.AlertDialog;
import android.app.PendingIntent.CanceledException; import android.app.PendingIntent.CanceledException;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -53,7 +52,6 @@ import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView; import android.widget.ListView;
import android.widget.PopupWindow.OnDismissListener; import android.widget.PopupWindow.OnDismissListener;
import android.widget.TextView; import android.widget.TextView;
@ -283,7 +281,7 @@ public class TaskListActivity extends ListFragment implements OnScrollListener,
Bundle savedInstanceState) { Bundle savedInstanceState) {
ViewGroup parent = (ViewGroup) getActivity().getLayoutInflater().inflate( ViewGroup parent = (ViewGroup) getActivity().getLayoutInflater().inflate(
R.layout.task_list_activity, container, false); R.layout.task_list_activity, container, false);
parent.addView(getListBody(parent), 1); parent.addView(getListBody(parent), 0);
return parent; return parent;
} }
@ -297,7 +295,7 @@ public class TaskListActivity extends ListFragment implements OnScrollListener,
setUpUiComponents(); setUpUiComponents();
onNewIntent(getActivity().getIntent()); onNewIntent(getActivity().getIntent());
Fragment filterlistFrame = getFragmentManager().findFragmentById(R.id.filterlist_fragment); Fragment filterlistFrame = getFragmentManager().findFragmentByTag(FilterListActivity.TAG_FILTERLIST_FRAGMENT);
mDualFragments = (filterlistFrame != null) && filterlistFrame.isInLayout(); mDualFragments = (filterlistFrame != null) && filterlistFrame.isInLayout();
if (mDualFragments) { if (mDualFragments) {
@ -439,22 +437,22 @@ public class TaskListActivity extends ListFragment implements OnScrollListener,
} }
protected void setUpUiComponents() { protected void setUpUiComponents() {
((ImageView)getView().findViewById(R.id.back)).setOnClickListener(new OnClickListener() { // ((ImageView)getView().findViewById(R.id.back)).setOnClickListener(new OnClickListener() {
public void onClick(View v) { // public void onClick(View v) {
Preferences.setBoolean(R.string.p_showed_lists_help, true); // Preferences.setBoolean(R.string.p_showed_lists_help, true);
showFilterListActivity(); // showFilterListActivity();
} // }
}); // });
getView().findViewById(R.id.sort_settings).setOnClickListener(new OnClickListener() { // getView().findViewById(R.id.sort_settings).setOnClickListener(new OnClickListener() {
@Override // @Override
public void onClick(View v) { // public void onClick(View v) {
StatisticsService.reportEvent(StatisticsConstants.TLA_MENU_SORT); // StatisticsService.reportEvent(StatisticsConstants.TLA_MENU_SORT);
AlertDialog dialog = SortSelectionActivity.createDialog(getActivity(), // AlertDialog dialog = SortSelectionActivity.createDialog(getActivity(),
TaskListActivity.this, sortFlags, sortSort); // TaskListActivity.this, sortFlags, sortSort);
dialog.show(); // dialog.show();
} // }
}); // });
// set listener for quick-changing task priority // set listener for quick-changing task priority
getListView().setOnKeyListener(new OnKeyListener() { getListView().setOnKeyListener(new OnKeyListener() {
@ -672,7 +670,7 @@ public class TaskListActivity extends ListFragment implements OnScrollListener,
showTaskEditHelpPopover(); showTaskEditHelpPopover();
} else if (Preferences.isSet(getString(R.string.p_showed_lists_help)) && } else if (Preferences.isSet(getString(R.string.p_showed_lists_help)) &&
!Preferences.getBoolean(R.string.p_showed_lists_help, false)) { !Preferences.getBoolean(R.string.p_showed_lists_help, false)) {
HelpInfoPopover.showPopover(getActivity(), getView().findViewById(R.id.back), R.string.help_popover_lists, null); //HelpInfoPopover.showPopover(getActivity(), getView().findViewById(R.id.back), R.string.help_popover_lists, null);
Preferences.setBoolean(R.string.p_showed_lists_help, true); Preferences.setBoolean(R.string.p_showed_lists_help, true);
} }
@ -910,7 +908,7 @@ public class TaskListActivity extends ListFragment implements OnScrollListener,
sqlQueryTemplate.set(SortHelper.adjustQueryForFlagsAndSort(filter.sqlQuery, sqlQueryTemplate.set(SortHelper.adjustQueryForFlagsAndSort(filter.sqlQuery,
sortFlags, sortSort)); sortFlags, sortSort));
getActivity().setTitle(filter.title); //getActivity().setTitle(filter.title);
// perform query // perform query
TodorooCursor<Task> currentCursor = taskService.fetchFiltered( TodorooCursor<Task> currentCursor = taskService.fetchFiltered(
@ -996,7 +994,7 @@ public class TaskListActivity extends ListFragment implements OnScrollListener,
Preferences.setBoolean(R.string.p_showed_lists_help, false); Preferences.setBoolean(R.string.p_showed_lists_help, false);
} else if (!Preferences.getBoolean(R.string.p_showed_lists_help, false)) { } else if (!Preferences.getBoolean(R.string.p_showed_lists_help, false)) {
Preferences.setBoolean(R.string.p_showed_lists_help, true); Preferences.setBoolean(R.string.p_showed_lists_help, true);
HelpInfoPopover.showPopover(getActivity(), getView().findViewById(R.id.back), R.string.help_popover_lists, null); //HelpInfoPopover.showPopover(getActivity(), getView().findViewById(R.id.back), R.string.help_popover_lists, null);
} }
} }
}; };
@ -1419,17 +1417,17 @@ public class TaskListActivity extends ListFragment implements OnScrollListener,
@Override @Override
public void gesturePerformed(String gesture) { public void gesturePerformed(String gesture) {
if("nav_right".equals(gesture)) { if("nav_right".equals(gesture)) {
showFilterListActivity(); //showFilterListActivity();
} }
} }
@SuppressWarnings("nls") @SuppressWarnings("nls")
private void showFilterListActivity() { private void showFilterListActivity() {
Intent intent = (Intent) getActivity().getIntent().clone(); // Intent intent = (Intent) getActivity().getIntent().clone();
intent.setComponent(new ComponentName(getActivity(), FilterListWrapperActivity.class)); // intent.setComponent(new ComponentName(getActivity(), FilterListWrapperActivity.class));
intent.setFlags(0); // intent.setFlags(0);
startActivity(intent); // startActivity(intent);
AndroidUtilities.callOverridePendingTransition(getActivity(), R.anim.slide_right_in, R.anim.slide_right_out); // AndroidUtilities.callOverridePendingTransition(getActivity(), R.anim.slide_right_in, R.anim.slide_right_out);
} }
@Override @Override

@ -1,15 +1,19 @@
package com.todoroo.astrid.activity; package com.todoroo.astrid.activity;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.ActionBar;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.widget.TextView; import android.widget.ArrayAdapter;
import com.timsu.astrid.R; import com.timsu.astrid.R;
import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.service.ThemeService;
public class TaskListWrapperActivity extends AstridWrapperActivity { public class TaskListWrapperActivity extends AstridWrapperActivity {
private ArrayAdapter<FilterListItem> listDropdownAdapter;
/** /**
* @see android.app.Activity#onCreate(Bundle) * @see android.app.Activity#onCreate(Bundle)
*/ */
@ -21,6 +25,11 @@ public class TaskListWrapperActivity extends AstridWrapperActivity {
Filter savedFilter = getIntent().getParcelableExtra(TaskListActivity.TOKEN_FILTER); Filter savedFilter = getIntent().getParcelableExtra(TaskListActivity.TOKEN_FILTER);
setupTasklistFragmentWithFilter(savedFilter); setupTasklistFragmentWithFilter(savedFilter);
setupFilterlistFragment();
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
} }
/* (non-Javadoc) /* (non-Javadoc)
@ -38,13 +47,20 @@ public class TaskListWrapperActivity extends AstridWrapperActivity {
} }
} }
@Override public void updateDropdownNav(ArrayAdapter<FilterListItem> arrayAdapter) {
public void setTitle(CharSequence title) { listDropdownAdapter = arrayAdapter;
Fragment frag = getTaskListFragment(); ActionBar actionBar = getSupportActionBar();
if (frag != null) actionBar.setListNavigationCallbacks(arrayAdapter, new ActionBar.OnNavigationListener() {
((TextView)frag.getView().findViewById(R.id.listLabel)).setText(title); @Override
// update the actionbar-title public boolean onNavigationItemSelected(int itemPosition, long itemId) {
getSupportActionBar().setTitle(title); onFilterItemClicked(listDropdownAdapter.getItem(itemPosition));
return true;
}
});
}
public int getFilterItemPosition(FilterListItem item) {
return listDropdownAdapter.getPosition(item);
} }
@Override @Override

@ -32,6 +32,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.widget.ArrayAdapter;
import android.widget.BaseExpandableListAdapter; import android.widget.BaseExpandableListAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.ExpandableListView; import android.widget.ExpandableListView;
@ -45,6 +46,7 @@ import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.activity.FilterListActivity; import com.todoroo.astrid.activity.FilterListActivity;
import com.todoroo.astrid.activity.TaskListWrapperActivity;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.api.AstridFilterExposer; import com.todoroo.astrid.api.AstridFilterExposer;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
@ -75,6 +77,7 @@ public class FilterAdapter extends BaseExpandableListAdapter {
/** list of filters */ /** list of filters */
private final ArrayList<FilterListItem> items; private final ArrayList<FilterListItem> items;
private final FilterArrayAdapter arrayAdapter;
/** display metrics for scaling icons */ /** display metrics for scaling icons */
private final DisplayMetrics metrics = new DisplayMetrics(); private final DisplayMetrics metrics = new DisplayMetrics();
@ -124,6 +127,8 @@ public class FilterAdapter extends BaseExpandableListAdapter {
this.skipIntentFilters = skipIntentFilters; this.skipIntentFilters = skipIntentFilters;
this.selectable = selectable; this.selectable = selectable;
arrayAdapter = new FilterArrayAdapter(activity);
inflater = (LayoutInflater) activity.getSystemService( inflater = (LayoutInflater) activity.getSystemService(
Context.LAYOUT_INFLATER_SERVICE); Context.LAYOUT_INFLATER_SERVICE);
@ -177,6 +182,7 @@ public class FilterAdapter extends BaseExpandableListAdapter {
public void clear() { public void clear() {
items.clear(); items.clear();
arrayAdapter.clear();
notifyDataSetInvalidated(); notifyDataSetInvalidated();
} }
@ -353,6 +359,12 @@ public class FilterAdapter extends BaseExpandableListAdapter {
add((FilterListItem)item); add((FilterListItem)item);
onReceiveFilter((FilterListItem)item); onReceiveFilter((FilterListItem)item);
if (filter instanceof FilterCategory) {
arrayAdapter.addAll(((FilterCategory) filter).children);
} else {
arrayAdapter.add(filter);
}
} }
notifyDataSetChanged(); notifyDataSetChanged();
@ -360,6 +372,9 @@ public class FilterAdapter extends BaseExpandableListAdapter {
@Override @Override
public void run() { public void run() {
expandList(filters); expandList(filters);
if (activity instanceof TaskListWrapperActivity) {
((TaskListWrapperActivity) activity).updateDropdownNav(arrayAdapter);
}
} }
}); });
} }
@ -598,6 +613,7 @@ public class FilterAdapter extends BaseExpandableListAdapter {
activity.runOnUiThread(new Runnable() { activity.runOnUiThread(new Runnable() {
public void run() { public void run() {
clear(); clear();
arrayAdapter.clear();
} }
}); });
} }
@ -609,4 +625,26 @@ public class FilterAdapter extends BaseExpandableListAdapter {
}); });
} }
private class FilterArrayAdapter extends ArrayAdapter<FilterListItem> {
public FilterArrayAdapter(Context context) {
super(context, 0);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = newView(convertView, parent);
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
viewHolder.item = (FilterListItem) getItem(position);
populateView(viewHolder, false);
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getView(position, convertView, parent);
}
}
} }

Loading…
Cancel
Save