You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

MainActivity.java 7.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. package com.rthoni.stssaguenay.ui.activities;
  2. import android.content.Intent;
  3. import android.os.Bundle;
  4. import android.support.design.widget.FloatingActionButton;
  5. import android.support.design.widget.NavigationView;
  6. import android.support.v4.widget.DrawerLayout;
  7. import android.support.v7.app.ActionBarDrawerToggle;
  8. import android.support.v7.app.AppCompatActivity;
  9. import android.support.v7.widget.Toolbar;
  10. import android.view.Menu;
  11. import android.view.MenuItem;
  12. import android.view.View;
  13. import android.widget.TextView;
  14. import android.widget.Toast;
  15. import com.facebook.CallbackManager;
  16. import com.facebook.FacebookCallback;
  17. import com.facebook.FacebookException;
  18. import com.facebook.FacebookSdk;
  19. import com.facebook.GraphRequest;
  20. import com.facebook.GraphResponse;
  21. import com.facebook.login.LoginManager;
  22. import com.facebook.login.LoginResult;
  23. import com.facebook.login.widget.LoginButton;
  24. import com.google.android.gms.ads.AdRequest;
  25. import com.google.android.gms.ads.AdView;
  26. import com.google.android.gms.ads.MobileAds;
  27. import com.luticate.utils.business.LuRequest;
  28. import com.rthoni.stssaguenay.R;
  29. import com.rthoni.stssaguenay.business.STSBusiness;
  30. import com.rthoni.stssaguenay.dbo.FavouriteStopDbo;
  31. import com.rthoni.stssaguenay.dbo.UserDbo;
  32. import com.rthoni.stssaguenay.ui.fragments.HomeFragment;
  33. import org.json.JSONException;
  34. import org.json.JSONObject;
  35. import java.util.List;
  36. import butterknife.BindView;
  37. import butterknife.ButterKnife;
  38. public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
  39. public static int ADD_FAVOURITE_STOP_REQUEST_CODE = 1;
  40. private boolean _goToHome = false;
  41. @BindView(R.id.fab)
  42. FloatingActionButton _fab;
  43. @BindView(R.id.nav_view)
  44. NavigationView _navigationView;
  45. private LoginButton _btnLogin;
  46. private TextView _textUserName;
  47. private TextView _textUserEmail;
  48. private CallbackManager _callbackManager;
  49. @Override
  50. protected void onCreate(Bundle savedInstanceState) {
  51. super.onCreate(savedInstanceState);
  52. LuRequest.init(this);
  53. FacebookSdk.sdkInitialize(getApplicationContext());
  54. setContentView(R.layout.activity_main);
  55. ButterKnife.bind(this);
  56. MobileAds.initialize(getApplicationContext(), getString(R.string.ad_init));
  57. AdView mAdView = (AdView) findViewById(R.id.adView);
  58. AdRequest adRequest = new AdRequest.Builder().build();
  59. mAdView.loadAd(adRequest);
  60. Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  61. setSupportActionBar(toolbar);
  62. DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
  63. ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
  64. this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
  65. drawer.setDrawerListener(toggle);
  66. toggle.syncState();
  67. _navigationView.setNavigationItemSelectedListener(this);
  68. View headerView = _navigationView.getHeaderView(0);
  69. _textUserName = ButterKnife.findById(headerView, R.id.textUserName);
  70. _textUserEmail = ButterKnife.findById(headerView, R.id.textUserEmail);
  71. _fab.setOnClickListener(new View.OnClickListener() {
  72. @Override
  73. public void onClick(View view) {
  74. goToAddStop();
  75. }
  76. });
  77. _callbackManager = CallbackManager.Factory.create();
  78. _btnLogin = ButterKnife.findById(headerView, R.id.btnLogin);
  79. _btnLogin.setReadPermissions("email");
  80. _btnLogin.registerCallback(_callbackManager, new FacebookCallback<LoginResult>() {
  81. @Override
  82. public void onSuccess(LoginResult loginResult) {
  83. GraphRequest request = GraphRequest.newMeRequest(
  84. loginResult.getAccessToken(),
  85. new GraphRequest.GraphJSONObjectCallback() {
  86. @Override
  87. public void onCompleted(JSONObject object, GraphResponse response) {
  88. try {
  89. UserDbo userDbo = new UserDbo();
  90. userDbo.fromJson(object);
  91. onUserLogged(userDbo);
  92. } catch (JSONException e) {
  93. e.printStackTrace();
  94. }
  95. }
  96. });
  97. Bundle parameters = new Bundle();
  98. parameters.putString("fields", "id,email,name");
  99. request.setParameters(parameters);
  100. request.executeAsync();
  101. loginResult.getAccessToken();
  102. }
  103. @Override
  104. public void onCancel() {
  105. }
  106. @Override
  107. public void onError(FacebookException error) {
  108. Toast.makeText(MainActivity.this, error.toString(), Toast.LENGTH_LONG).show();
  109. }
  110. });
  111. updateLoginState();
  112. goToHome();
  113. }
  114. @Override
  115. protected void onResume() {
  116. if (_goToHome) {
  117. _goToHome = false;
  118. goToHome();
  119. }
  120. super.onResume();
  121. }
  122. public void goToHome()
  123. {
  124. _fab.show();
  125. HomeFragment f = new HomeFragment();
  126. getSupportFragmentManager().beginTransaction().replace(R.id.container, f).commit();
  127. }
  128. public void goToStop()
  129. {
  130. _fab.hide();
  131. }
  132. public void goToAddStop()
  133. {
  134. Intent intent = new Intent(this, StopPickerActivity.class);
  135. startActivityForResult(intent, ADD_FAVOURITE_STOP_REQUEST_CODE);
  136. }
  137. @Override
  138. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  139. if (requestCode == ADD_FAVOURITE_STOP_REQUEST_CODE && resultCode == RESULT_OK) {
  140. FavouriteStopDbo favouriteStopDbo = new FavouriteStopDbo();
  141. try {
  142. JSONObject obj = new JSONObject(data.getStringExtra(StopPickerActivity.STOP_EXTRA_NAME));
  143. favouriteStopDbo.fromJson(obj);
  144. } catch (JSONException e) {
  145. e.printStackTrace();
  146. return;
  147. }
  148. List<FavouriteStopDbo> favouriteStopDbos = STSBusiness.getFavouriteStops(this);
  149. favouriteStopDbos.add(favouriteStopDbo);
  150. STSBusiness.setFavouriteStops(this, favouriteStopDbos);
  151. _goToHome = true;
  152. }
  153. else {
  154. _callbackManager.onActivityResult(requestCode, resultCode, data);
  155. }
  156. super.onActivityResult(requestCode, resultCode, data);
  157. }
  158. @Override
  159. public boolean onNavigationItemSelected(MenuItem item) {
  160. if (item.getItemId() == R.id.nav_logout) {
  161. LoginManager.getInstance().logOut();
  162. STSBusiness.setLoggedUser(this, null);
  163. updateLoginState();
  164. }
  165. return false;
  166. }
  167. public void updateLoginState()
  168. {
  169. UserDbo user = STSBusiness.getLoggedUser(this);
  170. _btnLogin.setVisibility(user == null ? View.VISIBLE : View.GONE);
  171. Menu menu = _navigationView.getMenu();
  172. for (int i = 0; i < menu.size(); i++) {
  173. menu.getItem(i).setVisible(user != null);
  174. }
  175. _textUserName.setText(user == null ? "" : user.getName());
  176. _textUserName.setVisibility(user == null ? View.GONE : View.VISIBLE);
  177. _textUserEmail.setText(user == null ? "" : user.getEmail());
  178. _textUserEmail.setVisibility(user == null ? View.GONE : View.VISIBLE);
  179. }
  180. public void onUserLogged(UserDbo userDbo)
  181. {
  182. STSBusiness.setLoggedUser(this, userDbo);
  183. updateLoginState();
  184. }
  185. }