Android Open Source - O365-Android-Start Main Activity






From Project

Back to project page O365-Android-Start.

License

The source code is released under:

MIT License

If you think the Android project O365-Android-Start listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 *  Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See full license at the bottom of this file.
 *//*from  w  ww .ja v a2  s  .c om*/

package com.microsoft.office365.starter.views;

import android.app.Activity;
import android.app.FragmentManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.microsoft.office365.starter.Controller;
import com.microsoft.office365.starter.O365APIsStart_Application;
import com.microsoft.office365.starter.R;
import com.microsoft.office365.starter.helpers.Authentication;
import com.microsoft.office365.starter.helpers.Constants;
import com.microsoft.office365.starter.interfaces.MainActivityCoordinator;
import com.microsoft.office365.starter.interfaces.OnSignInResultListener;
import com.microsoft.services.odata.impl.DefaultDependencyResolver;

public class MainActivity extends Activity implements MainActivityCoordinator,
    OnSignInResultListener {

  private O365APIsStart_Application mApplication;
  private MainButtonsFragment mButtonsFragment;
  private Menu mMenu;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mApplication = (O365APIsStart_Application) getApplication();
    mApplication.setOnSignInResultListener(this);
    (mApplication).getAppPreferences();

    // When the app starts, the buttons should be disabled until the user
    // signs in to Office 365
    FragmentManager fragmentManager = getFragmentManager();
    mButtonsFragment = (MainButtonsFragment) fragmentManager
        .findFragmentById(R.id.buttonsFragment);
    mButtonsFragment.setButtonsEnabled(mApplication.userIsAuthenticated());
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    mMenu = menu;

    if (mApplication.userIsAuthenticated()) {
      MenuItem signInMenuItem = mMenu.findItem(R.id.menu_signin);
      signInMenuItem.setIcon(R.drawable.user_default_signedin);
    }

    return true;
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {

    try {
      switch (item.getItemId()) {
      case R.id.menu_clear_credentials:
        clearCredentials();
        return true;
      case R.id.menu_signin:
        signIn_OnClick();
        return true;
      default:
        return super.onOptionsItemSelected(item);
      }

    } catch (Throwable t) {
      Log.e("Asset", t.getMessage());
    }
    return true;
  }

  private void clearCredentials() {
    mApplication.clearClientObjects();
    mApplication.clearCookies();
    Authentication.resetToken(this);
    userSignedOut();
  }

  protected void userSignedOut() {
    mButtonsFragment.setButtonsEnabled(false);

    MenuItem signInMenuItem = mMenu.findItem(R.id.menu_signin);
    signInMenuItem.setIcon(R.drawable.user_signedout);

    signInMenuItem.setTitle(R.string.MainActivity_SignInButtonText);
  }

  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Authentication.context.onActivityResult(requestCode, resultCode, data);
  }

  public void signIn_OnClick() {
    Controller.getInstance().setDependencyResolver(
        new DefaultDependencyResolver());
    DefaultDependencyResolver dependencyResolver = (DefaultDependencyResolver) Controller
        .getInstance().getDependencyResolver();
    ListenableFuture<Void> future = Authentication.authenticate(this,
        dependencyResolver, Constants.DISCOVERY_RESOURCE_ID);

    Futures.addCallback(future, new FutureCallback<Void>() {
      @Override
      public void onFailure(Throwable t) {
        Log.e("Asset", t.getMessage());
      }

      @Override
      public void onSuccess(Void result) {
        mApplication.discoverServices(MainActivity.this);

      }
    });
  }

  @Override
  public void onServiceAuthenticated(String capability) {
    Intent intentToActivate = null;
    if (capability.equals(Constants.MYFILES_CAPABILITY)) {
      intentToActivate = new Intent(this, FileListActivity.class);
    }
    if (capability.equals(Constants.CALENDAR_CAPABILITY)) {
      intentToActivate = new Intent(this, CalendarEventListActivity.class);
    }

    startActivity(intentToActivate);
  }

  @Override
  public void onSignInResultEvent(Event event) {
    if (event.getUserSignInStatus()) {
      // User was signed in so activate the buttons.
      mButtonsFragment.setButtonsEnabled(true);

      MenuItem signInMenuItem = mMenu.findItem(R.id.menu_signin);
      signInMenuItem.setIcon(R.drawable.user_default_signedin);

      SharedPreferences sharedPref = this
          .getPreferences(Context.MODE_PRIVATE);
      String displayName = sharedPref.getString("DisplayName", "");

      signInMenuItem.setTitle(displayName);
    } else
      Toast.makeText(this, "Error signing in", Toast.LENGTH_LONG).show();
  }
}
// *********************************************************
//
// O365-Android-Start, https://github.com/OfficeDev/O365-Android-Start
//
// Copyright (c) Microsoft Corporation
// All rights reserved.
//
// MIT License:
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// *********************************************************





Java Source Code List

com.microsoft.office365.starter.Controller.java
com.microsoft.office365.starter.O365APIsStart_Application.java
com.microsoft.office365.starter.helpers.Authentication.java
com.microsoft.office365.starter.helpers.Constants.java
com.microsoft.office365.starter.helpers.File_UI_State.java
com.microsoft.office365.starter.helpers.ProgressDialogHelper.java
com.microsoft.office365.starter.interfaces.BaseDialogListener.java
com.microsoft.office365.starter.interfaces.MainActivityCoordinator.java
com.microsoft.office365.starter.interfaces.NoticeDialogListener.java
com.microsoft.office365.starter.interfaces.OnEventsAddedListener.java
com.microsoft.office365.starter.interfaces.OnFileChangedEventListener.java
com.microsoft.office365.starter.interfaces.OnOperationCompleteListener.java
com.microsoft.office365.starter.interfaces.OnSignInResultListener.java
com.microsoft.office365.starter.models.AppPreferences.java
com.microsoft.office365.starter.models.O365CalendarModel.java
com.microsoft.office365.starter.models.O365FileListModel.java
com.microsoft.office365.starter.models.O365FileModel.java
com.microsoft.office365.starter.views.CalendarEventDetailActivity.java
com.microsoft.office365.starter.views.CalendarEventDetailFragment.java
com.microsoft.office365.starter.views.CalendarEventFragmentDelete.java
com.microsoft.office365.starter.views.CalendarEventFragmentView.java
com.microsoft.office365.starter.views.CalendarEventListActivity.java
com.microsoft.office365.starter.views.CalendarEventListFragment.java
com.microsoft.office365.starter.views.DeleteDialogFragment.java
com.microsoft.office365.starter.views.FileButtonsFragment.java
com.microsoft.office365.starter.views.FileDetailActivity.java
com.microsoft.office365.starter.views.FileDetailFragment.java
com.microsoft.office365.starter.views.FileListActivity.java
com.microsoft.office365.starter.views.FileListFragment.java
com.microsoft.office365.starter.views.FileUpdateFragment.java
com.microsoft.office365.starter.views.MainActivity.java
com.microsoft.office365.starter.views.MainButtonsFragment.java
com.microsoft.office365.starter.views.MainReadmeFragment.java