package eoc.studio.voicecard.mainloading;
import eoc.studio.voicecard.R;
import eoc.studio.voicecard.card.database.CardAssistant;
import eoc.studio.voicecard.card.database.CardDatabaseHelper;
import eoc.studio.voicecard.card.database.CategoryAssistant;
import eoc.studio.voicecard.facebook.FacebookManager;
import eoc.studio.voicecard.facebook.TestFacebookActivity;
import eoc.studio.voicecard.facebook.FacebookManager.RequestGraphUserCallback;
import eoc.studio.voicecard.facebook.enetities.UserInfo;
import eoc.studio.voicecard.facebook.utils.BundleTag;
import eoc.studio.voicecard.facebook.utils.JSONTag;
import eoc.studio.voicecard.facebook.utils.Permissions;
import eoc.studio.voicecard.mailbox.MailboxActivity;
import eoc.studio.voicecard.mailbox.MailsAdapterData;
import eoc.studio.voicecard.mainmenu.MainMenuActivity;
import eoc.studio.voicecard.manager.CardImages;
import eoc.studio.voicecard.manager.GetCardListener;
import eoc.studio.voicecard.manager.GetCategoryListener;
import eoc.studio.voicecard.manager.GetMailListener;
import eoc.studio.voicecard.manager.GetRecommendListener;
import eoc.studio.voicecard.manager.GsonCard;
import eoc.studio.voicecard.manager.GsonCategory;
import eoc.studio.voicecard.manager.GsonFacebookUser;
import eoc.studio.voicecard.manager.GsonRecommend;
import eoc.studio.voicecard.manager.GsonSend;
import eoc.studio.voicecard.manager.HttpManager;
import eoc.studio.voicecard.manager.LoginListener;
import eoc.studio.voicecard.manager.MailCountListener;
import eoc.studio.voicecard.manager.NotifyMailReadListener;
import eoc.studio.voicecard.manager.NotifyPatchListener;
import eoc.studio.voicecard.manager.PatchStateListener;
import eoc.studio.voicecard.progresswheel.ProgressWheel;
import eoc.studio.voicecard.utils.FileUtility;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import android.R.integer;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.ImageLoader;
import com.facebook.Request;
import com.facebook.Request.GraphUserCallback;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionLoginBehavior;
import com.facebook.SessionState;
import com.facebook.UiLifecycleHelper;
import com.facebook.model.GraphObject;
import com.facebook.model.GraphUser;
import com.facebook.widget.FacebookDialog;
public class MainLoadingActivity extends Activity
{
private final static String TAG = "MainLoadingActivity";
private final static String TAG_PROGRESS = "PROGRESS";
private static final int FACEBOOK_ID_PROGRESS = 45;
private static final int FACEBOOK_USER_PROFILE_PROGRESS = 45;
private static final int INIT_HTTP_MANAGER_PROGRESS = 45;
private static final int MAILBOX_COUNT_PROGRESS = 45;
private static final int MAILBOX_RECEIVE_PROGRESS = 45;
private static final int INIT_DATABASE_PROGRESS = 45;
private static final int COPY_CARD_AND_CATEGORY = 30;
private static final int GET_CATEGORY_INFO_PROGRESS = 15;
private static final int GET_CARD_INFO_PROGRESS = 15;
private static final int GET_CATEGORY_IMGS_PROGRESS = 15;
private static final int GET_CARD_IMGS_PROGRESS = 15;
private Context context;
private ProgressWheel progressWheel;
private int progress = 0;
private String facebookUserID = null;
private String userName = null;
private MailsAdapterData mailsAdapterData;
private CardDatabaseHelper cardDatabaseHelper;
private int mailboxUnReadCount = 0;
private String recommendBitmapUrl;
private String recommendName;
private HttpManager httpManager;
private DownlaodCategoryAysncTaskListener downlaodCategoryAysncTaskListener;
private DownlaodCardAysncTaskListener downlaodCardAysncTaskListener;
private FacebookManager facebookManager;
Handler progressHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
progressWheel.setProgress(progress);
if (progress >= FACEBOOK_ID_PROGRESS + FACEBOOK_USER_PROFILE_PROGRESS
+ INIT_HTTP_MANAGER_PROGRESS + MAILBOX_COUNT_PROGRESS
+ MAILBOX_RECEIVE_PROGRESS + INIT_DATABASE_PROGRESS + COPY_CARD_AND_CATEGORY
+ GET_CATEGORY_INFO_PROGRESS + GET_CARD_INFO_PROGRESS
+ GET_CATEGORY_IMGS_PROGRESS + GET_CARD_IMGS_PROGRESS)
{
goToMainActivity();
progress = 361;
}
}
};
private Session.StatusCallback statusCallback = new Session.StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception)
{
processSessionStatus(session, state, exception);
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_loading);
context = getApplicationContext();
progressWheel = (ProgressWheel) findViewById(R.id.act_main_loading_progresswheel_main);
progress = 0;
facebookManager = FacebookManager.getInstance(MainLoadingActivity.this);
if (facebookManager != null)
{
facebookManager.getUserProfile(MainLoadingActivity.this,
facebookManager.new RequestGraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
getFacebookUserProfile(user, response);
}
});
}
httpManager = new HttpManager(getApplicationContext());
startProgressWheel();
initCardDataBase();
checkPatchAndUpdateFromServer();
copyCardAndCategoryFromAsset();
}
private void checkPatchAndUpdateFromServer()
{
httpManager.getPatchState(context, new PatchStateListener()
{
@Override
public void onResult(Boolean isSuccess, Boolean isNeedPatched)
{
Log.d(TAG, "getPatchState isSuccess: " + isSuccess + ",isNeedPatched: "
+ isNeedPatched);
if(isSuccess&isNeedPatched){
Log.d(TAG, "getPatchState try to download card and category from server");
getCategoryInfoFromServer();
getCardInfoFromServer();
}
else
{
Log.d(TAG, "Direct pass the progress of [download card and category]");
addProgressWheel(GET_CATEGORY_INFO_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CATEGORY_INFO_PROGRESS [pass]");
addProgressWheel(GET_CARD_INFO_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CARD_INFO_PROGRESS [pass]");
addProgressWheel(GET_CATEGORY_IMGS_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CATEGORY_IMGS_PROGRESS [pass]");
addProgressWheel(GET_CARD_IMGS_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CARD_IMGS_PROGRESS [pass]");
}
}
});
}
private void initCardDataBase()
{
cardDatabaseHelper = new CardDatabaseHelper(context);
cardDatabaseHelper.open();
}
@Override
protected void onDestroy()
{
super.onDestroy();
Log.d(TAG, "onDestroy()");
progressWheel.stopSpinning();
mailsAdapterData.close();
cardDatabaseHelper.close();
}
@Override
protected void onResume()
{
super.onResume();
Log.d(TAG, "onResume()");
// openFacebookSession();
}
@Override
public void onBackPressed()
{
Log.d(TAG, "onBackPressed() diable back key !!!!");
}
private void copyCardAndCategoryFromAsset()
{
new Thread()
{
@Override
public void run()
{
super.run();
File cardFolderFile = new File(getFilesDir() + "/CardImages");
File cardCategoryFolderFile = new File(getFilesDir() + "/CategoryImages");
if (!cardFolderFile.exists() || !cardCategoryFolderFile.exists())
{
FileUtility.copyAssetFolder(getAssets(), "files", getFilesDir()
.getAbsolutePath());
Log.d(TAG, "copyCardAndCategoryFromAsset()");
}
else
{
Log.d(TAG,
"cardFolderFile.exists(): " + cardFolderFile.exists()
+ " ,cardCategoryFolderFile.exists(): "
+ cardCategoryFolderFile.exists());
}
addProgressWheel(COPY_CARD_AND_CATEGORY);
Log.d(TAG_PROGRESS, "COPY_CARD_AND_CATEGORY");
}
}.start();
}
private void downloadCategoryImages()
{
ArrayList<CategoryAssistant> categoryAssistantList = new ArrayList<CategoryAssistant>();
// categoryAssistantList =
// cardDatabaseHelper.getEnabledCategory(cardDatabaseHelper
// .getSystemDPI(context));
// categoryAssistantList = cardDatabaseHelper
// .getEnabledAndLocalIsNullCategory(cardDatabaseHelper.getSystemDPI(context));
categoryAssistantList = cardDatabaseHelper
.getLocalDateIsNullOrLocalPathIsNullCategory(cardDatabaseHelper
.getSystemDPI(context));
Log.d(TAG, "onResume() getLocalDateIsNullOrLocalPathIsNullCategory categoryAssistantList :"
+ categoryAssistantList);
if (categoryAssistantList != null)
{
downlaodCategoryAysncTaskListener = new DownlaodCategoryAysncTaskListener()
{
@Override
public void processFinish(ArrayList<CategoryAssistant> result)
{
cardDatabaseHelper.updateCategoryImgLocalPath(result,
cardDatabaseHelper.getSystemDPI(context));
addProgressWheel(GET_CATEGORY_IMGS_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CATEGORY_IMGS_PROGRESS");
}
};
DownlaodCategoryAysncTask downlaodCategoryAysncTask = new DownlaodCategoryAysncTask(
context, downlaodCategoryAysncTaskListener);
downlaodCategoryAysncTask.execute(categoryAssistantList);
}
else
{
addProgressWheel(GET_CATEGORY_IMGS_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CATEGORY_IMGS_PROGRESS");
}
}
private void downloadCradImages()
{
downlaodCardAysncTaskListener = new DownlaodCardAysncTaskListener()
{
@Override
public void processFinish(ArrayList<CardAssistant> result)
{
Log.d(TAG, "downloadCradImages result is " + result);
if(result!=null)
{
cardDatabaseHelper.updateCardImgLocalPath(result,
cardDatabaseHelper.getSystemDPI(context));
}
addProgressWheel(GET_CARD_IMGS_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CARD_IMGS_PROGRESS");
notifyPatchIsDone();
}
};
ArrayList<CardAssistant> cardAssistantList = new ArrayList<CardAssistant>();
/*
* cardAssistantList =
* cardDatabaseHelper.getEnabledCard(cardDatabaseHelper
* .getSystemDPI(context));
*/
// cardAssistantList =
// cardDatabaseHelper.getEnabledAndLocalIsNullCard(cardDatabaseHelper
// .getSystemDPI(context));
//
cardAssistantList = cardDatabaseHelper
.getLocalDateIsNullOrLocalPathIsNullCard(cardDatabaseHelper.getSystemDPI(context));
// cardAssistantList = cardDatabaseHelper
// .getLocalDateIsNullOrLocalPathIsNullCard(CardDatabaseHelper.DPI_XHDPI);
Log.d(TAG, "onResume() cardAssistantList :" + cardAssistantList);
if (cardAssistantList != null)
{
for (int index = 0; index < cardAssistantList.size(); index++)
{
Log.d(TAG,
"onResume() cardAssistantList getCardName:"
+ cardAssistantList.get(index).getCardName());
}
DownlaodCardAysncTask downlaodCardAysncTask = new DownlaodCardAysncTask(context,
downlaodCardAysncTaskListener);
downlaodCardAysncTask.execute(cardAssistantList);
}
else
{
addProgressWheel(GET_CARD_IMGS_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CARD_IMGS_PROGRESS [pass] because (cardAssistantList == null)");
notifyPatchIsDone();
}
}
public void notifyPatchIsDone()
{
httpManager.notifyPatchUpdate(context, new NotifyPatchListener()
{
@Override
public void onResult(Boolean isSuccess, String information)
{
Log.d(TAG, "notifyPatchUpdate() isSuccess: " + isSuccess + ",information is "
+ information);
}
});
}
private void initMailDataBase(String owerId)
{
mailsAdapterData = new MailsAdapterData(context);
mailsAdapterData.open();
mailboxUnReadCount = mailboxUnReadCount + mailsAdapterData.getLocalUnReadMailCount(owerId);
Log.d(TAG, "initMailDataBase() mailboxUnReadCount :" + mailboxUnReadCount);
addProgressWheel(INIT_DATABASE_PROGRESS);
Log.d(TAG_PROGRESS, "INIT_DATABASE_PROGRESS");
}
private void getCategoryInfoFromServer()
{
httpManager.getCategory(context, new GetCategoryListener()
{
@Override
public void onResult(Boolean isSuccess, ArrayList<GsonCategory> gsonCategoryList)
{
if (isSuccess)
{
for (int index = 0; index < gsonCategoryList.size(); index++)
{
Log.d(TAG,
"gsonCategoryList index:[" + index + "]"
+ gsonCategoryList.get(index).toString());
}
// cardDatabaseHelper.deleteCategoryTable();
// write to datebase
for (int index = 0; index < gsonCategoryList.size(); index++)
{
if (cardDatabaseHelper.isExistCategory(gsonCategoryList.get(index)
.getCategoryID()))
{
// if the category exist , update the row
cardDatabaseHelper.updateCategoryRow(gsonCategoryList.get(index)
.getCategoryID(),
gsonCategoryList.get(index).getCategoryName(), gsonCategoryList
.get(index).getCategoryEnable(),
gsonCategoryList.get(index).getCategoryImageMDPI(),
gsonCategoryList.get(index).getCategoryImageHDPI(),
gsonCategoryList.get(index).getCategoryImageXHDPI(),
gsonCategoryList.get(index).getCategoryImageXXHDPI(), null,
null, null, null, gsonCategoryList.get(index)
.getCategoryEditedDate(), null);
}
else
{
// if the cateory is not exist, insert the row
cardDatabaseHelper.createCategoryRow(gsonCategoryList.get(index)
.getCategoryID(),
gsonCategoryList.get(index).getCategoryName(), gsonCategoryList
.get(index).getCategoryEnable(),
gsonCategoryList.get(index).getCategoryImageMDPI(),
gsonCategoryList.get(index).getCategoryImageHDPI(),
gsonCategoryList.get(index).getCategoryImageXHDPI(),
gsonCategoryList.get(index).getCategoryImageXXHDPI(), null,
null, null, null, gsonCategoryList.get(index)
.getCategoryEditedDate());
}
}
addProgressWheel(GET_CATEGORY_INFO_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CATEGORY_INFO_PROGRESS");
downloadCategoryImages();
}
}
});
}
private void getCardInfoFromServer()
{
httpManager.getCard(context, new GetCardListener()
{
@Override
public void onResult(Boolean isSuccess, ArrayList<GsonCard> gsonCardList)
{
if (isSuccess)
{
for (int index = 0; index < gsonCardList.size(); index++)
{
Log.d(TAG, "gsonCardList index:[" + index + "]"
+ gsonCardList.get(index).toString());
}
// cardDatabaseHelper.deleteCardTable();
// write to datebase
for (int index = 0; index < gsonCardList.size(); index++)
{
CardImages cardImages = new CardImages(gsonCardList.get(index),
cardDatabaseHelper.getSystemDPI(context));
if (cardDatabaseHelper.isExistCard(gsonCardList.get(index).getCardID()))
{
// if the card exist , update the row
cardDatabaseHelper.updateCardRow(cardDatabaseHelper
.getSystemDPI(context), Integer.valueOf(gsonCardList.get(index)
.getCardID()), gsonCardList.get(index).getCardName(), Integer
.valueOf(gsonCardList.get(index).getCategoryID()), gsonCardList
.get(index).getCardEnable(), gsonCardList.get(index)
.getCardFont(), cardImages.getCloseURL(), cardImages
.getCoverURL(), cardImages.getLeftURL(), cardImages
.getOpenURL(), cardImages.getRightURL(), null, null, null,
null, null, gsonCardList.get(index).getCardEditedDate(), null);
}
else
{
// if the card is not exist, insert the row
cardDatabaseHelper.createCardRow(cardDatabaseHelper
.getSystemDPI(context), Integer.valueOf(gsonCardList.get(index)
.getCardID()), gsonCardList.get(index).getCardName(), Integer
.valueOf(gsonCardList.get(index).getCategoryID()), gsonCardList
.get(index).getCardEnable(), gsonCardList.get(index)
.getCardFont(), cardImages.getCloseURL(), cardImages
.getCoverURL(), cardImages.getLeftURL(), cardImages
.getOpenURL(), cardImages.getRightURL(), null, null, null,
null, null, 0, gsonCardList.get(index).getCardEditedDate());
}
}
addProgressWheel(GET_CARD_INFO_PROGRESS);
Log.d(TAG_PROGRESS, "GET_CARD_INFO_PROGRESS");
downloadCradImages();
}
}
});
}
public String getMobile()
{
TelephonyManager tm = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
Log.d(TAG, "getMobile" + tm.getLine1Number());
String phone = tm.getLine1Number();
if (phone == null || phone.equals(""))
{
String PREFS_FILENAME = "MAIN_MENU_SETTING";
SharedPreferences configPreferences = getSharedPreferences(PREFS_FILENAME, 0);
phone = configPreferences.getString(MainMenuActivity.PREFS_KEY_PHONE_NUMBER, "");
Log.d(TAG, "getMobile() from PREFS_KEY_PHONE_NUMBER: " + phone);
}
return phone;
}
public void openFacebookSession()
{
Session session = Session.getActiveSession();
if (session != null && !session.isOpened() && !session.isClosed())
{
Log.d("FbLogin", "onResume() if(!session.isOpened() && !session.isClosed()) ");
// session.requestNewReadPermissions(new
// Session.NewPermissionsRequest(
// MainLoadingActivity.this,
// FacebookManager.Permissions.READ_PERMISSION));
session.openForRead(new Session.OpenRequest(MainLoadingActivity.this)
.setCallback(statusCallback).setPermissions(Permissions.READ_PERMISSION)
.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO));
}
else
{
if (session == null) Log.d("FbLogin", "onResume() iif (session==null)");
if (session != null)
{
Log.d("FbLogin", "onResume() session.isOpened()" + session.isOpened());
Log.d("FbLogin", "onResume() session.isClosed()" + session.isClosed());
}
Session.openActiveSession(this, true, statusCallback);
}
}
@Override
public void onPause()
{
super.onPause();
Log.d(TAG, "onPause()");
}
public void goToMainActivity()
{
Log.d(TAG, "goToMainActivity() ");
Intent intent = new Intent();
Bundle bundle = new Bundle();
/*
* bundle.putString("recommendBitmapUrl", recommendBitmapUrl);
* bundle.putString("recommendName", recommendName);
* bundle.putInt("mailboxUnReadCount", this.mailboxUnReadCount);
*/
intent.putExtras(bundle);
intent.setClass(context, MainMenuActivity.class);
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
String PREFS_FILENAME = "MAIN_MENU_SETTING";
SharedPreferences configPreferences = getSharedPreferences(PREFS_FILENAME, 0);
Log.d(TAG, "goToMainActivity() this.mailboxUnReadCount:" + this.mailboxUnReadCount);
configPreferences.edit().putInt("mailboxUnReadCount", this.mailboxUnReadCount).commit();
startActivity(intent);
finish();
}
public void startProgressWheel()
{
new Thread(new Runnable()
{
@Override
public void run()
{
while (progress < 361)
{
try
{
progressHandler.sendMessage(progressHandler.obtainMessage());
Thread.sleep(300);
}
catch (Throwable t)
{}
}
}
}).start();
}
public static void callFacebookLogout(Context context)
{
Log.d(TAG, "callFacebookLogout() ");
Session session = Session.getActiveSession();
if (session != null)
{
if (!session.isClosed())
{
session.closeAndClearTokenInformation();
Session.setActiveSession(null);
// clear your preferences if saved
}
}
else
{
session = new Session(context);
Session.setActiveSession(session);
session.closeAndClearTokenInformation();
Session.setActiveSession(null);
// clear your preferences if saved
}
}
public void processSessionStatus(Session session, SessionState state, Exception exception)
{
if (session != null && session.isOpened())
{
if (session.getPermissions().contains("email"))
{
Request getMe = Request.newMeRequest(session, new Request.GraphUserCallback()
{
@Override
public void onCompleted(GraphUser user, Response response)
{
getFacebookUserProfile(user, response);
}
});
StringBuilder queryString = new StringBuilder().append(JSONTag.NAME).append(", ")
.append(JSONTag.BIRTHDAY).append(", ").append(JSONTag.PICTURE).append(", ")
.append(JSONTag.EMAIL).append(", ").append(JSONTag.EDUCATION).append(", ")
.append(JSONTag.WORK).append(", ").append(JSONTag.GENDER).append(", ")
.append(JSONTag.LINK).append(", ").append(JSONTag.HOMETOWN).append(", ")
.append(JSONTag.TIMEZONE).append(", ").append(JSONTag.LOCALE);
Bundle requestParams = getMe.getParameters();
requestParams.putString(BundleTag.FIELDS, queryString.toString());
getMe.setParameters(requestParams);
getMe.executeAsync();
}
else
{
session.requestNewReadPermissions(new Session.NewPermissionsRequest(
MainLoadingActivity.this, Permissions.READ_PERMISSION));
}
}
}
private void getFacebookUserProfile(GraphUser user, Response response)
{
if (user != null)
{
Map<String, Object> responseMap = new HashMap<String, Object>();
GraphObject graphObject = response.getGraphObject();
responseMap = graphObject.asMap();
Log.d("", "Response Map KeySet - " + responseMap.keySet());
UserInfo userInfo = null;
JSONObject userJSON = user.getInnerJSONObject();
if (userJSON != null)
{
userInfo = new UserInfo(userJSON);
Log.d(TAG, "userInfo id is " + userInfo.getId());
facebookUserID = userInfo.getId();
Log.d(TAG, "userInfo getName is " + userInfo.getName());
userName = userInfo.getName();
addProgressWheel(FACEBOOK_ID_PROGRESS);
Log.d(TAG_PROGRESS, "FACEBOOK_ID_PROGRESS");
}
if (facebookUserID != null)
{
initMailDataBase(facebookUserID);
httpManager.init(context, facebookUserID, userName);
Log.d(TAG, "httpManager.getUserName is " + httpManager.getUserName());
addProgressWheel(INIT_HTTP_MANAGER_PROGRESS);
Log.d(TAG_PROGRESS, "INIT_HTTP_MANAGER_PROGRESS");
GsonFacebookUser gsonFacebookUser = null;
try
{
gsonFacebookUser = new GsonFacebookUser(facebookUserID,
userJSON.getString(JSONTag.BIRTHDAY), getPictureLink(userJSON),
getStringJsonObjectByCheck(userJSON, JSONTag.LOCALE),
getStringJsonObjectByCheck(userJSON, JSONTag.LINK),
getHomeTown(userJSON), getStringJsonObjectByCheck(userJSON,
JSONTag.TIMEZONE), userInfo.getTitle(),
getStringJsonObjectByCheck(userJSON, JSONTag.EMAIL),
getStringJsonObjectByCheck(userJSON, JSONTag.NAME),
getStringJsonObjectByCheck(userJSON, JSONTag.GENDER),
getEducation(userJSON), getWork(userJSON), getMobile());
}
catch (JSONException e)
{
e.printStackTrace();
}
httpManager.facebookLogin(context, gsonFacebookUser, new LoginListener()
{
@Override
public void onResult(Boolean isSuccess, String information)
{
Log.e(TAG, "httpManager.fascebookLogin() isSuccess:" + isSuccess
+ ",information:" + information);
addProgressWheel(FACEBOOK_USER_PROFILE_PROGRESS);
Log.d(TAG_PROGRESS, "FACEBOOK_USER_PROFILE_PROGRESS");
}
});
httpManager.getUnreadMailCount(context, new MailCountListener()
{
@Override
public void onResult(Boolean isSuccess, int count)
{
Log.e(TAG, "httpManager.getUnreadMailCount() isSuccess:" + isSuccess
+ ",information:" + String.valueOf(count));
mailboxUnReadCount = mailboxUnReadCount + count;
Log.d(TAG, "getUnreadMailCount() mailboxUnReadCount :" + mailboxUnReadCount);
addProgressWheel(MAILBOX_COUNT_PROGRESS);
Log.d(TAG_PROGRESS, "MAILBOX_COUNT_PROGRESS");
if (count > 0)
{
// start get mails from server
httpManager.getMails(context, new GetMailListener()
{
@Override
public void onResult(Boolean isSuccess, ArrayList<GsonSend> mails)
{
Log.e(TAG, "httpManager.getMails() isSuccess:" + isSuccess
+ ",mails:" + mails.toString());
for (GsonSend mail : mails)
{
if (mailsAdapterData != null)
{
mailsAdapterData.create(mail.getCardID(),
facebookUserID, mail.getSendID(),
mail.getSendFrom(), mail.getSendFromName(),
mail.getSendFromLink(), mail.getSendTo(),
mail.getSubject(), mail.getBody(),
mail.getFont_size(), mail.getFont_color(),
mail.getImg(), null, mail.getSpeech(),
mail.getSign(), mail.getSend_time(), 1);
}
}
if (isSuccess)
{
// notify server mails
// already got from user
httpManager.notifyMailsRead(context,
new NotifyMailReadListener()
{
@Override
public void onResult(Boolean isSuccess,
String information)
{
Log.e(TAG,
"httpManager.notifyMailsRead() isSuccess:"
+ isSuccess
+ ",information:"
+ information);
}
});
}
}
});
}
else
{
}
addProgressWheel(MAILBOX_RECEIVE_PROGRESS);
Log.d(TAG_PROGRESS, "MAILBOX_RECEIVE_PROGRESS");
}
});
}
}
else
{
// Clear all session info & ask user to login
// again
Session session = Session.getActiveSession();
if (session != null)
{
session.closeAndClearTokenInformation();
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult() Result Code is - " + resultCode + "");
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
public synchronized void addProgressWheel(int newProgress)
{
progress = progress + newProgress;
Log.d(TAG_PROGRESS, "progress:" + progress);
}
public void facebook()
{
if (!checkNetwork())
{
Toast.makeText(getApplicationContext(), "No active internet connection ...",
Toast.LENGTH_SHORT).show();
return;
}
}
@Override
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
Log.d(TAG, "onSaveInstanceState() ");
Session session = Session.getActiveSession();
Session.saveSession(session, outState);
}
@Override
protected void onStart()
{
super.onStart();
// Session.getActiveSession().addCallback(statusCallback);
}
@Override
protected void onStop()
{
Log.d(TAG, "onSaveInstanceState() ");
super.onStop();
if (Session.getActiveSession() != null)
Session.getActiveSession().removeCallback(statusCallback);
}
private boolean checkNetwork()
{
boolean wifiAvailable = false;
boolean mobileAvailable = false;
ConnectivityManager conManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] networkInfo = conManager.getAllNetworkInfo();
for (NetworkInfo netInfo : networkInfo)
{
if (netInfo.getTypeName().equalsIgnoreCase("WIFI"))
if (netInfo.isConnected()) wifiAvailable = true;
if (netInfo.getTypeName().equalsIgnoreCase("MOBILE"))
if (netInfo.isConnected()) mobileAvailable = true;
}
return wifiAvailable || mobileAvailable;
}
public Boolean checkFbInstalled()
{
PackageManager pm = getPackageManager();
boolean flag = false;
try
{
pm.getPackageInfo("com.facebook.katana", PackageManager.GET_ACTIVITIES);
flag = true;
}
catch (PackageManager.NameNotFoundException e)
{
flag = false;
}
return flag;
}
private String getStringJsonObjectByCheck(JSONObject obj, String key)
{
try
{
return obj.getString(key);
}
catch (JSONException e)
{
e.printStackTrace();
return "";
}
}
private String getHomeTown(JSONObject obj)
{
try
{
return obj.getJSONObject(JSONTag.HOMETOWN).getString(JSONTag.NAME);
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
private String getWork(JSONObject obj)
{
try
{
return obj.getJSONArray(JSONTag.WORK).getJSONObject(0).getJSONObject("employer")
.getString(JSONTag.NAME);
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
private String getPictureLink(JSONObject obj)
{
try
{
return obj.getJSONObject(JSONTag.PICTURE).getJSONObject("data").getString("url");
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
private String getEducation(JSONObject obj)
{
try
{
return obj.getJSONArray(JSONTag.EDUCATION).getJSONObject(0).getJSONObject("school")
.getString(JSONTag.NAME);
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
}