package com.naman14.timber.fragments;
import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import com.afollestad.appthemeengine.ATE;
import com.naman14.timber.R;
import com.naman14.timber.adapters.FolderAdapter;
import com.naman14.timber.utils.PreferencesUtility;
import com.naman14.timber.widgets.DividerItemDecoration;
import com.naman14.timber.widgets.FastScroller;
import java.io.File;
/**
* Created by nv95 on 10.11.16.
*/
public class FoldersFragment extends Fragment {
private FolderAdapter mAdapter;
private RecyclerView recyclerView;
private FastScroller fastScroller;
private ProgressBar mProgressBar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(
R.layout.fragment_folders, container, false);
Toolbar toolbar = (Toolbar) rootView.findViewById(R.id.toolbar);
((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);
ActionBar ab = ((AppCompatActivity) getActivity()).getSupportActionBar();
ab.setHomeAsUpIndicator(R.drawable.ic_menu);
ab.setDisplayHomeAsUpEnabled(true);
ab.setTitle(R.string.folders);
recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview);
fastScroller = (FastScroller) rootView.findViewById(R.id.fastscroller);
mProgressBar = (ProgressBar) rootView.findViewById(R.id.progressBar);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
if (getActivity() != null)
new loadFolders().execute("");
return rootView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
boolean dark = PreferenceManager.getDefaultSharedPreferences(getActivity()).getBoolean("dark_theme", false);
if (dark) {
ATE.apply(this, "dark_theme");
} else {
ATE.apply(this, "light_theme");
}
if (mAdapter != null) {
mAdapter.applyTheme(dark);
mAdapter.notifyDataSetChanged();
}
}
private void setItemDecoration() {
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
}
@Override
public void onActivityCreated(final Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//setHasOptionsMenu(true);
}
public void updateTheme() {
Context context = getActivity();
if (context != null) {
boolean dark = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("dark_theme", false);
mAdapter.applyTheme(dark);
}
}
private class loadFolders extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
Activity activity = getActivity();
if (activity != null) {
mAdapter = new FolderAdapter(activity, new File(PreferencesUtility.getInstance(activity).getLastFolder()));
updateTheme();
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
recyclerView.setAdapter(mAdapter);
//to add spacing between cards
if (getActivity() != null) {
setItemDecoration();
}
mAdapter.notifyDataSetChanged();
mProgressBar.setVisibility(View.GONE);
fastScroller.setVisibility(View.VISIBLE);
fastScroller.setRecyclerView(recyclerView);
}
@Override
protected void onPreExecute() {
}
}
}