package com.smartalk.gank.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.CollapsingToolbarLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import com.smartalk.gank.PanConfig;
import com.smartalk.gank.R;
import com.smartalk.gank.ShareElement;
import com.smartalk.gank.model.entity.Gank;
import com.smartalk.gank.model.entity.Meizi;
import com.smartalk.gank.presenter.GankPresenter;
import com.smartalk.gank.ui.adapter.GankAdapter;
import com.smartalk.gank.ui.base.ToolBarActivity;
import com.smartalk.gank.utils.AndroidUtil;
import com.smartalk.gank.utils.DateUtil;
import com.smartalk.gank.utils.ShareUtil;
import com.smartalk.gank.utils.TipsUtil;
import com.smartalk.gank.view.IGankView;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import butterknife.Bind;
import butterknife.OnClick;
import fr.castorflex.android.smoothprogressbar.SmoothProgressBar;
public class GankActivity extends ToolBarActivity<GankPresenter> implements IGankView {
private Meizi meizi;
private List<Gank> list;
private GankAdapter adapter;
private Calendar calendar;
@Bind(R.id.toolbar_layout)
CollapsingToolbarLayout toolbarLayout;
@Bind(R.id.fab)
FloatingActionButton fab;
@Bind(R.id.iv_head)
ImageView ivHead;
@Bind(R.id.rv_gank)
RecyclerView rvGank;
@Bind(R.id.progressbar)
SmoothProgressBar progressbar;
@OnClick(R.id.fab)
void fabClick() {
if (!AndroidUtil.isWIFIConnected(getApplicationContext())) {
TipsUtil.showTipWithAction(fab, "你使用的不是wifi网络,要继续吗?", "继续", new View.OnClickListener() {
@Override
public void onClick(View v) {
if (list.size() > 0 && list.get(0).type.equals("休息视频")) {
Intent intent = new Intent(GankActivity.this, WebVideoActivity.class);
intent.putExtra(PanConfig.GANK, list.get(0));
startActivity(intent);
} else {
TipsUtil.showSnackTip(fab, getString(R.string.something_wrong));
}
}
}, Snackbar.LENGTH_LONG);
} else {
if (list.size() > 0 && list.get(0).type.equals("休息视频")) {
Intent intent = new Intent(GankActivity.this, WebVideoActivity.class);
intent.putExtra(PanConfig.GANK, list.get(0));
startActivity(intent);
} else {
TipsUtil.showSnackTip(fab, getString(R.string.something_wrong));
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected int provideContentViewId() {
return R.layout.activity_gank;
}
@Override
protected void initPresenter() {
presenter = new GankPresenter(this, this);
presenter.init();
}
@Override
public void init() {
getIntentData();
initGankView();
}
private void initGankView() {
list = new ArrayList<>();
adapter = new GankAdapter(list, this);
rvGank.setLayoutManager(new LinearLayoutManager(this));
rvGank.setItemAnimator(new DefaultItemAnimator());
rvGank.setAdapter(adapter);
setTitle(DateUtil.toDateString(meizi.publishedAt));
ivHead.setImageDrawable(ShareElement.shareDrawable);
ViewCompat.setTransitionName(ivHead, PanConfig.TRANSLATE_GIRL_VIEW);
fab.setClickable(false);
}
private void getIntentData() {
meizi = (Meizi) getIntent().getSerializableExtra(PanConfig.MEIZI);
calendar = Calendar.getInstance();
calendar.setTime(meizi.publishedAt);
presenter.fetchGankData(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH));
}
@Override
public void showGankList(List<Gank> gankList) {
list.addAll(gankList);
adapter.notifyDataSetChanged();
fab.setClickable(true);
}
@Override
public void showProgressBar() {
progressbar.setVisibility(View.VISIBLE);
}
@Override
public void hideProgressBar() {
progressbar.setVisibility(View.GONE);
}
@Override
public void showErrorView() {
TipsUtil.showTipWithAction(fab, getString(R.string.load_failed), getString(R.string.retry), new View.OnClickListener() {
@Override
public void onClick(View v) {
presenter.fetchGankData(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH) + 1,
calendar.get(Calendar.DAY_OF_MONTH));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_gank, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_share:
ShareUtil.shareApp(this);
break;
}
return super.onOptionsItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
ShareElement.shareDrawable = null;
list = null;
presenter.release();
presenter = null;
}
}