package com.mhacks.android.food; import android.app.Activity; import android.app.Fragment; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.TextView; import com.mhacks.android.R; import com.mhacks.android.concierge.RequestListFragment; import com.parse.FindCallback; import com.parse.ParseException; import com.parse.ParseObject; import com.parse.ParseQuery; import java.util.ArrayList; import java.util.List; /** * Created by boztalay on 1/13/14. */ public class FoodRequester { private static final int FOOD_REQUEST = 0; private static final int DRINK_REQUEST = 1; private ArrayList<String> foodItems; private ArrayList<String> drankItems; private Activity parentActivity; public FoodRequester(Activity parentActivity) { foodItems = new ArrayList<String>(); drankItems = new ArrayList<String>(); this.parentActivity = parentActivity; } public void showFoodRequestDialog() { refreshFoodAndDrinkItemsAndShowRequestDialog(FOOD_REQUEST); } public void showDrinkRequestDialog() { refreshFoodAndDrinkItemsAndShowRequestDialog(DRINK_REQUEST); } private void refreshFoodAndDrinkItemsAndShowRequestDialog(final int requestType) { final ProgressDialog progressDialog = new ProgressDialog(parentActivity); progressDialog.setIndeterminate(true); progressDialog.setCancelable(false); progressDialog.setMessage(parentActivity.getString(R.string.fooddrink_loading)); progressDialog.show(); ParseQuery<ParseObject> query = ParseQuery.getQuery("FoodDrink"); query.findInBackground(new FindCallback<ParseObject>() { @Override public void done(List<ParseObject> parseObjects, ParseException e) { if (e == null) { Log.d("Food", "Got " + parseObjects.size() + " food/drink items."); progressDialog.cancel(); processFoodDrinkQueryResponse(parseObjects); showRequestDialogForType(requestType); } } }); } private void processFoodDrinkQueryResponse(List<ParseObject> parseObjects) { foodItems.clear(); drankItems.clear(); for (ParseObject parseObject : parseObjects) { if (parseObject.getBoolean("available")) { String itemType = parseObject.getString("type"); String itemName = parseObject.getString("name"); if (itemType.equals("food")) { foodItems.add(itemName); } else if (itemType.equals("drink")) { drankItems.add(itemName); } } } } private void showRequestDialogForType(int requestType) { String dialogTitle; ArrayList<String> dialogOptions; if (requestType == FOOD_REQUEST) { dialogTitle = parentActivity.getString(R.string.select_food); dialogOptions = foodItems; } else { dialogTitle = parentActivity.getString(R.string.select_drink); dialogOptions = drankItems; } final RequestListFragment dialog = new RequestListFragment(dialogTitle, dialogOptions); ListView.OnItemClickListener listener = new ListView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { String text = String.valueOf(((TextView) view).getText()); String tweetUrl = "https://twitter.com/intent/tweet?text="; tweetUrl += String.format(parentActivity.getString(R.string.request_tweet), text); Uri uri = Uri.parse(tweetUrl); parentActivity.startActivity(new Intent(Intent.ACTION_VIEW, uri)); dialog.dismiss(); } }; dialog.setOnItemClickListener(listener); dialog.show(parentActivity.getFragmentManager(), "drink_dialog"); } }