package com.smartalk.gank.ui.activity;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.smartalk.gank.R;
import com.smartalk.gank.model.entity.Meizi;
import com.smartalk.gank.presenter.MainPresenter;
import com.smartalk.gank.ui.adapter.MeiziAdapter;
import com.smartalk.gank.ui.base.ToolBarActivity;
import com.smartalk.gank.ui.widget.LMRecyclerView;
import com.smartalk.gank.utils.SPDataUtil;
import com.smartalk.gank.utils.TipsUtil;
import com.smartalk.gank.view.IMainView;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.OnClick;
public class MainActivity extends ToolBarActivity<MainPresenter> implements
SwipeRefreshLayout.OnRefreshListener, IMainView, LMRecyclerView.LoadMoreListener {
private List<Meizi> meizis;
private MeiziAdapter adapter;
private MainPresenter presenter;
private int page = 1;
private boolean isRefresh = true;
private boolean canLoading = true;
@Bind(R.id.toolbar)
Toolbar toolbar;
@Bind(R.id.recycler_view)
LMRecyclerView rvMeizi;
@Bind(R.id.swipe_refresh_layout)
SwipeRefreshLayout swipeRefreshLayout;
@Bind(R.id.fab)
FloatingActionButton fab;
@OnClick(R.id.fab)
void fabClick() {
presenter.toBatteryActivity();
}
@Override
protected int provideContentViewId() {
return R.layout.activity_main;
}
@Override
protected void initPresenter() {
presenter = new MainPresenter(this, this);
presenter.init();
}
@Override
protected boolean canBack() {
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_about:
presenter.toAboutActivity();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onRefresh() {
isRefresh = true;
page = 1;
presenter.fetchMeiziData(page);
}
@Override
public void init() {
meizis = SPDataUtil.getFirstPageGirls(getApplicationContext());
if (meizis == null) meizis = new ArrayList<>();
adapter = new MeiziAdapter(this, meizis);
rvMeizi.setLayoutManager(new LinearLayoutManager(this));
rvMeizi.setAdapter(adapter);
rvMeizi.applyFloatingActionButton(fab);
rvMeizi.setLoadMoreListener(this);
swipeRefreshLayout.setColorSchemeResources(R.color.colorPrimary, R.color.colorAccent, R.color.blue);
swipeRefreshLayout.setOnRefreshListener(this);
swipeRefreshLayout.post(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(true);
presenter.fetchMeiziData(page);
}
});
toolbar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
rvMeizi.smoothScrollToPosition(0);
}
});
}
@Override
public void showProgress() {
if (!swipeRefreshLayout.isRefreshing())
swipeRefreshLayout.setRefreshing(true);
}
@Override
public void hideProgress() {
if (swipeRefreshLayout.isRefreshing())
swipeRefreshLayout.setRefreshing(false);
}
@Override
public void showErrorView() {
canLoading = true;
TipsUtil.showTipWithAction(fab, getString(R.string.load_failed), getString(R.string.retry), new View.OnClickListener() {
@Override
public void onClick(View v) {
presenter.fetchMeiziData(page);
}
});
}
@Override
public void showNoMoreData() {
canLoading = false;
TipsUtil.showSnackTip(fab, getString(R.string.all_loaded));
}
@Override
public void showMeiziList(List<Meizi> meiziList) {
canLoading = true;
page++;
if (isRefresh) {
SPDataUtil.saveFirstPageGirls(getApplicationContext(), meiziList);
meizis.clear();
meizis.addAll(meiziList);
adapter.notifyDataSetChanged();
isRefresh = false;
} else {
meizis.addAll(meiziList);
adapter.notifyDataSetChanged();
}
}
@Override
public void loadMore() {
if (canLoading) {
presenter.fetchMeiziData(page);
canLoading = false;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
presenter.release();
}
}