package com.sharefaith.thesharefaithapp.adapters;

import android.app.ActivityManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.appideas.base.AiSTr;
import com.sharefaith.thesharefaithapp.R;
import com.sharefaith.thesharefaithapp.base.SFAppData;
import com.sharefaith.thesharefaithapp.base.SFApplication;
import com.sharefaith.thesharefaithapp.base.SFConfig;
import com.sharefaith.thesharefaithapp.base.SFUtil;
import com.sharefaith.thesharefaithapp.models.SFInboxItemModel;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by sfwebsitedev on 4/28/16.
 * Adapter for Inbox items
 */
public class SFInboxAdapter extends BaseAdapter
{
    private SFInboxItemModel[] mItems;
    private BitmapFactory.Options mOptions;
    private static LimitedMapCache<String, Bitmap> mBitMapCache;
    private SFApplication mApplication = SFApplication.getInstance();
    private SFConfig mConfig;
    private SFAppData mAppData = new SFAppData();

    /**
     * Constructor
     * @param items
     */
    public SFInboxAdapter( SFInboxItemModel[] items )
    {
        this.mItems = items;
        this.mOptions = SFUtil.commonImgOpt();
        this.mConfig = new SFConfig();

        int memMB = ((ActivityManager)mApplication.getSystemService( Context.ACTIVITY_SERVICE )).getMemoryClass();
        this.mBitMapCache = new LimitedMapCache<String,Bitmap> ( memMB/2 );
    }

    /**
     *
     * @param position
     * @param convertView
     * @param parent
     * @return
     */
    @Override
    public View getView( int position, View convertView, ViewGroup parent )
    {

        SFInboxAdapter.ViewHolder holder;
        if (convertView == null)
        {
            LayoutInflater vi = LayoutInflater.from( mApplication );
            convertView = vi.inflate( R.layout.sf_inbox_item, null );
            //Yikes, the cost of inflation
            holder = new ViewHolder();

            //holder = null;
            //holder.imageView = (ImageView) convertView.findViewById( R.id.imageView );
            holder.titleView = (TextView) convertView.findViewById( R.id.title_textView );
            holder.excerptView = (TextView) convertView.findViewById( R.id.content_textView );
            holder.dateView = (TextView) convertView.findViewById( R.id.date_textView ); //big box
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        SFInboxItemModel currentObject = this.mItems[position];

        //File currentThumbnail = new File( this.mConfig.mCustomAssetPath + currentObject.mThumbnailPath );

        if( currentObject != null ) //Set the variable things, title and excerpt, even if not creating.
        {

            String showTitle = SFUtil.stripHtml( currentObject.mContent ).toString();
            if( holder.titleView != null )
            {
                holder.titleView.setText( showTitle );
            }
            //Must consider cases where the view was recycled.
            if( holder.dateView != null )
            {
                int date = AiSTr.denullifyInt(  currentObject.mPostDate );
                Date convertDate = new Date( date * 1000L );
                SimpleDateFormat dateFormat = new SimpleDateFormat("MMM\nd");
                holder.dateView.setOnClickListener( null );
                holder.dateView.setText( dateFormat.format( convertDate ).toUpperCase() );
            }

            if( holder.excerptView != null )
            {
                if (currentObject.mObjectType.equals( "simple" ))
                {
                        holder.excerptView.setText( currentObject.mPayload );
                }
                else if (currentObject.mObjectType.equals( "post" ))
                {
                    holder.excerptView.setText( SFUtil.stripHtml( mAppData.getPostContentByExternalId(  currentObject.mExternalId ) ) );
                }
                else if (currentObject.mObjectType.equals( "sermon" ))
                {
                    holder.excerptView.setText( SFUtil.stripHtml( mAppData.getSermonDescriptionByExternalId( currentObject.mExternalId ) ) );
                }
            }

            convertView.setTag(holder);
        }

        return convertView;
    }

    /**
     *  Actions to get number of items in arraylist
     *
     * @since		20120106
     */

    @Override
    public int getCount()
    {
        return this.mItems.length;
    }

    /**
     *  Actions to get position of item
     *
     * @since		20120106
     */

    @Override
    public Object getItem( int position )
    {
        return null;
    }

    /**
     *  Actions to get item ID
     *
     * @since		20120106
     */
    @Override
    public long getItemId( int id )
    {
        return 0;
    }

    /**
     * clear the BitMap cache
     */
    public void clearCache()
    {
        this.mBitMapCache.clear();
    }

    public class ViewHolder
    {
        public ImageView imageView;
        public TextView dateView;
        public TextView titleView;
        public TextView excerptView;
        public int position;
    }

}
