package com.athena.asm.fragment;
import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.app.SherlockFragment;
import com.athena.asm.ActivityFragmentTargets;
import com.athena.asm.OnOpenActivityFragmentListener;
import com.athena.asm.R;
import com.athena.asm.aSMApplication;
import com.athena.asm.data.Profile;
import com.athena.asm.util.StringUtility;
import com.athena.asm.util.task.LoadProfileTask;
import com.athena.asm.viewmodel.BaseViewModel;
import com.athena.asm.viewmodel.HomeViewModel;
public class ProfileFragment extends SherlockFragment implements BaseViewModel.OnViewModelChangObserver {
private HomeViewModel m_viewModel;
private LayoutInflater m_inflater;
private View m_layout;
private Profile m_currentProfile;
private boolean m_isLoaded;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
m_inflater = inflater;
m_layout = m_inflater.inflate(R.layout.profile, null);
aSMApplication application = (aSMApplication) getActivity().getApplication();
m_viewModel = application.getHomeViewModel();
m_viewModel.registerViewModelChangeObserver(this);
m_currentProfile = null;
m_isLoaded = false;
return m_layout;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (m_viewModel.getCurrentTab() != null && m_viewModel.getCurrentTab().equals(StringUtility.TAB_PROFILE)) {
reloadProfile();
}
}
@Override
public void onDestroy() {
m_viewModel.unregisterViewModelChangeObserver(this);
super.onDestroy();
}
public void reloadProfile() {
if (m_currentProfile == null) {
if (m_viewModel.m_isLoadingInProgress)
return;
LoadProfileTask loadProfileTask = new LoadProfileTask(getActivity(), m_viewModel,
m_viewModel.getLoginUserID());
loadProfileTask.execute();
} else {
ImageButton searchButton = (ImageButton) m_layout.findViewById(R.id.btn_search);
searchButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
RelativeLayout relativeLayout = (RelativeLayout) v.getParent();
EditText searchEditText = (EditText) relativeLayout.findViewById(R.id.search_edit);
InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(
SherlockActivity.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(searchEditText.getWindowToken(), 0);
String idString = searchEditText.getText().toString().trim();
if (idString.length() > 0) {
LoadProfileTask profileTask = new LoadProfileTask(getActivity(), m_viewModel, idString);
profileTask.execute();
}
}
});
Button msgButton = (Button) m_layout.findViewById(R.id.btn_send_mail);
msgButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
OnOpenActivityFragmentListener onOpenActivityFragmentListener = null;
Activity parentActivity = getSherlockActivity();
if (parentActivity instanceof OnOpenActivityFragmentListener) {
onOpenActivityFragmentListener = (OnOpenActivityFragmentListener) parentActivity;
}
if (onOpenActivityFragmentListener != null) {
Bundle bundle = new Bundle();
bundle.putSerializable(StringUtility.URL, "http://www.newsmth.net/bbspstmail.php");
bundle.putSerializable(StringUtility.WRITE_TYPE, 1);
bundle.putSerializable(StringUtility.IS_REPLY, false);
bundle.putSerializable(StringUtility.USERID, m_currentProfile.getUserID());
onOpenActivityFragmentListener.onOpenActivityOrFragment(ActivityFragmentTargets.WRITE_POST,
bundle);
}
}
});
TextView userIDTextView = (TextView) m_layout.findViewById(R.id.profile_userid);
userIDTextView.setText(m_currentProfile.getUserIDNickName());
userIDTextView.requestFocus();
TextView userScoreTextView = (TextView) m_layout.findViewById(R.id.profile_user_score);
if (m_currentProfile.getScore() != 0) {
userScoreTextView.setVisibility(View.VISIBLE);
userScoreTextView.setText("积分:" + m_currentProfile.getScore());
} else {
userScoreTextView.setVisibility(View.GONE);
}
TextView userIpTextView = (TextView) m_layout.findViewById(R.id.profile_user_ip);
userIpTextView.setText("来自:" + m_currentProfile.getIp());
TextView descTextView = (TextView) m_layout.findViewById(R.id.profile_user_desc);
descTextView.setText(Html.fromHtml(m_currentProfile.getDescription()));
// Vt100TerminalModel.handleContent(m_currentProfile.getDescription(), descTextView);
TextView aliveTextView = (TextView) m_layout.findViewById(R.id.profile_aliveness);
aliveTextView.setText(m_currentProfile.getAliveness() + "");
TextView loginedTimeTextView = (TextView) m_layout.findViewById(R.id.profile_login_times);
loginedTimeTextView.setText(m_currentProfile.getLoginTime() + "");
TextView postNoTextView = (TextView) m_layout.findViewById(R.id.profile_post_number);
postNoTextView.setText(m_currentProfile.getPostNumber() + "");
TextView onlineTextView = (TextView) m_layout.findViewById(R.id.profile_online_status);
switch (m_currentProfile.getOnlineStatus()) {
case 0:
onlineTextView.setText("离线");
break;
case 1:
onlineTextView.setText("不明");
break;
case 2:
onlineTextView.setText("在线");
break;
default:
break;
}
if (aSMApplication.getCurrentApplication().isNightTheme()) {
userIDTextView.setTextColor(m_layout.getResources().getColor(R.color.blue_text_night));
searchButton.setImageResource(R.drawable.search);
} else {
searchButton.setImageResource(R.drawable.search_inverse);
}
}
}
@Override
public void onViewModelChange(BaseViewModel viewModel, String changedPropertyName, Object... params) {
if (changedPropertyName.equals(HomeViewModel.PROFILE_PROPERTY_NAME)) {
m_currentProfile = (Profile) params[0];
reloadProfile();
} else if (changedPropertyName.equals(HomeViewModel.CURRENTTAB_PROPERTY_NAME)) {
if (!m_isLoaded && m_viewModel.getCurrentTab() != null
&& m_viewModel.getCurrentTab().equals(StringUtility.TAB_PROFILE)) {
reloadProfile();
}
}
}
}