/**
*
*/
package com.photoshare.service.findfriends.views;
import java.util.ArrayList;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.photoshare.common.AbstractRequestListener;
import com.photoshare.exception.NetworkError;
import com.photoshare.exception.NetworkException;
import com.photoshare.fragments.BaseFragment;
import com.photoshare.history.SearchHistory;
import com.photoshare.service.findfriends.FindFriendsRequestParam;
import com.photoshare.service.findfriends.FindFriendsResponseBean;
import com.photoshare.service.findfriends.FriendsBean;
import com.photoshare.service.users.UserInfo;
import com.photoshare.tabHost.R;
import com.photoshare.utils.async.AsyncUtils;
/**
* @author Aron
*
*/
public class FindFriendsFragment extends BaseFragment {
private FindFriendsView mFriendsView;
private ArrayList<UserInfo> mFriendsList = new ArrayList<UserInfo>();
private AsyncUtils async = AsyncUtils.getInstance();
private SearchHistory searchHistory = SearchHistory.getInstance();
private String leftBtnText = "";
private String rightBtnText = "";
private String titlebarText = "";
private int leftBtnVisibility = View.VISIBLE;
private int rightBtnVisibility = View.GONE;
public static FindFriendsFragment newInstance(int fragmentViewId) {
FindFriendsFragment fff = new FindFriendsFragment();
fff.setFragmentViewId(fragmentViewId);
return fff;
}
private String getFindFriendsFragment() {
return getString(R.string.ffindFriendsFragment);
}
@Override
public void onSaveInstanceState(Bundle outState) {
if (outState != null) {
outState.putParcelableArrayList(FriendsBean.KEY_FRIENDS,
mFriendsList);
}
super.onSaveInstanceState(outState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.find_friends_layout, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
if (savedInstanceState != null) {
if (savedInstanceState.containsKey(FriendsBean.KEY_FRIENDS)) {
mFriendsList = savedInstanceState
.getParcelableArrayList(FriendsBean.KEY_FRIENDS);
}
}
super.onActivityCreated(savedInstanceState);
initViews();
}
private void initViews() {
leftBtnText = getPreferencesText();
titlebarText = getFriendsText();
initTitleBar(leftBtnText, rightBtnText, titlebarText,
leftBtnVisibility, rightBtnVisibility);
mFriendsView = new FindFriendsView(getActivity(), getActivity()
.findViewById(R.id.findFriendsLayoutId), mFriendsList, async);
mFriendsView.registerListener(onSearchClick);
mFriendsView.applyView();
}
private String getPreferencesText() {
return getString(R.string.preferences);
}
private String getFriendsText() {
return getString(R.string.friends);
}
/*
* (non-Javadoc)
*
* @see com.photoshare.fragments.BaseFragment#OnRightBtnClicked()
*/
@Override
protected void onRightBtnClicked() {
}
/*
* (non-Javadoc)
*
* @see com.photoshare.fragments.BaseFragment#OnLeftBtnClicked()
*/
@Override
protected void onLeftBtnClicked() {
backward(null);
}
private String getPreferenceSettingsFragment() {
return getString(R.string.fpreferenceSettingsFragment);
}
private void search(final String name) throws NetworkException {
FindFriendsRequestParam param = new FindFriendsRequestParam();
param.setuName(name);
final AbstractRequestListener<FindFriendsResponseBean> listener = new AbstractRequestListener<FindFriendsResponseBean>() {
@Override
public void onNetworkError(NetworkError networkError) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
mExceptionHandler.obtainMessage(
NetworkError.ERROR_REFRESH_DATA).sendToTarget();
}
});
}
@Override
public void onFault(Throwable fault) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
mExceptionHandler.obtainMessage(
NetworkError.ERROR_NETWORK).sendToTarget();
}
});
}
@Override
public void onComplete(final FindFriendsResponseBean bean) {
if (bean != null) {
searchHistory.put(name, bean.getFriends());
}
getActivity().runOnUiThread(new Runnable() {
public void run() {
if (bean != null) {
mFriendsView.setmFriendsList(bean.getFriends());
}
}
});
}
};
async.getFriendsInfo(param, listener);
}
private FindFriendsView.OnSearchClick onSearchClick = new FindFriendsView.OnSearchClick() {
@SuppressWarnings("unchecked")
public void OnSearch(View view, String str) {
try {
if (searchHistory.containsKey(str)) {
mFriendsView
.setmFriendsList((ArrayList<UserInfo>) searchHistory
.get(str));
} else {
search(str);
}
} catch (NetworkException e) {
mExceptionHandler
.obtainMessage(NetworkError.ERROR_SIGN_IN_NULL)
.sendToTarget();
}
}
public void OnItemClicked(UserInfo info) {
forward(getUserHomeFragment(), info.params());
}
public void OnDisplay(final ImageView view, final Drawable drawable,
String url) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
view.setImageDrawable(drawable);
}
});
}
public void OnDefault(final ImageView view) {
getActivity().runOnUiThread(new Runnable() {
public void run() {
view.setImageResource(R.drawable.icon);
}
});
}
};
private String getUserHomeFragment() {
return getString(R.string.fuserHomeFragment);
}
@Override
protected void onLoginSuccess() {
// TODO Auto-generated method stub
}
}