package com.cocosw.framework.sample;

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.GridView;

import com.cocosw.framework.core.PagedListFragment;
import com.cocosw.framework.core.Presenter;
import com.cocosw.framework.sample.network.Bean;
import com.cocosw.framework.sample.network.DataSource;
import com.cocosw.framework.sample.utils.PaletteManager;
import com.cocosw.framework.view.adapter.CocoAdapter;
import com.cocosw.framework.view.adapter.TypeListAdapter;
import com.squareup.picasso.Picasso;

import java.util.List;

import javax.inject.Inject;

import butterknife.BindView;

/**
 * Project: ToDoList
 * Created by LiaoKai(soarcn) on 2014/6/9.
 */
public class PopularList extends PagedListFragment<Bean.Shot, GridView> implements SwipeRefreshLayout.OnRefreshListener {

    @BindView(R.id.swipe)
    SwipeRefreshLayout mSwipe;

    @Inject
    Picasso picasso;

    @Inject
    PaletteManager pm;
    @BindView(R.id.toolbar_actionbar)
    Toolbar mToolbarActionbar;

    @Override
    public List<Bean.Shot> pendingPagedData(long index, int time, int size, Bundle args) throws Exception {
        return DataSource.getShots(index < 0 ? 1 : time + 1).shots;
    }

    @Override
    protected CocoAdapter<Bean.Shot> createEndlessAdapter(List<Bean.Shot> items) throws Exception {
        return new ShotAdapter(context, items);
    }

    @Override
    protected void init(View view, Bundle bundle) throws Exception {
        inject();
        mSwipe.setColorSchemeResources(R.color.themecolor, R.color.primarycolor, R.color.themecolor, R.color.primarycolor);
        mSwipe.setOnRefreshListener(this);
        mSwipe.setProgressViewOffset(false, getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material), getResources().getDimensionPixelOffset(R.dimen.abc_action_bar_default_height_material) * 2);
        getActionBarActivity().setSupportActionBar(mToolbarActionbar);
    }

    @Override
    public int layoutId() {
        return R.layout.ui_popular;
    }

    @Override
    protected void onItemClick(Bean.Shot item, int pos, long id, View view) {
        new Presenter(this).target(ShotDetail.class).extra(new Intent().putExtra(ShotDetail.TODO, item)).openForResult(1);
    }

    @Override
    public void onRefresh() {
        refresh();
    }

    @Override
    public void onLoaderDone(List<Bean.Shot> items) {
        mSwipe.setRefreshing(false);

    }


    @Override
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
        MenuItem item = menu.add(Menu.NONE, 2, Menu.NONE, R.string.about);
        MenuItemCompat.setShowAsAction(item, MenuItem.SHOW_AS_ACTION_NEVER);
        super.onCreateOptionsMenu(menu, inflater);
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case 2:
                q.alert(R.string.about, R.string.about);
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    class ShotAdapter extends TypeListAdapter<Bean.Shot> {

        public ShotAdapter(Context context, List<Bean.Shot> items) {
            super(context, R.layout.li_shot, items);
        }

        @Override
        protected int[] getChildViewIds() {
            return new int[]{R.id.title, R.id.image, R.id.subtitle, R.id.info_box};
        }

        @Override
        protected void update(int position, Bean.Shot item) {
            textView(0).setText(item.title);
            textView(2).setText(item.player.name);
            pm.updatePalette(picasso, item.image_teaser_url, imageView(1), textView(0), view(3));
        }
    }
}