package com.mobmonkey.mobmonkeyandroid.fragments;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import com.mobmonkey.mobmonkeyandroid.MainScreen;
import com.mobmonkey.mobmonkeyandroid.R;
import com.mobmonkey.mobmonkeyandroid.arrayadapters.MMTrendingArrayAdapter;
import com.mobmonkey.mobmonkeyandroid.arrayadaptersitems.MMTrendingItem;
import com.mobmonkey.mobmonkeyandroid.listeners.*;
import com.mobmonkey.mobmonkeyandroid.utils.MMConstants;
import com.mobmonkey.mobmonkeyandroid.utils.MMFragment;
import com.mobmonkey.mobmonkeysdk.adapters.MMTrendingAdapter;
import com.mobmonkey.mobmonkeysdk.utils.MMSDKConstants;
import com.mobmonkey.mobmonkeysdk.utils.MMCallback;
import com.mobmonkey.mobmonkeysdk.utils.MMLocationListener;
import com.mobmonkey.mobmonkeysdk.utils.MMLocationManager;
import com.mobmonkey.mobmonkeysdk.utils.MMProgressDialog;
/**
* @author Dezapp, LLC
*
*/
public class TrendingNowFragment extends MMFragment implements OnItemClickListener {
private static final String TAG = "TrendingNowFragment: ";
private SharedPreferences userPrefs;
private MMTrendingItem[] mmTrendingItem;
private ListView lvTrending;
private MMTrendingArrayAdapter arrayAdapter;
private MMOnTrendingFragmentItemClickListener listener;
/*
* (non-Javadoc)
* @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
userPrefs = getActivity().getSharedPreferences(MMSDKConstants.USER_PREFS, Context.MODE_PRIVATE);
View view = inflater.inflate(R.layout.fragment_trendingnow_screen, container, false);
lvTrending = (ListView) view.findViewById(R.id.lvtrending);
createTrending();
return view;
}
/*
* (non-Javadoc)
* @see android.support.v4.app.Fragment#onAttach(android.app.Activity)
*/
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if(activity instanceof MMOnTrendingFragmentItemClickListener) {
listener = (MMOnTrendingFragmentItemClickListener) activity;
}
}
/*
* (non-Javadoc)
* @see android.support.v4.app.Fragment#onResume()
*/
@Override
public void onResume() {
super.onResume();
if(MMLocationManager.isGPSEnabled() && MMLocationManager.getGPSLocation() != null) {
getTrendingCounts();
} else {
MMProgressDialog.dismissDialog();
}
}
/*
* (non-Javadoc)
* @see android.widget.AdapterView.OnItemClickListener#onItemClick(android.widget.AdapterView, android.view.View, int, long)
*/
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long id) {
switch (position) {
// bookmarks
case 0:
// TODO: to be removed when this is implemented
MMProgressDialog.dismissDialog();
break;
// my interests
case 1:
// TODO: to be removed when this is implemented
MMProgressDialog.dismissDialog();
break;
// top viewed
case 2:
listener.onTrendingFragmentItemClick(position);
break;
// near me
case 3:
// TODO: to be removed when this is implemented
MMProgressDialog.dismissDialog();
break;
}
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkey.utils.MMFragment#onFragmentBackPressed()
*/
@Override
public void onFragmentBackPressed() {
}
/**
*
*/
public void createTrending() {
mmTrendingItem = new MMTrendingItem[getResources().getStringArray(R.array.trending_category).length];
for(int i = 0; i < mmTrendingItem.length; i++) {
mmTrendingItem[i] = new MMTrendingItem();
mmTrendingItem[i].title = getResources().getStringArray(R.array.trending_category)[i];
mmTrendingItem[i].counter = MMSDKConstants.DEFAULT_INT_ZERO;
}
arrayAdapter = new MMTrendingArrayAdapter(getActivity(), R.layout.listview_row_trending, mmTrendingItem);
lvTrending.setAdapter(arrayAdapter);
lvTrending.setOnItemClickListener(TrendingNowFragment.this);
}
/**
*
*/
private void getTrendingCounts() {
MMTrendingAdapter.getTrendingCounts(new TrendingCountsCallback(),
MMSDKConstants.SEARCH_TIME_DAY);
}
/**
*
* @param jObj
* @throws JSONException
*/
private void setTrendingCounts(JSONObject jObj) throws JSONException {
int favoritesCount = jObj.getInt(MMSDKConstants.JSON_KEY_BOOKMARK_COUNT);
int myInterestsCount = jObj.getInt(MMSDKConstants.JSON_KEY_INTEREST_COUNT);
int topViewedCount = jObj.getInt(MMSDKConstants.JSON_KEY_TOP_VIEWED_COUNT);
int nearMeCount = jObj.getInt(MMSDKConstants.JSON_KEY_NEARBY_COUNT);
if(favoritesCount > 0) {
mmTrendingItem[0].counter = favoritesCount;
} else {
mmTrendingItem[0].counter = MMSDKConstants.DEFAULT_INT_ZERO;
}
arrayAdapter.isEnabled(0);
if(myInterestsCount > 0) {
mmTrendingItem[1].counter = myInterestsCount;
} else {
mmTrendingItem[1].counter = MMSDKConstants.DEFAULT_INT_ZERO;
}
arrayAdapter.isEnabled(1);
if(topViewedCount > 0) {
mmTrendingItem[2].counter = topViewedCount;
} else {
mmTrendingItem[2].counter = MMSDKConstants.DEFAULT_INT_ZERO;
}
arrayAdapter.isEnabled(2);
if(nearMeCount > 0) {
mmTrendingItem[3].counter = nearMeCount;
} else {
mmTrendingItem[3].counter = MMSDKConstants.DEFAULT_INT_ZERO;
}
arrayAdapter.isEnabled(3);
arrayAdapter.notifyDataSetChanged();
}
/**
*
* @author Dezapp, LLC
*
*/
private class TrendingCountsCallback implements MMCallback {
@Override
public void processCallback(Object obj) {
MMProgressDialog.dismissDialog();
if(obj != null) {
Log.d(TAG, TAG + "Trending: " + ((String) obj));
if(((String) obj).equals(MMSDKConstants.CONNECTION_TIMED_OUT)) {
Toast.makeText(getActivity(), getString(R.string.toast_connection_timed_out), Toast.LENGTH_SHORT).show();
} else {
try {
setTrendingCounts(new JSONObject((String) obj));
} catch (JSONException ex) {
ex.printStackTrace();
}
}
}
}
}
}