ux improvements, changed colours, buttons etc

fix/get-all-stations-hangout
Mateusz Lubecki 2022-01-06 19:52:59 +01:00
rodzic 0b18117b9c
commit 63f4d64a4b
30 zmienionych plików z 282 dodań i 72 usunięć

Wyświetl plik

@ -4,11 +4,6 @@ import android.app.Application;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.StrictMode;
import android.os.strictmode.Violation;
import com.jakewharton.threetenabp.AndroidThreeTen;
@ -24,17 +19,12 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import cc.pogoda.mobile.meteosystem.activity.handler.MainActImageButtonFavouritesClickEvent;
import cc.pogoda.mobile.meteosystem.activity.updater.FavouritesStationDetailsUpdater;
import cc.pogoda.mobile.meteosystem.activity.updater.FavouritesStationSummaryUpdater;
import cc.pogoda.mobile.meteosystem.activity.view.AllStationsActRecyclerViewHolder;
import cc.pogoda.mobile.meteosystem.config.AppConfiguration;
import cc.pogoda.mobile.meteosystem.dao.AllStationsDao;
import cc.pogoda.mobile.meteosystem.file.ConfigurationFile;
import cc.pogoda.mobile.meteosystem.file.FavouritiesFile;
import cc.pogoda.mobile.meteosystem.file.FileNames;
import cc.pogoda.mobile.meteosystem.type.ParceableFavsCallReason;
import cc.pogoda.mobile.meteosystem.type.ParceableStationsList;
import cc.pogoda.mobile.meteosystem.type.WeatherStation;
import cc.pogoda.mobile.meteosystem.type.WeatherStationListEvent;
import cc.pogoda.mobile.meteosystem.type.web.Summary;

Wyświetl plik

@ -2,11 +2,15 @@ package cc.pogoda.mobile.meteosystem.activity;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.text.HtmlCompat;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@ -294,13 +298,29 @@ public class StationDetailsActivity extends AppCompatActivity {
}
stationName.setText(station.getDisplayedName());
if (station.getDisplayedName().length() > 18) {
stationName.setText(station.getDisplayedName());
stationName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 30.0f);
}
else {
stationName.setText(station.getDisplayedName());
stationName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 36.0f);
}
stationLocation.setText(station.getDisplayedLocation());
station_lat = station.getLat();
station_lon = station.getLon();
stationSponsorUrl.setText(station.getSponsorUrl());
// if (station.getSponsorUrl().length() > 32) {
// stationSponsorUrl.setClickable(true);
// stationSponsorUrl.setMovementMethod(LinkMovementMethod.getInstance());
// stationSponsorUrl.setText(Html.fromHtml("<a href=\"" + station.getSponsorUrl() +"\">" + getString(R.string.www_link) + "</a>\n", HtmlCompat.FROM_HTML_MODE_LEGACY));
// }
// else {
stationSponsorUrl.setText(station.getSponsorUrl());
// }
stationMoreInfo.setText(station.getMoreInfo());
StationBackgroundDownloader downloader = new StationBackgroundDownloader(station);
@ -312,33 +332,33 @@ public class StationDetailsActivity extends AppCompatActivity {
if (station_lat > 0.0f && station_lon > 0.0f) {
// europe
sb.append(station_lon);
sb.append(" N / ");
sb.append(station_lat);
sb.append(" N / ");
sb.append(station_lon);
sb.append(" E");
stationLatLon.setText(sb.toString());
} else if (station_lat < 0.0f && station_lon > 0.0f) {
// usa
sb.append(station_lon);
sb.append(station_lat);
sb.append(" N / ");
sb.append(-station_lat);
sb.append(-station_lon);
sb.append(" W");
stationLatLon.setText(sb.toString());
} else if (station_lat < 0.0f && station_lon < 0.0f) {
// brazil
sb.append(-station_lon);
sb.append(" S / ");
sb.append(-station_lat);
sb.append(" S / ");
sb.append(-station_lon);
sb.append(" W");
stationLatLon.setText(sb.toString());
} else if (station_lat > 0.0f && station_lat > 0.0f) {
// australia
sb.append(-station_lon);
sb.append(-station_lat);
sb.append(" S / ");
sb.append(station_lat);
sb.append(station_lon);
sb.append(" E");
stationLatLon.setText(sb.toString());

Wyświetl plik

@ -8,8 +8,10 @@ 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.StationDetailsValuesUpdater;
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;
@ -21,13 +23,19 @@ public class StationDetailsSummaryActivity extends AppCompatActivity {
WeatherStation station = null;
StationDetailsValuesUpdater updater = 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);
@ -69,12 +77,26 @@ public class StationDetailsSummaryActivity extends AppCompatActivity {
// create a handler to update station data in background
handler = new Handler();
// create a copy of updater class for this tation
updater = new StationDetailsValuesUpdater(elems, handler, station.getSystemName(), station);
// check if this station is on favourites list
boolean onFavs = main.checkIsOnFavsList(station.getSystemName());
if (handler != null && updater != null) {
handler.post(updater);
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);
}
}
}
@ -82,8 +104,8 @@ public class StationDetailsSummaryActivity extends AppCompatActivity {
@Override
protected void onStop() {
if (handler != null && updater != null) {
handler.removeCallbacks(updater);
if (handler != null && valuesOnActUpdater != null) {
handler.removeCallbacks(valuesOnActUpdater);
}
super.onStop();

Wyświetl plik

@ -5,8 +5,10 @@ import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import cc.pogoda.mobile.meteosystem.Main;
import cc.pogoda.mobile.meteosystem.R;
import cc.pogoda.mobile.meteosystem.activity.updater.StationDetailsValuesUpdater;
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.StationWindRoseActElements;
import cc.pogoda.mobile.meteosystem.type.WeatherStation;
@ -18,12 +20,16 @@ public class StationDetailsWindRoseActivity extends AppCompatActivity {
Summary summary;
StationDetailsValuesUpdater updater = null;
StationDetailsValuesOnActivityUpdater onActivityUpdater = null;
StationDetailsValuesOnActivityFromSummaryUpdater fromSummaryUpdater = null;
Handler handler = null;
StationWindRoseActElements elements;
Main main = null;
public StationDetailsWindRoseActivity() {
}
@ -35,6 +41,8 @@ public class StationDetailsWindRoseActivity extends AppCompatActivity {
station = (WeatherStation) getIntent().getSerializableExtra("station");
main = (Main)getApplication();
// find all elements in the xml layout file and set the references in a holding object
elements = new StationWindRoseActElements();
elements.windArrow = findViewById(R.id.imageViewWindRoseArrow);
@ -59,12 +67,26 @@ public class StationDetailsWindRoseActivity extends AppCompatActivity {
elements.updateFromSummary(summary, station.getAvailableParameters());
handler = new Handler();
updater = new StationDetailsValuesUpdater(elements, handler, station.getSystemName(), station);
if (handler != null && updater != null) {
// start the handler to update the wind rose activity in background
handler.post(updater);
// check if this station is on favourites list
boolean onFavs = main.checkIsOnFavsList(station.getSystemName());
if (onFavs) {
fromSummaryUpdater = new StationDetailsValuesOnActivityFromSummaryUpdater(elements, handler, station, main.getStationSystemNameToSummary());
if (handler != null && fromSummaryUpdater != null) {
handler.post(fromSummaryUpdater);
}
}
else {
onActivityUpdater = new StationDetailsValuesOnActivityUpdater(elements, handler, station.getSystemName(), station);
if (handler != null && onActivityUpdater != null) {
// start the handler to update the wind rose activity in background
handler.post(onActivityUpdater);
}
}
}
@ -72,8 +94,8 @@ public class StationDetailsWindRoseActivity extends AppCompatActivity {
protected void onStop() {
// remove and stop background callback
if (handler != null && updater != null) {
handler.removeCallbacks(updater);
if (handler != null && onActivityUpdater != null) {
handler.removeCallbacks(onActivityUpdater);
}
super.onStop();

Wyświetl plik

@ -22,7 +22,7 @@ import cc.pogoda.mobile.meteosystem.type.web.Summary;
* This class is used to update entries (TextView) on Favourites list using HashMap
* which is updated by {@link FavouritesStationSummaryUpdater}
*/
public class FavouritesStationDetailsUpdater implements Runnable {
public class FavouritesStationDetailsOnListUpdater implements Runnable {
/**
* Handler is used by Android to put a Runnable into MessageQueue handler by the Looper. This
@ -51,7 +51,7 @@ public class FavouritesStationDetailsUpdater implements Runnable {
*/
private boolean enabled;
public FavouritesStationDetailsUpdater(Handler _handler, HashMap<String, Summary> _station_system_name_to_summary) {
public FavouritesStationDetailsOnListUpdater(Handler _handler, HashMap<String, Summary> _station_system_name_to_summary) {
handler = _handler;
stationsToUpdate = new HashMap<>();
availableParametersDao = new AvailableParametersDao();
@ -92,7 +92,7 @@ public class FavouritesStationDetailsUpdater implements Runnable {
// query web service for station data
Summary summary = stationNameSummary.get(stationSystemName);
Logger.debug("[FavouritesStationDetailsUpdater][run][stationSystemName = " + stationSystemName +"][summary.last_timestamp = " + summary.last_timestamp +"]");
Logger.debug("[FavouritesStationDetailsOnListUpdater][run][stationSystemName = " + stationSystemName +"][summary.last_timestamp = " + summary.last_timestamp +"]");
// query for available parameters
AvailableParametersWeb params = availableParametersDao.getAvaliableParamsByStationName(stationSystemName);

Wyświetl plik

@ -0,0 +1,45 @@
package cc.pogoda.mobile.meteosystem.activity.updater;
import android.os.Handler;
import org.tinylog.Logger;
import java.util.HashMap;
import cc.pogoda.mobile.meteosystem.type.StationActivityElements;
import cc.pogoda.mobile.meteosystem.type.WeatherStation;
import cc.pogoda.mobile.meteosystem.type.web.Summary;
/**
* This class uses external HashMap updated by @link{{@link FavouritesStationSummaryUpdater}}
*/
public class StationDetailsValuesOnActivityFromSummaryUpdater implements Runnable {
HashMap<String, Summary> mapWithSummary;
StationActivityElements elementsToUpdate;
Handler handler;
WeatherStation stationToUpdate;
public StationDetailsValuesOnActivityFromSummaryUpdater(StationActivityElements elems, Handler h, WeatherStation station, HashMap<String, Summary> _map_with_summary_data) {
stationToUpdate = station;
handler = h;
elementsToUpdate = elems;
mapWithSummary = _map_with_summary_data;
}
@Override
public void run() {
if (mapWithSummary != null && elementsToUpdate != null) {
Logger.info("[StationDetailsValuesOnActivityFromSummaryUpdater][run][stationToUpdate.getSystemName() = " + stationToUpdate.getSystemName() +"]");
elementsToUpdate.updateFromSummary(mapWithSummary.get(stationToUpdate.getSystemName()), stationToUpdate.getAvailableParameters());
handler.postDelayed(this, 90000);
}
}
}

Wyświetl plik

@ -2,6 +2,8 @@ package cc.pogoda.mobile.meteosystem.activity.updater;
import android.os.Handler;
import org.tinylog.Logger;
import cc.pogoda.mobile.meteosystem.dao.SummaryDao;
import cc.pogoda.mobile.meteosystem.type.StationActivityElements;
import cc.pogoda.mobile.meteosystem.type.WeatherStation;
@ -13,7 +15,7 @@ import cc.pogoda.mobile.meteosystem.type.web.Summary;
* Class used to update the content of StationDetailsSummaryActivity and
* StationDetailsWindRoseActivity
*/
public class StationDetailsValuesUpdater implements Runnable {
public class StationDetailsValuesOnActivityUpdater implements Runnable {
StationActivityElements elements = null;
@ -27,7 +29,7 @@ public class StationDetailsValuesUpdater implements Runnable {
WeatherStation station;
public StationDetailsValuesUpdater(StationActivityElements elems, Handler h, String station_name, WeatherStation station) {
public StationDetailsValuesOnActivityUpdater(StationActivityElements elems, Handler h, String station_name, WeatherStation station) {
elements = elems;
handler = h;
this.station_name = station_name;
@ -47,6 +49,8 @@ public class StationDetailsValuesUpdater implements Runnable {
// get the current data from the Web Service
station_summary = dao.getStationSummary(station_name);
Logger.debug("[StationDetailsValuesOnActivityUpdater][run][station_name = " + station_name +"]");
// null check is done inside this call
elements.updateFromSummary(station_summary, station.getAvailableParameters());

Wyświetl plik

@ -3,6 +3,7 @@ package cc.pogoda.mobile.meteosystem.adapter;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -18,7 +19,7 @@ import java.util.List;
import cc.pogoda.mobile.meteosystem.Main;
import cc.pogoda.mobile.meteosystem.R;
import cc.pogoda.mobile.meteosystem.activity.handler.AllStationsActRecyclerViewButtonClickEvent;
import cc.pogoda.mobile.meteosystem.activity.updater.FavouritesStationDetailsUpdater;
import cc.pogoda.mobile.meteosystem.activity.updater.FavouritesStationDetailsOnListUpdater;
import cc.pogoda.mobile.meteosystem.activity.view.AllStationsActRecyclerViewHolder;
import cc.pogoda.mobile.meteosystem.dao.AvailableParametersDao;
import cc.pogoda.mobile.meteosystem.dao.SummaryDao;
@ -41,7 +42,7 @@ public class WeatherStationRecyclerViewAdapter extends RecyclerView.Adapter<AllS
* This updater takes data stored in the hashmap and then updates TextViews on View Holders on
* Favourites list
*/
private FavouritesStationDetailsUpdater favsUpdater = null;
private FavouritesStationDetailsOnListUpdater favsUpdater = null;
Handler handler = null;
@ -100,6 +101,13 @@ public class WeatherStationRecyclerViewAdapter extends RecyclerView.Adapter<AllS
textView.setText(station.getDisplayedName());
button.setText(R.string.select_station);
if (station.getDisplayedName().length() > 24) {
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16.0f);
}
else {
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20.0f);
}
button.setOnClickListener(new AllStationsActRecyclerViewButtonClickEvent(station, activity, reason));
}
@ -125,7 +133,7 @@ public class WeatherStationRecyclerViewAdapter extends RecyclerView.Adapter<AllS
}
handler = new Handler(Looper.getMainLooper());
favsUpdater = new FavouritesStationDetailsUpdater(handler, main.getStationSystemNameToSummary());
favsUpdater = new FavouritesStationDetailsOnListUpdater(handler, main.getStationSystemNameToSummary());
handler.postDelayed(favsUpdater, 100);
favsUpdater.setEnabled(true);

Wyświetl plik

@ -7,7 +7,9 @@ import android.widget.TextView;
import org.threeten.bp.Duration;
import org.threeten.bp.LocalDateTime;
import org.threeten.bp.ZonedDateTime;
import org.threeten.bp.format.DateTimeFormatter;
import org.threeten.bp.temporal.ChronoUnit;
import org.tinylog.Logger;
import cc.pogoda.mobile.meteosystem.R;
import cc.pogoda.mobile.meteosystem.type.web.QualityFactor;
@ -92,6 +94,8 @@ public class StationSummaryActElements implements StationActivityElements {
long minutes_difference = last_station_data.until(current, ChronoUnit.MINUTES);
Logger.debug("[StationSummaryActElements][updateFromSummary][last_station_data = " + last_station_data.format(DateTimeFormatter. ISO_LOCAL_DATE_TIME) +"]");
// calculate the duration between
Duration duration = Duration.between(last_station_data, current);

Wyświetl plik

@ -8,6 +8,8 @@ import android.widget.TextView;
import org.threeten.bp.Duration;
import org.threeten.bp.LocalDateTime;
import org.threeten.bp.ZonedDateTime;
import org.threeten.bp.format.DateTimeFormatter;
import org.tinylog.Logger;
import cc.pogoda.mobile.meteosystem.R;
import cc.pogoda.mobile.meteosystem.type.web.QualityFactor;
@ -85,6 +87,8 @@ public class StationWindRoseActElements implements StationActivityElements {
// current date and time (in current time zone set in system configuration)
LocalDateTime current = LocalDateTime.now();
Logger.debug("[StationWindRoseActElements][updateFromSummary][last_station_data = " + last_station_data.format(DateTimeFormatter. ISO_LOCAL_DATE_TIME) +"]");
// calculate the duration between
Duration duration = Duration.between(last_station_data, current);
@ -94,6 +98,8 @@ public class StationWindRoseActElements implements StationActivityElements {
}
}
Logger.debug("[StationWindRoseActElements][updateFromSummary][no_data = " + no_data +"][old_data = " + old_data+"]");
// create strings with wind speed, gusts etc
String average_speed = String.format("%s", data.getWindspeedStr(true));
String gusts_speed = String.format("%s", data.getWindgustsStr(true));

Wyświetl plik

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="10dp"
android:color="@color/dark_blue" />
<padding
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
<corners
android:bottomRightRadius="8dip"
android:bottomLeftRadius="8dip"
android:topRightRadius="8dip"
android:topLeftRadius="8dip" />
</shape>

Wyświetl plik

@ -24,6 +24,7 @@
android:id="@+id/station_button_fav"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textSize="10sp"

Wyświetl plik

@ -37,12 +37,16 @@
android:id="@+id/imageButtonFavourites"
android:layout_width="176dp"
android:layout_height="180dp"
android:backgroundTint="@color/blue"
android:background="@drawable/button_border"
android:baselineAlignBottom="false"
android:cropToPadding="false"
android:foregroundTintMode="screen"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -59,6 +63,9 @@
android:layout_marginBottom="18dp"
android:text="@string/fav_stations"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonFavourites"
app:layout_constraintEnd_toEndOf="@+id/imageButtonFavourites"
app:layout_constraintStart_toStartOf="@+id/imageButtonFavourites"
@ -83,7 +90,7 @@
android:id="@+id/imageButtonAllStations"
android:layout_width="175dp"
android:layout_height="183dp"
android:backgroundTint="@color/blue"
android:background="@drawable/button_border"
android:backgroundTintMode="src_in"
android:paddingLeft="100px"
android:paddingTop="100px"
@ -92,6 +99,7 @@
android:scaleType="fitXY"
android:scaleX="1"
android:scaleY="1"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -108,6 +116,9 @@
android:layout_marginBottom="18dp"
android:text="@string/all_stations"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonAllStations"
app:layout_constraintEnd_toEndOf="@+id/imageButtonAllStations"
app:layout_constraintHorizontal_bias="0.526"
@ -133,7 +144,7 @@
android:id="@+id/imageButtonExport"
android:layout_width="175dp"
android:layout_height="183dp"
android:backgroundTint="@color/blue"
android:background="@drawable/button_border"
android:backgroundTintMode="src_in"
android:paddingLeft="100px"
android:paddingTop="100px"
@ -142,6 +153,7 @@
android:scaleType="fitXY"
android:scaleX="1"
android:scaleY="1"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -158,6 +170,9 @@
android:layout_marginBottom="18dp"
android:text="@string/export_data"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonExport"
app:layout_constraintEnd_toEndOf="@+id/imageButtonExport"
app:layout_constraintHorizontal_bias="0.526"
@ -183,12 +198,13 @@
android:id="@+id/imageButtonSettings"
android:layout_width="176dp"
android:layout_height="180dp"
android:backgroundTint="@color/blue"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -205,6 +221,9 @@
android:layout_marginBottom="18dp"
android:text="@string/settings"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonSettings"
app:layout_constraintEnd_toEndOf="@+id/imageButtonSettings"
app:layout_constraintStart_toStartOf="@+id/imageButtonSettings"
@ -218,6 +237,7 @@
android:layout_marginTop="32dp"
android:fontFamily="@font/alegreya_sans_sc_medium"
android:text="@string/credits_1"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayoutExport" />
@ -231,6 +251,7 @@
android:fontFamily="@font/alegreya_sans_sc_medium"
android:text="@string/credits_2"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/textViewCredits3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@ -243,6 +264,7 @@
android:fontFamily="@font/alegreya_sans_sc_medium"
android:text="@string/credits_3"
android:textSize="18sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/textViewCredits4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

Wyświetl plik

@ -45,11 +45,15 @@
<TextView
android:id="@+id/textViewStationName"
android:layout_width="340dp"
android:layout_width="wrap_content"
android:layout_height="58dp"
android:layout_marginStart="16dp"
android:layout_marginTop="197dp"
android:layout_marginEnd="205dp"
android:layout_marginEnd="32dp"
android:shadowColor="@color/black"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="3"
android:text="TextView"
android:textColor="#000000"
android:textSize="36sp"
@ -65,15 +69,16 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayoutStationInfo"
android:layout_width="match_parent"
android:layout_height="60dp">
android:layout_height="68dp">
<TextView
android:id="@+id/textViewSponsorUrl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:autoLink="web"
android:autoLink="all"
android:fontFamily="@font/alegreya_sans_sc_medium"
android:linksClickable="true"
android:text="TextView"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
@ -96,7 +101,8 @@
android:text="TextView"
android:textAlignment="viewEnd"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textViewSponsorUrl" />
</androidx.constraintlayout.widget.ConstraintLayout>
@ -111,12 +117,13 @@
android:layout_height="180dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="16dp"
android:backgroundTint="#56039BE5"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.931"
@ -134,6 +141,9 @@
android:layout_marginEnd="57dp"
android:layout_marginBottom="19dp"
android:text="@string/wind_rose"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonWindRose"
app:layout_constraintEnd_toEndOf="@+id/imageButtonWindRose"
app:layout_constraintStart_toStartOf="@+id/imageButtonWindRose"
@ -145,12 +155,13 @@
android:layout_height="180dp"
android:layout_marginStart="16dp"
android:layout_marginTop="4dp"
android:backgroundTint="#56039BE5"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/imageButtonWindRose"
app:layout_constraintHorizontal_bias="0"
@ -169,6 +180,9 @@
android:layout_marginBottom="18dp"
android:text="@string/station_summary"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonFavourites"
app:layout_constraintEnd_toEndOf="@+id/imageButtonFavourites"
app:layout_constraintStart_toStartOf="@+id/imageButtonFavourites"
@ -180,12 +194,13 @@
android:layout_height="180dp"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:backgroundTint="#56039BE5"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/imageButtonPlotsTemperature"
app:layout_constraintHorizontal_bias="0"
@ -204,6 +219,9 @@
android:layout_marginBottom="15dp"
android:text="@string/title_activity_trend"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonTrend"
app:layout_constraintEnd_toEndOf="@+id/imageButtonTrend"
app:layout_constraintStart_toStartOf="@+id/imageButtonTrend"
@ -215,12 +233,13 @@
android:layout_height="180dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="16dp"
android:backgroundTint="#56039BE5"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.931"
@ -239,6 +258,9 @@
android:layout_marginBottom="15dp"
android:text="@string/temperature_plot"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@+id/imageButtonPlotsTemperature"
app:layout_constraintEnd_toEndOf="@+id/imageButtonPlotsTemperature"
app:layout_constraintStart_toStartOf="@+id/imageButtonPlotsTemperature"
@ -250,12 +272,13 @@
android:layout_height="180dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="16dp"
android:backgroundTint="#56039BE5"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.931"
@ -274,6 +297,9 @@
android:layout_marginBottom="15dp"
android:text="@string/humidity_plot"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/imageButtonPlotsHumidity"
app:layout_constraintEnd_toEndOf="@id/imageButtonPlotsHumidity"
app:layout_constraintStart_toStartOf="@id/imageButtonPlotsHumidity"
@ -287,12 +313,13 @@
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="16dp"
android:backgroundTint="#56039BE5"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitCenter"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0"
@ -311,6 +338,9 @@
android:layout_marginBottom="15dp"
android:text="@string/wind_speed_plots"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/imageButtonPlotsWindSpeed"
app:layout_constraintEnd_toEndOf="@id/imageButtonPlotsWindSpeed"
app:layout_constraintStart_toStartOf="@id/imageButtonPlotsWindSpeed"
@ -322,12 +352,13 @@
android:layout_height="180dp"
android:layout_marginStart="16dp"
android:layout_marginTop="10dp"
android:backgroundTint="#56039BE5"
android:background="@drawable/button_border"
android:paddingLeft="100px"
android:paddingTop="100px"
android:paddingRight="100px"
android:paddingBottom="100px"
android:scaleType="fitXY"
android:tint="@color/dark_blue"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/imageButtonPlotsHumidity"
app:layout_constraintHorizontal_bias="0"
@ -346,6 +377,9 @@
android:layout_marginBottom="15dp"
android:text="@string/wind_direction_plots"
android:textAlignment="center"
android:textAllCaps="true"
android:textColor="@color/dark_blue"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/imageButtonPlotsWindDirection"
app:layout_constraintEnd_toEndOf="@id/imageButtonPlotsWindDirection"
app:layout_constraintStart_toStartOf="@id/imageButtonPlotsWindDirection"

Wyświetl plik

@ -111,7 +111,7 @@
<string name="humidity_plot">Vlhkost vzduchu</string>
<string name="station_doesnt_measure">Stanice tento parametr neměří</string>
<string name="click_on_plot">Klikněte na bod na grafu</string>
<string name="click_on_plot">Klikněte na graf</string>
<string name="sort_alphabetical">Seřadit podle abecedy</string>
<string name="sort_in_adding_order">Seřadit podle pořadí přidávání</string>
@ -186,5 +186,6 @@
<string name="knots_long">kn (Uzly)</string>
<string name="export_decimation">Decimace eskportovaných údajov</string>
<string name="export_decimation_minutes">Minimální krok v minutách</string>
<string name="www_link">URL pro více informací</string>
</resources>

Wyświetl plik

@ -111,7 +111,7 @@
<string name="humidity_plot">Vlhkost vzduchu</string>
<string name="station_doesnt_measure">Stanice tento parametr neměří</string>
<string name="click_on_plot">Klikněte na bod na grafu</string>
<string name="click_on_plot">Klikněte na graf</string>
<string name="sort_alphabetical">Seřadit podle abecedy</string>
<string name="sort_in_adding_order">Seřadit podle pořadí přidávání</string>
@ -186,5 +186,6 @@
<string name="knots_long">kn (Uzly)</string>
<string name="export_decimation">Decimace eskportovaných údajov</string>
<string name="export_decimation_minutes">Minimální krok v minutách</string>
<string name="www_link">URL pro více informací</string>
</resources>

Wyświetl plik

@ -66,7 +66,7 @@
<string name="temperature_plot">temperatu</string>
<string name="humidity_plot">feichtigkeit</string>
<string name="station_doesnt_measure">Die Station misst keine Parameter </string>
<string name="click_on_plot">Druck auf den Punkt auf dem Diagramm </string>
<string name="click_on_plot">"Druck auf der Diagramm "</string>
<string name="sort_alphabetical">Alphabetisch sortieren </string>
<string name="sort_in_adding_order">Sortiere nach hinzufügen datum </string>
<string name="clear_from_non_existent">lösche nicht existierende Stationen </string>
@ -115,6 +115,7 @@
<string name="knots_long">kn (knoten)</string>
<string name="export_decimation">Dezimierung exportierten Dateien </string>
<string name="export_decimation_minutes">Minimaler Schritt in Minuten </string>
</resources>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -66,7 +66,7 @@
<string name="temperature_plot">temperatu</string>
<string name="humidity_plot">feichtigkeit</string>
<string name="station_doesnt_measure">Die Station misst keine Parameter </string>
<string name="click_on_plot">Druck auf den Punkt auf dem Diagramm </string>
<string name="click_on_plot">"Druck auf dem Diagramm "</string>
<string name="sort_alphabetical">Alphabetisch sortieren </string>
<string name="sort_in_adding_order">Sortiere nach hinzufügen datum </string>
<string name="clear_from_non_existent">lösche nicht existierende Stationen </string>
@ -115,6 +115,7 @@
<string name="knots_long">kn (knoten)</string>
<string name="export_decimation">Dezimierung exportierten Dateien </string>
<string name="export_decimation_minutes">Minimaler Schritt in Minuten </string>
</resources>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -66,7 +66,7 @@
<string name="temperature_plot">temperatu</string>
<string name="humidity_plot">feichtigkeit</string>
<string name="station_doesnt_measure">Die Station misst keine Parameter </string>
<string name="click_on_plot">Druck auf den Punkt auf dem Diagramm </string>
<string name="click_on_plot">"Druck auf der Diagramm "</string>
<string name="sort_alphabetical">Alphabetisch sortieren </string>
<string name="sort_in_adding_order">Sortiere nach hinzufügen datum </string>
<string name="clear_from_non_existent">lösche nicht existierende Stationen </string>
@ -115,6 +115,7 @@
<string name="knots_long">kn (knoten)</string>
<string name="export_decimation">Dezimierung exportierten Dateien </string>
<string name="export_decimation_minutes">Minimaler Schritt in Minuten </string>
</resources>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -65,7 +65,7 @@
<string name="temperature_plot">Temperature Plot</string>
<string name="humidity_plot">Humidity Plot</string>
<string name="station_doesnt_measure">The station doesn\'t measure this parameter</string>
<string name="click_on_plot">Click on point on the plot</string>
<string name="click_on_plot">Click on the plot</string>
<string name="sort_alphabetical">Sort in alphabetical order</string>
<string name="sort_in_adding_order">Sort in adding order</string>
<string name="clear_from_non_existent">Clear removed stations</string>
@ -113,4 +113,5 @@
<string name="knots_long">kn (knots)</string>
<string name="export_decimation">Export data decimation</string>
<string name="export_decimation_minutes">Minimum time resolution</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -113,4 +113,5 @@
<string name="knots_long">kn</string>
<string name="export_decimation">Export data decimation</string>
<string name="export_decimation_minutes">Minimum time resolution</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -113,4 +113,5 @@
<string name="knots_long">kn</string>
<string name="export_decimation">Export data decimation</string>
<string name="export_decimation_minutes">Minimum time resolution</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -65,7 +65,7 @@
<string name="temperature_plot">Temperatura</string>
<string name="humidity_plot">Wilgotność</string>
<string name="station_doesnt_measure">Stacja nie mierzy tego parametru</string>
<string name="click_on_plot">Kliknij na punkt na wykresie</string>
<string name="click_on_plot">Kliknij na wykres</string>
<string name="sort_alphabetical">Sortuj alfabetycznie</string>
<string name="sort_in_adding_order">Sortuj wg kolejności dodania</string>
<string name="clear_from_non_existent">Usuń nieistniejące stacje</string>
@ -113,4 +113,5 @@
<string name="knots_long">kn (węzły)</string>
<string name="export_decimation">Decymacja eskportowanych danych</string>
<string name="export_decimation_minutes">Minimalny krok w minutach</string>
<string name="www_link">Więcej informacji</string>
</resources>

Wyświetl plik

@ -65,7 +65,7 @@
<string name="temperature_plot">Temperatura</string>
<string name="humidity_plot">Wilgotność</string>
<string name="station_doesnt_measure">Stacja nie mierzy tego parametru</string>
<string name="click_on_plot">Kliknij na punkt na wykresie</string>
<string name="click_on_plot">Kliknij na wykres</string>
<string name="sort_alphabetical">Sortuj alfabetycznie</string>
<string name="sort_in_adding_order">Sortuj wg kolejności dodania</string>
<string name="clear_from_non_existent">Usuń nieistniejące stacje</string>
@ -113,4 +113,5 @@
<string name="knots_long">kn (węzły)</string>
<string name="export_decimation">Decymacja eskportowanych danych</string>
<string name="export_decimation_minutes">Minimalny krok w minutach</string>
<string name="www_link">Więcej informacji</string>
</resources>

Wyświetl plik

@ -113,4 +113,5 @@
<string name="knots_long">kn (узлы)</string>
<string name="export_decimation">Децимация экспортируемых данных</string>
<string name="export_decimation_minutes">Минимальный шаг в минутах</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -113,4 +113,5 @@
<string name="knots_long">kn (узлы)</string>
<string name="export_decimation">Децимация экспортируемых данных</string>
<string name="export_decimation_minutes">Минимальный шаг в минутах</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -113,4 +113,5 @@
<string name="knots_long">kn (узлы)</string>
<string name="export_decimation">Децимация экспортируемых данных</string>
<string name="export_decimation_minutes">Минимальный шаг в минутах</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -113,4 +113,5 @@
<string name="knots_long">kn (вузли)</string>
<string name="export_decimation">Децимація експортованих даних</string>
<string name="export_decimation_minutes">Мінімальний крок у хвилинах</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -113,4 +113,5 @@
<string name="knots_long">kn (вузли)</string>
<string name="export_decimation">Децимація експортованих даних</string>
<string name="export_decimation_minutes">Мінімальний крок у хвилинах</string>
<string name="www_link">URL to more information</string>
</resources>

Wyświetl plik

@ -71,7 +71,7 @@
<string name="station_doesnt_measure">The station doesn\'t measure this parameter</string>
<string name="meters_per_second" translatable="false">m/s</string>
<string name="knots" translatable="false">kn</string>
<string name="click_on_plot">Click on point on the plot</string>
<string name="click_on_plot">Click on the plot</string>
<string name="sort_alphabetical">Sort in alphabetical order</string>
<string name="sort_in_adding_order">Sort in adding order</string>
<string name="clear_from_non_existent">Clear removed stations</string>
@ -143,4 +143,5 @@
<item>Deutsch</item>
</string-array>
<string name="lang_change_req_restart" translatable="false">Changing language requires app restart after making a choose in this window.</string>
<string name="www_link">URL to more information</string>
</resources>