package com.pinthecloud.athere.fragment; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBar; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.ToggleButton; import com.facebook.AppEventsLogger; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.UiLifecycleHelper; import com.facebook.model.GraphUser; import com.facebook.widget.FacebookDialog; import com.facebook.widget.LoginButton; import com.pinthecloud.athere.AhGlobalVariable; import com.pinthecloud.athere.R; import com.pinthecloud.athere.activity.GuideActivity; import com.pinthecloud.athere.interfaces.AhEntityCallback; import com.pinthecloud.athere.model.AhUser; import com.pinthecloud.athere.util.AsyncChainer; import com.pinthecloud.athere.util.AsyncChainer.Chainable; public class SettingsFragment extends AhFragment{ private ProgressBar progressBar; private LoginButton logoutButton; private UiLifecycleHelper uiHelper; private ToggleButton chatAlarmButton; private ToggleButton chupaAlarmButton; private AhUser user; private Session.StatusCallback callback = new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); } }; private FacebookDialog.Callback dialogCallback = new FacebookDialog.Callback() { @Override public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) { } @Override public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) { } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); uiHelper = new UiLifecycleHelper(activity, callback); uiHelper.onCreate(savedInstanceState); Intent intent = activity.getIntent(); user = intent.getParcelableExtra(AhGlobalVariable.USER_KEY); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment_settings, container, false); findComponent(view); setActionBar(); setButtonEvent(); setLogoutButton(); return view; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); uiHelper.onSaveInstanceState(outState); } @Override public void onResume() { super.onResume(); Session session = Session.getActiveSession(); if (session != null && (session.isOpened() || session.isClosed()) ) { onSessionStateChange(session, session.getState(), null); } uiHelper.onResume(); AppEventsLogger.activateApp(context); } @Override public void onPause() { super.onPause(); uiHelper.onPause(); AppEventsLogger.deactivateApp(context); } @Override public void onDestroy() { super.onDestroy(); uiHelper.onDestroy(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); uiHelper.onActivityResult(requestCode, resultCode, data, dialogCallback); } private void findComponent(View view){ progressBar = (ProgressBar)view.findViewById(R.id.settings_frag_progress_bar); logoutButton = (LoginButton)view.findViewById(R.id.settings_frag_logout_button); chatAlarmButton = (ToggleButton)view.findViewById(R.id.settings_frag_chat_alarm); chupaAlarmButton = (ToggleButton)view.findViewById(R.id.settings_frag_chupa_alarm); } private void setActionBar(){ ActionBar actionBar = activity.getSupportActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); } private void setButtonEvent(){ chatAlarmButton.setChecked(userHelper.isChatEnable()); chatAlarmButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { userHelper.setChatEnable(chatAlarmButton.isChecked()); } }); chupaAlarmButton.setChecked(user.isChupaEnable()); chupaAlarmButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { progressBar.setVisibility(View.VISIBLE); progressBar.bringToFront(); chupaAlarmButton.setEnabled(false); user.setChupaEnable(chupaAlarmButton.isChecked()); userHelper.updateUserAsync(thisFragment, user, new AhEntityCallback<AhUser>() { @Override public void onCompleted(AhUser entity) { progressBar.setVisibility(View.GONE); chupaAlarmButton.setEnabled(true); userHelper.setMyChupaEnable(chupaAlarmButton.isChecked()); } }); } }); } private void setLogoutButton(){ logoutButton.setBackgroundResource(R.drawable.guide_logout_btn); logoutButton.setCompoundDrawablesWithIntrinsicBounds(0,0,0,0); logoutButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() { @Override public void onUserInfoFetched(GraphUser user) { Session session = Session.getActiveSession(); if (session == null || session.isClosed() || user == null) { logout(); } } }); } private void logout(){ progressBar.setVisibility(View.VISIBLE); progressBar.bringToFront(); AsyncChainer.asyncChain(thisFragment, new Chainable(){ @Override public void doNext(AhFragment frag) { if(squareHelper.isLoggedInSquare()){ AhUser myUser = userHelper.getMyUserInfo(); userHelper.exitSquareAsync(thisFragment, myUser, new AhEntityCallback<Boolean>() { @Override public void onCompleted(Boolean result) { app.removeMySquarePreference(thisFragment); } }); }else{ AsyncChainer.notifyNext(frag); } } }, new Chainable() { @Override public void doNext(AhFragment frag) { app.removeMyUserPreference(thisFragment); Intent intent = new Intent(context, GuideActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }); } private void onSessionStateChange(Session session, SessionState state, Exception exception) { } }