package net.dev123.yibo.service.listener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import net.dev123.commons.ServiceProvider; import net.dev123.yibo.EditMicroBlogActivity; import net.dev123.yibo.GroupActivity; import net.dev123.yibo.HomePageActivity; import net.dev123.yibo.R; import net.dev123.yibo.SettingActivity; import net.dev123.yibo.ThemeActivity; import net.dev123.yibo.YiBoApplication; import net.dev123.yibo.common.CompatibilityUtil; import net.dev123.yibo.common.Constants; import net.dev123.yibo.common.GlobalVars; import net.dev123.yibo.common.theme.Theme; import net.dev123.yibo.common.theme.ThemeUtil; import net.dev123.yibo.db.LocalAccount; import net.dev123.yibo.service.task.SocialGraphTask; import net.dev123.yibo.widget.Skeleton; import net.dev123.yibo.widget.ValueSetEvent; import net.dev123.yibo.widget.ViewChangeEvent; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.net.Uri; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.mobclick.android.MobclickAgent; import com.mobclick.android.UmengUpdateListener; public class MoreChangeListener implements PropertyChangeListener { private Activity context; private YiBoApplication yibo; //private WeakReference<View> refView; public MoreChangeListener(Context context) { this.context = (Activity)context; yibo = (YiBoApplication) context.getApplicationContext(); } @Override public void propertyChange(PropertyChangeEvent event) { if (event instanceof ViewChangeEvent) { viewChange(event); } else if (event instanceof ValueSetEvent) { valueSet(event); } } private void viewChange(PropertyChangeEvent event) { if (!(event instanceof ViewChangeEvent && event.getNewValue().equals(Skeleton.TYPE_MORE))) { return; } ViewChangeEvent changeEvent = (ViewChangeEvent)event; ViewGroup viewGroup = (ViewGroup)changeEvent.getView(); viewGroup.removeAllViews(); View view = getContentView(); viewGroup.addView(view); updateHeader(changeEvent); } private void valueSet(PropertyChangeEvent event) { ValueSetEvent setEvent = (ValueSetEvent)event; switch (setEvent.getAction()) { case ACTION_INIT_ADAPTER: break; case ACTION_RECLAIM_MEMORY: //refView = null; break; default: break; } } private View getContentView() { View contentView = null; // if (refView != null) { // contentView = refView.get(); // if (Constants.DEBUG && contentView == null) { // Log.v("AppChangeListener", "View recycle"); // } // } // if (contentView != null) { // return contentView; // } LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); contentView = inflater.inflate(R.layout.home_page_content_more, null); initTheme(contentView); LinearLayout llSetting = (LinearLayout)contentView.findViewById(R.id.llSetting); llSetting.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); Activity activity = (Activity)v.getContext(); intent.setClass(activity, SettingActivity.class); activity.startActivityForResult(intent, Constants.REQUEST_CODE_SETTINGS); } }); LinearLayout llAccounts = (LinearLayout)contentView.findViewById(R.id.llAccounts); llAccounts.setOnClickListener(new AccountManageClickListener()); LinearLayout llGroups = (LinearLayout)contentView.findViewById(R.id.llGroups); llGroups.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("SOCIAL_GRAPH_TYPE", SocialGraphTask.TYPE_FRIENDS); intent.putExtra("USER", yibo.getCurrentAccount().getUser()); intent.putExtra("TAB_TYPE", GroupActivity.TAB_TYPE_GROUP); intent.setClass(v.getContext(), GroupActivity.class); v.getContext().startActivity(intent); } }); LinearLayout llThemes = (LinearLayout)contentView.findViewById(R.id.llThemes); llThemes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(v.getContext(), ThemeActivity.class); v.getContext().startActivity(intent); } }); LinearLayout llOffical = (LinearLayout)contentView.findViewById(R.id.llOffical); llOffical.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LocalAccount account = yibo.getCurrentAccount(); String uri = null; if (account.getServiceProvider() == ServiceProvider.Fanfou) { //饭否不支持通过昵称获取用户信息,这边直接设置为官方微博的id(~0jFVfHMEtG4) uri = Constants.URI_PERSONAL_INFO.toString() + "@" + net.dev123.commons.Constants.FANFOU_OFFICAL_USER_ID; } else { String officalName = account.getServiceProvider().getOfficalName(); uri = Constants.URI_PERSONAL_INFO.toString() + "@" + officalName; } Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); v.getContext().startActivity(intent); } }); LinearLayout llFeedback = (LinearLayout)contentView.findViewById(R.id.llFeedback); llFeedback.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LocalAccount account = yibo.getCurrentAccount(); Context context = v.getContext(); String feedbackFormat = context.getString(R.string.hint_feedback_identify); String officeName = account.getServiceProvider().getOfficalName(); String model = CompatibilityUtil.getModel(); String release = CompatibilityUtil.getRelease(); String netOperator = GlobalVars.NET_OPERATOR == null ? "" : GlobalVars.NET_OPERATOR.toString(); String net = GlobalVars.NET_TYPE == null ? "" : GlobalVars.NET_TYPE.toString(); String handset = model + " " + release + " " + netOperator + " " + net; String versionName = ""; try { PackageInfo packageInfo = context.getPackageManager(). getPackageInfo("net.dev123.yibo", 0); versionName = packageInfo.versionName + "_" + packageInfo.versionCode; } catch (NameNotFoundException e) { versionName = context.getString(R.string.defaultVersion); } String feedbackIdentify = String.format( feedbackFormat, versionName, handset, officeName); Intent intent = new Intent(); intent.putExtra("TYPE", Constants.EDIT_TYPE_FEEDBACK); intent.putExtra("APPEND_TEXT", feedbackIdentify); intent.setClass(context, EditMicroBlogActivity.class); context.startActivity(intent); } }); LinearLayout llCheckUpdate = (LinearLayout)contentView.findViewById(R.id.llCheckUpdate); llCheckUpdate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Context vContext = v.getContext(); final ProgressDialog progressDialog = ProgressDialog.show( vContext, null, vContext.getString(R.string.msg_dialog_check_update) ); MobclickAgent.setUpdateOnlyWifi(false); MobclickAgent.setUpdateListener(new UmengUpdateListener() { public void onUpdateReturned(int updateStatus) { progressDialog.dismiss(); switch(updateStatus) { case 0: break; case 1: Toast.makeText(vContext, R.string.msg_is_lastest_version, Toast.LENGTH_SHORT).show(); break; case 2: Toast.makeText(vContext, R.string.msg_check_update_time_out, Toast.LENGTH_SHORT).show(); break; case 3: break; } } }); MobclickAgent.update(vContext); } }); LinearLayout llQuit = (LinearLayout)contentView.findViewById(R.id.llQuit); llQuit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final Context context = v.getContext(); new AlertDialog.Builder(v.getContext()) .setTitle(R.string.title_dialog_alert) .setMessage(R.string.msg_quit) .setPositiveButton(R.string.btn_confirm, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { HomePageActivity homePageActivity = (HomePageActivity)context; homePageActivity.exitApp(); } }) .setNegativeButton(R.string.btn_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create() .show(); } }); //refView = new WeakReference<View>(contentView); return contentView; } private void updateHeader(ViewChangeEvent changeEvent) { View llHeaderBase = ((Activity)context).findViewById(R.id.llHeaderBase); llHeaderBase.setVisibility(View.VISIBLE); View llHeaderMessage = ((Activity)context).findViewById(R.id.llHeaderMessage); llHeaderMessage.setVisibility(View.GONE); TextView tvTitle = (TextView) context.findViewById(R.id.tvTitle); tvTitle.setText(R.string.title_tab_more); ImageButton ibProfileImage = (ImageButton) context.findViewById(R.id.ibProfileImage); ibProfileImage.setVisibility(View.VISIBLE); ImageButton ibGroup = (ImageButton) context.findViewById(R.id.ibGroup); ibGroup.setVisibility(View.GONE); ImageButton ibEdit = (ImageButton) context.findViewById(R.id.ibEdit); ibEdit.setVisibility(View.VISIBLE); ibEdit.setOnClickListener(new HomePageEditStatusClickListener(context)); } private void initTheme(View contentView) { if (contentView == null) { return; } ThemeUtil.setContentBackground(contentView); Theme theme = ThemeUtil.createTheme(context); LinearLayout llMoreManage = (LinearLayout)contentView.findViewById(R.id.llMoreManage); LinearLayout llSetting = (LinearLayout)contentView.findViewById(R.id.llSetting); ImageView ivSetting = (ImageView)contentView.findViewById(R.id.ivSetting); TextView tvSetting = (TextView)contentView.findViewById(R.id.tvSetting); ImageView ivSettingMore = (ImageView)contentView.findViewById(R.id.ivSettingMore); LinearLayout llAccounts = (LinearLayout)contentView.findViewById(R.id.llAccounts); ImageView ivAccounts = (ImageView)contentView.findViewById(R.id.ivAccounts); TextView tvAccounts = (TextView)contentView.findViewById(R.id.tvAccounts); ImageView ivAccountsMore = (ImageView)contentView.findViewById(R.id.ivAccountsMore); LinearLayout llGroups = (LinearLayout)contentView.findViewById(R.id.llGroups); ImageView ivGroups = (ImageView)contentView.findViewById(R.id.ivGroups); TextView tvGroups = (TextView)contentView.findViewById(R.id.tvGroups); ImageView ivGroupsMore = (ImageView)contentView.findViewById(R.id.ivGroupsMore); LinearLayout llThemes = (LinearLayout)contentView.findViewById(R.id.llThemes); ImageView ivThemes = (ImageView)contentView.findViewById(R.id.ivThemes); TextView tvThemes = (TextView)contentView.findViewById(R.id.tvThemes); ImageView ivThemesMore = (ImageView)contentView.findViewById(R.id.ivThemesMore); llMoreManage.setBackgroundDrawable(theme.getDrawable("bg_frame_normal")); int padding1 = theme.dip2px(1); llMoreManage.setPadding(padding1, padding1, padding1, padding1); llSetting.setBackgroundDrawable(theme.getDrawable("selector_frame_item_top_corner")); int padding8 = theme.dip2px(8); llSetting.setPadding(padding8, padding8, padding8, padding8); ivSetting.setImageDrawable(theme.getDrawable("icon_more_setting")); int content = theme.getColor("content"); tvSetting.setTextColor(content); ivSettingMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); llAccounts.setBackgroundDrawable(theme.getDrawable("selector_frame_item_no_corner")); llAccounts.setPadding(padding8, padding8, padding8, padding8); ivAccounts.setImageDrawable(theme.getDrawable("icon_more_accounts")); tvAccounts.setTextColor(content); ivAccountsMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); llGroups.setBackgroundDrawable(theme.getDrawable("selector_frame_item_no_corner")); llGroups.setPadding(padding8, padding8, padding8, padding8); ivGroups.setImageDrawable(theme.getDrawable("icon_more_groups")); tvGroups.setTextColor(content); ivGroupsMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); llThemes.setBackgroundDrawable(theme.getDrawable("selector_frame_item_bottom_corner")); llThemes.setPadding(padding8, padding8, padding8, padding8); ivThemes.setImageDrawable(theme.getDrawable("icon_more_themes")); tvThemes.setTextColor(content); ivThemesMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); LinearLayout llMoreInfo = (LinearLayout)contentView.findViewById(R.id.llMoreInfo); LinearLayout llOffical = (LinearLayout)contentView.findViewById(R.id.llOffical); ImageView ivOffical = (ImageView)contentView.findViewById(R.id.ivOffical); TextView tvOffical = (TextView)contentView.findViewById(R.id.tvOffical); ImageView ivOfficalMore = (ImageView)contentView.findViewById(R.id.ivOfficalMore); LinearLayout llFeedback = (LinearLayout)contentView.findViewById(R.id.llFeedback); ImageView ivFeedback = (ImageView)contentView.findViewById(R.id.ivFeedback); TextView tvFeedback = (TextView)contentView.findViewById(R.id.tvFeedback); ImageView ivFeedbackMore = (ImageView)contentView.findViewById(R.id.ivFeedbackMore); LinearLayout llCheckUpdate = (LinearLayout)contentView.findViewById(R.id.llCheckUpdate); ImageView ivCheckUpdate = (ImageView)contentView.findViewById(R.id.ivCheckUpdate); TextView tvCheckUpdate = (TextView)contentView.findViewById(R.id.tvCheckUpdate); ImageView ivCheckUpdateMore = (ImageView)contentView.findViewById(R.id.ivCheckUpdateMore); LinearLayout llQuit = (LinearLayout)contentView.findViewById(R.id.llQuit); ImageView ivQuit = (ImageView)contentView.findViewById(R.id.ivQuit); TextView tvQuit = (TextView)contentView.findViewById(R.id.tvQuit); ImageView ivQuitMore = (ImageView)contentView.findViewById(R.id.ivQuitMore); llMoreInfo.setBackgroundDrawable(theme.getDrawable("bg_frame_normal")); llMoreInfo.setPadding(padding1, padding1, padding1, padding1); llOffical.setBackgroundDrawable(theme.getDrawable("selector_frame_item_top_corner")); llOffical.setPadding(padding8, padding8, padding8, padding8); ivOffical.setImageDrawable(theme.getDrawable("icon_more_offical")); tvOffical.setTextColor(content); ivOfficalMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); llFeedback.setBackgroundDrawable(theme.getDrawable("selector_frame_item_no_corner")); llFeedback.setPadding(padding8, padding8, padding8, padding8); ivFeedback.setImageDrawable(theme.getDrawable("icon_more_feedback")); tvFeedback.setTextColor(content); ivFeedbackMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); llCheckUpdate.setBackgroundDrawable(theme.getDrawable("selector_frame_item_no_corner")); llCheckUpdate.setPadding(padding8, padding8, padding8, padding8); ivCheckUpdate.setImageDrawable(theme.getDrawable("icon_more_update")); tvCheckUpdate.setTextColor(content); ivCheckUpdateMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); llQuit.setBackgroundDrawable(theme.getDrawable("selector_frame_item_bottom_corner")); llQuit.setPadding(padding8, padding8, padding8, padding8); ivQuit.setImageDrawable(theme.getDrawable("icon_more_quit")); tvQuit.setTextColor(content); ivQuitMore.setBackgroundDrawable(theme.getDrawable("icon_more_detail")); ImageView ivLineSeperator_1 = (ImageView)contentView.findViewById(R.id.ivLineSeperator_1); ImageView ivLineSeperator_2 = (ImageView)contentView.findViewById(R.id.ivLineSeperator_2); ImageView ivLineSeperator_3 = (ImageView)contentView.findViewById(R.id.ivLineSeperator_3); ImageView ivLineSeperator_4 = (ImageView)contentView.findViewById(R.id.ivLineSeperator_4); ImageView ivLineSeperator_5 = (ImageView)contentView.findViewById(R.id.ivLineSeperator_5); ImageView ivLineSeperator_6 = (ImageView)contentView.findViewById(R.id.ivLineSeperator_6); ivLineSeperator_1.setBackgroundDrawable(theme.getDrawable("line_seperator")); ivLineSeperator_2.setBackgroundDrawable(theme.getDrawable("line_seperator")); ivLineSeperator_3.setBackgroundDrawable(theme.getDrawable("line_seperator")); ivLineSeperator_4.setBackgroundDrawable(theme.getDrawable("line_seperator")); ivLineSeperator_5.setBackgroundDrawable(theme.getDrawable("line_seperator")); ivLineSeperator_6.setBackgroundDrawable(theme.getDrawable("line_seperator")); } }