package com.partynetwork.iparty.flipmenu;
import com.baidu.android.pushservice.PushConstants;
import com.baidu.android.pushservice.PushManager;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.openfire.manager.IMessageListener;
import com.partynetwork.dataprovider.util.ApiKeyUtil;
import com.partynetwork.dataprovider.util.T;
import com.partynetwork.iparty.R;
import com.partynetwork.iparty.app.AppConfig;
import com.partynetwork.iparty.app.AppContext;
import com.partynetwork.iparty.app.common.UIHelper;
import com.partynetwork.iparty.app.common.UpdateManager;
import com.partynetwork.iparty.app.entities.IMessage;
import com.partynetwork.iparty.app.manager.MessageManager;
import com.partynetwork.iparty.app.manager.NoticeManager;
import com.partynetwork.iparty.app.ui.BaseActivity;
import com.partynetwork.iparty.app.ui.GuideActivity;
import com.partynetwork.iparty.homepage.HomePage;
import com.partynetwork.iparty.imessage.OpenfireConstant;
import com.partynetwork.iparty.login.OpenfireLoginTask;
import eu.inmite.android.lib.dialogs.ISimpleDialogListener;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
/**
* 项目的入口类
*/
public class Main extends BaseActivity implements ISimpleDialogListener {
private Fragment mContent;
/* 消息接收监听 */
private IMessageListener messageListener;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
beforeInitMenu();
initSlidingMenu(savedInstanceState);
}
private void initSlidingMenu(Bundle savedInstanceState) {
if (savedInstanceState != null) {
mContent = getSupportFragmentManager().getFragment(
savedInstanceState, "mContent");
}
if (mContent == null) {
BaseSlidingPage baseSlidingPage = new HomePage(getSlidingMenu());
messageListener = baseSlidingPage;
mContent = baseSlidingPage;
}
// 内容主体
setContentView(R.layout.menu_content_frame);
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, mContent).commit();
// 菜单
setBehindContentView(R.layout.menu_menu_frame);
getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, new FlipMenuPage(getSlidingMenu()))
.commit();
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
/*
// 在任何地方滑动都不会出现菜单
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
getSlidingMenu().setShadowWidth(15);
getSlidingMenu().setBackgroundColor(Color.WHITE);
getSlidingMenu().setShadowDrawable(R.drawable.shadow);
getSlidingMenu().setBehindOffset(60);
getSlidingMenu().setFadeDegree(0.35f);
*/
}
public void switchContent(BaseSlidingPage fragment) {
this.messageListener = fragment;
mContent = fragment;
getSupportFragmentManager().beginTransaction()
.replace(R.id.content_frame, fragment).commit();
getSlidingMenu().showContent();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
getSupportFragmentManager().putFragment(outState, "mContent", mContent);
}
/**
* 前期准备
*/
private void beforeInitMenu() {
AppContext appContext = (AppContext) getApplicationContext();
MessageManager.getInstance(appContext).cleanManager();
NoticeManager.getInstance(appContext).cleanManager();
if (appContext.isFirstLogin()) {
// 第一次启动
Intent intent = new Intent(this, GuideActivity.class);
startActivity(intent);
} else if (!appContext.isLogin()) {
// 检查是否登陆
UIHelper.showLoginPage(this);
} else {
// 登陆聊天服务器
System.out.println("刚刚登陆 main.java===="+AppConfig.DB_NAME);
OpenfireLoginTask task = new OpenfireLoginTask(this,
appContext.getLoginUid() + "", appContext.getLoginInfo()
.getPwd());
task.execute();
}
// 网络连接判断
if (!appContext.isNetworkConnected()) {
T.showLong(this, R.string.network_not_connected);
}
// 开启百度推送服务
// 以apikey的方式登录,一般放在主Activity的onCreate中
PushManager.startWork(getApplicationContext(),
PushConstants.LOGIN_TYPE_API_KEY,
ApiKeyUtil.getMetaValue(this, "api_key"));
// 检查新版本
if (appContext.isCheckUp()) {
UpdateManager.getUpdateManager().checkAppUpdate(this, false);
}
// 注册消息接收广播
IntentFilter filter = new IntentFilter();
filter.addAction(OpenfireConstant.NEW_MESSAGE_ACTION);
registerReceiver(receiver, filter);
}
public void setMessageListener(IMessageListener messageListener) {
this.messageListener = messageListener;
}
/**
* 消息的接收广播
*/
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (OpenfireConstant.NEW_MESSAGE_ACTION.equals(action)) {
IMessage message = intent
.getParcelableExtra(IMessage.IMMESSAGE_KEY);
if (messageListener != null) {
messageListener.msgReceive(message);
}
}
}
};
@Override
protected void onDestroy() {
unregisterReceiver(receiver);
super.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
}
}