package net.coding.program;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView;
import com.tencent.android.tpush.XGPushManager;
import com.tencent.android.tpush.service.XGPushService;
import net.coding.program.common.LoginBackground;
import net.coding.program.common.htmltext.URLSpanNoUnderline;
import net.coding.program.common.network.util.Login;
import net.coding.program.common.ui.BaseActivity;
import net.coding.program.login.MarketingHelp;
import net.coding.program.login.ZhongQiuGuideActivity;
import net.coding.program.maopao.MaopaoListFragment;
import net.coding.program.maopao.MaopaoListFragment_;
import net.coding.program.message.UsersListFragment_;
import net.coding.program.model.AccountInfo;
import net.coding.program.project.ProjectFragment;
import net.coding.program.project.ProjectFragment_;
import net.coding.program.project.init.InitProUtils;
import net.coding.program.setting.SettingFragment_;
import net.coding.program.task.TaskFragment_;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.Extra;
import org.androidannotations.annotations.ViewById;
import org.androidannotations.annotations.res.StringArrayRes;
import java.util.List;
@EActivity(R.layout.activity_main)
public class MainActivity extends BaseActivity
implements NavigationDrawerFragment_.NavigationDrawerCallbacks {
public static final String TAG = "MainActivity";
public static final String BroadcastPushStyle = "BroadcastPushStyle";
NavigationDrawerFragment_ mNavigationDrawerFragment;
String mTitle;
@Extra
String mPushUrl;
@StringArrayRes
String drawer_title[];
@StringArrayRes
String maopao_action_types[];
@ViewById
ViewGroup drawer_layout;
private static boolean sNeedWarnEmailNoValidLogin = false;
public static void setNeedWarnEmailNoValidLogin() {
sNeedWarnEmailNoValidLogin = true;
}
private static boolean sNeedWarnEmailNoValidRegister = false;
public static void setNeedWarnEmailNoValidRegister() {
sNeedWarnEmailNoValidRegister = true;
}
boolean mFirstEnter = true;
BroadcastReceiver mUpdatePushReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
updateNotifyService();
}
};
int mSelectPos = 0;
MySpinnerAdapter mSpinnerAdapter;
private View actionbarCustom;
private long exitTime = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ZhongQiuGuideActivity.showHolidayGuide(this);
IntentFilter intentFilter = new IntentFilter(BroadcastPushStyle);
registerReceiver(mUpdatePushReceiver, intentFilter);
// XGPushConfig.enableDebug(this, true);
// qq push
updateNotifyService();
pushInXiaomi();
LoginBackground loginBackground = new LoginBackground(this);
loginBackground.update();
mFirstEnter = (savedInstanceState == null);
if (savedInstanceState != null) {
mSelectPos = savedInstanceState.getInt("pos", 0);
mTitle = savedInstanceState.getString("mTitle");
}
if (mPushUrl != null) {
URLSpanNoUnderline.openActivityByUri(this, mPushUrl, true);
mPushUrl = null;
getIntent().getExtras().remove("mPushUrl");
}
MarketingHelp.showMarketing(this);
warnMailNoValidLogin();
warnMailNoValidRegister();
}
private void warnMailNoValidLogin() {
if (sNeedWarnEmailNoValidLogin) {
sNeedWarnEmailNoValidLogin = false;
String emailString = MyApp.sUserObject.email;
boolean emailValid = MyApp.sUserObject.isEmailValidation();
if (!emailString.isEmpty() && !emailValid) {
new AlertDialog.Builder(this)
.setTitle("激活邮件")
.setMessage(R.string.alert_activity_email2)
.setPositiveButton("重发激活邮件", (dialog, which) -> {
Login.resendActivityEmail(MainActivity.this);
})
.setNegativeButton("取消", null)
.show();
}
}
}
private void warnMailNoValidRegister() {
if (sNeedWarnEmailNoValidRegister) {
sNeedWarnEmailNoValidRegister = false;
new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage(R.string.alert_activity_email)
.setPositiveButton("确定", null)
.show();
}
}
@Override
protected void onDestroy() {
unregisterReceiver(mUpdatePushReceiver);
super.onDestroy();
}
// 信鸽文档推荐调用,防止在小米手机上收不到推送
private void pushInXiaomi() {
Context context = getApplicationContext();
Intent service = new Intent(context, XGPushService.class);
context.startService(service);
}
private void updateNotifyService() {
boolean needPush = AccountInfo.getNeedPush(this);
if (needPush) {
String globalKey = MyApp.sUserObject.global_key;
XGPushManager.registerPush(this, globalKey);
} else {
XGPushManager.registerPush(this, "*");
}
}
@AfterViews
final void initMainActivity() {
Intent intent = new Intent(this, UpdateService.class);
intent.putExtra(UpdateService.EXTRA_BACKGROUND, true);
intent.putExtra(UpdateService.EXTRA_WIFI, true);
intent.putExtra(UpdateService.EXTRA_DEL_OLD_APK, true);
startService(intent);
mSpinnerAdapter = new MySpinnerAdapter(getLayoutInflater(), maopao_action_types);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar supportActionBar = getSupportActionBar();
supportActionBar.setCustomView(R.layout.actionbar_custom_spinner);
actionbarCustom = supportActionBar.getCustomView();
Spinner spinner = (Spinner) supportActionBar.getCustomView().findViewById(R.id.spinner);
spinner.setAdapter(mSpinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
String[] strings = getResources().getStringArray(R.array.maopao_action_types);
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Fragment fragment;
Bundle bundle = new Bundle();
mSpinnerAdapter.setCheckPos(position);
switch (position) {
case 1:
fragment = new MaopaoListFragment_();
bundle.putSerializable("mType", MaopaoListFragment.Type.friends);
break;
case 2:
fragment = new MaopaoListFragment_();
bundle.putSerializable("mType", MaopaoListFragment.Type.hot);
break;
case 0:
default:
fragment = new MaopaoListFragment_();
bundle.putSerializable("mType", MaopaoListFragment.Type.time);
break;
}
fragment.setArguments(bundle);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Log.d("", ft == null ? "is null" : "is good");
ft.replace(R.id.container, fragment, strings[position]);
ft.commit();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
mNavigationDrawerFragment = (NavigationDrawerFragment_)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = drawer_title[0];
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
if (mFirstEnter) {
onNavigationDrawerItemSelected(0);
}
}
@Override
public void onNavigationDrawerItemSelected(int position) {
mSelectPos = position;
Fragment fragment = null;
switch (position) {
case 0://防止重复加载数据
// fragment = new ProjectFragment_();
List<Fragment> fragments = getSupportFragmentManager().getFragments();
boolean containFragment = false;
for (Fragment item : fragments) {
if (item instanceof ProjectFragment_) {
containFragment = true;
break;
}
}
if (!containFragment) {
fragment = new ProjectFragment_();
}
break;
case 1:
fragment = new TaskFragment_();
break;
case 2:
// 进入冒泡页面,单独处理
break;
case 3:
fragment = new UsersListFragment_();
break;
case 4:
fragment = new SettingFragment_();
break;
}
if (position == 2) {
ActionBar actionBar = getSupportActionBar();
Spinner spinner;
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(actionbarCustom);
spinner = (Spinner) actionbarCustom.findViewById(R.id.spinner);
List<Fragment> fragments = getSupportFragmentManager().getFragments();
boolean containFragment = false;
for (Fragment item : fragments) {
if (item instanceof MaopaoListFragment) {
containFragment = true;
break;
}
}
if (!containFragment) {
int pos = spinner.getSelectedItemPosition();
spinner.getOnItemSelectedListener().onItemSelected(null, null, pos, pos);
}
}
if (fragment != null) {
getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).commit();
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("pos", mSelectPos);
// outState.putSerializable("mPushOpened", mPushOpened);
outState.putString("mTitle", mTitle);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mSelectPos = savedInstanceState.getInt("pos", 0);
mTitle = savedInstanceState.getString("mTitle");
restoreActionBar();
}
public void restoreActionBar() {
mTitle = drawer_title[mSelectPos];
ActionBar actionBar = getSupportActionBar();
if (mSelectPos != 2) {
actionBar.setDisplayShowCustomEnabled(false);
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setTitle(mTitle);
// actionBar.setIcon(R.drawable.ic_lancher);
} else {
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setCustomView(actionbarCustom);
actionBar.setTitle("");
// Spinner spinner = (Spinner) actionbarCustom.findViewById(R.id.spinner);
// spinner.setSelection(1);
// spinner.setSelection(0);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (!mNavigationDrawerFragment.isDrawerOpen()) {
restoreActionBar();
return true;
}
return super.onCreateOptionsMenu(menu);
}
//当项目设置里删除项目后,重新跳转到主界面,并刷新ProjectFragment
@Override
protected void onNewIntent(Intent intent) {
String action = intent.getStringExtra("action");
if (!TextUtils.isEmpty(action) && action.equals(InitProUtils.FLAG_REFRESH)) {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
for (Fragment item : fragments) {
if (item instanceof ProjectFragment) {
if (item.isAdded()) {
((ProjectFragment) item).onRefresh();
}
break;
}
}
}
super.onNewIntent(intent);
}
@Override
public void onBackPressed() {
exitApp();
}
private void exitApp() {
if ((System.currentTimeMillis() - exitTime) > 2000) {
showButtomToast("再按一次退出Coding");
exitTime = System.currentTimeMillis();
} else {
finish();
}
}
class MySpinnerAdapter extends BaseAdapter {
final int spinnerIcons[] = new int[]{
R.drawable.ic_spinner_maopao_time,
R.drawable.ic_spinner_maopao_friend,
R.drawable.ic_spinner_maopao_hot,
};
int checkPos = 0;
private LayoutInflater inflater;
private String[] project_activity_action_list;
public MySpinnerAdapter(LayoutInflater inflater, String[] titles) {
this.inflater = inflater;
this.project_activity_action_list = titles;
}
public void setCheckPos(int pos) {
checkPos = pos;
}
@Override
public int getCount() {
return spinnerIcons.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.spinner_layout_head, parent, false);
}
((TextView) convertView).setText(project_activity_action_list[position]);
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = inflater.inflate(R.layout.spinner_layout_item, parent, false);
}
TextView title = (TextView) convertView.findViewById(R.id.title);
title.setText(project_activity_action_list[position]);
ImageView icon = (ImageView) convertView.findViewById(R.id.icon);
icon.setImageResource(spinnerIcons[position]);
if (checkPos == position) {
convertView.setBackgroundColor(getResources().getColor(R.color.divide));
} else {
convertView.setBackgroundColor(getResources().getColor(R.color.transparent));
}
return convertView;
}
}
}