Control set dialogs now persist across device rotation

pull/14/head
Sam Bosley 12 years ago
parent 16a18f5d1f
commit c768e5d818

@ -40,7 +40,6 @@ public final class AlarmControlSet extends TaskEditControlSet {
private DateAndTimeDialog pickerDialog;
public AlarmControlSet(Activity activity, int layout) {
//View v = LayoutInflater.from(activity).inflate(R.layout.alarm_control, parent, true);
super(activity, layout);
}

@ -98,6 +98,7 @@ import com.todoroo.astrid.ui.HideUntilControlSet;
import com.todoroo.astrid.ui.ImportanceControlSet;
import com.todoroo.astrid.ui.NestableScrollView;
import com.todoroo.astrid.ui.NestableViewPager;
import com.todoroo.astrid.ui.PopupControlSet;
import com.todoroo.astrid.ui.ReminderControlSet;
import com.todoroo.astrid.ui.TaskEditMoreControls;
import com.todoroo.astrid.ui.WebServicesView;
@ -132,6 +133,8 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
*/
public static final String TOKEN_VALUES = "v"; //$NON-NLS-1$
public static final String TOKEN_OPEN_CONTROL = "open_control"; //$NON-NLS-1$
/**
* Task in progress (during orientation change)
*/
@ -602,6 +605,8 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
moreSectionHasControls = false;
Class<?> openControl = (Class<?>) getActivity().getIntent().getSerializableExtra(TOKEN_OPEN_CONTROL);
for (int i = 0; i < itemOrder.length; i++) {
String item = itemOrder[i];
if (item.equals(hideAlwaysTrigger)) {
@ -622,6 +627,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
else if (curr != null)
controlSet = (LinearLayout) curr.getDisplayView();
if (controlSet != null) {
if ((i + 1 >= itemOrder.length || itemOrder[i + 1].equals(moreSectionTrigger))) {
removeTeaSeparator(controlSet);
@ -630,9 +636,15 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
if (section == moreControls)
moreSectionHasControls = true;
}
if (curr != null && curr.getClass().equals(openControl) && curr instanceof PopupControlSet) {
((PopupControlSet) curr).getDisplayView().performClick();
}
}
}
getActivity().getIntent().removeExtra(TOKEN_OPEN_CONTROL);
// Load task data in background
new TaskEditBackgroundLoader().start();
}
@ -832,6 +844,13 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
StringBuilder toast = new StringBuilder();
synchronized (controls) {
for (TaskEditControlSet controlSet : controls) {
if (controlSet instanceof PopupControlSet) { // Save open control set
PopupControlSet popup = (PopupControlSet) controlSet;
Dialog d = popup.getDialog();
if (d != null && d.isShowing()) {
getActivity().getIntent().putExtra(TOKEN_OPEN_CONTROL, popup.getClass());
}
}
String toastText = controlSet.writeToModel(model);
if (toastText != null)
toast.append('\n').append(toastText);

@ -144,6 +144,10 @@ public abstract class PopupControlSet extends TaskEditControlSet {
refreshDisplayView();
}
public Dialog getDialog() {
return dialog;
}
@Override
public String writeToModel(Task task) {
if (initialized && dialog != null)

Loading…
Cancel
Save