/*
* 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.core.view;
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;
import com.tweetlanes.android.core.App;
import com.tweetlanes.android.core.AppSettings;
import com.tweetlanes.android.core.Constant;
import com.tweetlanes.android.core.R;
import org.tweetalib.android.model.TwitterStatus;
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;
}
/*
*
*/
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 void fetchNewestTweets() {
}
/*
*
*/
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
*/
int getAsyncTaskPriorityOffset() {
if (isCurrentLaneIndex()) {
return 1;
}
return 0;
}
/*
*
*/
public interface ConfigureBundleListener {
public void addValues(Bundle args);
}
/*
*
*/
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;
}
/*
*
*/
void setInitialDownloadState(InitialDownloadState initialLoadState) {
mInitialDownloadState = initialLoadState;
getBaseLaneActivity().onLaneFragmentInitialDownloadStateChange(this);
}
/*
*
*/
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()) {
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 UpdateTweetCache(TwitterStatus status, boolean deleteStatus);
/*
*
*/
public abstract void onJumpToTop();
/*
* Clear in memory lists & data belonging to the fragment
*/
public abstract void clearLocalCache();
/*
*
*/
public abstract String getDataToCache();
/*
*
*/
String getCachedData() {
return getBaseLaneActivity().getCachedData(getLaneIndex());
}
/*
*
*/
void showToast(String message) {
FragmentActivity activity = getActivity();
if (activity != null && activity.getApplicationContext() != null) {
Toast.makeText(activity.getApplicationContext(), message,
Constant.DEFAULT_TOAST_DISPLAY_TIME).show();
}
}
}