diff --git a/app/src/main/assets/gps_edit.svg b/app/src/main/assets/gps_edit.svg
new file mode 100644
index 000000000..f189dbf73
--- /dev/null
+++ b/app/src/main/assets/gps_edit.svg
@@ -0,0 +1,67 @@
+
+
diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummaryDetail.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummaryDetail.java
index fc83d606d..91016d0fd 100644
--- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummaryDetail.java
+++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummaryDetail.java
@@ -38,6 +38,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
+import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
@@ -56,9 +57,13 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
+import java.io.FileFilter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -80,7 +85,6 @@ import nodomain.freeyourgadget.gadgetbridge.util.DateTimeUtils;
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
import nodomain.freeyourgadget.gadgetbridge.util.GB;
import nodomain.freeyourgadget.gadgetbridge.util.SwipeEvents;
-//import nodomain.freeyourgadget.gadgetbridge.util.OnSwipeTouchListener;
public class ActivitySummaryDetail extends AbstractGBActivity {
private static final Logger LOG = LoggerFactory.getLogger(ActivitySummaryDetail.class);
@@ -89,6 +93,10 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
private boolean show_raw_data = false;
private int alternateColor;
private Menu mOptionsMenu;
+ List filesGpxList = new ArrayList<>();
+ int selectedGpxIndex;
+ String selectedGpxFile;
+ File export_path = null;
public static int getAlternateColor(Context context) {
TypedValue typedValue = new TypedValue();
@@ -218,7 +226,6 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
} else {
hideCanvas();
}
-
}
@@ -274,6 +281,58 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
.show();
}
});
+ ImageView activity_summary_detail_edit_gps = findViewById(R.id.activity_summary_detail_edit_gps);
+ activity_summary_detail_edit_gps.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View view) {
+ export_path = get_path();
+ filesGpxList = get_gpx_file_list();
+ AlertDialog.Builder builder = new AlertDialog.Builder(ActivitySummaryDetail.this);
+ builder.setTitle(R.string.activity_summary_detail_select_gpx_track);
+ ArrayAdapter directory_listing = new ArrayAdapter(ActivitySummaryDetail.this, android.R.layout.simple_list_item_1, filesGpxList);
+ builder.setSingleChoiceItems(directory_listing, 0, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ selectedGpxIndex = which;
+ selectedGpxFile = export_path + "/" + filesGpxList.get(selectedGpxIndex);
+ String message = String.format("%s %s?", getString(R.string.set), filesGpxList.get(selectedGpxIndex));
+ if (selectedGpxIndex == 0) {
+ selectedGpxFile = null;
+ message = String.format("%s?", getString(R.string.activity_summary_detail_clear_gpx_track));
+ }
+
+ new AlertDialog.Builder(ActivitySummaryDetail.this)
+ .setCancelable(true)
+ .setIcon(R.drawable.ic_warning)
+ .setTitle(R.string.activity_summary_detail_editing_gpx_track)
+ .setMessage(message)
+ .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ currentItem.setGpxTrack(selectedGpxFile);
+ currentItem.update();
+ if (get_gpx_file() != null) {
+ showCanvas();
+ activitySummariesGpsFragment.set_data(get_gpx_file());
+ } else {
+ hideCanvas();
+ }
+ }
+ })
+ .setNegativeButton(R.string.Cancel, new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ }
+ })
+ .show();
+ dialog.dismiss();
+ }
+ });
+ AlertDialog dialog = builder.create();
+ dialog.show();
+ }
+ });
}
private void makeSummaryHeader(BaseActivitySummary item) {
@@ -310,6 +369,49 @@ public class ActivitySummaryDetail extends AbstractGBActivity {
}
+ private File get_path() {
+ File path = null;
+ try {
+ path = FileUtils.getExternalFilesDir();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return path;
+ }
+
+ private List get_gpx_file_list() {
+ List list = new ArrayList<>();
+
+ File[] fileListing = export_path.listFiles(new FileFilter() {
+ @Override
+ public boolean accept(File file) {
+ return file.getPath().toLowerCase().endsWith(".gpx");
+ }
+ });
+
+ if (fileListing != null && fileListing.length > 1) {
+ Arrays.sort(fileListing, new Comparator() {
+ @Override
+ public int compare(File fileA, File fileB) {
+ if (fileA.lastModified() < fileB.lastModified()) {
+ return 1;
+ }
+ if (fileA.lastModified() > fileB.lastModified()) {
+ return -1;
+ }
+ return 0;
+ }
+ });
+ }
+
+ list.add(getString(R.string.activity_summary_detail_clear_gpx_track));
+
+ for (File file : fileListing) {
+ list.add(file.getName());
+ }
+ return list;
+ }
+
private void makeSummaryContent(BaseActivitySummary item) {
//make view of data from summaryData of item
String units = GBApplication.getPrefs().getString(SettingsActivity.PREF_MEASUREMENT_SYSTEM, GBApplication.getContext().getString(R.string.p_unit_metric));
diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml
new file mode 100644
index 000000000..7a2303c56
--- /dev/null
+++ b/app/src/main/res/drawable/ic_edit.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_gps_edit.xml b/app/src/main/res/drawable/ic_gps_edit.xml
new file mode 100644
index 000000000..6dcd2c83d
--- /dev/null
+++ b/app/src/main/res/drawable/ic_gps_edit.xml
@@ -0,0 +1,13 @@
+
+
+
+
diff --git a/app/src/main/res/layout/activity_summary_details.xml b/app/src/main/res/layout/activity_summary_details.xml
index 110d9c3fb..89247c281 100644
--- a/app/src/main/res/layout/activity_summary_details.xml
+++ b/app/src/main/res/layout/activity_summary_details.xml
@@ -62,10 +62,20 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
- android:layout_weight="0.1"
+ android:layout_weight="0"
android:contentDescription="@string/icon_placeholder"
android:scaleType="fitEnd"
- app:srcCompat="@drawable/ic_create" />
+ app:srcCompat="@drawable/ic_edit" />
+
+
Cancel
Delete
OK
+ Set
Export/Import directory content
Show Export/Import directory content
Delete files in Export/Import directory
@@ -788,6 +789,9 @@
Sport Activities
Sport Activity Detail
Edit label
+ Select GPX track
+ Clear GPX track
+ Editing linked GPX track
Today
Yesterday
Biking