package com.nilhcem.bblfr.ui.baggers.list;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import com.nilhcem.bblfr.BBLApplication;
import com.nilhcem.bblfr.R;
import com.nilhcem.bblfr.core.ui.recyclerview.EmptyRecyclerView;
import com.nilhcem.bblfr.core.utils.NetworkUtils;
import com.nilhcem.bblfr.model.baggers.City;
import com.nilhcem.bblfr.ui.baggers.list.filter.TagsListActivity;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import icepick.State;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import timber.log.Timber;
public class BaggersListActivity extends TagsListActivity {
@BindView(R.id.baggers_list_recycler_view) EmptyRecyclerView mRecyclerView;
@BindView(R.id.loading_view) View mEmptyView;
private BaggersListAdapter mAdapter;
@State ArrayList<BaggersListEntry> mBaggers;
public static Intent createLaunchIntent(@NonNull Context context, City city) {
return TagsListActivity.createLaunchIntent(context, BaggersListActivity.class, city);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BBLApplication.get(this).component().inject(this);
setContentView(R.layout.baggers_list_activity);
setToolbarTitle(0);
initRecyclerView();
if (savedInstanceState != null) {
updateAdapter(mBaggers);
}
}
@Override
public void onFilterChanged(List<String> selectedTags) {
super.onFilterChanged(selectedTags);
unsubscribe(mSubscription);
mAdapter.updateItems(null);
mRecyclerView.scrollToPosition(0);
mSubscription = mBaggersService.getBaggers(this, mCity.id, selectedTags)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(baggersListEntries -> {
Timber.d("Baggers loaded from DB");
mBaggers = new ArrayList<>(baggersListEntries);
updateAdapter(baggersListEntries);
});
}
@Override
protected void resetFilter() {
super.resetFilter();
setToolbarTitle(0);
}
void setToolbarTitle(int nbBaggers) {
String title;
if (!mIsFiltered) {
title = getString(R.string.baggers_list_toolbar_title, mCity.name);
} else if (nbBaggers == 1) {
title = getString(R.string.baggers_list_toolbar_title_one, mCity.name);
} else {
title = getString(R.string.baggers_list_toolbar_title_many, nbBaggers, mCity.name);
}
getSupportActionBar().setTitle(title);
}
private void initRecyclerView() {
mRecyclerView.setEmptyView(mEmptyView);
if (getResources().getBoolean(R.bool.baggers_list_staggered_mode)) {
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
} else {
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
}
mAdapter = new BaggersListAdapter();
mRecyclerView.setAdapter(mAdapter);
}
private void updateAdapter(List<BaggersListEntry> baggers) {
if (baggers != null && !baggers.isEmpty()) {
mAdapter.updateItems(baggers, NetworkUtils.getAbsoluteUrl(mCity.picture), true);
setToolbarTitle(baggers.size());
}
}
}