package me.devsaki.hentoid.dirpicker.ops; import android.content.Context; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import me.devsaki.hentoid.dirpicker.adapter.DirAdapter; import me.devsaki.hentoid.dirpicker.events.DataSetChangedEvent; import me.devsaki.hentoid.dirpicker.events.OnMakeDirEvent; import me.devsaki.hentoid.dirpicker.events.UpdateDirTreeEvent; import me.devsaki.hentoid.dirpicker.model.DirTree; /** * Created by avluis on 06/12/2016. * Directory List Builder */ public class DirListBuilder { private final DirTree dirTree; private final EventBus bus; private RecyclerView.Adapter adapter; private ListDir listDir; private MakeDir makeDir; public DirListBuilder(Context cxt, EventBus bus, RecyclerView recyclerView) { this.bus = bus; this.dirTree = new DirTree(bus); initOps(); attachRecyclerView(cxt, recyclerView); } private void initOps() { listDir = new ListDir(dirTree, bus); makeDir = new MakeDir(dirTree, bus); } private void attachRecyclerView(Context cxt, RecyclerView recyclerView) { adapter = new DirAdapter(dirTree.dirList, bus); recyclerView.setLayoutManager(new LinearLayoutManager(cxt)); recyclerView.setHasFixedSize(true); recyclerView.setAdapter(adapter); } @Subscribe public void onUpdateDirTreeEvent(UpdateDirTreeEvent event) { listDir.process(event.rootDir); } @Subscribe public void onMakeDirEvent(OnMakeDirEvent event) { makeDir.process(event.root, event.dirName); } @Subscribe public void onDataSetChangedEvent(DataSetChangedEvent event) { adapter.notifyDataSetChanged(); } }