package com.nourayn.quran.UI.Fragments;

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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;

import com.nourayn.quran.Adapter.BookmarksShowAdapter;
import com.nourayn.quran.Database.AppPreference;
import com.nourayn.quran.Database.DatabaseAccess;
import com.nourayn.quran.Models.Page;
import com.fekracomputers.quran.R;
import com.nourayn.quran.Models.Bookmark;
import com.nourayn.quran.UI.Activities.QuranPageReadActivity;
import com.nourayn.quran.Utilities.AppConstants;

import java.util.ArrayList;
import java.util.List;

/**
 * Bookmark fragment class
 */
public class BookmarkFragment extends Fragment implements AdapterView.OnItemClickListener {
    private List<Bookmark> bookmarks ;
    private BookmarksShowAdapter adapter ;
    private ListView bookmarkList ;


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_bookmark , container , false);
        init(rootView);
        return rootView ;
    }

    @Override
    public void onResume() {
        super.onResume();
        new loadBookmarks().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
    }

    /**
     * Init views in the fragment
     * @param rootView Fragment view
     */
    private void init(View rootView) {
        bookmarks = new ArrayList<Bookmark>();
        adapter = new BookmarksShowAdapter(getActivity() , bookmarks);
        bookmarkList = (ListView) rootView.findViewById(R.id.listView);
        bookmarkList.setEmptyView(rootView.findViewById(R.id.listView1));
        bookmarkList.setAdapter(adapter);
        bookmarkList.setOnItemClickListener(this);
        new loadBookmarks().execute();
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Bookmark bookmark = adapter.getItem(position);
        Intent QuranPage = new Intent(getContext() , QuranPageReadActivity.class);
        QuranPage.putExtra(AppConstants.General.PAGE_NUMBER , (604-bookmark.page));
        QuranPage.putExtra(AppConstants.General.BOOK_MARK, bookmark.bookmarkID);
        startActivity(QuranPage);
    }

    /**
     * Async task to load bookmarks
     */
    private class loadBookmarks extends AsyncTask<String,String,List<Bookmark>>{

        @Override
        protected List<Bookmark> doInBackground(String... params) {
            return new DatabaseAccess().getAllBookmarks();
        }

        @Override
        protected void onPostExecute(List<Bookmark> bookmarks) {
            int lastPageRead = AppPreference.getLastPageRead();
            Page page = new DatabaseAccess().getPageInfo(604-lastPageRead);

            if(AppPreference.getLastPageRead() != -1) {
                bookmarks.add(0, new Bookmark(-1, 0, getString(R.string.current_page), null));
                bookmarks.add(1, new Bookmark(-2, (604 - lastPageRead), "", page));
                bookmarks.add(2, new Bookmark(-1, 0, getString(R.string.sura_bookmark), null));
            }
            adapter.clear();
            adapter.addAll(bookmarks);
            adapter.notifyDataSetChanged();
        }
    }

}