/******************************************************************************* * Copyright 2011, 2012, 2013 fanfou.com, Xiaoke, Zhang * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.fanfou.app.opensource; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextPaint; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.ScrollView; import android.widget.TextView; import com.fanfou.app.opensource.api.bean.User; import com.fanfou.app.opensource.cache.CacheManager; import com.fanfou.app.opensource.cache.ImageLoader; import com.fanfou.app.opensource.service.Constants; import com.fanfou.app.opensource.service.FanfouServiceManager; import com.fanfou.app.opensource.ui.ActionBar; import com.fanfou.app.opensource.ui.ActionManager; import com.fanfou.app.opensource.util.CommonHelper; import com.fanfou.app.opensource.util.DateTimeHelper; import com.fanfou.app.opensource.util.StringHelper; /** * @author mcxiaoke * @version 1.0 2011.07.18 * @version 1.2 2011.10.29 * @version 1.3 2011.11.07 * @version 1.4 2011.11.08 * @version 1.5 2011.12.06 * @version 1.6 2011.12.19 * */ public class MyProfilePage extends BaseActivity { private class EditProfileAction extends ActionBar.AbstractAction { public EditProfileAction() { super(R.drawable.ic_sethead); } @Override public void performAction(final View view) { if (MyProfilePage.this.user != null) { MyProfilePage.goEditProfilePage(MyProfilePage.this.mContext, MyProfilePage.this.user); } } } private class ResultHandler extends Handler { @Override public void handleMessage(final Message msg) { final int type = msg.arg1; switch (msg.what) { case Constants.RESULT_SUCCESS: if (msg.getData() != null) { if (AppContext.DEBUG) { log("result ok, update ui"); } final User result = (User) msg.getData().getParcelable( Constants.EXTRA_DATA); if (result != null) { AppContext.getAppContext().updateUserInfo(result); MyProfilePage.this.user = result; } if (!MyProfilePage.this.isInitialized) { showContent(); } if (type == Constants.TYPE_USERS_SHOW) { log("show result=" + MyProfilePage.this.user.id); updateUI(); if (MyProfilePage.this.isInitialized) { } } } break; case Constants.RESULT_ERROR: if (type == Constants.TYPE_USERS_SHOW) { } if (!MyProfilePage.this.isInitialized) { showContent(); } final String errorMessage = msg.getData().getString( Constants.EXTRA_ERROR); CommonHelper.notify(MyProfilePage.this.mContext, errorMessage); if (AppContext.DEBUG) { log("result error"); } break; default: break; } } } private ScrollView mScrollView; private View mEmptyView; private ActionBar mActionBar; private ImageView mHead; private TextView mName; private ImageView mProtected; private TextView mDescription; private ViewGroup mStatusesView; private TextView mStatusesInfo; private ViewGroup mFavoritesView; private TextView mFavoritesInfo; private ViewGroup mFriendsView; private TextView mFriendsInfo; private ViewGroup mFollowersView; private TextView mFollowersInfo; private TextView mExtraInfo; private String userId; private User user; private Handler mHandler; private ImageLoader mLoader; private boolean isInitialized = false; private static final int REQUEST_CODE_UPDATE_PROFILE = 0; private static final String tag = MyProfilePage.class.getSimpleName(); private static void goEditProfilePage(final Activity context, final User user) { final Intent intent = new Intent(context, EditProfilePage.class); intent.putExtra(Constants.EXTRA_DATA, user); context.startActivityForResult(intent, MyProfilePage.REQUEST_CODE_UPDATE_PROFILE); } private void doRefresh() { FanfouServiceManager.doProfile(this, this.userId, new ResultHandler()); if (this.isInitialized) { } } protected void initCheckState() { if (this.user != null) { showContent(); updateUI(); } else { doRefresh(); showProgress(); } } private void initialize() { this.mHandler = new Handler(); this.mLoader = AppContext.getImageLoader(); } private void log(final String message) { Log.d(MyProfilePage.tag, message); } @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK) { if (requestCode == MyProfilePage.REQUEST_CODE_UPDATE_PROFILE) { final User result = (User) data .getParcelableExtra(Constants.EXTRA_DATA); if (result != null) { this.user = result; this.userId = this.user.id; updateUI(); } } } } @Override public void onClick(final View v) { switch (v.getId()) { case R.id.user_statuses_view: ActionManager.doShowTimeline(this, this.user); break; case R.id.user_favorites_view: ActionManager.doShowFavorites(this, this.user); break; case R.id.user_friends_view: ActionManager.doShowFriends(this, this.user); break; case R.id.user_followers_view: ActionManager.doShowFollowers(this, this.user); break; case R.id.user_headview: // goEditProfilePage(this,user); break; default: break; } } @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); parseIntent(); initialize(); setLayout(); initCheckState(); } private void parseIntent() { this.userId = AppContext.getUserId(); this.user = CacheManager.getUser(this, this.userId); } /** * 初始化和设置ActionBar */ private void setActionBar() { this.mActionBar = (ActionBar) findViewById(R.id.actionbar); this.mActionBar.setTitle("我的空间"); this.mActionBar.setRightAction(new EditProfileAction()); this.mActionBar.setLeftAction(new ActionBar.BackAction(this)); } private void setExtraInfo(final User u) { if (u == null) { this.mExtraInfo.setVisibility(View.GONE); return; } final StringBuffer sb = new StringBuffer(); if (!StringHelper.isEmpty(this.user.gender)) { sb.append("性别:").append(this.user.gender).append("\n"); } if (!StringHelper.isEmpty(this.user.birthday)) { sb.append("生日:").append(this.user.birthday).append("\n"); } if (!StringHelper.isEmpty(this.user.location)) { sb.append("位置:").append(this.user.location).append("\n"); } if (!StringHelper.isEmpty(this.user.url)) { sb.append("网站:").append(this.user.url).append("\n"); } sb.append("注册时间:").append( DateTimeHelper.formatDateOnly(this.user.createdAt)); this.mExtraInfo.setText(sb.toString()); } private void setLayout() { setContentView(R.layout.myprofile); // View root=findViewById(R.id.root); // ThemeHelper.setBackgroundColor(root); setActionBar(); this.mEmptyView = findViewById(R.id.empty); this.mScrollView = (ScrollView) findViewById(R.id.user_profile); this.mHead = (ImageView) findViewById(R.id.user_head); this.mName = (TextView) findViewById(R.id.user_name); final TextPaint tp = this.mName.getPaint(); tp.setFakeBoldText(true); this.mExtraInfo = (TextView) findViewById(R.id.user_extrainfo); this.mProtected = (ImageView) findViewById(R.id.user_protected); this.mDescription = (TextView) findViewById(R.id.user_description); // mHeadView = (ViewGroup) findViewById(R.id.user_headview); this.mStatusesView = (ViewGroup) findViewById(R.id.user_statuses_view); this.mStatusesInfo = (TextView) findViewById(R.id.user_statuses); this.mFavoritesView = (ViewGroup) findViewById(R.id.user_favorites_view); this.mFavoritesInfo = (TextView) findViewById(R.id.user_favorites); this.mFriendsView = (ViewGroup) findViewById(R.id.user_friends_view); this.mFriendsInfo = (TextView) findViewById(R.id.user_friends); this.mFollowersView = (ViewGroup) findViewById(R.id.user_followers_view); this.mFollowersInfo = (TextView) findViewById(R.id.user_followers); // mHeadView.setOnClickListener(this); this.mStatusesView.setOnClickListener(this); this.mFavoritesView.setOnClickListener(this); this.mFriendsView.setOnClickListener(this); this.mFollowersView.setOnClickListener(this); } private void showContent() { if (AppContext.DEBUG) { log("showContent()"); } this.isInitialized = true; this.mEmptyView.setVisibility(View.GONE); this.mScrollView.setVisibility(View.VISIBLE); } private void showProgress() { this.mScrollView.setVisibility(View.GONE); this.mEmptyView.setVisibility(View.VISIBLE); } private void updateUI() { if (this.user == null) { return; } if (AppContext.DEBUG) { log("updateUI user.name=" + this.user.screenName); } this.mHead.setTag(this.user.profileImageUrl); this.mLoader.displayImage(this.user.profileImageUrl, this.mHead, R.drawable.default_head); this.mName.setText(this.user.screenName); this.mStatusesInfo.setText("" + this.user.statusesCount); this.mFavoritesInfo.setText("" + this.user.favouritesCount); this.mFriendsInfo.setText("" + this.user.friendsCount); this.mFollowersInfo.setText("" + this.user.followersCount); if (AppContext.DEBUG) { log("updateUI user.description=" + this.user.description); } if (StringHelper.isEmpty(this.user.description)) { this.mDescription.setText("这家伙什么也没留下"); this.mDescription.setGravity(Gravity.CENTER); } else { this.mDescription.setText(this.user.description); } setExtraInfo(this.user); if (this.user.protect) { this.mProtected.setVisibility(View.VISIBLE); } else { this.mProtected.setVisibility(View.GONE); } } }