package com.tutsplus.palette;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.graphics.Palette;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;


public class MainActivity extends AppCompatActivity {

    private ListView mListView;
    private SwatchAdapter mAdapter;

    private TextView mVibrantTextView;
    private TextView mLightVibrantTextView;
    private TextView mDarkVibrantTextView;
    private TextView mMutedTextView;
    private TextView mLightMutedTextView;
    private TextView mDarkMutedTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView( R.layout.activity_main );

        initViews();

        mAdapter = new SwatchAdapter( this );
        mListView.setAdapter( mAdapter );

        Bitmap bitmap = BitmapFactory.decodeResource( getResources(), R.drawable.union_station );
        Palette.from( bitmap ).generate( new Palette.PaletteAsyncListener() {
            @Override
            public void onGenerated( Palette palette ) {

                setViewSwatch( mVibrantTextView, palette.getVibrantSwatch() );
                setViewSwatch( mLightVibrantTextView, palette.getLightVibrantSwatch() );
                setViewSwatch( mDarkVibrantTextView, palette.getDarkVibrantSwatch() );
                setViewSwatch( mMutedTextView, palette.getMutedSwatch() );
                setViewSwatch( mLightMutedTextView, palette.getLightMutedSwatch() );
                setViewSwatch( mDarkMutedTextView, palette.getDarkMutedSwatch() );

                for( Palette.Swatch swatch : palette.getSwatches() ) {
                    mAdapter.add(swatch);
                }

                mAdapter.sortSwatches();
                mAdapter.notifyDataSetChanged();


            }
        });
    }

    public void setViewSwatch( TextView view, Palette.Swatch swatch ) {
        if( swatch != null ) {
            view.setTextColor( swatch.getTitleTextColor() );
            view.setBackgroundColor( swatch.getRgb() );
            view.setVisibility( View.VISIBLE );
        } else {
            view.setVisibility( View.GONE );
        }
    }

    private void initViews() {
        mListView = (ListView) findViewById( R.id.list );
        mVibrantTextView = (TextView) findViewById( R.id.vibrant );
        mLightVibrantTextView = (TextView) findViewById( R.id.light_vibrant );
        mDarkVibrantTextView = (TextView) findViewById( R.id.dark_vibrant );
        mMutedTextView = (TextView) findViewById( R.id.muted );
        mLightMutedTextView = (TextView) findViewById( R.id.light_muted );
        mDarkMutedTextView = (TextView) findViewById( R.id.dark_muted );
    }
}