Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions res/layout/fragment_date.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/WizardPageContainer">

<TextView style="@style/WizardPageTitle" />

<EditText
android:id="@+id/etDate"
android:focusable="false"
android:hint="@string/date_hint"
android:inputType="date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:ems="10"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:fontFamily="sans-serif-thin" />

</LinearLayout>
1 change: 1 addition & 0 deletions res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@
<string name="submit_confirm_message">Place the order with the deli? You will receive an email
confirmation.</string>
<string name="submit_confirm_button">Place order</string>
<string name="date_hint">Date ...</string>
</resources>
3 changes: 3 additions & 0 deletions src/com/example/android/wizardpager/SandwichWizardModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.example.android.wizardpager.wizard.model.AbstractWizardModel;
import com.example.android.wizardpager.wizard.model.BranchPage;
import com.example.android.wizardpager.wizard.model.CustomerInfoPage;
import com.example.android.wizardpager.wizard.model.DatePage;
import com.example.android.wizardpager.wizard.model.MultipleFixedChoicePage;
import com.example.android.wizardpager.wizard.model.PageList;
import com.example.android.wizardpager.wizard.model.SingleFixedChoicePage;
Expand Down Expand Up @@ -72,6 +73,8 @@ protected PageList onNewRootPageList() {

.setRequired(true),

new DatePage(this, "When do you want this order to arrive ?").setRequired(true),

new CustomerInfoPage(this, "Your info")
.setRequired(true)
);
Expand Down
36 changes: 36 additions & 0 deletions src/com/example/android/wizardpager/wizard/model/DatePage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.example.android.wizardpager.wizard.model;


import android.support.v4.app.Fragment;
import android.text.TextUtils;

import com.example.android.wizardpager.wizard.ui.DateFragment;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Locale;

public class DatePage extends Page {

public static final String DATE_DATA_KEY = "date";
public static SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.US);

public DatePage(ModelCallbacks callbacks, String title) {
super(callbacks, title);
}

@Override
public Fragment createFragment() {
return DateFragment.create(getKey());
}

@Override
public void getReviewItems(ArrayList<ReviewItem> dest) {
dest.add(new ReviewItem(getTitle(), mData.getString(DATE_DATA_KEY), getKey()));
}

@Override
public boolean isCompleted() {
return !TextUtils.isEmpty(mData.getString(DATE_DATA_KEY));
}
}
129 changes: 129 additions & 0 deletions src/com/example/android/wizardpager/wizard/ui/DateFragment.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package com.example.android.wizardpager.wizard.ui;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;

import com.example.android.wizardpager.R;
import com.example.android.wizardpager.wizard.model.DatePage;

import java.util.Calendar;

public class DateFragment extends Fragment {

private static final String ARG_KEY = "key";

private PageFragmentCallbacks mCallbacks;
private String mKey;
private DatePage mPage;
private EditText mDateView;
private DatePickerDialog mDatePickerDialog;

public static DateFragment create(String key) {
Bundle args = new Bundle();
args.putString(ARG_KEY, key);

DateFragment fragment = new DateFragment();
fragment.setArguments(args);
return fragment;
}

public DateFragment() {
// Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Bundle args = getArguments();
mKey = args.getString(ARG_KEY);
mPage = (DatePage) mCallbacks.onGetPage(mKey);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_date, container, false);

((TextView) rootView.findViewById(android.R.id.title)).setText(mPage.getTitle());

mDateView = ((EditText) rootView.findViewById(R.id.etDate));
mDateView.setText(mPage.getData().getString(DatePage.DATE_DATA_KEY));

return rootView;
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);

if (!(activity instanceof PageFragmentCallbacks)) {
throw new ClassCastException("Activity must implement PageFragmentCallbacks");
}

mCallbacks = (PageFragmentCallbacks) activity;
}

@Override
public void onDetach() {
super.onDetach();
mCallbacks = null;
}


@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);

mDateView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mDatePickerDialog.show();
}
});

Calendar newCalendar = Calendar.getInstance();
mDatePickerDialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {

public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);

String formattedDate = DatePage.dateFormatter.format(newDate.getTime());

mDateView.setText(formattedDate);

mPage.getData().putString(DatePage.DATE_DATA_KEY, formattedDate);
mPage.notifyDataChanged();
}

},newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
}

@Override
public void setMenuVisibility(boolean menuVisible) {
super.setMenuVisibility(menuVisible);

// In a future update to the support library, this should override setUserVisibleHint
// instead of setMenuVisibility.
if (mDateView != null) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
if (!menuVisible) {
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
}
}
}
}