package com.qiwenge.android.act;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.GridView;
import android.widget.Toast;
import com.liuguangqiang.android.mvp.BaseUi;
import com.liuguangqiang.android.mvp.Presenter;
import com.liuguangqiang.framework.utils.NetworkUtils;
import com.qiwenge.android.R;
import com.qiwenge.android.adapters.MainMenuAdapter;
import com.qiwenge.android.adapters.MainPagerAdapter;
import com.qiwenge.android.base.BaseActivity;
import com.qiwenge.android.entity.MainMenuItem;
import com.qiwenge.android.mvp.presenter.MainPresenter;
import com.qiwenge.android.mvp.ui.MainUi;
import com.qiwenge.android.mvp.ui.MainUiCallback;
import com.qiwenge.android.ui.SlowViewPager;
import com.qiwenge.android.utils.ImageLoaderUtils;
import com.qiwenge.android.utils.level.LevelUtils;
import java.util.ArrayList;
import java.util.List;
import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnItemClick;
public class MainActivity extends BaseActivity implements MainUi {
private static final int ACTION_SEARCH = 0;
private static final int ACTION_SETTING = 1;
private static final int ACTION_FEEDBACK = 2;
private SlowViewPager viewPager;
private MainPagerAdapter adapter;
private boolean doubleBackToExitPressedOnce = false;
@InjectView(R.id.gv_menu)
GridView gvMenu;
private MainMenuAdapter menuAdapter;
private List<MainMenuItem> menuData = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.inject(this);
if (!NetworkUtils.isWifiEnabled(getApplicationContext())) {
ImageLoaderUtils.setWifiEnable(false);
}
initViews();
initActionBar();
LevelUtils.dailyLogin(getApplicationContext());
}
@Override
public Presenter setPresenter() {
return new MainPresenter(this, this);
}
@Override
public void setUiCallback(MainUiCallback mainUiCallback) {
}
private void initActionBar() {
getActionBar().setDisplayShowCustomEnabled(true);
getActionBar().setDisplayUseLogoEnabled(false);
getActionBar().setDisplayShowHomeEnabled(false);
getActionBar().setDisplayHomeAsUpEnabled(false);
getActionBar().setDisplayShowTitleEnabled(false);
getActionBar().setIcon(R.drawable.transparent_bg);
getActionBar().setCustomView(R.layout.layout_main_action);
}
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
exitApp();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, getString(R.string.double_click_to_quit), Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
}
@Override
public void showMenu(List<MainMenuItem> list) {
menuData.addAll(list);
menuAdapter.notifyDataSetChanged();
}
private int lastPosition = 0;
private void selectedMenu(int position) {
menuData.get(lastPosition).selected = false;
menuData.get(position).selected = true;
lastPosition = position;
menuAdapter.notifyDataSetChanged();
}
private void initViews() {
menuAdapter = new MainMenuAdapter(getApplicationContext(), menuData);
gvMenu.setAdapter(menuAdapter);
adapter = new MainPagerAdapter(getSupportFragmentManager());
viewPager = (SlowViewPager) this.findViewById(R.id.viewpager_main);
viewPager.setAdapter(adapter);
viewPager.setOffscreenPageLimit(MainPagerAdapter.NUM - 1);
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
selectedMenu(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@OnItemClick(R.id.gv_menu)
public void onMenuItemClick(int position) {
selectedMenu(position);
viewPager.setCurrentItem(position);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
menu.add(0, ACTION_SEARCH, 0, R.string.action_search)
.setIcon(R.drawable.ic_action_search).setIntent(new Intent(getApplicationContext(),
SearchActivity.class)).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
SubMenu submenu = menu.addSubMenu(0, 1, 0, R.string.action_more);
submenu.add(0, ACTION_SETTING, 2, R.string.action_setting).setIntent(
new Intent(getApplicationContext(), SettingActivity.class));
submenu.add(0, ACTION_FEEDBACK, 1, R.string.action_feedback);
submenu.getItem().setIcon(R.drawable.ic_action_more)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case ACTION_FEEDBACK:
startActivity(FeedbackActivity.class);
break;
}
return super.onOptionsItemSelected(item);
}
}