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() { } } }