package org.devconmyanmar.apps.devcon.ui;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import butterknife.Bind;
import butterknife.ButterKnife;
import com.squareup.otto.Subscribe;
import java.util.ArrayList;
import java.util.List;
import org.devconmyanmar.apps.devcon.R;
import org.devconmyanmar.apps.devcon.adapter.LighteningTalkAdapter;
import org.devconmyanmar.apps.devcon.event.SyncSuccessEvent;
import org.devconmyanmar.apps.devcon.model.Talk;
import org.devconmyanmar.apps.devcon.utils.AnalyticsManager;
import org.devconmyanmar.apps.devcon.utils.ConnectionUtils;
/**
* Created by yemyatthu on 11/15/14.
*/
public class LighteningTalkDaysFragment extends BaseFragment {
private static final String FIRST_DAY = "2015-11-15";
private static final String SECOND_DAY = "2015-11-16";
private final static String SCREEN_LABEL = "Explore First Day";
private List<Talk> mTalks = new ArrayList<Talk>();
private List<Talk> mLighteningTalks = new ArrayList<Talk>();
private SwipeRefreshLayout exploreSwipeRefreshView;
private LighteningTalkAdapter lighteningTalkAdapter;
@Bind(R.id.explore_list_view) RecyclerView talkRecyclerView;
@Bind(R.id.empty_text) TextView emptyTextView;
public LighteningTalkDaysFragment() {
}
public static LighteningTalkDaysFragment getInstance(int position) {
Bundle bundle = new Bundle();
bundle.putInt("Day", position);
LighteningTalkDaysFragment lighteningTalkDaysFragment = new LighteningTalkDaysFragment();
lighteningTalkDaysFragment.setArguments(bundle);
return lighteningTalkDaysFragment;
}
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
lighteningTalkAdapter = new LighteningTalkAdapter(mContext);
setHasOptionsMenu(true);
AnalyticsManager.sendScreenView(SCREEN_LABEL);
}
@Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_explore_list, container, false);
ButterKnife.bind(this, rootView);
exploreSwipeRefreshView =
(SwipeRefreshLayout) rootView.findViewById(R.id.explore_swipe_refresh_view);
exploreSwipeRefreshView.setColorSchemeResources(R.color.color1, R.color.color2, R.color.color3,
R.color.color4);
exploreSwipeRefreshView.setRefreshing(false);
exploreSwipeRefreshView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override public void onRefresh() {
if (ConnectionUtils.isOnline(mContext)) {
syncSchedules(exploreSwipeRefreshView);
} else {
hideRefreshProgress(exploreSwipeRefreshView);
Toast.makeText(mContext, R.string.no_connection_cannot_connect, Toast.LENGTH_SHORT)
.show();
}
}
});
if (getArguments().getInt("Day") == 1) {
mTalks = talkDao.getTalkByDay(FIRST_DAY);
} else if (getArguments().getInt("Day") == 2) {
mTalks = talkDao.getTalkByDay(SECOND_DAY);
}
for (Talk talk : mTalks) {
if (talk.getTalk_type() == 3) {
mLighteningTalks.add(talk);
}
}
if (mLighteningTalks.size() > 0) {
talkRecyclerView.setVisibility(View.VISIBLE);
emptyTextView.setVisibility(View.GONE);
lighteningTalkAdapter.replaceWith(mLighteningTalks);
talkRecyclerView.setAdapter(lighteningTalkAdapter);
} else {
setEmptyView();
}
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(mContext);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
talkRecyclerView.setLayoutManager(linearLayoutManager);
return rootView;
}
@Override public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_refresh:
if (ConnectionUtils.isOnline(mContext)) {
syncSchedules(exploreSwipeRefreshView);
} else {
hideRefreshProgress(exploreSwipeRefreshView);
Toast.makeText(mContext, R.string.no_connection_cannot_connect, Toast.LENGTH_SHORT)
.show();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Subscribe public void syncSuccess(SyncSuccessEvent event) {
if (getArguments().getInt("Day") == 1) {
mTalks = talkDao.getTalkByDay(FIRST_DAY);
} else if (getArguments().getInt("Day") == 2) {
mTalks = talkDao.getTalkByDay(SECOND_DAY);
}
for (Talk talk : mTalks) {
if (talk.getTalk_type() == 3) {
mLighteningTalks.add(talk);
}
}
if (mLighteningTalks.size() > 0) {
talkRecyclerView.setVisibility(View.VISIBLE);
emptyTextView.setVisibility(View.GONE);
lighteningTalkAdapter.replaceWith(mLighteningTalks);
talkRecyclerView.setAdapter(lighteningTalkAdapter);
} else {
setEmptyView();
}
}
private void setEmptyView() {
talkRecyclerView.setVisibility(View.GONE);
emptyTextView.setVisibility(View.VISIBLE);
emptyTextView.setText(getString(R.string.error_no_lightening_talk_try_again));
emptyTextView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
syncSchedules(exploreSwipeRefreshView);
}
});
}
}