2020-12-16 19:26:53 +00:00
|
|
|
package cc.pogoda.mobile.pogodacc.type;
|
|
|
|
|
2020-12-28 22:56:50 +00:00
|
|
|
import android.app.Activity;
|
2021-01-02 13:30:46 +00:00
|
|
|
import android.content.res.ColorStateList;
|
|
|
|
import android.graphics.Color;
|
2020-12-16 19:26:53 +00:00
|
|
|
import android.widget.TextView;
|
|
|
|
|
2021-01-02 13:30:46 +00:00
|
|
|
import androidx.core.graphics.ColorUtils;
|
|
|
|
|
|
|
|
import org.threeten.bp.Duration;
|
|
|
|
import org.threeten.bp.LocalDateTime;
|
|
|
|
import org.threeten.bp.OffsetDateTime;
|
|
|
|
import org.threeten.bp.ZoneOffset;
|
|
|
|
import org.threeten.bp.ZonedDateTime;
|
|
|
|
import org.threeten.bp.temporal.ChronoUnit;
|
|
|
|
|
|
|
|
import cc.pogoda.mobile.pogodacc.R;
|
2021-01-07 07:27:55 +00:00
|
|
|
import cc.pogoda.mobile.pogodacc.type.web.QualityFactor;
|
2020-12-16 19:26:53 +00:00
|
|
|
import cc.pogoda.mobile.pogodacc.type.web.Summary;
|
|
|
|
|
2020-12-28 22:56:50 +00:00
|
|
|
public class StationSummaryActElements implements StationActivityElements {
|
2020-12-16 19:26:53 +00:00
|
|
|
|
|
|
|
public TextView title = null;
|
|
|
|
public TextView wind_speed_val = null;
|
|
|
|
public TextView wind_gusts_val = null;
|
|
|
|
public TextView wind_dir_val = null;
|
|
|
|
public TextView temperature_val = null;
|
|
|
|
public TextView qnh_val = null;
|
|
|
|
public TextView humidity_val = null;
|
2021-01-02 13:30:46 +00:00
|
|
|
public TextView message = null;
|
2020-12-16 19:26:53 +00:00
|
|
|
|
|
|
|
private String convertDegreesToDir(int directionInDegrees) {
|
|
|
|
String out = null;
|
|
|
|
|
|
|
|
if (directionInDegrees <= 11 || directionInDegrees >= 349)
|
|
|
|
out = "N";
|
|
|
|
else if (directionInDegrees <= 34 && directionInDegrees > 11)
|
|
|
|
out = "N NE";
|
|
|
|
else if (directionInDegrees <= 56 && directionInDegrees > 34)
|
|
|
|
out = "NE";
|
|
|
|
else if (directionInDegrees <= 79 && directionInDegrees > 56)
|
|
|
|
out = "E NE";
|
|
|
|
else if (directionInDegrees <= 101 && directionInDegrees > 79)
|
|
|
|
out = "E";
|
|
|
|
else if (directionInDegrees <= 124 && directionInDegrees > 101)
|
|
|
|
out = "E SE";
|
|
|
|
else if (directionInDegrees <= 146 && directionInDegrees > 124)
|
|
|
|
out = "SE";
|
|
|
|
else if (directionInDegrees <= 169 && directionInDegrees > 146)
|
|
|
|
out = "S SE";
|
|
|
|
else if (directionInDegrees <= 191 && directionInDegrees > 169)
|
|
|
|
out = "S";
|
|
|
|
else if (directionInDegrees <= 214 && directionInDegrees > 191)
|
|
|
|
out = "S SW";
|
|
|
|
else if (directionInDegrees <= 236 && directionInDegrees > 214)
|
|
|
|
out = "SW";
|
|
|
|
else if (directionInDegrees <= 259 && directionInDegrees > 236)
|
|
|
|
out = "W SW";
|
|
|
|
else if (directionInDegrees <= 281 && directionInDegrees > 259)
|
|
|
|
out = "W";
|
|
|
|
else if (directionInDegrees <= 304 && directionInDegrees > 281)
|
|
|
|
out = "W NW";
|
|
|
|
else if (directionInDegrees <= 327 && directionInDegrees > 304)
|
|
|
|
out = "NW";
|
|
|
|
else if (directionInDegrees <= 349 && directionInDegrees > 327)
|
|
|
|
out = "N NW";
|
|
|
|
else;
|
|
|
|
|
|
|
|
|
|
|
|
return out;
|
|
|
|
}
|
|
|
|
|
2021-01-07 07:27:55 +00:00
|
|
|
public void updateFromSummary(Summary s, AvailableParameters enabledForStation) {
|
2021-01-02 13:30:46 +00:00
|
|
|
|
|
|
|
if (s == null) {
|
|
|
|
// print a message in case there is no data available
|
|
|
|
wind_speed_val.setText(R.string.no_data);
|
|
|
|
wind_gusts_val.setText(R.string.no_data);
|
|
|
|
wind_dir_val.setText(R.string.no_data);
|
|
|
|
temperature_val.setText(R.string.no_data);
|
|
|
|
qnh_val.setText(R.string.no_data);
|
|
|
|
humidity_val.setText(R.string.no_data);
|
|
|
|
|
|
|
|
message.setText(R.string.no_data);
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
// convert the integer with unix epoch timestamp to LocalDateTime in current system Time Zone
|
|
|
|
LocalDateTime last_station_data = LocalDateTime.ofEpochSecond(s.last_timestamp, 0, ZonedDateTime.now().getOffset());
|
|
|
|
|
|
|
|
// current date and time (in current time zone set in system configuration)
|
|
|
|
LocalDateTime current = LocalDateTime.now();
|
|
|
|
|
|
|
|
long minutes_difference = last_station_data.until(current, ChronoUnit.MINUTES);
|
|
|
|
|
|
|
|
// calculate the duration between
|
|
|
|
Duration duration = Duration.between(last_station_data, current);
|
|
|
|
|
|
|
|
// check how old the last data from stations is
|
|
|
|
if (duration.getSeconds() < 7200) {
|
|
|
|
// if the last data is no older than 2 hours
|
|
|
|
message.setText(R.string.auto_refresh);
|
|
|
|
message.setTextColor(Color.BLACK);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
message.setText(R.string.station_not_comm);
|
|
|
|
message.setTextColor(Color.argb(0xFF, 0xFF, 0x0, 0x0));
|
|
|
|
}
|
|
|
|
|
2021-01-07 07:27:55 +00:00
|
|
|
if (!s.wind_qf_native.equals(QualityFactor.NOT_AVALIABLE) && enabledForStation.windSpeed) {
|
2021-11-25 20:56:02 +00:00
|
|
|
wind_speed_val.setText(String.format("%s", s.getWindspeedStr()));
|
2021-01-07 07:27:55 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
wind_speed_val.setText("---");
|
|
|
|
}
|
2020-12-16 19:26:53 +00:00
|
|
|
|
2021-01-07 07:27:55 +00:00
|
|
|
if (!s.wind_qf_native.equals(QualityFactor.NOT_AVALIABLE) && enabledForStation.windGusts) {
|
2021-11-25 20:56:02 +00:00
|
|
|
wind_gusts_val.setText(String.format("%s", s.getWindgustsStr()));
|
2021-01-07 07:27:55 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
wind_gusts_val.setText("---");
|
|
|
|
}
|
2020-12-16 19:26:53 +00:00
|
|
|
|
2021-01-07 07:27:55 +00:00
|
|
|
if (!s.wind_qf_native.equals(QualityFactor.NOT_AVALIABLE) && enabledForStation.windDirection) {
|
2020-12-16 19:26:53 +00:00
|
|
|
wind_dir_val.setText(this.convertDegreesToDir(s.direction));
|
2021-01-07 07:27:55 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
wind_dir_val.setText("---");
|
|
|
|
}
|
2020-12-16 19:26:53 +00:00
|
|
|
|
2021-01-07 07:27:55 +00:00
|
|
|
if (!s.temperature_qf_native.equals(QualityFactor.NOT_AVALIABLE)) {
|
2020-12-16 19:26:53 +00:00
|
|
|
temperature_val.setText(String.format("%.1f °C", s.avg_temperature));
|
2021-01-07 07:27:55 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
temperature_val.setText("---");
|
|
|
|
}
|
2021-01-12 21:43:14 +00:00
|
|
|
// TODO
|
2021-01-07 07:27:55 +00:00
|
|
|
if (!s.qnh_qf_native.equals(QualityFactor.NOT_AVALIABLE) && enabledForStation.qnh) {
|
2020-12-16 19:26:53 +00:00
|
|
|
qnh_val.setText(String.format("%d hPa", s.qnh));
|
2021-01-07 07:27:55 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
qnh_val.setText("---");
|
|
|
|
}
|
2020-12-16 19:26:53 +00:00
|
|
|
|
2021-01-07 07:27:55 +00:00
|
|
|
if (!s.humidity_qf_native.equals(QualityFactor.NOT_AVALIABLE) && enabledForStation.humidity) {
|
2021-01-02 13:30:46 +00:00
|
|
|
humidity_val.setText(String.format("%d %%", s.humidity));
|
2021-01-07 07:27:55 +00:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
humidity_val.setText("---");
|
|
|
|
}
|
2020-12-16 19:26:53 +00:00
|
|
|
}
|
|
|
|
|
2020-12-28 22:56:50 +00:00
|
|
|
@Override
|
|
|
|
public void setActivity(Activity act) {
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2020-12-16 19:26:53 +00:00
|
|
|
}
|