package com.purdue.CampusFeed.Activities; import android.app.DatePickerDialog; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.*; import com.purdue.CampusFeed.API.AdvSearchQuery; import com.purdue.CampusFeed.Adapters.EventArrayAdapter; import com.purdue.CampusFeed.R; import com.purdue.CampusFeed.Utils.Utils; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; /** * Created by Sean on 3/7/14. */ public class AdvancedSearchFragment extends Fragment implements OnClickListener { EventArrayAdapter adapter; EditText startDateSpinner, endDateSpinner; DatePickerDialog startDatePickerDialog, endDatePickerDialog; int startYear, startMonth, startDay, endYear, endMonth, endDay; /* Called when the user finishes selecting a date from the dialog */ private DatePickerDialog.OnDateSetListener startDatePickerListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDay) { startYear = selectedYear; startMonth = selectedMonth; startDay = selectedDay; // Change spinner's text view to selected date startDateSpinner.setText(new StringBuilder().append(startMonth + 1).append("-").append(startDay).append("-").append(startYear).append(" ")); } }; MultiAutoCompleteTextView searchTag; /* Called when the user finishes selecting a date from the dialog */ private DatePickerDialog.OnDateSetListener endDatePickerListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker datePicker, int selectedYear, int selectedMonth, int selectedDay) { endYear = selectedYear; endMonth = selectedMonth; endDay = selectedDay; // Change spinner's text view to selected date endDateSpinner.setText(new StringBuilder().append(endMonth + 1).append("-").append(endDay).append("-").append(endYear).append(" ")); } }; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.advanced_search, container, false); /* Button searchButton = (Button) view.findViewById(R.id.advSearchButton); ListView resultsView = (ListView) view.findViewById(R.id.search_list); adapter = new EventArrayAdapter(getActivity(), new ArrayList<Event>()); resultsView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) { Event e = (Event) adapterView.getAdapter().getItem(pos); EventPageFragment fragment = new EventPageFragment(); fragment.setEvent(e); //getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit(); Intent intent = new Intent(getActivity(), SingleFragmentActivity.class); intent.putExtra(getString(R.string.START_FRAGMENT), "EventPageFragment"); intent.putExtra(getString(R.string.EVENT), e); startActivity(intent); } }); searchButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { EditText text = (EditText) getActivity().findViewById(R.id.searchName); AdvSearchQuery query = new AdvSearchQuery(); query.setTitle(text.getText().toString()); new SearchQueryExecutor(AdvancedSearch_Fragment.this.getActivity(), adapter).execute(query); } });*/ return view; } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); final Calendar cal = Calendar.getInstance(); startYear = cal.get(Calendar.YEAR); startMonth = cal.get(Calendar.MONTH); startDay = cal.get(Calendar.DAY_OF_MONTH); endYear = cal.get(Calendar.YEAR); endMonth = cal.get(Calendar.MONTH); endDay = cal.get(Calendar.DAY_OF_MONTH); startDateSpinner = (EditText) getActivity().findViewById(R.id.searchStartDateSpinner); endDateSpinner = (EditText) getActivity().findViewById(R.id.searchEndDateSpinner); searchTag = (MultiAutoCompleteTextView) getActivity().findViewById(R.id.searchTagText); searchTag.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_dropdown_item_1line, Utils.categories)); searchTag.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer()); startDatePickerDialog = new DatePickerDialog(getActivity(), startDatePickerListener, startYear, startMonth, startDay); endDatePickerDialog = new DatePickerDialog(getActivity(), endDatePickerListener, endYear, endMonth, endDay); /* Called when dateSpinner is clicked */ startDateSpinner.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // show date picker startDatePickerDialog.show(); } }); endDateSpinner.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // show date picker endDatePickerDialog.show(); } }); Button searchButton = (Button) getActivity().findViewById(R.id.advSearchButton); searchButton.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub AdvSearchQuery query = new AdvSearchQuery(); EditText searchName = (EditText) getActivity().findViewById(R.id.searchNameText); EditText searchDescription = (EditText) getActivity().findViewById(R.id.searchDescriptionText); EditText searchStartDate = (EditText) getActivity().findViewById(R.id.searchStartDateSpinner); EditText searchEndDate = (EditText) getActivity().findViewById(R.id.searchEndDateSpinner); String name = searchName.getText().toString(); String description = searchDescription.getText().toString(); ArrayList<String> tag = new ArrayList<String>(); //Collections.addAll(tag, searchTag.getText().toString().split(" ")); String[] tags = searchTag.getText().toString().split(" "); String startTime = searchStartDate.getText().toString(); String endTime = searchEndDate.getText().toString(); for (int i = 0; i < tags.length; i++) { if (!tags[i].equals("")) { tag.add(tags[i]); } } if (!name.isEmpty()) { query.setTitle(name); } if (!description.isEmpty()) { query.setDesc(description); } if (tag.size() != 0) { query.settags(tag); } if (!startTime.isEmpty()) { startTime = startTime.trim(); Log.e("tag", "START TIME =======" + startTime + "========"); if (startTime.charAt(1) == '-') { startTime = "0" + startTime; } if (startTime.charAt(4) == '-') { // 01-1-2014 --> 01-01-2014 startTime = startTime.substring(0, 3) + "0" + startTime.substring(3); } Log.e("tag", "START TIME =======" + startTime + "========"); Date date; DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy"); try { date = (Date) formatter.parse(startTime); query.setStartDate(date.getTime() / 1000); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (!endTime.isEmpty()) { endTime = endTime.trim(); if (endTime.charAt(1) == '-') { endTime = "0" + endTime; } if (endTime.charAt(4) == '-') { // 01-1-2014 --> 01-01-2014 endTime = endTime.substring(0, 3) + "0" + endTime.substring(3); } Date date; DateFormat formatter = new SimpleDateFormat("MM-dd-yyyy"); try { date = (Date) formatter.parse(endTime); query.setEndDate(date.getTime() / 1000); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } EventListFragment listFragment = new EventListFragment(); Bundle args = new Bundle(); args.putParcelable("query", query); listFragment.setArguments(args); FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.content_frame, listFragment); transaction.addToBackStack(null); transaction.commit(); } }