package com.bezier.app.weddingcalculator;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import com.bezier.app.weddingcalculator.R;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.FragmentTransaction;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;
import android.widget.Toast;
import com.facebook.*;
import com.facebook.model.*;
import com.facebook.widget.WebDialog;
import com.facebook.widget.WebDialog.OnCompleteListener;
public class MainActivity extends FragmentActivity {
private ActionBar mActionBar;
private ViewPager mPager;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// enable these two lines will show the progress spinner on actionbar
//requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
//setProgressBarIndeterminateVisibility(true);
mActionBar = getActionBar();
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
/** Getting a reference to ViewPager from the layout */
mPager = (ViewPager) findViewById(R.id.pager);
/** Getting a reference to FragmentManager */
FragmentManager fm = getSupportFragmentManager();
ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
mActionBar.setSelectedNavigationItem(position);
}
};
mPager.setOnPageChangeListener(pageChangeListener);
MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(fm);
mPager.setAdapter(fragmentPagerAdapter);
mActionBar.setDisplayShowTitleEnabled(true);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
mPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
// TODO Auto-generated method stub
}
};
Tab tab = mActionBar.newTab()
.setText(MainActivity.this.getResources().getText(R.string.Fragment1))
.setTabListener(tabListener);
mActionBar.addTab(tab);
tab = mActionBar.newTab()
.setText(MainActivity.this.getResources().getText(R.string.Fragment2))
.setTabListener(tabListener);
mActionBar.addTab(tab);
tab = mActionBar.newTab()
.setText(MainActivity.this.getResources().getText(R.string.Fragment3))
.setTabListener(tabListener);
mActionBar.addTab(tab);
tab = mActionBar.newTab()
.setText(MainActivity.this.getResources().getText(R.string.Fragment4))
.setTabListener(tabListener);
mActionBar.addTab(tab);
tab = mActionBar.newTab()
.setText(MainActivity.this.getResources().getText(R.string.Fragment5))
.setTabListener(tabListener);
mActionBar.addTab(tab);
//setup ActionBar background color
mActionBar.setStackedBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.tab_background)));
mActionBar.setSplitBackgroundDrawable(new ColorDrawable(getResources().getColor(R.color.tab_slider)));
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.bezier.app.weddingcalculator",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.i("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
}
@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);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_like) {
// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
Log.i("log_tag", "Token=" + session.getAccessToken());
Log.i("log_tag", "Token=" + session.isOpened());
if (session.isOpened()) {
// make request to the /me API
// Request request = new
// Request(Session.getActiveSession(), "me/feed",
// params, HttpMethod.POST);
Request.executeMeRequestAsync(session,
new Request.GraphUserCallback() {
// callback after Graph API response with
// user object
@Override
public void onCompleted(GraphUser user,
Response response) {
if (user != null) {
Bundle params = new Bundle();
params.putString("caption", MainActivity.this.getResources().getText(R.string.facebookCaption).toString());
params.putString("message", MainActivity.this.getResources().getText(R.string.facebookMessage).toString());
params.putString("link", "https://play.google.com/store/apps/details?id=com.bezier.app.weddingcalculator");
params.putString("picture", "https://drive.google.com/uc?export=view&id=0BxQow9kRw_AHUnZmbVFmWHdIUW8");
WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(
MainActivity.this,
Session.getActiveSession(),
params))
.setOnCompleteListener(
new OnCompleteListener() {
@Override
public void onComplete(
Bundle values,
FacebookException error) {
if (error == null) {
final String postId = values.getString("post_id");
if (postId != null) {
Toast.makeText(MainActivity.this, MainActivity.this.getResources().getText(R.string.facebookSharedMessage).toString(), Toast.LENGTH_LONG).show();
}
}
}
}).build();
feedDialog.show();
}
}
});
}
}
});
}
return super.onOptionsItemSelected(item);
}
}