diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java index 4353a5036..052c67a14 100755 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java @@ -257,12 +257,9 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { private WebServicesView webServices = null; - public static final int TAB_STYLE_NONE = 0; - public static final int TAB_STYLE_ACTIVITY = 1; - public static final int TAB_STYLE_ACTIVITY_WEB = 2; - public static final int TAB_STYLE_WEB = 3; + private int tabStyle = 0; - private int tabStyle = TAB_STYLE_NONE; + private boolean moreSectionHasControls; /* * ====================================================================== @@ -372,9 +369,12 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { boolean hasTitle = !TextUtils.isEmpty(model.getValue(Task.TITLE)); if(hasTitle && Preferences.getBoolean(R.string.p_ideas_tab_enabled, false) && Constants.MARKET_STRATEGY.allowIdeasTab()) - tabStyle = TAB_STYLE_ACTIVITY_WEB; + tabStyle = (TaskEditViewPager.TAB_SHOW_ACTIVITY | TaskEditViewPager.TAB_SHOW_WEB); else - tabStyle = TAB_STYLE_ACTIVITY; + tabStyle = TaskEditViewPager.TAB_SHOW_ACTIVITY; + + if (moreSectionHasControls) + tabStyle |= TaskEditViewPager.TAB_SHOW_MORE; if (editNotes == null) { instantiateEditNotes(); @@ -590,12 +590,17 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { String[] itemOrder = controlOrder.toArray(new String[controlOrder.size()]); String moreSectionTrigger = getString(R.string.TEA_ctrl_more_pref); + String hideAlwaysTrigger = getString(R.string.TEA_ctrl_hide_section_pref); String shareViewDescriptor = getString(R.string.TEA_ctrl_share_pref); LinearLayout section = basicControls; + moreSectionHasControls = false; + for (int i = 0; i < itemOrder.length; i++) { String item = itemOrder[i]; - if (item.equals(moreSectionTrigger)) { + if (item.equals(hideAlwaysTrigger)) { + break; // As soon as we hit the hide section, we're done + } else if (item.equals(moreSectionTrigger)) { section = moreControls; if (taskRabbitControl != null) { taskRabbitControl.getDisplayView().setVisibility(View.GONE); @@ -603,19 +608,21 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { } } else { - View control_set = null; + View controlSet = null; TaskEditControlSet curr = controlSetMap.get(item); if (item.equals(shareViewDescriptor)) - control_set = peopleControlSet.getSharedWithRow(); + controlSet = peopleControlSet.getSharedWithRow(); else if (curr != null) - control_set = (LinearLayout) curr.getDisplayView(); + controlSet = (LinearLayout) curr.getDisplayView(); - if (control_set != null) { + if (controlSet != null) { if ((i + 1 >= itemOrder.length || itemOrder[i + 1].equals(moreSectionTrigger))) { - removeTeaSeparator(control_set); + removeTeaSeparator(controlSet); } - section.addView(control_set); + section.addView(controlSet); + if (section == moreControls) + moreSectionHasControls = true; } } } @@ -1250,15 +1257,13 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { */ public int getTabForPosition(int position) { - if ((tabStyle == TAB_STYLE_WEB && position == 0) || - (tabStyle != TAB_STYLE_WEB && position == 1)) - return TAB_VIEW_MORE; - - else if (tabStyle != TAB_STYLE_WEB && position == 0) + Activity activity = getActivity(); + String pageTitle = mAdapter.getTitle(position); + if (pageTitle.equals(activity.getString(R.string.TEA_tab_activity))) return TAB_VIEW_UPDATES; - - else if((tabStyle == TAB_STYLE_WEB && position == 1) || - (tabStyle == TAB_STYLE_ACTIVITY_WEB && position == 2)) + else if (pageTitle.equals(activity.getString(R.string.TEA_tab_more))) + return TAB_VIEW_MORE; + else if (pageTitle.equals(activity.getString(R.string.TEA_tab_web))) return TAB_VIEW_WEB_SERVICES; // error experienced @@ -1352,10 +1357,8 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener { setPagerHeightForPosition(position); NestableScrollView scrollView = (NestableScrollView)getView().findViewById(R.id.edit_scroll); - if((tabStyle == TAB_STYLE_WEB && position == 1) || - (tabStyle == TAB_STYLE_ACTIVITY_WEB && position == 2)) - scrollView. - setScrollabelViews(webServices.getScrollableViews()); + if(getTabForPosition(position) == TAB_VIEW_WEB_SERVICES) + scrollView.setScrollabelViews(webServices.getScrollableViews()); else scrollView.setScrollabelViews(null); } diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditViewPager.java b/astrid/src/com/todoroo/astrid/activity/TaskEditViewPager.java index d1a231991..cfd9b0f66 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskEditViewPager.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskEditViewPager.java @@ -5,6 +5,8 @@ */ package com.todoroo.astrid.activity; +import java.util.ArrayList; + import android.content.Context; import android.os.Parcelable; import android.support.v4.view.PagerAdapter; @@ -16,31 +18,23 @@ import com.viewpagerindicator.TitleProvider; public class TaskEditViewPager extends PagerAdapter implements TitleProvider { - private static String[] titles; + private final String[] titles; public TaskEditFragment parent; - public TaskEditViewPager(Context context, int tabStyle) { - switch(tabStyle) { - case TaskEditFragment.TAB_STYLE_ACTIVITY_WEB: - titles = new String[] { - context.getString(R.string.TEA_tab_activity), - context.getString(R.string.TEA_tab_more), - context.getString(R.string.TEA_tab_web), - }; - break; - case TaskEditFragment.TAB_STYLE_ACTIVITY: - titles = new String[] { - context.getString(R.string.TEA_tab_activity), - context.getString(R.string.TEA_tab_more), - }; - break; - case TaskEditFragment.TAB_STYLE_WEB: - titles = new String[] { - context.getString(R.string.TEA_tab_more), - context.getString(R.string.TEA_tab_web), - }; - break; - } + public static final int TAB_SHOW_ACTIVITY = 1 << 0; + public static final int TAB_SHOW_MORE = 1 << 1; + public static final int TAB_SHOW_WEB = 1 << 2; + + public TaskEditViewPager(Context context, int tabStyleMask) { + ArrayList titleList = new ArrayList(); + if ((tabStyleMask & TAB_SHOW_ACTIVITY) > 0) + titleList.add(context.getString(R.string.TEA_tab_activity)); + if ((tabStyleMask & TAB_SHOW_MORE) > 0) + titleList.add(context.getString(R.string.TEA_tab_more)); + if ((tabStyleMask & TAB_SHOW_WEB) > 0) + titleList.add(context.getString(R.string.TEA_tab_web)); + + titles = titleList.toArray(new String[titleList.size()]); } @Override diff --git a/astrid/src/com/todoroo/astrid/ui/ImportanceControlSet.java b/astrid/src/com/todoroo/astrid/ui/ImportanceControlSet.java index 323ea878f..96090b136 100644 --- a/astrid/src/com/todoroo/astrid/ui/ImportanceControlSet.java +++ b/astrid/src/com/todoroo/astrid/ui/ImportanceControlSet.java @@ -29,7 +29,7 @@ import com.todoroo.astrid.producteev.ProducteevUtilities; */ public class ImportanceControlSet extends TaskEditControlSet { private final List buttons = new LinkedList(); - private int[] colors; + private final int[] colors; //private final int grayColor; private final List listeners = new LinkedList(); @@ -39,6 +39,7 @@ public class ImportanceControlSet extends TaskEditControlSet { public ImportanceControlSet(Activity activity, int layout) { super(activity, layout); + colors = Task.getImportanceColors(activity.getResources()); } public void setImportance(Integer i) { @@ -88,7 +89,6 @@ public class ImportanceControlSet extends TaskEditControlSet { @Override protected void afterInflate() { LinearLayout container = (LinearLayout) getView().findViewById(R.id.importance_container); - colors = Task.getImportanceColors(activity.getResources()); int min = Task.IMPORTANCE_MOST; int max = Task.IMPORTANCE_LEAST; @@ -149,6 +149,14 @@ public class ImportanceControlSet extends TaskEditControlSet { } } + @Override + public void readFromTask(Task task) { + super.readFromTask(task); + setImportance(model.getValue(Task.IMPORTANCE)); + } + + // Same as above because we need the setImportance listeners to fire even in + // the case when the UI hasn't been created yet @Override protected void readFromTaskOnInitialize() { setImportance(model.getValue(Task.IMPORTANCE));