forked from upstream-mirrors/OpenTracks
Moved ChooseActivityTypeDialog to be a real DialogFragment.
Note: This breaks RecordingsSettingsActivity.
This commit is contained in:
@@ -487,7 +487,7 @@ public class TrackDetailActivity extends AbstractListActivity implements ChooseA
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void chooseActivityType(String category) {
|
public void chooseActivityType(String category) {
|
||||||
ChooseActivityTypeDialogFragment.newInstance(category).show(getSupportFragmentManager(), ChooseActivityTypeDialogFragment.CHOOSE_ACTIVITY_TYPE_DIALOG_TAG);
|
ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), category);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ import android.widget.Button;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.content.ContentProviderUtils;
|
import de.dennisguse.opentracks.content.ContentProviderUtils;
|
||||||
import de.dennisguse.opentracks.content.Track;
|
import de.dennisguse.opentracks.content.Track;
|
||||||
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
||||||
@@ -119,9 +121,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
|||||||
@Override
|
@Override
|
||||||
public boolean onTouch(View v, MotionEvent event) {
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||||
ChooseActivityTypeDialogFragment.newInstance(activityType.getText().toString()).show(
|
ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), activityType.getText().toString());
|
||||||
getSupportFragmentManager(),
|
|
||||||
ChooseActivityTypeDialogFragment.CHOOSE_ACTIVITY_TYPE_DIALOG_TAG);
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -130,9 +130,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
|||||||
@Override
|
@Override
|
||||||
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
public boolean onKey(View v, int keyCode, KeyEvent event) {
|
||||||
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
|
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
|
||||||
ChooseActivityTypeDialogFragment.newInstance(activityType.getText().toString()).show(
|
ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), activityType.getText().toString());
|
||||||
getSupportFragmentManager(),
|
|
||||||
ChooseActivityTypeDialogFragment.CHOOSE_ACTIVITY_TYPE_DIALOG_TAG);
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -182,7 +180,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(Bundle outState) {
|
public void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
outState.putString(ICON_VALUE_KEY, iconValue);
|
outState.putString(ICON_VALUE_KEY, iconValue);
|
||||||
}
|
}
|
||||||
|
|||||||
+48
-48
@@ -16,19 +16,19 @@
|
|||||||
|
|
||||||
package de.dennisguse.opentracks.fragments;
|
package de.dennisguse.opentracks.fragments;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
|
||||||
import android.app.Dialog;
|
import android.app.Dialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
import android.widget.AdapterView.OnItemClickListener;
|
||||||
import android.widget.GridView;
|
import android.widget.GridView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.DialogFragment;
|
import androidx.fragment.app.DialogFragment;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -43,53 +43,19 @@ import de.dennisguse.opentracks.util.TrackIconUtils;
|
|||||||
*/
|
*/
|
||||||
public class ChooseActivityTypeDialogFragment extends DialogFragment {
|
public class ChooseActivityTypeDialogFragment extends DialogFragment {
|
||||||
|
|
||||||
public static final String CHOOSE_ACTIVITY_TYPE_DIALOG_TAG = "chooseActivityType";
|
private static final String CHOOSE_ACTIVITY_TYPE_DIALOG_TAG = "chooseActivityType";
|
||||||
private static final String KEY_CATEGORY = "category";
|
private final String preselectedCategory;
|
||||||
|
|
||||||
|
private ChooseActivityTypeDialogFragment(String preselectedCategory) {
|
||||||
|
this.preselectedCategory = preselectedCategory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void showDialog(FragmentManager fragmentManager, String preselectedCategory) {
|
||||||
|
new ChooseActivityTypeDialogFragment(preselectedCategory).show(fragmentManager, ChooseActivityTypeDialogFragment.CHOOSE_ACTIVITY_TYPE_DIALOG_TAG);
|
||||||
|
}
|
||||||
|
|
||||||
private ChooseActivityTypeCaller caller;
|
private ChooseActivityTypeCaller caller;
|
||||||
|
|
||||||
public static ChooseActivityTypeDialogFragment newInstance(String category) {
|
|
||||||
Bundle bundle = new Bundle();
|
|
||||||
bundle.putString(KEY_CATEGORY, category);
|
|
||||||
|
|
||||||
ChooseActivityTypeDialogFragment fragment = new ChooseActivityTypeDialogFragment();
|
|
||||||
fragment.setArguments(bundle);
|
|
||||||
return fragment;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Dialog getDialog(final Context context, final String category, final ChooseActivityTypeCaller caller) {
|
|
||||||
View view = LayoutInflater.from(context).inflate(R.layout.choose_activity_type, null);
|
|
||||||
GridView gridView = view.findViewById(R.id.choose_activity_type_grid_view);
|
|
||||||
|
|
||||||
List<Integer> imageIds = new ArrayList<>();
|
|
||||||
for (String iconValue : TrackIconUtils.getAllIconValues()) {
|
|
||||||
imageIds.add(TrackIconUtils.getIconDrawable(iconValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
final ChooseActivityTypeImageAdapter imageAdapter = new ChooseActivityTypeImageAdapter(imageIds);
|
|
||||||
gridView.setAdapter(imageAdapter);
|
|
||||||
|
|
||||||
final AlertDialog alertDialog = new AlertDialog.Builder(context).setTitle(R.string.track_edit_activity_type_hint).setView(view).create();
|
|
||||||
alertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
|
|
||||||
@Override
|
|
||||||
public void onShow(DialogInterface dialog) {
|
|
||||||
int position = getPosition(context, category);
|
|
||||||
if (position != -1) {
|
|
||||||
imageAdapter.setSelected(position);
|
|
||||||
imageAdapter.notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
gridView.setOnItemClickListener(new OnItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
|
|
||||||
caller.onChooseActivityTypeDone(TrackIconUtils.getAllIconValues().get(position));
|
|
||||||
alertDialog.dismiss();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return alertDialog;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static int getPosition(Context context, String category) {
|
private static int getPosition(Context context, String category) {
|
||||||
if (category == null) {
|
if (category == null) {
|
||||||
return -1;
|
return -1;
|
||||||
@@ -112,7 +78,39 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment {
|
|||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
return getDialog(getActivity(), getArguments().getString(KEY_CATEGORY), caller);
|
Dialog dialog = super.onCreateDialog(savedInstanceState);
|
||||||
|
|
||||||
|
dialog.setTitle(R.string.track_edit_activity_type_hint);
|
||||||
|
return dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
View view = inflater.inflate(R.layout.choose_activity_type, container);
|
||||||
|
GridView gridView = view.findViewById(R.id.choose_activity_type_grid_view);
|
||||||
|
|
||||||
|
List<Integer> imageIds = new ArrayList<>();
|
||||||
|
for (String iconValue : TrackIconUtils.getAllIconValues()) {
|
||||||
|
imageIds.add(TrackIconUtils.getIconDrawable(iconValue));
|
||||||
|
}
|
||||||
|
|
||||||
|
final ChooseActivityTypeImageAdapter imageAdapter = new ChooseActivityTypeImageAdapter(imageIds);
|
||||||
|
gridView.setAdapter(imageAdapter);
|
||||||
|
|
||||||
|
int position = getPosition(getContext(), preselectedCategory);
|
||||||
|
if (position != -1) {
|
||||||
|
imageAdapter.setSelected(position);
|
||||||
|
imageAdapter.notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
gridView.setOnItemClickListener(new OnItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
|
||||||
|
caller.onChooseActivityTypeDone(TrackIconUtils.getAllIconValues().get(position));
|
||||||
|
dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -126,5 +124,7 @@ public class ChooseActivityTypeDialogFragment extends DialogFragment {
|
|||||||
* Called when choose activity type is done.
|
* Called when choose activity type is done.
|
||||||
*/
|
*/
|
||||||
void onChooseActivityTypeDone(String iconValue);
|
void onChooseActivityTypeDone(String iconValue);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import android.preference.Preference;
|
|||||||
import android.preference.PreferenceActivity;
|
import android.preference.PreferenceActivity;
|
||||||
|
|
||||||
import de.dennisguse.opentracks.R;
|
import de.dennisguse.opentracks.R;
|
||||||
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
|
|
||||||
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller;
|
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller;
|
||||||
import de.dennisguse.opentracks.util.PreferencesUtils;
|
import de.dennisguse.opentracks.util.PreferencesUtils;
|
||||||
import de.dennisguse.opentracks.util.StringUtils;
|
import de.dennisguse.opentracks.util.StringUtils;
|
||||||
@@ -57,17 +56,6 @@ public class RecordingSettingsActivity extends PreferenceActivity implements Cho
|
|||||||
configListPreference(R.string.auto_resume_track_timeout_key, R.array.auto_resume_track_timeout_values, metricUnits);
|
configListPreference(R.string.auto_resume_track_timeout_key, R.array.auto_resume_track_timeout_values, metricUnits);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Dialog onCreateDialog(int id, Bundle bundle) {
|
|
||||||
if (id != DIALOG_CHOOSE_ACTIVITY) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
String category = PreferencesUtils.getString(
|
|
||||||
this, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT);
|
|
||||||
return ChooseActivityTypeDialogFragment.getDialog(this, category, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void configFrequencyPreference(int key, boolean metricUnits) {
|
private void configFrequencyPreference(int key, boolean metricUnits) {
|
||||||
ListPreference preference = (ListPreference) findPreference(getString(key));
|
ListPreference preference = (ListPreference) findPreference(getString(key));
|
||||||
|
|
||||||
@@ -95,7 +83,7 @@ public class RecordingSettingsActivity extends PreferenceActivity implements Cho
|
|||||||
ListPreference preference = (ListPreference) findPreference(getString(key));
|
ListPreference preference = (ListPreference) findPreference(getString(key));
|
||||||
|
|
||||||
@Deprecated //TODO Can we make values an int array?
|
@Deprecated //TODO Can we make values an int array?
|
||||||
String[] values = getResources().getStringArray(valueArray);
|
String[] values = getResources().getStringArray(valueArray);
|
||||||
String[] options = new String[values.length];
|
String[] options = new String[values.length];
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case R.string.min_recording_interval_key:
|
case R.string.min_recording_interval_key:
|
||||||
@@ -296,6 +284,18 @@ public class RecordingSettingsActivity extends PreferenceActivity implements Cho
|
|||||||
showDialog(DIALOG_CHOOSE_ACTIVITY);
|
showDialog(DIALOG_CHOOSE_ACTIVITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Dialog onCreateDialog(int id, Bundle bundle) {
|
||||||
|
if (id != DIALOG_CHOOSE_ACTIVITY) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
String category = PreferencesUtils.getString(this, R.string.default_activity_key, PreferencesUtils.DEFAULT_ACTIVITY_DEFAULT);
|
||||||
|
//TODO ATTENTION: Need to switch to FragmentActivity before this can be used.
|
||||||
|
// ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), category);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChooseActivityTypeDone(String iconValue) {
|
public void onChooseActivityTypeDone(String iconValue) {
|
||||||
activityTypePreference.updateValue(iconValue);
|
activityTypePreference.updateValue(iconValue);
|
||||||
|
|||||||
Reference in New Issue
Block a user