package com.socks.jiandan.ui;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.graphics.Color;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import com.afollestad.materialdialogs.MaterialDialog;
import com.socks.jiandan.R;
import com.socks.jiandan.base.BaseActivity;
import com.socks.jiandan.base.JDApplication;
import com.socks.jiandan.model.NetWorkEvent;
import com.socks.jiandan.ui.fragment.FreshNewsFragment;
import com.socks.jiandan.ui.fragment.MainMenuFragment;
import com.socks.jiandan.utils.NetWorkUtil;
import com.socks.jiandan.utils.ShowToast;
import butterknife.ButterKnife;
import butterknife.InjectView;
import de.greenrobot.event.EventBus;
public class MainActivity extends BaseActivity {
@InjectView(R.id.toolbar)
Toolbar mToolbar;
@InjectView(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mActionBarDrawerToggle;
private BroadcastReceiver netStateReceiver;
private MaterialDialog noNetWorkDialog;
private long exitTime;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
@Override
protected void initView() {
ButterKnife.inject(this);
mToolbar.setTitleTextColor(Color.WHITE);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mActionBarDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, R.string.app_name,
R.string.app_name) {
@Override
public void onDrawerClosed(View drawerView) {
invalidateOptionsMenu();
}
@Override
public void onDrawerOpened(View drawerView) {
invalidateOptionsMenu();
}
};
mActionBarDrawerToggle.syncState();
mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
replaceFragment(R.id.frame_container, new FreshNewsFragment());
replaceFragment(R.id.drawer_container, new MainMenuFragment());
}
@Override
protected void initData() {
netStateReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(
ConnectivityManager.CONNECTIVITY_ACTION)) {
if (NetWorkUtil.isNetWorkConnected(MainActivity.this)) {
EventBus.getDefault().post(new NetWorkEvent(NetWorkEvent.AVAILABLE));
} else {
EventBus.getDefault().post(new NetWorkEvent(NetWorkEvent.UNAVAILABLE));
}
}
}
};
registerReceiver(netStateReceiver, new IntentFilter(
ConnectivityManager.CONNECTIVITY_ACTION));
}
@Override
protected void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
protected void onStop() {
super.onStop();
EventBus.getDefault().unregister(this);
}
public void onEvent(NetWorkEvent event) {
if (event.getType() == NetWorkEvent.UNAVAILABLE) {
if (noNetWorkDialog == null) {
noNetWorkDialog = new MaterialDialog.Builder(MainActivity.this)
.title("无网络连接")
.content("去开启网络?")
.positiveText("是")
.backgroundColor(getResources().getColor(JDApplication.COLOR_OF_DIALOG))
.contentColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
.positiveColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
.negativeColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
.titleColor(JDApplication.COLOR_OF_DIALOG_CONTENT)
.negativeText("否")
.callback(new MaterialDialog.ButtonCallback() {
@Override
public void onPositive(MaterialDialog dialog) {
Intent intent = new Intent(
Settings.ACTION_WIRELESS_SETTINGS);
startActivity(intent);
}
@Override
public void onNegative(MaterialDialog dialog) {
}
})
.cancelable(false)
.build();
}
if (!noNetWorkDialog.isShowing()) {
noNetWorkDialog.show();
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(netStateReceiver);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
ShowToast.Short("再按一次退出程序");
exitTime = System.currentTimeMillis();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
///////////////////////////////////////////////////////////////////////////
// Drawer Method
///////////////////////////////////////////////////////////////////////////
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mActionBarDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mActionBarDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mActionBarDrawerToggle.onConfigurationChanged(newConfig);
}
public void closeDrawer() {
mDrawerLayout.closeDrawers();
}
}