diff --git a/app/build.gradle b/app/build.gradle index a176df2..2dc6d5e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,4 +41,5 @@ dependencies { implementation 'net.lingala.zip4j:zip4j:2.9.1' implementation "androidx.lifecycle:lifecycle-viewmodel:2.5.1" //needed due to duplicate class error implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1" //needed due to duplicate class error + implementation 'com.github.woheller69:CompassView:a63c67da90' } \ No newline at end of file diff --git a/app/src/main/java/org/woheller69/weather/activities/ManageLocationsActivity.java b/app/src/main/java/org/woheller69/weather/activities/ManageLocationsActivity.java index 7aed91a..de60825 100644 --- a/app/src/main/java/org/woheller69/weather/activities/ManageLocationsActivity.java +++ b/app/src/main/java/org/woheller69/weather/activities/ManageLocationsActivity.java @@ -3,6 +3,7 @@ package org.woheller69.weather.activities; import android.content.Context; import android.os.Bundle; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.redinput.compassview.CompassView; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.LinearLayoutManager; @@ -183,6 +184,7 @@ public class ManageLocationsActivity extends NavigationActivity { 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); + CompassView editCompass = (CompassView) dialogView.findViewById(R.id.EditLocation_Compass); EditText editTilt = (EditText) dialogView.findViewById(R.id.EditLocation_Tilt); EditText editCellsMaxPower = (EditText) dialogView.findViewById(R.id.EditLocation_Cell_Max_Power); EditText editCellsArea = (EditText) dialogView.findViewById(R.id.EditLocation_Cells_Area); @@ -198,8 +200,22 @@ public class ManageLocationsActivity extends NavigationActivity { editLatitude.setFilters(new InputFilter[]{ new InputFilterMinMax(-90, 90)}); editLongitude.setText(Float.toString(city.getLongitude())); editLongitude.setFilters(new InputFilter[]{ new InputFilterMinMax(-180, 180)}); + editCompass.setDegrees(city.getLongitude()); + editCompass.setOnCompassDragListener(degrees -> { editAzimuth.setText(Float.toString(Math.round(degrees))); }); editAzimuth.setText(Float.toString(city.getAzimuthAngle())); editAzimuth.setFilters(new InputFilter[]{ new InputFilterMinMax(0, 360)}); + editAzimuth.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 azimuth = Float.parseFloat(!editAzimuth.getText().toString().isEmpty() ? editAzimuth.getText().toString() : "0"); + editCompass.setDegrees(azimuth); + } + }); editTilt.setText(Float.toString(city.getTiltAngle())); editTilt.setFilters(new InputFilter[]{ new InputFilterMinMax(0, 90)}); editCellsMaxPower.setText(Float.toString(city.getCellsMaxPower())); diff --git a/app/src/main/res/layout/dialog_edit_location.xml b/app/src/main/res/layout/dialog_edit_location.xml index 86f92c4..8ec037d 100644 --- a/app/src/main/res/layout/dialog_edit_location.xml +++ b/app/src/main/res/layout/dialog_edit_location.xml @@ -1,8 +1,8 @@ - + android:layout_height="wrap_content" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + +