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 @@ + + + + + + image/svg+xml + + + + + + + + + + + + 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