open dialog to edit plant after adding location

update some strings
remove some stuff
This commit is contained in:
woheller69 2023-04-02 09:23:39 +02:00
parent 0ab3efd819
commit 54cd149896
6 changed files with 76 additions and 91 deletions

View file

@ -10,9 +10,10 @@ solarCast forecasts the output of your solar power plant
## License
This app - like the original app Privacy Friendly Weather - is licensed under the GPLv3.
This app is licensed under the GPLv3.
The app also uses:
The app uses:
- Parts from Privacy Friendly Weather (https://github.com/SecUSo/privacy-friendly-weather) which is licensed under the GPLv3
- The weather data service is provided by [Open-Meteo](https://open-meteo.com/), under <a href='http://creativecommons.org/licenses/by/4.0/'>Attribution 4.0 International (CC BY 4.0)</a>
- Icons from [Google Material Design Icons](https://material.io/resources/icons/) licensed under <a href='http://www.apache.org/licenses/LICENSE-2.0'>Apache License Version 2.0</a>
- Material Components for Android (https://github.com/material-components/material-components-android) which is licensed under <a href='https://github.com/material-components/material-components-android/blob/master/LICENSE'>Apache License Version 2.0</a>

View file

@ -73,67 +73,8 @@ public class ManageLocationsActivity extends NavigationActivity {
new RecyclerItemClickListener(getBaseContext(), recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
AlertDialog.Builder alert = new AlertDialog.Builder(context);
LayoutInflater inflater = getLayoutInflater();
View dialogView = inflater.inflate(R.layout.dialog_edit_location, null);
alert.setTitle(getString(R.string.edit_location_title));
alert.setView(dialogView);
EditText editLatitude = (EditText) dialogView.findViewById(R.id.EditLocation_Lat);
EditText editLongitude = (EditText) dialogView.findViewById(R.id.EditLocation_Lon);
EditText editCity = (EditText) dialogView.findViewById(R.id.EditLocation_Name);
EditText editAzimuth = (EditText) dialogView.findViewById(R.id.EditLocation_Azimuth);
EditText editElevation = (EditText) dialogView.findViewById(R.id.EditLocation_Elevation);
EditText editCellsMaxPower = (EditText) dialogView.findViewById(R.id.EditLocation_Cell_Max_Power);
EditText editCellsArea = (EditText) dialogView.findViewById(R.id.EditLocation_Cells_Area);
EditText editCellsEfficiency = (EditText) dialogView.findViewById(R.id.EditLocation_Cell_Efficiency);
EditText editDiffuseEfficiency = (EditText) dialogView.findViewById(R.id.EditLocation_Diffuse_Efficiency);
EditText editConverterPowerLimit = (EditText) dialogView.findViewById(R.id.EditLocation_Converter_Power_Limit);
EditText editConverterEfficiency = (EditText) dialogView.findViewById(R.id.EditLocation_Converter_Efficiency);
editCity.setText(adapter.getCitytoWatch(position).getCityName());
editLatitude.setText(Float.toString(adapter.getCitytoWatch(position).getLatitude()));
editLongitude.setText(Float.toString(adapter.getCitytoWatch(position).getLongitude()));
editAzimuth.setText(Float.toString(adapter.getCitytoWatch(position).getAzimuthAngle()));
editElevation.setText(Float.toString(adapter.getCitytoWatch(position).getElevationAngle()));
editCellsMaxPower.setText(Float.toString(adapter.getCitytoWatch(position).getCellsMaxPower()));
editCellsArea.setText(Float.toString(adapter.getCitytoWatch(position).getCellsArea()));
editCellsEfficiency.setText(Float.toString(adapter.getCitytoWatch(position).getCellsEfficiency()));
editDiffuseEfficiency.setText(Float.toString(adapter.getCitytoWatch(position).getDiffuseEfficiency()));
editConverterPowerLimit.setText(Float.toString(adapter.getCitytoWatch(position).getConverterPowerLimit()));
editConverterEfficiency.setText(Float.toString(adapter.getCitytoWatch(position).getConverterEfficiency()));
editElevation.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { }
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { }
@Override
public void afterTextChanged(Editable editable) {
float elevation = Float.parseFloat(editElevation.getText().toString());
editDiffuseEfficiency.setText(Float.toString(100-50 * elevation/90));
}
});
alert.setPositiveButton(getString(R.string.dialog_edit_change_button), (dialog, whichButton) -> {
adapter.updateCity(position, String.valueOf(editCity.getText()),
Float.parseFloat(editLatitude.getText().toString()),
Float.parseFloat(editLongitude.getText().toString()),
Float.parseFloat(editAzimuth.getText().toString()),
Float.parseFloat(editElevation.getText().toString()),
Float.parseFloat(editCellsMaxPower.getText().toString()),
Float.parseFloat(editCellsArea.getText().toString()),
Float.parseFloat(editCellsEfficiency.getText().toString()),
Float.parseFloat(editDiffuseEfficiency.getText().toString()),
Float.parseFloat(editConverterPowerLimit.getText().toString()),
Float.parseFloat(editConverterEfficiency.getText().toString())
);
});
alert.setNegativeButton(getString(R.string.dialog_add_close_button), (dialog, whichButton) -> {
});
alert.show();
CityToWatch city = adapter.getCitytoWatch(position);
editCityToWatch(city);
}
public void onLongItemClick(View view, int position) {
@ -169,6 +110,70 @@ public class ManageLocationsActivity extends NavigationActivity {
}
private void editCityToWatch(CityToWatch city) {
AlertDialog.Builder alert = new AlertDialog.Builder(context);
LayoutInflater inflater = getLayoutInflater();
View dialogView = inflater.inflate(R.layout.dialog_edit_location, null);
alert.setTitle(getString(R.string.edit_location_title));
alert.setView(dialogView);
EditText editLatitude = (EditText) dialogView.findViewById(R.id.EditLocation_Lat);
EditText editLongitude = (EditText) dialogView.findViewById(R.id.EditLocation_Lon);
EditText editCity = (EditText) dialogView.findViewById(R.id.EditLocation_Name);
EditText editAzimuth = (EditText) dialogView.findViewById(R.id.EditLocation_Azimuth);
EditText editElevation = (EditText) dialogView.findViewById(R.id.EditLocation_Elevation);
EditText editCellsMaxPower = (EditText) dialogView.findViewById(R.id.EditLocation_Cell_Max_Power);
EditText editCellsArea = (EditText) dialogView.findViewById(R.id.EditLocation_Cells_Area);
EditText editCellsEfficiency = (EditText) dialogView.findViewById(R.id.EditLocation_Cell_Efficiency);
EditText editDiffuseEfficiency = (EditText) dialogView.findViewById(R.id.EditLocation_Diffuse_Efficiency);
EditText editConverterPowerLimit = (EditText) dialogView.findViewById(R.id.EditLocation_Converter_Power_Limit);
EditText editConverterEfficiency = (EditText) dialogView.findViewById(R.id.EditLocation_Converter_Efficiency);
editCity.setText(city.getCityName());
editLatitude.setText(Float.toString(city.getLatitude()));
editLongitude.setText(Float.toString(city.getLongitude()));
editAzimuth.setText(Float.toString(city.getAzimuthAngle()));
editElevation.setText(Float.toString(city.getElevationAngle()));
editCellsMaxPower.setText(Float.toString(city.getCellsMaxPower()));
editCellsArea.setText(Float.toString(city.getCellsArea()));
editCellsEfficiency.setText(Float.toString(city.getCellsEfficiency()));
editDiffuseEfficiency.setText(Float.toString(city.getDiffuseEfficiency()));
editConverterPowerLimit.setText(Float.toString(city.getConverterPowerLimit()));
editConverterEfficiency.setText(Float.toString(city.getConverterEfficiency()));
editElevation.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { }
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { }
@Override
public void afterTextChanged(Editable editable) {
float elevation = Float.parseFloat("0"+editElevation.getText().toString());
editDiffuseEfficiency.setText(Float.toString(100-50 * elevation/90));
}
});
alert.setPositiveButton(getString(R.string.dialog_edit_change_button), (dialog, whichButton) -> {
adapter.updateCity(city, String.valueOf(editCity.getText()),
Float.parseFloat("0"+editLatitude.getText().toString()),
Float.parseFloat("0"+editLongitude.getText().toString()),
Float.parseFloat("0"+editAzimuth.getText().toString()),
Float.parseFloat("0"+editElevation.getText().toString()),
Float.parseFloat("0"+editCellsMaxPower.getText().toString()),
Float.parseFloat("0"+editCellsArea.getText().toString()),
Float.parseFloat("0"+editCellsEfficiency.getText().toString()),
Float.parseFloat("0"+editDiffuseEfficiency.getText().toString()),
Float.parseFloat("0"+editConverterPowerLimit.getText().toString()),
Float.parseFloat("0"+editConverterEfficiency.getText().toString())
);
});
alert.setNegativeButton(getString(R.string.dialog_add_close_button), (dialog, whichButton) -> {
});
alert.show();
}
@Override
protected void onResume() {
super.onResume();
@ -191,6 +196,7 @@ public class ManageLocationsActivity extends NavigationActivity {
newCity.setCityId((int) id); //use id also instead of city id as unique identifier
cities.add(newCity);
adapter.notifyDataSetChanged();
editCityToWatch(newCity);
}
private CityToWatch convertCityToWatched(City selectedCity) {

View file

@ -118,8 +118,7 @@ public class RecyclerOverviewListAdapter extends RecyclerView.Adapter<ItemViewHo
public CityToWatch getCitytoWatch(int position){
return cities.get(position);
}
public void updateCity(int position, String cityName, float latitude, float longitude, float azimuth, float elevation, float cellsMaxPower, float cellsArea, float cellsEfficiency, float diffuseEfficiency, float converterPowerLimit, float converterEfficiency) {
CityToWatch cityToWatch = cities.get(position);
public void updateCity(CityToWatch cityToWatch, String cityName, float latitude, float longitude, float azimuth, float elevation, float cellsMaxPower, float cellsArea, float cellsEfficiency, float diffuseEfficiency, float converterPowerLimit, float converterEfficiency) {
cityToWatch.setCityName(cityName);
cityToWatch.setLatitude(latitude);
cityToWatch.setLongitude(longitude);
@ -132,6 +131,6 @@ public class RecyclerOverviewListAdapter extends RecyclerView.Adapter<ItemViewHo
cityToWatch.setConverterPowerLimit(converterPowerLimit);
cityToWatch.setConverterEfficiency(converterEfficiency);
database.updateCityToWatch(cityToWatch);
notifyItemChanged(position);
notifyDataSetChanged();
}
}

View file

@ -97,23 +97,6 @@
android:gravity="center_horizontal"
android:text="@string/about_license_text" />
<TextView
android:id="@+id/textFieldPermissions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:text="@string/about_permissions"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:gravity="center_horizontal"
android:text="@string/about_permission_internet_description" />
<TextView
android:id="@+id/textFieldPrivacy"
android:layout_width="wrap_content"

View file

@ -4,10 +4,8 @@
<string name="about">Über</string>
<string name="about_privacy_heading">Privatsphäre-Informationen</string>
<string name="about_more_info">Mehr Informationen können gefunden werden auf:</string>
<string name="about_permission_internet_description">Zugriff auf alle Netzwerke: Diese Berechtigung "wird benötigt, um Wetter-Anfragen an Server zu stellen, die sich im Internet befinden. Ohne diese Berechtigung können keine Wetter-Daten bezogen werden. Optional: Berechtigung für GPS.</string>
<string name="about_license_text">Diese App ist abgeleitet von Privacy Friendly Weather, entwickelt von der Forschungsgruppe SECUSO. Quelltext lizenziert unter GPLv3. Die App benutzt Icons von Google Material Design Icons, lizenziert unter Apache License Version 2.0, die Leaflet Bibliothek, lizenziert unter 2-clause BSD License, lizenziert unter der Apache License Version 2.0, AutoSuggestTextViewAPICall, lizenziert unter der Apache License Version 2.0, Solarpositioning (net.e175.klaus:solarpositioning), lizenziert unter MIT Lizenz und die WilliamChart Bibliothek (com.db.chart), lizenziert unter der Apache License Version 2.0</string>
<string name="about_license">Lizenz</string>
<string name="about_permissions">Berechtigungen</string>
<string name="about_privacy_answer">solarCast benötigt nur Zugang zum Internet. Es werden weder persönliche Daten gesammelt, noch wird Werbung angezeigt.</string>
<string name="about_where_from">Woher kommen die Wetterinformationen?</string>
<string name="about_where_from_answer">Die Wetterinformationen stammen von</string>
@ -26,7 +24,7 @@
<string name="error_convert_to_json">Die erhaltenen Wetterdaten entsprachen nicht dem erwarteten Format.</string>
<string name="error_no_internet">Das Gerät ist nicht mit dem Internet verbunden!</string>
<string name="error_fetch_forecast">Es ist ein Fehler beim Abrufen der Wettervorhersage aufgetreten, bitte versuchen Sie es erneut!</string>
<string name="error_no_city_selected">Sie haben keine Stadt ausgewählt. Wählen Sie \"Orte verwalten\" in der Navigation, um eine Stadt auszuwählen.</string>
<string name="error_no_city_selected">Sie haben keinen Ort ausgewählt. Wählen Sie \"Orte verwalten\" in der Navigation, um einen Ort auszuwählen.</string>
<string name="dialog_add_add_button">Hinzufügen</string>
<string name="dialog_add_close_button">Schließen</string>
<string name="dialog_add_label">Ort, der hinzugefügt werden soll:</string>
@ -61,7 +59,7 @@
<string name="slide2_text">Der Quellcode ist auf GitHub verfügbar. Weitere Informationen finden Sie auf der Über-Seite</string>
<string name="card_error_content">Bitte versuchen Sie zu aktualisieren!</string>
<string name="card_error_heading">Fehler beim Abrufen der Wetterdaten</string>
<string name="long_press_text">Halten und ziehen Sie, um die Städte zu sortieren.</string>
<string name="long_press_text">Halten und ziehen Sie, um die Orte zu sortieren.</string>
<string name="swipe_to_delete">Wischen Sie zum Löschen</string>
<string name="infoProvider">Die Wetterinformationen stammen von Open-Meteo.com</string>
@ -123,7 +121,7 @@
<string name="edit_location_hint_cells_max_power">Maximalleistung Zelle [W]</string>
<string name="edit_location_hint_cells_efficiency">Wirkungsgrad Zelle [%]</string>
<string name="edit_location_hint_cells_area">Fläche Zelle [m\u00b2]</string>
<string name="edit_location_hint_diffuse_efficiency">Effizenz diffuse Strahlung [%]</string>
<string name="edit_location_hint_diffuse_efficiency">Effizienz diffuse Strahlung [%]</string>
<string name="edit_location_hint_converter_power_limit">Leistung Wechselrichter [W]</string>
<string name="edit_location_hint_converter_efficiency">Effizienz Wechselrichter [%]</string>
<string name="units_Wh">Wh</string>

View file

@ -22,7 +22,6 @@
<string name="card_error_heading">Error fetching weather data</string>
<string name="card_error_content">Please try to update!</string>
<string name="about_privacy_heading">Privacy Info</string>
<string name="about_permission_internet_description">Connecting to the Network: This permission is needed because weather data is retrieved by making requests to servers on the Internet. Without this permission, no weather data can be received. Optional: authorization for GPS.</string>
<string name="about">About</string>
<string name="version_number" translatable="false">Version</string>
<string name="about_license">License</string>
@ -54,7 +53,7 @@
<string name="error_convert_to_json">The retrieved weather data was not well-formed. </string>
<string name="error_no_internet">Your Device is not connected to the Internet</string>
<string name="error_fetch_forecast">Error while updating Forecast, please try again!</string>
<string name="error_no_city_selected">There is no city selected. To select a city go to \"Manage locations\".</string>
<string name="error_no_city_selected">There is no location selected. To select a location go to \"Manage locations\".</string>
<string name="settings_interval_quarter">15 min</string>
<string name="settings_interval_half">30 min</string>
<string name="settings_interval_one">1 h</string>
@ -68,7 +67,6 @@
<string name="about_privacy_answer">solarCast only uses the permission \"Internet\" to retrieve weather data. It further does not include any tracking mechanisms or advertisement.</string>
<string name="about_where_from">Where do the weather informations come from?</string>
<string name="about_where_from_answer">Weather information is fetched from</string>
<string name="about_permissions">Permissions</string>
<string name="long_press_text">Hold and drag to sort.</string>
<string name="swipe_to_delete">Swipe to delete</string>
<string name="settings_title_display_options">Display options</string>