package com.jdroid.android.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.preference.PreferenceFragment;
import android.support.annotation.NonNull;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.jdroid.android.R;
import com.jdroid.android.activity.AbstractFragmentActivity;
import com.jdroid.android.activity.ActivityIf;
import com.jdroid.android.application.AppModule;
import com.jdroid.android.exception.ErrorDisplayer;
import com.jdroid.android.fragment.FragmentHelper.UseCaseTrigger;
import com.jdroid.android.loading.FragmentLoading;
import com.jdroid.android.usecase.AbstractUseCase;
import com.jdroid.android.usecase.listener.UseCaseListener;
import com.jdroid.java.exception.AbstractException;
public abstract class AbstractPreferenceFragment extends PreferenceFragment implements FragmentIf {
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.jdroid_base_fragment, container, false);
ViewGroup viewGroup = (ViewGroup)view.findViewById(R.id.content);
viewGroup.addView(super.onCreateView(inflater, null, savedInstanceState));
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Toolbar appBar = findView(R.id.appBar);
if (appBar != null && getActivityIf() instanceof AbstractFragmentActivity) {
((AbstractFragmentActivity)getActivityIf()).setSupportActionBar(appBar);
appBar.setNavigationIcon(R.drawable.jdroid_ic_arrow_back_white_24dp);
}
}
@Override
public void onNewIntent(Intent intent) {
// Do nothing
}
protected FragmentIf getFragmentIf() {
return (FragmentIf)this.getActivity();
}
@Override
public Boolean shouldRetainInstance() {
return true;
}
@Override
public Integer getBaseFragmentLayout() {
return null;
}
@Override
public Integer getContentFragmentLayout() {
return null;
}
@Override
@SuppressWarnings("unchecked")
public <V extends View> V findView(int id) {
return (V)getView().findViewById(id);
}
@Override
@SuppressWarnings("unchecked")
public <V extends View> V findViewOnActivity(int id) {
return (V)getActivity().findViewById(id);
}
@Override
public View inflate(int resource) {
return getFragmentIf().inflate(resource);
}
@Override
public void onStartUseCase() {
getFragmentIf().onStartUseCase();
}
@Override
public void onUpdateUseCase() {
getFragmentIf().onUpdateUseCase();
}
@Override
public void onFinishFailedUseCase(AbstractException abstractException) {
getFragmentIf().onFinishFailedUseCase(abstractException);
}
@Override
public ErrorDisplayer createErrorDisplayer(AbstractException abstractException) {
return getFragmentIf().createErrorDisplayer(abstractException);
}
@Override
public void onFinishUseCase() {
getFragmentIf().onFinishUseCase();
}
@Override
public void executeOnUIThread(Runnable runnable) {
FragmentIf fragmentIf = getFragmentIf();
if (fragmentIf != null) {
fragmentIf.executeOnUIThread(runnable);
}
}
@Override
public <E> E getExtra(String key) {
return getFragmentIf().getExtra(key);
}
@Override
public <E> E getArgument(String key) {
return getArgument(key, null);
}
@Override
@SuppressWarnings("unchecked")
public <E> E getArgument(String key, E defaultValue) {
Bundle arguments = getArguments();
E value = (arguments != null) && arguments.containsKey(key) ? (E)arguments.get(key) : null;
return value != null ? value : defaultValue;
}
@Override
public void registerUseCase(AbstractUseCase useCase, UseCaseListener listener) {
getFragmentIf().registerUseCase(useCase, listener);
}
@Override
public void registerUseCase(AbstractUseCase useCase, UseCaseListener listener,
UseCaseTrigger useCaseTrigger) {
getFragmentIf().registerUseCase(useCase, listener, useCaseTrigger);
}
@Override
public void unregisterUseCase(AbstractUseCase useCase, UseCaseListener listener) {
getFragmentIf().unregisterUseCase(useCase, listener);
}
@Override
public void executeUseCase(AbstractUseCase useCase) {
getFragmentIf().executeUseCase(useCase);
}
@Override
public void executeUseCase(AbstractUseCase useCase, Long delaySeconds) {
getFragmentIf().executeUseCase(useCase, delaySeconds);
}
@Override
public ActivityIf getActivityIf() {
return (ActivityIf)getActivity();
}
@Override
public void beforeInitAppBar(Toolbar appBar) {
}
@Override
public void afterInitAppBar(Toolbar appBar) {
}
@Override
public Toolbar getAppBar() {
return null;
}
// //////////////////////// Analytics //////////////////////// //
/**
* @see com.jdroid.android.fragment.FragmentIf#shouldTrackOnFragmentStart()
*/
@Override
public Boolean shouldTrackOnFragmentStart() {
return false;
}
@NonNull
@Override
public String getScreenViewName() {
return AbstractPreferenceFragment.class.getSimpleName();
}
// //////////////////////// Loading //////////////////////// //
@Override
public void showLoading() {
}
@Override
public void dismissLoading() {
}
@Override
public FragmentLoading getDefaultLoading() {
return null;
}
@Override
public void setLoading(FragmentLoading loading) {
}
@Override
public Integer getMenuResourceId() {
return null;
}
@Override
public Boolean isSecondaryFragment() {
return null;
}
@Override
public FragmentDelegate createFragmentDelegate(AppModule appModule) {
return null;
}
@Override
public FragmentDelegate getFragmentDelegate(AppModule appModule) {
return null;
}
@Override
public Boolean onBackPressedHandled() {
return false;
}
}