/* * Firetweet - Twitter client for Android * * Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.getlantern.firetweet.fragment.support; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.IntentFilter; import android.content.SharedPreferences; import android.graphics.Rect; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.view.View; import org.getlantern.firetweet.Constants; import org.getlantern.firetweet.activity.support.BaseActionBarActivity; import org.getlantern.firetweet.app.FiretweetApplication; import org.getlantern.firetweet.fragment.iface.IBaseFragment; import org.getlantern.firetweet.fragment.iface.SupportFragmentCallback; import org.getlantern.firetweet.util.AsyncTwitterWrapper; import org.getlantern.firetweet.util.MultiSelectManager; import org.getlantern.firetweet.util.ReadStateManager; public class BaseSupportFragment extends Fragment implements IBaseFragment, Constants { @Override public final void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); onBaseViewCreated(view, savedInstanceState); requestFitSystemWindows(); } public BaseSupportFragment() { } public FiretweetApplication getApplication() { final Activity activity = getActivity(); if (activity != null) return (FiretweetApplication) activity.getApplication(); return null; } public ContentResolver getContentResolver() { final Activity activity = getActivity(); if (activity != null) return activity.getContentResolver(); return null; } public MultiSelectManager getMultiSelectManager() { return getApplication() != null ? getApplication().getMultiSelectManager() : null; } public SharedPreferences getSharedPreferences(final String name, final int mode) { final Activity activity = getActivity(); if (activity != null) return activity.getSharedPreferences(name, mode); return null; } public Object getSystemService(final String name) { final Activity activity = getActivity(); if (activity != null) return activity.getSystemService(name); return null; } public AsyncTwitterWrapper getTwitterWrapper() { return getApplication() != null ? getApplication().getTwitterWrapper() : null; } public ReadStateManager getReadStateManager() { return getApplication() != null ? getApplication().getReadStateManager() : null; } public void invalidateOptionsMenu() { final FragmentActivity activity = getActivity(); if (activity == null) return; activity.supportInvalidateOptionsMenu(); } public void registerReceiver(final BroadcastReceiver receiver, final IntentFilter filter) { final Activity activity = getActivity(); if (activity == null) return; activity.registerReceiver(receiver, filter); } public void setProgressBarIndeterminateVisibility(final boolean visible) { final Activity activity = getActivity(); if (activity instanceof BaseActionBarActivity) { ((BaseActionBarActivity) activity).setProgressBarIndeterminateVisibility(visible); } } public void unregisterReceiver(final BroadcastReceiver receiver) { final Activity activity = getActivity(); if (activity == null) return; activity.unregisterReceiver(receiver); } @Override public Bundle getExtraConfiguration() { return null; } @Override public int getTabPosition() { final Bundle args = getArguments(); return args != null ? args.getInt(EXTRA_TAB_POSITION, -1) : -1; } @Override public void requestFitSystemWindows() { final Activity activity = getActivity(); final Fragment parentFragment = getParentFragment(); final SystemWindowsInsetsCallback callback; if (parentFragment instanceof SystemWindowsInsetsCallback) { callback = (SystemWindowsInsetsCallback) parentFragment; } else if (activity instanceof SystemWindowsInsetsCallback) { callback = (SystemWindowsInsetsCallback) activity; } else { return; } final Rect insets = new Rect(); if (callback.getSystemWindowsInsets(insets)) { fitSystemWindows(insets); } } @Override public void onBaseViewCreated(View view, Bundle savedInstanceState) { } @Override public void onDetach() { super.onDetach(); final Fragment fragment = getParentFragment(); if (fragment instanceof SupportFragmentCallback) { ((SupportFragmentCallback) fragment).onDetachFragment(this); } final Activity activity = getActivity(); if (activity instanceof SupportFragmentCallback) { ((SupportFragmentCallback) activity).onDetachFragment(this); } } @Override public void setUserVisibleHint(final boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); final Activity activity = getActivity(); final Fragment fragment = getParentFragment(); if (fragment instanceof SupportFragmentCallback) { ((SupportFragmentCallback) fragment).onSetUserVisibleHint(this, isVisibleToUser); } if (activity instanceof SupportFragmentCallback) { ((SupportFragmentCallback) activity).onSetUserVisibleHint(this, isVisibleToUser); } } protected void fitSystemWindows(Rect insets) { } }