package com.openfarmanager.android.dialogs; import android.app.DatePickerDialog; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.CheckBox; import android.widget.DatePicker; import android.widget.EditText; import android.widget.TextView; import android.widget.ViewFlipper; import com.openfarmanager.android.App; import com.openfarmanager.android.R; import com.openfarmanager.android.core.AbstractCommand; import com.openfarmanager.android.model.SelectParams; import com.openfarmanager.android.utils.SimpleWrapper; import java.io.File; import java.util.Calendar; import java.util.Date; /** * author: Vlad Namashko */ public class SelectDialog extends Dialog { private AbstractCommand mCommand; public SelectDialog(Context context, AbstractCommand command) { super(context, R.style.Action_Dialog); mCommand = command; } @Override public void onCreate(Bundle savedInstanceState) { setContentView(R.layout.dialog_select); final View name = findViewById(R.id.select_name); final View date = findViewById(R.id.select_date); final View dateToday = findViewById(R.id.date_today); final View datePeriod = findViewById(R.id.date_period); final TextView dateFrom = (TextView) findViewById(R.id.date_from); final TextView dateTo = (TextView) findViewById(R.id.date_to); final ViewFlipper pages = (ViewFlipper) findViewById(R.id.pages); String searchText = App.sInstance.getSharedPreferences("action_dialog", 0).getString("select_pattern", "*"); ((TextView) findViewById(R.id.selection_string)).setText(searchText); final Calendar calendar = Calendar.getInstance(); final int todayDay = calendar.get(Calendar.DAY_OF_MONTH); final int todayMonth = calendar.get(Calendar.MONTH); final int todayYear = calendar.get(Calendar.YEAR); final SimpleWrapper<Boolean> isToday = new SimpleWrapper<Boolean>(); name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { date.setBackgroundResource(R.color.main_grey); name.setBackgroundResource(R.color.selected_item); pages.setDisplayedChild(0); } }); date.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { date.setBackgroundResource(R.color.selected_item); name.setBackgroundResource(R.color.main_grey); pages.setDisplayedChild(1); } }); dateFrom.setClickable(false); dateTo.setClickable(false); isToday.value = true; dateToday.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { datePeriod.setBackgroundResource(R.color.main_grey); dateToday.setBackgroundResource(R.color.selected_item); dateFrom.setClickable(false); dateTo.setClickable(false); isToday.value = true; } }); datePeriod.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dateToday.setBackgroundResource(R.color.main_grey); datePeriod.setBackgroundResource(R.color.selected_item); dateFrom.setClickable(true); dateTo.setClickable(true); isToday.value = false; } }); dateFrom.setText(String.format("%s/%s/%s", todayYear, todayMonth, todayDay)); dateTo.setText(String.format("%s/%s/%s", todayYear, todayMonth, todayDay)); dateFrom.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isToday.value) { return; } DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateFrom.setText(String.format("%s/%s/%s", year, monthOfYear, dayOfMonth)); } }, todayYear, todayMonth, todayDay); datePickerDialog.show(); } }); dateTo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (isToday.value) { return; } DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(), new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateTo.setText(String.format("%s/%s/%s", year, monthOfYear, dayOfMonth)); } }, todayYear, todayMonth, todayDay); datePickerDialog.show(); } }); findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dismiss(); } }); findViewById(R.id.ok).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SelectParams selectParams; if (pages.getDisplayedChild() == 0) { // select by name String selectionString = ((EditText) findViewById(R.id.selection_string)).getText().toString(); boolean invertSelection = ((CheckBox) findViewById(R.id.invert_selection)).isChecked(); selectParams = new SelectParams(SelectParams.SelectionType.NAME, selectionString, invertSelection, false, null, null); } else { if (isToday.value) { selectParams = new SelectParams(SelectParams.SelectionType.MODIFICATION_DATE, "", false, true, null, null); } else { try { String fromString = dateFrom.getText().toString(); String toString = dateTo.getText().toString(); String[] toStringParts = toString.split("\\/"); String[] fromStringParts = fromString.split("\\/"); calendar.set(Calendar.YEAR, Integer.parseInt(fromStringParts[0])); calendar.set(Calendar.MONTH, Integer.parseInt(fromStringParts[1])); calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(fromStringParts[2])); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date dateFrom = calendar.getTime(); calendar.set(Calendar.YEAR, Integer.parseInt(toStringParts[0])); calendar.set(Calendar.MONTH, Integer.parseInt(toStringParts[1])); calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(toStringParts[2])); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); Date dateTo = calendar.getTime(); selectParams = new SelectParams(SelectParams.SelectionType.MODIFICATION_DATE, "", false, false, dateFrom, dateTo); } catch (Exception e) { selectParams = new SelectParams(SelectParams.SelectionType.MODIFICATION_DATE, "", false, true, null, null); } } } if (mCommand != null) { mCommand.execute(selectParams); } dismiss(); } }); } }