package com.integreight.onesheeld.shields.fragments;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.integreight.onesheeld.R;
import com.integreight.onesheeld.shields.ShieldFragmentParent;
import com.integreight.onesheeld.shields.controller.FoursquareShield;
import com.integreight.onesheeld.shields.controller.FoursquareShield.FoursquareEventHandler;
import com.integreight.onesheeld.shields.controller.utils.FoursquareUtils;
import com.integreight.onesheeld.utils.ConnectionDetector;
import com.integreight.onesheeld.utils.CrashlyticsUtils;
import com.integreight.onesheeld.utils.Log;
public class FoursquareFragment extends
ShieldFragmentParent<FoursquareFragment> {
TextView userName;
TextView lastCheckin;
Button login, logout;
private static SharedPreferences mSharedPreferences;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.foursquare_shield_fragment_layout,
container, false);
}
@Override
public void doOnViewCreated(View v, @Nullable Bundle savedInstanceState) {
mSharedPreferences = getApplication().getSharedPreferences(
"com.integreight.onesheeld", Context.MODE_PRIVATE);
login = (Button) v.findViewById(R.id.foursquare_shiled_login_bt);
logout = (Button) v.findViewById(R.id.foursquare_shiled_logout_bt);
userName = (TextView) v
.findViewById(R.id.foursquare_shield_username_textview);
lastCheckin = (TextView) v
.findViewById(R.id.foursquare_shield_last_checkin_textview);
Log.d("Foursquare Sheeld::OnActivityCreated()", "");
// if user logged in set data
initializeFirmata();
if (((FoursquareShield) getApplication().getRunningShields().get(
getControllerTag())).isFoursquareLoggedInAlready()) {
userName.setVisibility(View.VISIBLE);
lastCheckin.setVisibility(View.VISIBLE);
logout.setVisibility(View.VISIBLE);
login.setVisibility(View.INVISIBLE);
String name = mSharedPreferences.getString(
"PREF_FourSquare_UserName", "");
String lastcheck = mSharedPreferences.getString(
"PREF_FourSquare_LastPlace", "");
userName.setText(name);
lastCheckin.setText(lastcheck);
} else {
login.setVisibility(View.VISIBLE);
logout.setVisibility(View.INVISIBLE);
}
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// start login to foursquare
try{
if (ConnectionDetector.isConnectingToInternet(activity))
((FoursquareShield) getApplication().getRunningShields()
.get(getControllerTag())).loginToFoursquare();
else
Toast.makeText(
getApplication().getApplicationContext(),
R.string.general_toasts_please_check_your_internet_connection_and_try_again_toast,
Toast.LENGTH_SHORT).show();
}catch (WindowManager.BadTokenException ignored){
CrashlyticsUtils.logException(ignored);
}
}
});
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeFoursquareData();
login.setVisibility(View.VISIBLE);
logout.setVisibility(View.INVISIBLE);
}
});
}
FoursquareEventHandler foursquareEventHandler = new FoursquareEventHandler() {
@Override
public void onPlaceCheckin(final String placeName) {
// TODO Auto-generated method stub
uiHandler.removeCallbacksAndMessages(null);
uiHandler.post(new Runnable() {
@Override
public void run() {
if (canChangeUI())
lastCheckin.setText(placeName);
}
});
}
@Override
public void onForsquareLoggedIn(final String user) {
// TODO Auto-generated method stub
userName.post(new Runnable() {
@Override
public void run() {
if (canChangeUI()) {
login.setVisibility(View.INVISIBLE);
logout.setVisibility(View.VISIBLE);
userName.setVisibility(View.VISIBLE);
userName.setText(user);
}
}
});
}
@Override
public void onForsquareLogout() {
// TODO Auto-generated method stub
}
@Override
public void onForsquareError() {
// TODO Auto-generated method stub
}
@Override
public void setLastPlaceCheckin(final String placeName) {
lastCheckin.post(new Runnable() {
@Override
public void run() {
if (canChangeUI()) {
lastCheckin.setVisibility(View.VISIBLE);
lastCheckin.setText(placeName);
}
}
});
}
};
@Override
public void doOnStart() {
((FoursquareShield) getApplication().getRunningShields().get(
getControllerTag()))
.setFoursquareEventHandler(foursquareEventHandler);
}
private void initializeFirmata() {
if (getApplication().getRunningShields().get(getControllerTag()) == null)
getApplication().getRunningShields().put(getControllerTag(),
new FoursquareShield(activity, getControllerTag()));
}
@Override
public void doOnServiceConnected() {
initializeFirmata();
}
private void removeFoursquareData() {
Editor e = mSharedPreferences.edit();
e.remove("PREF_FourSquare_UserName");
e.remove("PREF_FourSquare_LastPlace");
e.remove("PREF_KEY_FOURSQUARE_LOGIN");
e.remove("PREF_FourSquare_OAUTH_TOKEN");
e.commit();
FoursquareUtils.clearCookies(getApplication());
login.setVisibility(View.VISIBLE);
logout.setVisibility(View.INVISIBLE);
userName.setVisibility(View.INVISIBLE);
lastCheckin.setVisibility(View.INVISIBLE);
}
@Override
public void doOnResume() {
// if user logged in set data
if (((FoursquareShield) getApplication().getRunningShields().get(
getControllerTag())).isFoursquareLoggedInAlready()) {
userName.setVisibility(View.VISIBLE);
logout.setVisibility(View.VISIBLE);
login.setVisibility(View.INVISIBLE);
final String name = mSharedPreferences.getString(
"PREF_FourSquare_UserName", "");
final String lastcheck = mSharedPreferences.getString(
"PREF_FourSquare_LastPlace", "");
if (canChangeUI()) {
uiHandler.removeCallbacksAndMessages(null);
uiHandler.post(new Runnable() {
@Override
public void run() {
userName.setText(name);
lastCheckin.setText(lastcheck);
}
});
}
} else {
login.setVisibility(View.VISIBLE);
logout.setVisibility(View.INVISIBLE);
}
}
}