MeteoSystem/app/src/main/java/cc/pogoda/mobile/meteosystem/activity/StationDetailsSummaryActivi...

113 wiersze
3.8 KiB
Java

package cc.pogoda.mobile.meteosystem.activity;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.util.TypedValue;
import cc.pogoda.mobile.meteosystem.Main;
import cc.pogoda.mobile.meteosystem.R;
import cc.pogoda.mobile.meteosystem.activity.updater.StationDetailsValuesOnActivityFromSummaryUpdater;
import cc.pogoda.mobile.meteosystem.activity.updater.StationDetailsValuesOnActivityUpdater;
import cc.pogoda.mobile.meteosystem.dao.SummaryDao;
import cc.pogoda.mobile.meteosystem.type.StationSummaryActElements;
import cc.pogoda.mobile.meteosystem.type.WeatherStation;
import cc.pogoda.mobile.meteosystem.type.web.Summary;
public class StationDetailsSummaryActivity extends AppCompatActivity {
StationSummaryActElements elems = null;
WeatherStation station = null;
StationDetailsValuesOnActivityUpdater valuesOnActUpdater = null;
StationDetailsValuesOnActivityFromSummaryUpdater valuesFromSummaryUpdater = null;
Handler handler = null;
Main main = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
main = (Main)getApplication();
elems = new StationSummaryActElements();
int color = ContextCompat.getColor(this, android.R.color.secondary_text_light);
Summary summary = null;
SummaryDao summary_dao = new SummaryDao();
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_station_details_summary);
station = (WeatherStation) getIntent().getSerializableExtra("station");
elems.title = findViewById(R.id.textViewStationDetailsSummaryTitle);
elems.title.setText(station.getDisplayedName());
if (station.getDisplayedName().length() < 18) {
elems.title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 38);
}
else {
elems.title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30);
}
elems.wind_dir_val = findViewById(R.id.textViewWinddirValue);
elems.wind_gusts_val = findViewById(R.id.textViewWindGustsValue);
elems.wind_speed_val = findViewById(R.id.textViewWindSpeedValue);
elems.temperature_val = findViewById(R.id.textViewTemperatureValue);
elems.qnh_val = findViewById(R.id.textViewQnhVaue);
elems.humidity_val = findViewById(R.id.textViewHumidityValue);
elems.message = findViewById(R.id.textViewSummaryMessage);
elems.goodColor = color;
elems.badColor = Color.RED;
// get the summary data for this station
summary = summary_dao.getStationSummary(station.getSystemName());
elems.updateFromSummary(summary, station.getAvailableParameters());
// create a handler to update station data in background
handler = new Handler();
// check if this station is on favourites list
boolean onFavs = main.checkIsOnFavsList(station.getSystemName());
if (onFavs) {
valuesFromSummaryUpdater = new StationDetailsValuesOnActivityFromSummaryUpdater(elems, handler, station, main.getStationSystemNameToSummary());
if (handler != null && valuesFromSummaryUpdater != null) {
handler.post(valuesFromSummaryUpdater);
}
}
else {
// create a copy of updater class for this station
valuesOnActUpdater = new StationDetailsValuesOnActivityUpdater(elems, handler, station.getSystemName(), station);
if (handler != null && valuesOnActUpdater != null) {
handler.post(valuesOnActUpdater);
}
}
}
@Override
protected void onStop() {
if (handler != null && valuesOnActUpdater != null) {
handler.removeCallbacks(valuesOnActUpdater);
}
super.onStop();
}
}