//------------------------------------------------------------------------------
// Copyright (c) 2012 Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
package com.microsoft.live.sample;
import java.util.Arrays;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.microsoft.live.LiveAuthClient;
import com.microsoft.live.LiveAuthException;
import com.microsoft.live.LiveAuthListener;
import com.microsoft.live.LiveConnectClient;
import com.microsoft.live.LiveConnectSession;
import com.microsoft.live.LiveStatus;
public class SignInActivity extends Activity {
private LiveSdkSampleApplication mApp;
private LiveAuthClient mAuthClient;
private ProgressDialog mInitializeDialog;
private Button mSignInButton;
private TextView mBeginTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signin);
mApp = (LiveSdkSampleApplication) getApplication();
mAuthClient = new LiveAuthClient(mApp, Config.CLIENT_ID);
mApp.setAuthClient(mAuthClient);
mInitializeDialog = ProgressDialog.show(this, "", "Initializing. Please wait...", true);
mBeginTextView = (TextView) findViewById(R.id.beginTextView);
mSignInButton = (Button) findViewById(R.id.signInButton);
// Check to see if the CLIENT_ID has been changed.
if (Config.CLIENT_ID.equals("YOUR CLIENT ID HERE")) {
mSignInButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showToast("In order to use the sample, you must first place your client id " +
"in com.microsoft.live.sample.Config.CLIENT_ID. For more " +
"information see http://go.microsoft.com/fwlink/?LinkId=220871");
}
});
} else {
mSignInButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mAuthClient.login(SignInActivity.this,
Arrays.asList(Config.SCOPES),
new LiveAuthListener() {
@Override
public void onAuthComplete(LiveStatus status,
LiveConnectSession session,
Object userState) {
if (status == LiveStatus.CONNECTED) {
launchMainActivity(session);
} else {
showToast("Login did not connect. Status is " + status + ".");
}
}
@Override
public void onAuthError(LiveAuthException exception, Object userState) {
showToast(exception.getMessage());
}
});
}
});
}
}
@Override
protected void onStart() {
super.onStart();
mAuthClient.initialize(Arrays.asList(Config.SCOPES), new LiveAuthListener() {
@Override
public void onAuthError(LiveAuthException exception, Object userState) {
mInitializeDialog.dismiss();
showSignIn();
showToast(exception.getMessage());
}
@Override
public void onAuthComplete(LiveStatus status,
LiveConnectSession session,
Object userState) {
mInitializeDialog.dismiss();
if (status == LiveStatus.CONNECTED) {
launchMainActivity(session);
} else {
showSignIn();
showToast("Initialize did not connect. Please try login in.");
}
}
});
}
private void launchMainActivity(LiveConnectSession session) {
assert session != null;
mApp.setSession(session);
mApp.setConnectClient(new LiveConnectClient(session));
startActivity(new Intent(getApplicationContext(), MainActivity.class));
}
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
private void showSignIn() {
mSignInButton.setVisibility(View.VISIBLE);
mBeginTextView.setVisibility(View.VISIBLE);
}
}