123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- package com.rthoni.stssaguenay.ui.activities;
-
- import android.content.Intent;
- import android.os.Bundle;
- import android.support.design.widget.FloatingActionButton;
- import android.support.design.widget.NavigationView;
- import android.support.v4.widget.DrawerLayout;
- import android.support.v7.app.ActionBarDrawerToggle;
- import android.support.v7.app.AppCompatActivity;
- import android.support.v7.widget.Toolbar;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.widget.TextView;
- import android.widget.Toast;
-
- import com.facebook.CallbackManager;
- import com.facebook.FacebookCallback;
- import com.facebook.FacebookException;
- import com.facebook.FacebookSdk;
- import com.facebook.GraphRequest;
- import com.facebook.GraphResponse;
- import com.facebook.login.LoginManager;
- import com.facebook.login.LoginResult;
- import com.facebook.login.widget.LoginButton;
- import com.google.android.gms.ads.AdRequest;
- import com.google.android.gms.ads.AdView;
- import com.google.android.gms.ads.MobileAds;
- import com.luticate.utils.business.LuRequest;
- import com.rthoni.stssaguenay.R;
- import com.rthoni.stssaguenay.business.STSBusiness;
- import com.rthoni.stssaguenay.dbo.FavouriteStopDbo;
- import com.rthoni.stssaguenay.dbo.UserDbo;
- import com.rthoni.stssaguenay.ui.fragments.HomeFragment;
-
- import org.json.JSONException;
- import org.json.JSONObject;
-
- import java.util.List;
-
- import butterknife.BindView;
- import butterknife.ButterKnife;
-
- public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
-
- public static int ADD_FAVOURITE_STOP_REQUEST_CODE = 1;
-
- private boolean _goToHome = false;
-
- @BindView(R.id.fab)
- FloatingActionButton _fab;
-
- @BindView(R.id.nav_view)
- NavigationView _navigationView;
-
- private LoginButton _btnLogin;
-
- private TextView _textUserName;
-
- private TextView _textUserEmail;
-
- private TextView _textHelpMessage;
-
- private CallbackManager _callbackManager;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- LuRequest.init(this);
-
- FacebookSdk.sdkInitialize(getApplicationContext());
-
- setContentView(R.layout.activity_main);
- ButterKnife.bind(this);
-
- MobileAds.initialize(getApplicationContext(), getString(R.string.ad_init));
- AdView mAdView = (AdView) findViewById(R.id.adView);
- AdRequest adRequest = new AdRequest.Builder().build();
- mAdView.loadAd(adRequest);
-
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
- setSupportActionBar(toolbar);
-
- DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
- ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
- this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
- drawer.setDrawerListener(toggle);
- toggle.syncState();
-
- _navigationView.setNavigationItemSelectedListener(this);
-
- View headerView = _navigationView.getHeaderView(0);
- _textUserName = ButterKnife.findById(headerView, R.id.textUserName);
- _textUserEmail = ButterKnife.findById(headerView, R.id.textUserEmail);
- _textHelpMessage = ButterKnife.findById(headerView, R.id.text_help_message);
-
- _fab.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- goToAddStop();
- }
- });
-
- _callbackManager = CallbackManager.Factory.create();
- _btnLogin = ButterKnife.findById(headerView, R.id.btnLogin);
- _btnLogin.setReadPermissions("email");
- _btnLogin.registerCallback(_callbackManager, new FacebookCallback<LoginResult>() {
- @Override
- public void onSuccess(LoginResult loginResult) {
- GraphRequest request = GraphRequest.newMeRequest(
- loginResult.getAccessToken(),
- new GraphRequest.GraphJSONObjectCallback() {
- @Override
- public void onCompleted(JSONObject object, GraphResponse response) {
- try {
- UserDbo userDbo = new UserDbo();
- userDbo.fromJson(object);
- onUserLogged(userDbo);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- }
- });
- Bundle parameters = new Bundle();
- parameters.putString("fields", "id,email,name");
- request.setParameters(parameters);
- request.executeAsync();
- loginResult.getAccessToken();
- }
-
- @Override
- public void onCancel() {
-
- }
-
- @Override
- public void onError(FacebookException error) {
- Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
- }
- });
-
- updateLoginState();
- goToHome();
- }
-
- @Override
- protected void onResume() {
- if (_goToHome) {
- _goToHome = false;
- goToHome();
- }
- super.onResume();
- }
-
- public void goToHome()
- {
- _fab.show();
- HomeFragment f = new HomeFragment();
- getSupportFragmentManager().beginTransaction().replace(R.id.container, f).commit();
- }
-
- public void goToStop()
- {
- _fab.hide();
-
- }
-
- public void goToAddStop()
- {
- Intent intent = new Intent(this, StopPickerActivity.class);
- startActivityForResult(intent, ADD_FAVOURITE_STOP_REQUEST_CODE);
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == ADD_FAVOURITE_STOP_REQUEST_CODE && resultCode == RESULT_OK) {
- FavouriteStopDbo favouriteStopDbo = new FavouriteStopDbo();
- try {
- JSONObject obj = new JSONObject(data.getStringExtra(StopPickerActivity.STOP_EXTRA_NAME));
- favouriteStopDbo.fromJson(obj);
- } catch (JSONException e) {
- e.printStackTrace();
- return;
- }
- List<FavouriteStopDbo> favouriteStopDbos = STSBusiness.getFavouriteStops(this);
- favouriteStopDbos.add(favouriteStopDbo);
- STSBusiness.setFavouriteStops(this, favouriteStopDbos);
- _goToHome = true;
- }
- else {
- _callbackManager.onActivityResult(requestCode, resultCode, data);
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- @Override
- public boolean onNavigationItemSelected(MenuItem item) {
- if (item.getItemId() == R.id.nav_logout) {
- LoginManager.getInstance().logOut();
- STSBusiness.setLoggedUser(this, null);
- updateLoginState();
- }
- return false;
- }
-
- public void updateLoginState()
- {
- UserDbo user = STSBusiness.getLoggedUser(this);
- _btnLogin.setVisibility(user == null ? View.VISIBLE : View.GONE);
- Menu menu = _navigationView.getMenu();
- for (int i = 0; i < menu.size(); i++) {
- menu.getItem(i).setVisible(user != null);
- }
- _textUserName.setText(user == null ? "" : user.getName());
- _textUserName.setVisibility(user == null ? View.GONE : View.VISIBLE);
- _textUserEmail.setText(user == null ? "" : user.getEmail());
- _textUserEmail.setVisibility(user == null ? View.GONE : View.VISIBLE);
- _textHelpMessage.setVisibility(user == null ? View.VISIBLE : View.GONE);
- }
-
- public void onUserLogged(UserDbo userDbo)
- {
- STSBusiness.setLoggedUser(this, userDbo);
- updateLoginState();
- }
- }
|