package com.tobrun.example.swipetorefresh;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.Arrays;
import java.util.Vector;

/**
 * SwipeRefreshLayout with an EmptyView
 *
 * @author Tobrun
 */
public class MainActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener {

    private SwipeRefreshLayout mListViewContainer;
    private SwipeRefreshLayout mEmptyViewContainer;
    private ArrayAdapter<String> mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // SwipeRefreshLayout
        mListViewContainer = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout_listView);
        mEmptyViewContainer = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout_emptyView);

        // Configure SwipeRefreshLayout
        onCreateSwipeToRefresh(mListViewContainer);
        onCreateSwipeToRefresh(mEmptyViewContainer);

        // Adapter
        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1);
        mAdapter.addAll(new Vector(Arrays.asList(getResources().getStringArray(R.array.kings))));

        // ListView
        ListView listView = (ListView) findViewById(R.id.listView);
        listView.setEmptyView(mEmptyViewContainer);
        listView.setAdapter(mAdapter);

    }

    private void onCreateSwipeToRefresh(SwipeRefreshLayout refreshLayout) {

        refreshLayout.setOnRefreshListener(this);

        refreshLayout.setColorScheme(
                android.R.color.holo_blue_light,
                android.R.color.holo_orange_light,
                android.R.color.holo_green_light,
                android.R.color.holo_red_light);

    }

    @Override
    public void onRefresh() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                // Get the last king position
                int lastKingIndex = mAdapter.getCount() - 1;

                // If there is a king
                if(lastKingIndex > -1) {
                    // Remove him
                    mAdapter.remove(mAdapter.getItem(lastKingIndex));
                    mListViewContainer.setRefreshing(false);
                }else {
                    // No-one there, add new ones
                    mAdapter.addAll(new Vector(Arrays.asList(getResources().getStringArray(R.array.kings))));
                    mEmptyViewContainer.setRefreshing(false);
                }

                // Notify adapters about the kings
                mAdapter.notifyDataSetChanged();

            }
        }, 1000);
    }
}