package it.fdev.unisaconnect;
import it.fdev.unisaconnect.data.WeatherData.ActualCondition;
import it.fdev.utils.DrawableManager;
import it.fdev.utils.DrawableManager.DrawableManagerListener;
import it.fdev.utils.MyDateUtils;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class FragmentWeatherActualCondition extends Fragment {
private Activity mActivity;
private DrawableManager dm;
private ActualCondition condition;
private TextView lastUpdateTimeView;
private ImageView lastUpdateIconView;
private ImageView webcamView;
private ImageView iconView;
private TextView tempView;
private TextView descriptionView;
private TextView humidityView;
private TextView windView;
private TextView windDirView;
private Drawable downloadedWebcamImg = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View mainView;
if (condition == null) {
mainView = null;
} else {
dm = new DrawableManager();
mainView = (View) inflater.inflate(R.layout.weather_actual, container, false);
}
return mainView;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
webcamView = (ImageView) view.findViewById(R.id.webcam_image);
if (condition != null) {
if (downloadedWebcamImg == null) {
// If the image has not been downloaded yet, download and cache
dm.fetchDrawableOnThread(condition.getStationWebcamOptimizedUrl(), new DrawableManagerListener() {
@Override
public void onLoadingComplete(Drawable image) {
downloadedWebcamImg = image;
webcamView.setImageDrawable(downloadedWebcamImg);
}
@Override
public void onLoadingError() {
}
});
} else {
// The image was already downloaded
webcamView.setImageDrawable(downloadedWebcamImg);
}
}
}
public void setActivity(Activity activity) {
this.mActivity = activity;
}
public void setCondition(ActualCondition condition) {
this.condition = condition;
}
public void setViews(TextView lastUpdateTimeView, ImageView lastUpdateIconView, ImageView iconView, TextView tempView, TextView descriptionView, TextView humidityView, TextView windView, TextView windDirView) {
this.lastUpdateTimeView = lastUpdateTimeView;
this.lastUpdateIconView = lastUpdateIconView;
this.iconView = iconView;
this.tempView = tempView;
this.descriptionView = descriptionView;
this.humidityView = humidityView;
this.windView = windView;
this.windDirView = windDirView;
}
public void showCondition() {
if (condition == null) {
return;
}
long millis = Long.parseLong(condition.getLastUpdateMilliseconds());
String updateText = MyDateUtils.getLastUpdateString(mActivity, millis, false);
if (updateText == null || updateText.isEmpty()) {
lastUpdateTimeView.setVisibility(View.GONE);
lastUpdateIconView.setVisibility(View.GONE);
} else {
lastUpdateTimeView.setVisibility(View.VISIBLE);
lastUpdateIconView.setVisibility(View.VISIBLE);
lastUpdateTimeView.setText(updateText);
}
Drawable icon = condition.getIconDrawable(mActivity);
if (icon == null) {
iconView.setVisibility(View.INVISIBLE);
} else {
iconView.setVisibility(View.VISIBLE);
iconView.setImageDrawable(icon);
}
if(condition.getTemp() == null || condition.getTemp().isEmpty()) {
tempView.setVisibility(View.GONE);
} else {
tempView.setVisibility(View.VISIBLE);
tempView.setText(condition.getTemp());
}
if(condition.getDescription() == null || condition.getDescription().isEmpty()) {
descriptionView.setVisibility(View.GONE);
} else {
descriptionView.setVisibility(View.VISIBLE);
descriptionView.setText(condition.getDescription());
}
if(condition.getHumidity() == null || condition.getHumidity().isEmpty()) {
humidityView.setVisibility(View.GONE);
} else {
humidityView.setVisibility(View.VISIBLE);
humidityView.setText(condition.getHumidity());
}
if(condition.getWindSpeed() == null || condition.getWindSpeed().isEmpty()) {
windView.setVisibility(View.GONE);
} else {
windView.setVisibility(View.VISIBLE);
windView.setText(condition.getWindSpeed());
}
if(condition.getWindDir() == null || condition.getWindDir().isEmpty()) {
windDirView.setVisibility(View.GONE);
} else {
windDirView.setVisibility(View.VISIBLE);
windDirView.setText(condition.getWindDir());
}
}
public void showCondition1() {
if (condition != null && lastUpdateTimeView != null && iconView != null && tempView != null && descriptionView != null && humidityView != null && windView != null) {
long millis = Long.parseLong(condition.getLastUpdateMilliseconds());
String updateText = MyDateUtils.getLastUpdateString(mActivity, millis, false);
if (updateText != null && !updateText.isEmpty()) {
lastUpdateTimeView.setText(updateText);
lastUpdateTimeView.setVisibility(View.VISIBLE);
lastUpdateIconView.setVisibility(View.VISIBLE);
} else {
lastUpdateTimeView.setVisibility(View.GONE);
lastUpdateIconView.setVisibility(View.GONE);
}
iconView.setImageDrawable(condition.getIconDrawable(mActivity));
tempView.setText(condition.getTemp());
descriptionView.setText(condition.getDescription());
humidityView.setText(condition.getHumidity());
windView.setText(condition.getWindSpeed());
windDirView.setText(condition.getWindDir());
}
}
}