/*
* This software is released under the BSD license. For full license see License-library.txt file.
*
* Copyright (c) 2011, Peter Knego & Matjaz Tercelj
* All rights reserved.
*/
package com.leanengine.android.example;
import android.app.Activity;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.leanengine.*;
public class LoginActivity extends Activity {
private static String DEFAULT_HOST_URL = "http://demo.lean-engine.com";
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onResume() {
super.onResume();
checkLogin();
}
private void enableLoginButtons() {
final Button loginFacebookButton = (Button) findViewById(R.id.loginFacebookButton);
final Button loginGoogleButton = (Button) findViewById(R.id.loginGoogleButton);
final Button loginYahooButton = (Button) findViewById(R.id.loginYahooButton);
final EditText urlEditText = (EditText) findViewById(R.id.serverUrl);
final Button resetButton = (Button) findViewById(R.id.resetButton);
SharedPreferences preferences = getSharedPreferences("lean-android-prefs", 0);
String hostUrl = preferences.getString("url", null);
if (hostUrl == null || hostUrl.length() == 0) {
hostUrl = DEFAULT_HOST_URL;
}
urlEditText.setText(hostUrl);
loginFacebookButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
initializeLeanEngineAndSaveUrl(urlEditText.getText().toString());
Uri loginUri = LeanEngine.getFacebookLoginUri();
LoginDialog fbDialog = new LoginDialog(LoginActivity.this, loginUri.toString(), new LoginListener() {
@Override
public void onSuccess() {
Log.d("LoginDialog", "success!");
checkLogin();
}
@Override
public void onCancel() {
Log.d("LoginDialog", "cancelled");
checkLogin();
}
@Override
public void onError(LeanError error) {
Log.d("LoginDialog", "Error: " + error.getErrorMessage());
Toast toast = Toast.makeText(LoginActivity.this, error.getErrorMessage(), Toast.LENGTH_LONG);
toast.show();
checkLogin();
}
});
fbDialog.show();
}
});
loginGoogleButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
initializeLeanEngineAndSaveUrl(urlEditText.getText().toString());
Uri loginUri = LeanEngine.getGoogleLoginUri();
LoginDialog fbDialog = new LoginDialog(LoginActivity.this, loginUri.toString(), new LoginListener() {
@Override
public void onSuccess() {
Log.d("LoginDialog", "success!");
checkLogin();
}
@Override
public void onCancel() {
Log.d("LoginDialog", "cancelled");
checkLogin();
}
@Override
public void onError(LeanError error) {
Log.d("LoginDialog", "Error: " + error.getErrorMessage());
Toast toast = Toast.makeText(LoginActivity.this, error.getErrorMessage(), Toast.LENGTH_LONG);
toast.show();
checkLogin();
}
});
fbDialog.show();
}
});
loginYahooButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
initializeLeanEngineAndSaveUrl(urlEditText.getText().toString());
Uri loginUri = LeanEngine.getYahooLoginUri();
LoginDialog fbDialog = new LoginDialog(LoginActivity.this, loginUri.toString(), new LoginListener() {
@Override
public void onSuccess() {
Log.d("LoginDialog", "success!");
checkLogin();
}
@Override
public void onCancel() {
Log.d("LoginDialog", "cancelled");
checkLogin();
}
@Override
public void onError(LeanError error) {
Log.d("LoginDialog", "Error: " + error.getErrorMessage());
Toast toast = Toast.makeText(LoginActivity.this, error.getErrorMessage(), Toast.LENGTH_LONG);
toast.show();
checkLogin();
}
});
fbDialog.show();
}
});
resetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
urlEditText.setText(DEFAULT_HOST_URL);
}
});
}
private void initializeLeanEngineAndSaveUrl(String host) {
saveUrl(host);
LeanEngine.init(getApplicationContext(), host);
}
private void enableLogoutButton() {
Button logoutButton = (Button) findViewById(R.id.logoutButton);
logoutButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
LeanAccount.logoutInBackground(new NetworkCallback<Boolean>() {
@Override
public void onResult(Boolean... result) {
Toast.makeText(LoginActivity.this, "Successfully logged out.", Toast.LENGTH_LONG).show();
checkLogin();
}
@Override
public void onFailure(LeanError error) {
Log.d("LoginDialog", "Error: " + error.getErrorMessage());
Toast.makeText(LoginActivity.this, error.getErrorMessage(), Toast.LENGTH_LONG).show();
}
});
}
});
}
private void checkLogin() {
if (LeanAccount.isUserLoggedIn()) {
setContentView(R.layout.logout_layout);
enableLogoutButton();
MainTabWidget tabHost = (MainTabWidget) getParent();
((TextView) tabHost.getTabWidget().getChildTabViewAt(0).findViewById(android.R.id.title)).setText("Sign out");
tabHost.getTabWidget().getChildTabViewAt(1).setVisibility(View.VISIBLE);
tabHost.getTabWidget().getChildTabViewAt(2).setVisibility(View.VISIBLE);
tabHost.getTabWidget().getChildTabViewAt(3).setVisibility(View.VISIBLE);
} else {
setContentView(R.layout.login_layout);
enableLoginButtons();
MainTabWidget tabHost = (MainTabWidget) getParent();
((TextView) tabHost.getTabWidget().getChildTabViewAt(0).findViewById(android.R.id.title)).setText("Sign in");
tabHost.getTabWidget().getChildTabViewAt(1).setVisibility(View.INVISIBLE);
tabHost.getTabWidget().getChildTabViewAt(2).setVisibility(View.INVISIBLE);
tabHost.getTabWidget().getChildTabViewAt(3).setVisibility(View.INVISIBLE);
}
}
private void saveUrl(String url) {
SharedPreferences preferences = getSharedPreferences("lean-android-prefs", 0);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("url", url);
editor.commit();
}
}