/* * The MIT License (MIT) * * Copyright (c) 2014-2015 Umeng, Inc * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.umeng.comm.ui.activities; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bundle; import android.util.TypedValue; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import com.umeng.comm.core.beans.CommUser; import com.umeng.comm.core.constants.Constants; import com.umeng.comm.core.utils.ResFinder; import com.umeng.comm.ui.dialogs.ClipImageDialog; import com.umeng.comm.ui.dialogs.ClipImageDialog.OnClickSaveListener; import com.umeng.comm.ui.fragments.PushSettingFragment; import com.umeng.comm.ui.fragments.SettingFragment; import com.umeng.comm.ui.fragments.UserSettingFragment; /** * 设置页面 注意:此Activity的名字不能修改,数据层需要回调此Activity */ public class SettingActivity extends BaseFragmentActivity implements OnClickListener { private TextView mTitleTextView; private SettingFragment mSettingFragment = new SettingFragment(); private UserSettingFragment mUserSettingFragment; private PushSettingFragment mPushSettingFragment; private Button mSaveButton; private Bundle mExtra; private ClipImageDialog mClipImageDialog; public boolean isRegisterUserNameInvalid = false;//注册时,昵称是否无效 // 由于开发者可能直接使用Fragment,在退出登录的时候,我们需要回到该Activity private String mContainerClass = null; @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(ResFinder.getLayout("umeng_comm_setting_activity")); mContainerClass = getIntent().getExtras().getString(Constants.TYPE_CLASS); mSettingFragment.setContainerClass(mContainerClass); initViews(); initFragment(); switchHeaderView(); } /** * 初始化相关View</br> */ private void initViews() { findViewById(ResFinder.getId("umeng_comm_setting_back")).setOnClickListener(this); mTitleTextView = (TextView) findViewById(ResFinder.getId("umeng_comm_setting_title")); mSaveButton = (Button) findViewById(ResFinder.getId("umeng_comm_save_bt")); mSaveButton.setText(ResFinder.getString("umeng_comm_save")); mSaveButton.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18); mSaveButton.setOnClickListener(this); } CommUser loginUser; /** * 初始化Fragment。显示用户设置Fragment or SettingFragment</br> */ private void initFragment() { setFragmentContainerId(ResFinder.getId("umeng_comm_setting_content")); mExtra = getIntent().getExtras(); if (mExtra != null && mExtra.containsKey(Constants.USER_SETTING)) { loginUser = mExtra.getParcelable(Constants.USER); isRegisterUserNameInvalid = mExtra.getBoolean(Constants.REGISTER_USERNAME_INVALID); showUserSettingFrgm(true, loginUser); mSettingFragment.setFrom(true); } else { showFragment(mSettingFragment); } } /** * 显示用户设置页面</br> */ private void showUserSettingFrgm(boolean isFirstSetting, CommUser user) { if (mUserSettingFragment == null) { mUserSettingFragment = UserSettingFragment.getUserSettingFragment(); } mUserSettingFragment.setFirstSetting(isFirstSetting); mUserSettingFragment.setUser(user); mUserSettingFragment.isRegisterUserNameInvalid = isRegisterUserNameInvalid; showFragment(mUserSettingFragment); isFirstSetting = false; } /** * 显示Push通知设置页面</br> */ private void showPushSettingFrgm() { if (mPushSettingFragment == null) { mPushSettingFragment = PushSettingFragment.getPushSettingFragment(); } showFragment(mPushSettingFragment); } @Override public void onClick(View v) { int id = v.getId(); if (id == ResFinder.getId("umeng_comm_setting_back")) { // 返回事件 dealBackLogic(); } else if (id == ResFinder.getId("umeng_comm_save_bt")) { // 保存事件 dealSaveLogic(); } else if (id == ResFinder.getId("umeng_comm_user_setting")) { // 在SettingFragment中的按钮 showUserSettingFrgm(false, loginUser); } else if (id == ResFinder.getId("umeng_comm_msg_setting")) { // 在SettingFragment中的按钮 showPushSettingFrgm(); } switchHeaderView(); } /** * 处理保存事件的逻辑。如果当前fragment是用户设置页面,则执行更新用户接口</br> */ private void dealSaveLogic() { if (mCurrentFragment instanceof UserSettingFragment) { final UserSettingFragment userSettingFragment = (UserSettingFragment) mCurrentFragment; userSettingFragment.registerOrUpdateUserInfo(); } // showFragment(mSettingFragment); } /** * 处理back事件的逻辑。如果当前页面已经是设置页面,则直接返回(finish);否则回退到设置页面</br> */ private void dealBackLogic() { if (mCurrentFragment == mSettingFragment) { finish(); } else { // 如果是在用户设置页面,此时可能需要关闭软键盘 if (mCurrentFragment instanceof UserSettingFragment) { UserSettingFragment settingFragment = (UserSettingFragment) mCurrentFragment; settingFragment.hideInputMethod(); // 昵称不合法则需要修改昵称并且保持之后才可以退出. if (isRegisterUserNameInvalid) { // ToastMsg.showShortMsg(this, ResFinder.getString("umeng_comm_user_name_tips")); finish(); return; } } showFragment(mSettingFragment); } } /** * 根据不同的页面隐藏、显示、修改title的内容</br> */ public void switchHeaderView() { String title = ""; int visiable = View.VISIBLE; if (mCurrentFragment instanceof SettingFragment) { title = ResFinder.getString("umeng_comm_setting"); visiable = View.GONE; } else if (mCurrentFragment instanceof UserSettingFragment) { title = ResFinder.getString("umeng_comm_setting_user"); visiable = View.VISIBLE; } else if (mCurrentFragment instanceof PushSettingFragment) { title = ResFinder.getString("umeng_comm_setting_msg"); visiable = View.GONE; } mTitleTextView.setText(title); mSaveButton.setVisibility(visiable); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // 防止在选择图片的时候按返回键 if (data == null) { return; } // 从相册中选择图片 if (requestCode == Constants.PIC_SELECT) { int style = ResFinder.getStyle("umeng_comm_dialog_fullscreen"); // 显示剪切图片的Dialog mClipImageDialog = new ClipImageDialog(this, data.getData(), style); mClipImageDialog.setOnClickSaveListener(mOnSaveListener); mClipImageDialog.show(); } super.onActivityResult(requestCode, resultCode, data); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && mCurrentFragment != mSettingFragment && mExtra == null) { showFragment(mSettingFragment); switchHeaderView(); return true; } return super.onKeyDown(keyCode, event); } /** * 剪切图片dialog页面,点击保存时的回调,更新UI</br> */ private OnClickSaveListener mOnSaveListener = new OnClickSaveListener() { @Override public void onClickSave(Bitmap bitmap) { if (mCurrentFragment instanceof UserSettingFragment) { UserSettingFragment userSettingFragment = (UserSettingFragment) mCurrentFragment; userSettingFragment.showClipedBitmap(bitmap); } } }; }