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: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

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

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

@ -51,7 +51,6 @@ import android.view.LayoutInflater;
import android.view.MenuInflater;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.ViewParent;
@ -354,21 +353,6 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
setHasOptionsMenu(true);
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();
adjustInfoPopovers();
@ -901,6 +885,8 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
tla.refreshTaskList();
}
Log.e("Not on pause", "not on pause", new Throwable());
getActivity().getIntent().removeExtra(TaskListActivity.OPEN_TASK);
shouldSaveState = false;
getActivity().onBackPressed();
@ -986,6 +972,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
}
}
getActivity().getIntent().removeExtra(TaskListActivity.OPEN_TASK);
showCancelToast();
getActivity().onBackPressed();
}
@ -1147,8 +1134,6 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
super.onCreateOptionsMenu(menu, inflater);
MenuItem item;
AstridActivity activity = (AstridActivity) getActivity();
if (ActFmPreferenceService.isPremiumUser()) {
item = menu.add(Menu.NONE, MENU_ATTACH_ID, 0, R.string.premium_attach_file);
item.setIcon(R.drawable.ic_menu_attach);
@ -1159,7 +1144,6 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
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.setIcon(R.drawable.ic_menu_close);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
@ -1167,7 +1151,6 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
item = menu.add(Menu.NONE, MENU_SAVE_ID, 0, R.string.TEA_menu_save);
item.setIcon(R.drawable.ic_menu_save);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
item = menu.add(Menu.NONE, MENU_DELETE_ID, 0, R.string.TEA_menu_delete);
item.setIcon(android.R.drawable.ic_menu_delete);

@ -1,5 +1,6 @@
package com.todoroo.astrid.activity;
import android.animation.LayoutTransition;
import android.app.Activity;
import android.app.SearchManager;
import android.content.BroadcastReceiver;
@ -11,13 +12,11 @@ import android.os.Bundle;
import android.support.v4.app.ActionBar;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
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.Preferences;
import com.todoroo.astrid.actfm.TagSettingsActivity;
import com.todoroo.astrid.actfm.TagUpdatesFragment;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.FilterAdapter;
import com.todoroo.astrid.adapter.TaskListFragmentPagerAdapter;
@ -84,9 +82,8 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
private TaskListFragmentPagerAdapter tlfPagerAdapter;
private FragmentPopover listsPopover;
private FragmentPopover editPopover;
private FragmentPopover commentsPopover;
private MainMenuPopover mainMenuPopover;
private boolean commentsVisible = false;
private boolean swipeEnabled = false;
@ -112,12 +109,11 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
@Override
public void onClick(View v) {
if (fragmentLayout == LAYOUT_DOUBLE) {
TagUpdatesFragment frag = getTagUpdatesFragment();
if (frag != null) {
setupPopoverWithFragment(commentsPopover, frag, null);
commentsPopover.show(listsNav);
frag.setLastViewed();
}
View container = findViewById(R.id.taskedit_fragment_container);
View separator = findViewById(R.id.edit_separator);
container.setVisibility(container.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
separator.setVisibility(container.getVisibility());
commentsVisible = container.getVisibility() == View.VISIBLE;
} else {
// In this case we should be in LAYOUT_SINGLE--delegate to the task list fragment
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)
*/
@ -280,8 +261,9 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
actionBar.getCustomView().findViewById(R.id.comments).setVisibility(View.GONE);
} else {
fragmentLayout = LAYOUT_DOUBLE;
createEditPopover();
createCommentsPopover();
if (AndroidUtilities.getSdkVersion() >= 11) {
setupLayoutTransitions();
}
}
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() {
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() {
int layout;
boolean isTablet = AndroidUtilities.isTabletSized(this);
@ -381,17 +341,6 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
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
public boolean onFilterItemClicked(FilterListItem item) {
if (listsPopover != null)
@ -445,10 +394,18 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
onTaskListItemClicked(result.getId());
}
}
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) {
lists.setText(title);
}
@ -463,9 +420,7 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
protected void onPause() {
super.onPause();
AndroidUtilities.tryDismissPopup(this, listsPopover);
AndroidUtilities.tryDismissPopup(this, editPopover);
AndroidUtilities.tryDismissPopup(this, mainMenuPopover);
AndroidUtilities.tryDismissPopup(this, commentsPopover);
}
@Override
@ -526,16 +481,11 @@ public class TaskListActivity extends AstridActivity implements MainMenuListener
View taskeditFragmentContainer = findViewById(R.id.taskedit_fragment_container);
if(taskeditFragmentContainer != null && taskeditFragmentContainer.getVisibility() == View.VISIBLE) {
if(fragmentLayout == LAYOUT_DOUBLE) {
if (!commentsVisible)
findViewById(R.id.taskedit_fragment_container).setVisibility(View.GONE);
findViewById(R.id.filterlist_fragment_container).setVisibility(View.VISIBLE);
}
Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT);
onPostResume();
} else {
if (editPopover != null && editPopover.isShowing()) {
Flags.set(Flags.TLA_DISMISSED_FROM_TASK_EDIT);
editPopover.dismiss();
}
}
super.onBackPressed();
}

Loading…
Cancel
Save