com.tweetlanes.android.view.BaseLaneFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.tweetlanes.android.view.BaseLaneFragment.java

Source

/*
 * Copyright (C) 2013 Chris Lacy
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.tweetlanes.android.view;

import com.tweetlanes.android.App;
import com.tweetlanes.android.AppSettings;
import com.tweetlanes.android.Constant;
import com.tweetlanes.android.R;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.Toast;

public abstract class BaseLaneFragment extends Fragment {

    public enum InitialDownloadState {
        NOT_SET, WAITING, DOWNLOADING, DOWNLOADED,
    };

    private InitialDownloadState mInitialDownloadState = InitialDownloadState.NOT_SET;

    private BaseLaneActivity mBaseLaneActivity;

    /*
     * 
     */
    BaseLaneActivity getBaseLaneActivity() {
        if (getActivity() == null) {
            return mBaseLaneActivity;
        }

        mBaseLaneActivity = (BaseLaneActivity) getActivity();
        return mBaseLaneActivity;
    }

    /*
     * 
     */
    public App getApp() {
        FragmentActivity fragmentActivity = getActivity();
        if (fragmentActivity != null) {
            return (App) fragmentActivity.getApplication();
        } else {
            BaseLaneActivity baseLaneActivity = getBaseLaneActivity();
            if (baseLaneActivity != null) {
                return baseLaneActivity.getApp();
            }
        }

        return null;
    }

    private static final String KEY_LANE_INDEX = "blf_laneIndex";
    private static final String KEY_IDENTIFIER = "blf_identifier";

    /*
     * 
     */
    public boolean configureOptionsMenu(MenuInflater inflater, Menu menu) {
        return false;
    }

    /*
     * 
     */
    public int getLaneIndex() {
        return getArguments().getInt(KEY_LANE_INDEX);
    }

    /*
     * 
     */
    public boolean isCurrentLaneIndex() {
        BaseLaneActivity baseLaneActivity = getBaseLaneActivity();
        if (baseLaneActivity != null) {
            if (baseLaneActivity.getCurrentLaneIndex() == getLaneIndex()) {
                return true;
            }
        }

        return false;
    }

    /*
     * If we are the current lane, add this offset to async requests so they get dealt with first
     */
    public int getAsyncTaskPriorityOffset() {

        if (isCurrentLaneIndex()) {
            return 1;
        }

        return 0;
    }

    /*
     * 
     */
    public String getIdentifier() {
        return getArguments().getString(KEY_IDENTIFIER);
    }

    /*
     * 
     */
    public interface ConfigureBundleListener {

        public void addValues(Bundle args);
    }

    /*
     * 
     */
    public void configureBaseLaneFragment(int laneIndex, String identifier,
            ConfigureBundleListener configureBundleListener) {

        Bundle arguments = new Bundle();

        arguments.putString(KEY_IDENTIFIER, identifier);
        arguments.putInt(KEY_LANE_INDEX, laneIndex);

        if (configureBundleListener != null) {
            configureBundleListener.addValues(arguments);
        }

        setArguments(arguments);
    }

    /*
     * 
     */
    public InitialDownloadState getInitialDownloadState() {
        return mInitialDownloadState;
    }

    /*
     * 
     */
    public void setInitialDownloadState(InitialDownloadState initialLoadState) {
        mInitialDownloadState = initialLoadState;
        getBaseLaneActivity().onLaneFragmentInitialDownloadStateChange(this);
    }

    /*
     * 
     */
    public void configureLaneWidth(View resultView) {

        RelativeLayout laneContent = (RelativeLayout) resultView.findViewById(R.id.lane_content);
        if (laneContent != null) {
            RelativeLayout tweetFeedLoaded = (RelativeLayout) resultView.findViewById(R.id.tweet_feed_loaded);
            if (tweetFeedLoaded != null) {
                if (AppSettings.get().showTabletMargin() == false) {
                    android.view.ViewGroup.LayoutParams parentParams = tweetFeedLoaded.getLayoutParams();
                    laneContent.setLayoutParams(
                            new RelativeLayout.LayoutParams(parentParams.width, parentParams.height));
                } else {
                    /*
                    final Resources res = getResources();
                      float width = res.getDimension(R.dimen.lane_content_width);
                      RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams((int) width, RelativeLayout.LayoutParams.FILL_PARENT);
                      params.addRule(RelativeLayout.CENTER_IN_PARENT, -1);
                      laneContent.setLayoutParams(params);
                      */
                }
            }
        }
    }

    /*
     * 
     */
    public abstract void triggerInitialDownload();

    /*
     * 
     */
    public abstract void onJumpToTop();

    /*
     * Clear in memory lists & data belonging to the fragment
     */
    public abstract void clearLocalCache();

    /*
     * 
     */
    public abstract String getDataToCache();

    /*
     * 
     */
    public String getCachedData() {
        return getBaseLaneActivity().getCachedData(getLaneIndex());
    }

    /*
     * 
     */
    protected void showToast(String message) {
        FragmentActivity activity = getActivity();
        if (activity != null && activity.getApplicationContext() != null) {
            Toast.makeText(activity.getApplicationContext(), message, Constant.DEFAULT_TOAST_DISPLAY_TIME).show();
        }
    }
}