Three pane view in tablet portrait mode

pull/14/head
Sam Bosley 12 years ago
parent 692aa202e9
commit 50b2751360

@ -30,28 +30,6 @@
android:orientation="horizontal" android:orientation="horizontal"
android:paddingRight="6dip" > android:paddingRight="6dip" >
<LinearLayout
android:id="@+id/save_and_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone" >
<ImageButton
android:id="@+id/cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dip"
android:background="@android:color/transparent"
android:src="@drawable/ic_menu_close" />
<ImageButton
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:src="@drawable/ic_menu_save" />
</LinearLayout>
</LinearLayout> </LinearLayout>
<LinearLayout <LinearLayout

@ -19,24 +19,34 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/asSeparatorBackground"/> android:background="?attr/asSeparatorBackground"/>
<!-- Task List --> <LinearLayout
<FrameLayout android:id="@+id/right_column"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_weight="40" android:layout_weight="40"
android:id="@+id/tasklist_fragment_container" /> android:orientation="vertical">
<!-- Task Edit -->
<View <FrameLayout
android:layout_width="1px" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/asSeparatorBackground"/> android:layout_weight="50"
android:id="@+id/taskedit_fragment_container"
<!-- Task Edit --> android:visibility="gone" />
<FrameLayout
android:layout_width="match_parent" <View
android:layout_height="match_parent" android:id="@+id/edit_separator"
android:layout_weight="11" android:layout_height="1px"
android:id="@+id/taskedit_fragment_container" android:layout_width="match_parent"
android:visibility="gone" /> android:background="?attr/asSeparatorBackground"
android:visibility="gone"/>
<!-- Task List -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="50"
android:id="@+id/tasklist_fragment_container" />
</LinearLayout>
</LinearLayout> </LinearLayout>

@ -249,8 +249,7 @@ public class AstridActivity extends FragmentActivity
if (fragmentLayout != LAYOUT_SINGLE) { if (fragmentLayout != LAYOUT_SINGLE) {
TaskEditFragment editActivity = getTaskEditFragment(); TaskEditFragment editActivity = getTaskEditFragment();
if (fragmentLayout == LAYOUT_TRIPLE) findViewById(R.id.taskedit_fragment_container).setVisibility(View.VISIBLE);
findViewById(R.id.taskedit_fragment_container).setVisibility(View.VISIBLE);
if(editActivity == null) { if(editActivity == null) {
editActivity = new TaskEditFragment(); editActivity = new TaskEditFragment();

@ -51,7 +51,6 @@ import android.view.LayoutInflater;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.View; import android.view.View;
import android.view.View.MeasureSpec; import android.view.View.MeasureSpec;
import android.view.View.OnClickListener;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.view.ViewParent; import android.view.ViewParent;
@ -354,21 +353,6 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
setHasOptionsMenu(true); setHasOptionsMenu(true);
AstridActivity activity = (AstridActivity) getActivity(); AstridActivity activity = (AstridActivity) getActivity();
if (activity instanceof TaskListActivity && activity.fragmentLayout == AstridActivity.LAYOUT_DOUBLE) {
getView().findViewById(R.id.save_and_cancel).setVisibility(View.VISIBLE);
getView().findViewById(R.id.save).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
saveButtonClick();
}
});
getView().findViewById(R.id.cancel).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
discardButtonClick();
}
});
}
setUpUIComponents(); setUpUIComponents();
adjustInfoPopovers(); adjustInfoPopovers();
@ -901,6 +885,8 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
tla.refreshTaskList(); tla.refreshTaskList();
} }
Log.e("Not on pause", "not on pause", new Throwable());
getActivity().getIntent().removeExtra(TaskListActivity.OPEN_TASK);
shouldSaveState = false; shouldSaveState = false;
getActivity().onBackPressed(); getActivity().onBackPressed();
@ -986,6 +972,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
} }
} }
getActivity().getIntent().removeExtra(TaskListActivity.OPEN_TASK);
showCancelToast(); showCancelToast();
getActivity().onBackPressed(); getActivity().onBackPressed();
} }
@ -1147,8 +1134,6 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
super.onCreateOptionsMenu(menu, inflater); super.onCreateOptionsMenu(menu, inflater);
MenuItem item; MenuItem item;
AstridActivity activity = (AstridActivity) getActivity();
if (ActFmPreferenceService.isPremiumUser()) { if (ActFmPreferenceService.isPremiumUser()) {
item = menu.add(Menu.NONE, MENU_ATTACH_ID, 0, R.string.premium_attach_file); item = menu.add(Menu.NONE, MENU_ATTACH_ID, 0, R.string.premium_attach_file);
item.setIcon(R.drawable.ic_menu_attach); item.setIcon(R.drawable.ic_menu_attach);
@ -1159,15 +1144,13 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
} }
if (activity instanceof TaskListActivity && activity.fragmentLayout != AstridActivity.LAYOUT_DOUBLE || activity instanceof TaskEditActivity) { item = menu.add(Menu.NONE, MENU_DISCARD_ID, 0, R.string.TEA_menu_discard);
item = menu.add(Menu.NONE, MENU_DISCARD_ID, 0, R.string.TEA_menu_discard); item.setIcon(R.drawable.ic_menu_close);
item.setIcon(R.drawable.ic_menu_close); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
item = menu.add(Menu.NONE, MENU_SAVE_ID, 0, R.string.TEA_menu_save); item = menu.add(Menu.NONE, MENU_SAVE_ID, 0, R.string.TEA_menu_save);
item.setIcon(R.drawable.ic_menu_save); item.setIcon(R.drawable.ic_menu_save);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
item = menu.add(Menu.NONE, MENU_DELETE_ID, 0, R.string.TEA_menu_delete); item = menu.add(Menu.NONE, MENU_DELETE_ID, 0, R.string.TEA_menu_delete);
item.setIcon(android.R.drawable.ic_menu_delete); item.setIcon(android.R.drawable.ic_menu_delete);

@ -1,5 +1,6 @@
package com.todoroo.astrid.activity; package com.todoroo.astrid.activity;
import android.animation.LayoutTransition;
import android.app.Activity; import android.app.Activity;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -11,13 +12,11 @@ import android.os.Bundle;
import android.support.v4.app.ActionBar; import android.support.v4.app.ActionBar;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager.OnPageChangeListener; import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.View.OnTouchListener; import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.widget.Button; import android.widget.Button;
import android.widget.FrameLayout; import android.widget.FrameLayout;
@ -34,7 +33,6 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences; import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.TagSettingsActivity; import com.todoroo.astrid.actfm.TagSettingsActivity;
import com.todoroo.astrid.actfm.TagUpdatesFragment;
import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.FilterAdapter; import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.adapter.TaskListFragmentPagerAdapter; import com.todoroo.astrid.adapter.TaskListFragmentPagerAdapter;
@ -84,9 +82,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private TaskListFragmentPagerAdapter tlfPagerAdapter; private TaskListFragmentPagerAdapter tlfPagerAdapter;
private FragmentPopover listsPopover; private FragmentPopover listsPopover;
private FragmentPopover editPopover;
private FragmentPopover commentsPopover;
private MainMenuPopover mainMenuPopover; private MainMenuPopover mainMenuPopover;
private boolean commentsVisible = false;
private boolean swipeEnabled = false; private boolean swipeEnabled = false;
@ -112,12 +109,11 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (fragmentLayout == LAYOUT_DOUBLE) { if (fragmentLayout == LAYOUT_DOUBLE) {
TagUpdatesFragment frag = getTagUpdatesFragment(); View container = findViewById(R.id.taskedit_fragment_container);
if (frag != null) { View separator = findViewById(R.id.edit_separator);
setupPopoverWithFragment(commentsPopover, frag, null); container.setVisibility(container.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
commentsPopover.show(listsNav); separator.setVisibility(container.getVisibility());
frag.setLastViewed(); commentsVisible = container.getVisibility() == View.VISIBLE;
}
} else { } else {
// In this case we should be in LAYOUT_SINGLE--delegate to the task list fragment // In this case we should be in LAYOUT_SINGLE--delegate to the task list fragment
TaskListFragment tlf = getTaskListFragment(); TaskListFragment tlf = getTaskListFragment();
@ -127,21 +123,6 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
} }
}; };
private final OnDismissListener editPopoverDismissListener = new OnDismissListener() {
@Override
public void onDismiss() {
TaskEditFragment tea = getTaskEditFragment();
if (tea != null) {
try {
if (!Flags.checkAndClear(Flags.TLA_DISMISSED_FROM_TASK_EDIT))
tea.save(false);
} catch (IllegalStateException e) {
// Save during pause, ignore it
}
}
}
};
/** /**
* @see android.app.Activity#onCreate(Bundle) * @see android.app.Activity#onCreate(Bundle)
*/ */
@ -280,8 +261,9 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
actionBar.getCustomView().findViewById(R.id.comments).setVisibility(View.GONE); actionBar.getCustomView().findViewById(R.id.comments).setVisibility(View.GONE);
} else { } else {
fragmentLayout = LAYOUT_DOUBLE; fragmentLayout = LAYOUT_DOUBLE;
createEditPopover(); if (AndroidUtilities.getSdkVersion() >= 11) {
createCommentsPopover(); setupLayoutTransitions();
}
} }
boolean peopleView = getIntent().getBooleanExtra(PEOPLE_VIEW, false); boolean peopleView = getIntent().getBooleanExtra(PEOPLE_VIEW, false);
@ -300,6 +282,12 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
} }
} }
private void setupLayoutTransitions() {
LayoutTransition transition = new LayoutTransition();
ViewGroup container = (ViewGroup) findViewById(R.id.right_column);
container.setLayoutTransition(transition);
}
protected Class<? extends FilterListFragment> getFilterListClass() { protected Class<? extends FilterListFragment> getFilterListClass() {
return FilterListFragment.class; return FilterListFragment.class;
} }
@ -314,34 +302,6 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
}); });
} }
private void createEditPopover() {
editPopover = new FragmentPopover(this, R.layout.taskedit_popover);
editPopover.setOnDismissListener(editPopoverDismissListener);
editPopover.setTouchInterceptor(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
if ((event.getAction() == MotionEvent.ACTION_DOWN)
&& ((x < 0) || (x >= editPopover.getContentView().getWidth()) || (y < 0) || (y >= editPopover.getContentView().getHeight()))) return true;
return false;
}
});
}
private void createCommentsPopover() {
commentsPopover = new FragmentPopover(this, R.layout.taskedit_popover);
commentsPopover.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {
TagUpdatesFragment frag = getTagUpdatesFragment();
FrameLayout parent = (FrameLayout) frag.getView().getParent();
parent.removeView(frag.getView());
((FrameLayout) findViewById(R.id.taskedit_fragment_container)).addView(frag.getView());
}
});
}
private void createMainMenuPopover() { private void createMainMenuPopover() {
int layout; int layout;
boolean isTablet = AndroidUtilities.isTabletSized(this); boolean isTablet = AndroidUtilities.isTabletSized(this);
@ -381,17 +341,6 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
setupPopoverWithFragment(listsPopover, fla, null); setupPopoverWithFragment(listsPopover, fla, null);
} }
@Override
public void onTaskListItemClicked(long taskId) {
super.onTaskListItemClicked(taskId);
if (fragmentLayout == LAYOUT_DOUBLE && getTaskEditFragment() != null) {
DisplayMetrics metrics = getResources().getDisplayMetrics();
setupPopoverWithFragment(editPopover, getTaskEditFragment(), new LayoutParams((int) (400 * metrics.density), (int) (600 * metrics.density)));
editPopover.show(listsNav);
}
}
@Override @Override
public boolean onFilterItemClicked(FilterListItem item) { public boolean onFilterItemClicked(FilterListItem item) {
if (listsPopover != null) if (listsPopover != null)
@ -445,10 +394,18 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
onTaskListItemClicked(result.getId()); onTaskListItemClicked(result.getId());
} }
} }
getIntent().removeExtra(OPEN_TASK); if (fragmentLayout == LAYOUT_SINGLE)
getIntent().removeExtra(OPEN_TASK);
} }
} }
@Override
public void onTaskListItemClicked(long taskId) {
if (fragmentLayout != LAYOUT_SINGLE)
getIntent().putExtra(OPEN_TASK, taskId);
super.onTaskListItemClicked(taskId);
}
public void setListsTitle(String title) { public void setListsTitle(String title) {
lists.setText(title); lists.setText(title);
} }
@ -463,9 +420,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
protected void onPause() { protected void onPause() {
super.onPause(); super.onPause();
AndroidUtilities.tryDismissPopup(this, listsPopover); AndroidUtilities.tryDismissPopup(this, listsPopover);
AndroidUtilities.tryDismissPopup(this, editPopover);
AndroidUtilities.tryDismissPopup(this, mainMenuPopover); AndroidUtilities.tryDismissPopup(this, mainMenuPopover);
AndroidUtilities.tryDismissPopup(this, commentsPopover);
} }
@Override @Override
@ -526,16 +481,11 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
View taskeditFragmentContainer = findViewById(R.id.taskedit_fragment_container); View taskeditFragmentContainer = findViewById(R.id.taskedit_fragment_container);
if(taskeditFragmentContainer != null && taskeditFragmentContainer.getVisibility() == View.VISIBLE) { if(taskeditFragmentContainer != null && taskeditFragmentContainer.getVisibility() == View.VISIBLE) {
if(fragmentLayout == LAYOUT_DOUBLE) { if(fragmentLayout == LAYOUT_DOUBLE) {
findViewById(R.id.taskedit_fragment_container).setVisibility(View.GONE); if (!commentsVisible)
findViewById(R.id.filterlist_fragment_container).setVisibility(View.VISIBLE); findViewById(R.id.taskedit_fragment_container).setVisibility(View.GONE);
} }
Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT); Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT);
onPostResume(); onPostResume();
} else {
if (editPopover != null && editPopover.isShowing()) {
Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT);
editPopover.dismiss();
}
} }
super.onBackPressed(); super.onBackPressed();
} }

Loading…
Cancel
Save