package tw.com.flag.material_design_sample;

import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.appspot.matchpon.matchpon.Matchpon;
import com.appspot.matchpon.matchpon.model.ResourcesProductRepr;
import com.appspot.matchpon.matchpon.model.ResourcesSystemRepr;
import com.appspot.matchpon.matchpon.model.ResourcesSystemRepr2;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import tw.com.flag.material_design_sample.tabs.SlidingTabLayout;


public class MainActivity extends ActionBarActivity {


    private static final String LOG_TAG = "MainActivity";
    private RecyclerView recyclerView;
    private Toolbar toolbar;
    private ViewPager mPager;
    private SlidingTabLayout mTabs;
    public  CardAdapter cardAdapter;

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

        //**************  Tool Bar  **************//
        toolbar = (Toolbar) findViewById(R.id.app_bar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);

        //**************  Tabs  **************//
        //titles.add("asdf");
        //store.add("zxcv");
        //cardAdapter = new CardAdapter(getApplicationContext(),getData());
        mPager = (ViewPager) findViewById(R.id.pager);
        mPager.setAdapter(new MyPageAdapter(getSupportFragmentManager()));

        mTabs = (SlidingTabLayout) findViewById(R.id.tabs);
        mTabs.setDistributeEvenly(true);
        mTabs.setBackgroundColor(getResources().getColor(R.color.primaryColor));
        mTabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
            @Override
            public int getIndicatorColor(int position) {
                return getResources().getColor(R.color.accentColor);
            }
        });
        mTabs.setViewPager(mPager);


    }

    @Override
    public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
        return super.onCreateView(parent, name, context, attrs);
    }


    public static List<CardInformation> getData(){
        final List<CardInformation> data = new ArrayList<>();
        final ArrayList<String> titles = new ArrayList<>();
        final ArrayList<String> store = new ArrayList<>();
        final boolean[] running = {true};
        AsyncTask<Object, Void, ResourcesSystemRepr2> sendToServer =
                new AsyncTask<Object, Void, ResourcesSystemRepr2>() {
                    @Override
                    protected ResourcesSystemRepr2 doInBackground(Object... params) {
                        Matchpon apiServiceHandle = AppConstants.getApiServiceHandler();
                        try {
                            ResourcesSystemRepr2 Repr = new ResourcesSystemRepr2();

                            ResourcesSystemRepr2 result = apiServiceHandle.system().systemList(Repr).execute();
                            titles.addAll(result.getTitle());
                            store.addAll(result.getStore());
                            running[0] =false;
                        }catch (IOException e){
                            Log.e(LOG_TAG, "Exception during API call", e);
                        }
                        onPostExecute();
                        return null;
                    }

                    private void onPostExecute() {
                        for (int i = 0; i<titles.size(); i++)
                        {
                            CardInformation current = new CardInformation();
                            current.content = store.get(i);
                            current.title = titles.get(i);
                            data.add(current);
                            running[0]=false;
                        }
                    }
                };

        sendToServer.execute();
        while (running[0]);
        return data;
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        if (id == R.id.search) {
            startActivity(new Intent(this, SearchActivity.class));
        }

        return super.onOptionsItemSelected(item);
    }

    class MyPageAdapter extends FragmentPagerAdapter{
        String[] tabs;
        public MyPageAdapter(FragmentManager fm) {
            super(fm);
            tabs=getResources().getStringArray(R.array.tabs);
        }

        @Override
        public Fragment getItem(int position) {
            MyFragment myFragment = MyFragment.getInstance(position);
            return myFragment;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }

        @Override
        public int getCount() {
            return 7;
        }
    }

    public static class MyFragment extends Fragment{
        private TextView textView;
        public static MyFragment getInstance(int position){
            MyFragment myFragment = new MyFragment();
            Bundle args = new Bundle();
            args.putInt("position", position);
            myFragment.setArguments(args);
            return myFragment;
        }

        @Override
        public View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
            View layout = inflater.inflate(R.layout.card_blank, container, false);
            RecyclerView recyclerView;
            CardAdapter cardAdapter;
            List<CardInformation> Initil_data = new ArrayList<>();
            recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList1);
            cardAdapter = new CardAdapter(getActivity(), Initil_data);

            recyclerView.setAdapter(cardAdapter);
            recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
            cardAdapter.data.addAll(getData());
            cardAdapter.notifyDataSetChanged();
            return layout;
        }
    }
}
