/*
* Created by Itzik Braun on 12/3/2015.
* Copyright (c) 2015 deluge. All rights reserved.
*
* Last Modification at: 3/12/15 4:27 PM
*/
package com.braunster.chatsdk.fragments;
import android.content.res.Configuration;
import android.os.Bundle;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import com.braunster.chatsdk.R;
import com.braunster.chatsdk.Utils.Debug;
import com.braunster.chatsdk.dao.BUser;
import com.braunster.chatsdk.fragments.abstracted.ChatSDKAbstractProfileFragment;
import com.braunster.chatsdk.network.BDefines;
import com.braunster.chatsdk.network.BFacebookManager;
import com.braunster.chatsdk.network.BNetworkManager;
import com.braunster.chatsdk.object.SaveIndexDetailsTextWatcher;
/**
* Created by itzik on 6/17/2014.
*/
public class ChatSDKProfileFragment extends ChatSDKAbstractProfileFragment {
private static final String TAG = ChatSDKProfileFragment.class.getSimpleName();
private static boolean DEBUG = Debug.ProfileFragment;
private static final String S_I_D_NAME = "saved_name_data";
private static final String S_I_D_PHONE = "saved_phones_data";
private static final String S_I_D_EMAIL = "saved_email_data";
private EditText etName, etMail, etPhone;
public static ChatSDKProfileFragment newInstance() {
ChatSDKProfileFragment f = new ChatSDKProfileFragment();
Bundle b = new Bundle();
f.setArguments(b);
f.setRetainInstance(true);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
initViews(inflater);
if (savedInstanceState != null)
{
setDetails(getLoginType(), savedInstanceState);
}
else
{
loadData();
}
return mainView;
}
public void initViews(LayoutInflater inflater){
if (inflater != null)
mainView = inflater.inflate(R.layout.chat_sdk_activity_profile, null);
else return;
super.initViews();
setupTouchUIToDismissKeyboard(mainView, R.id.chat_sdk_circle_ing_profile_pic);
// Changing the weight of the view according to orientation.
// This will make sure (hopefully) there is enough space to show the views in landscape mode.
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE){
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) mainView.findViewById(R.id.linear).getLayoutParams();
layoutParams.weight = 3;
mainView.findViewById(R.id.linear).setLayoutParams(layoutParams);
}
else
{
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) mainView.findViewById(R.id.linear).getLayoutParams();
layoutParams.weight = 2;
mainView.findViewById(R.id.linear).setLayoutParams(layoutParams);
}
etName = (EditText) mainView.findViewById(R.id.chat_sdk_et_name);
etMail = (EditText) mainView.findViewById(R.id.chat_sdk_et_mail);
etPhone = (EditText) mainView.findViewById(R.id.chat_sdk_et_phone_number);
}
@Override
public void onResume() {
super.onResume();
// Setting a listener to text change, The listener will take cate of indexing the data.
SaveIndexDetailsTextWatcher emailTextWatcher = new SaveIndexDetailsTextWatcher(BDefines.Keys.BEmail);
SaveIndexDetailsTextWatcher nameTextWatcher= new SaveIndexDetailsTextWatcher(BDefines.Keys.BName);
etMail.addTextChangedListener(emailTextWatcher);
etName.addTextChangedListener(nameTextWatcher);
// The number would only be index if phone index is enabled in BDefines.
TextWatcher phoneTextWatcher = new SaveIndexDetailsTextWatcher(BDefines.Keys.BPhone);
etPhone.addTextChangedListener(phoneTextWatcher);
}
@Override
public void loadData() {
super.loadData();
setDetails((Integer) BNetworkManager.sharedManager().getNetworkAdapter().getLoginInfo().get(BDefines.Prefs.AccountTypeKey));
}
@Override
public void clearData() {
super.clearData();
if (mainView != null)
{
etName.getText().clear();
etMail.getText().clear();
etPhone.getText().clear();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(S_I_D_NAME, etName.getText().toString());
outState.putString(S_I_D_EMAIL, etMail.getText().toString());
outState.putString(S_I_D_PHONE, etPhone.getText().toString());
}
@Override
public void logout() {
// Logout and return to the login activity.
BFacebookManager.logout(getActivity());
BNetworkManager.sharedManager().getNetworkAdapter().logout();
chatSDKUiHelper.startLoginActivity(true);
}
/*############################################*/
/* UI*/
/** Fetching the user details from the user's metadata.*/
private void setDetails(int loginType){
if (mainView == null || getActivity() == null)
{
return;
}
BUser user = BNetworkManager.sharedManager().getNetworkAdapter().currentUserModel();
etName.setText(user.getMetaName());
etPhone.setText(user.metaStringForKey(BDefines.Keys.BPhone));
etMail.setText(user.getMetaEmail());
chatSDKProfileHelper.loadProfilePic(loginType);
}
private void setDetails(int loginType, Bundle bundle){
etName.setText(bundle.getString(S_I_D_NAME));
etPhone.setText(bundle.getString(S_I_D_PHONE));
etMail.setText(bundle.getString(S_I_D_EMAIL));
chatSDKProfileHelper.loadProfilePic(loginType);
}
/*############################################*/
}