forked from upstream-mirrors/OpenTracks
Activity icon uses now an image instead of a spinner (which was only used as an icon).
Fixed #503.
This commit is contained in:
@@ -18,8 +18,6 @@ package de.dennisguse.opentracks;
|
|||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.MotionEvent;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
|
||||||
@@ -96,18 +94,9 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
|||||||
iconValue = track.getIcon();
|
iconValue = track.getIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
viewBinding.trackEditActivityTypeIcon.setAdapter(TrackIconUtils.getIconSpinnerAdapter(this, iconValue));
|
setActivityTypeIcon(iconValue);
|
||||||
viewBinding.trackEditActivityTypeIcon.setOnTouchListener((v, event) -> {
|
viewBinding.trackEditActivityTypeIcon.setOnClickListener(v -> {
|
||||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), viewBinding.trackEditActivityType.getText().toString());
|
||||||
ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), viewBinding.trackEditActivityType.getText().toString());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
viewBinding.trackEditActivityTypeIcon.setOnKeyListener((v, keyCode, event) -> {
|
|
||||||
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
|
|
||||||
ChooseActivityTypeDialogFragment.showDialog(getSupportFragmentManager(), viewBinding.trackEditActivityType.getText().toString());
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
viewBinding.trackEditDescription.setText(track.getDescription());
|
viewBinding.trackEditDescription.setText(track.getDescription());
|
||||||
@@ -156,7 +145,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
|||||||
|
|
||||||
private void setActivityTypeIcon(String iconValue) {
|
private void setActivityTypeIcon(String iconValue) {
|
||||||
this.iconValue = iconValue;
|
this.iconValue = iconValue;
|
||||||
TrackIconUtils.setIconSpinner(viewBinding.trackEditActivityTypeIcon, iconValue);
|
viewBinding.trackEditActivityTypeIcon.setImageResource(TrackIconUtils.getIconDrawable(iconValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -5,9 +5,7 @@ import android.os.Bundle;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MotionEvent;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
@@ -110,18 +108,9 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
|
|
||||||
handlerUpdateUI = new Handler();
|
handlerUpdateUI = new Handler();
|
||||||
|
|
||||||
viewBinding.statsActivityTypeIcon.setAdapter(TrackIconUtils.getIconSpinnerAdapter(getActivity(), ""));
|
|
||||||
viewBinding.statsActivityTypeIcon.setOnTouchListener((v, event) -> {
|
viewBinding.statsActivityTypeIcon.setOnClickListener(v -> {
|
||||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
((TrackRecordingActivity) getActivity()).chooseActivityType(category);
|
||||||
((TrackRecordingActivity) getActivity()).chooseActivityType(category);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
viewBinding.statsActivityTypeIcon.setOnKeyListener((v, keyCode, event) -> {
|
|
||||||
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
|
|
||||||
((TrackRecordingActivity) getActivity()).chooseActivityType(category);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
sensorsAdapter = new SensorsAdapter(getContext());
|
sensorsAdapter = new SensorsAdapter(getContext());
|
||||||
@@ -351,7 +340,7 @@ public class StatisticsRecordingFragment extends Fragment implements TrackDataLi
|
|||||||
// Set activity type
|
// Set activity type
|
||||||
{
|
{
|
||||||
viewBinding.statsActivityTypeIcon.setEnabled(isRecording);
|
viewBinding.statsActivityTypeIcon.setEnabled(isRecording);
|
||||||
TrackIconUtils.setIconSpinner(viewBinding.statsActivityTypeIcon, trackIconValue);
|
viewBinding.statsActivityTypeIcon.setImageResource(TrackIconUtils.getIconDrawable(trackIconValue));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set time
|
// Set time
|
||||||
|
|||||||
@@ -19,12 +19,10 @@ package de.dennisguse.opentracks.settings;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.KeyEvent;
|
|
||||||
import android.view.MotionEvent;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
import android.widget.AutoCompleteTextView;
|
import android.widget.AutoCompleteTextView;
|
||||||
import android.widget.Spinner;
|
import android.widget.ImageView;
|
||||||
|
|
||||||
import androidx.preference.DialogPreference;
|
import androidx.preference.DialogPreference;
|
||||||
import androidx.preference.PreferenceDialogFragmentCompat;
|
import androidx.preference.PreferenceDialogFragmentCompat;
|
||||||
@@ -63,7 +61,7 @@ public class ActivityTypePreference extends DialogPreference {
|
|||||||
public static class ActivityPreferenceDialog extends PreferenceDialogFragmentCompat {
|
public static class ActivityPreferenceDialog extends PreferenceDialogFragmentCompat {
|
||||||
|
|
||||||
private AutoCompleteTextView textView;
|
private AutoCompleteTextView textView;
|
||||||
private Spinner spinner;
|
private ImageView iconView;
|
||||||
|
|
||||||
static ActivityPreferenceDialog newInstance(String preferenceKey) {
|
static ActivityPreferenceDialog newInstance(String preferenceKey) {
|
||||||
ActivityTypePreference.ActivityPreferenceDialog dialog = new ActivityTypePreference.ActivityPreferenceDialog();
|
ActivityTypePreference.ActivityPreferenceDialog dialog = new ActivityTypePreference.ActivityPreferenceDialog();
|
||||||
@@ -87,30 +85,21 @@ public class ActivityTypePreference extends DialogPreference {
|
|||||||
textView.setAdapter(adapter);
|
textView.setAdapter(adapter);
|
||||||
textView.setOnItemClickListener((parent, v, position, id) -> {
|
textView.setOnItemClickListener((parent, v, position, id) -> {
|
||||||
String iconValue = TrackIconUtils.getIconValue(context, (String) textView.getAdapter().getItem(position));
|
String iconValue = TrackIconUtils.getIconValue(context, (String) textView.getAdapter().getItem(position));
|
||||||
TrackIconUtils.setIconSpinner(spinner, iconValue);
|
updateIcon(iconValue);
|
||||||
});
|
});
|
||||||
textView.setOnFocusChangeListener((v, hasFocus) -> {
|
textView.setOnFocusChangeListener((v, hasFocus) -> {
|
||||||
if (!hasFocus) {
|
if (!hasFocus) {
|
||||||
String iconValue = TrackIconUtils.getIconValue(context, textView.getText().toString());
|
String iconValue = TrackIconUtils.getIconValue(context, textView.getText().toString());
|
||||||
TrackIconUtils.setIconSpinner(spinner, iconValue);
|
updateIcon(iconValue);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
String iconValue = TrackIconUtils.getIconValue(context, category);
|
iconView = view.findViewById(R.id.activity_type_preference_spinner);
|
||||||
spinner = view.findViewById(R.id.activity_type_preference_spinner);
|
iconView.setOnClickListener((it) -> {
|
||||||
spinner.setAdapter(TrackIconUtils.getIconSpinnerAdapter(context, iconValue));
|
showIconSelectDialog();
|
||||||
spinner.setOnTouchListener((v, event) -> {
|
|
||||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
|
||||||
showIconSelectDialog();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
spinner.setOnKeyListener((v, keyCode, event) -> {
|
|
||||||
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
|
|
||||||
showIconSelectDialog();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
updateIcon(TrackIconUtils.getIconValue(context, category));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showIconSelectDialog() {
|
private void showIconSelectDialog() {
|
||||||
@@ -129,15 +118,13 @@ public class ActivityTypePreference extends DialogPreference {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the value of the dialog.
|
|
||||||
*
|
|
||||||
* @param iconValue the icon value
|
|
||||||
*/
|
|
||||||
public void updateUI(String iconValue) {
|
public void updateUI(String iconValue) {
|
||||||
TrackIconUtils.setIconSpinner(spinner, iconValue);
|
|
||||||
textView.setText(getActivity().getString(TrackIconUtils.getIconActivityType(iconValue)));
|
textView.setText(getActivity().getString(TrackIconUtils.getIconActivityType(iconValue)));
|
||||||
textView.clearFocus();
|
textView.clearFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateIcon(String iconValue) {
|
||||||
|
iconView.setImageResource(TrackIconUtils.getIconDrawable(iconValue));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,6 @@ package de.dennisguse.opentracks.util;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
import android.view.View;
|
|
||||||
import android.widget.ArrayAdapter;
|
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.Spinner;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
@@ -207,35 +203,6 @@ public class TrackIconUtils {
|
|||||||
return UNKNOWN;
|
return UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setIconSpinner(Spinner spinner, String iconValue) {
|
|
||||||
ArrayAdapter<StringBuilder> adapter = (ArrayAdapter<StringBuilder>) spinner.getAdapter();
|
|
||||||
StringBuilder stringBuilder = adapter.getItem(0);
|
|
||||||
stringBuilder.delete(0, stringBuilder.length());
|
|
||||||
stringBuilder.append(iconValue);
|
|
||||||
adapter.notifyDataSetChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ArrayAdapter<StringBuilder> getIconSpinnerAdapter(final Context context, String iconValue) {
|
|
||||||
return new ArrayAdapter<StringBuilder>(context, android.R.layout.simple_spinner_item, new StringBuilder[]{new StringBuilder(iconValue)}) {
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
public View getView(int position, View convertView, @NonNull android.view.ViewGroup parent) {
|
|
||||||
ImageView imageView;
|
|
||||||
if (convertView != null) {
|
|
||||||
imageView = (ImageView) convertView;
|
|
||||||
} else {
|
|
||||||
imageView = new ImageView(getContext());
|
|
||||||
}
|
|
||||||
|
|
||||||
imageView.setImageResource(TrackIconUtils.getIconDrawable(getItem(position) + ""));
|
|
||||||
|
|
||||||
int padding = ResourceUtils.dpToPx(getContext(), 1);
|
|
||||||
imageView.setPaddingRelative(padding, padding, padding, -padding);
|
|
||||||
return imageView;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if the activity type is in the list.
|
* Returns true if the activity type is in the list.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ limitations under the License.
|
|||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:hint="@string/track_edit_activity_type_hint" />
|
android:hint="@string/track_edit_activity_type_hint" />
|
||||||
|
|
||||||
<Spinner
|
<ImageView
|
||||||
android:id="@+id/activity_type_preference_spinner"
|
android:id="@+id/activity_type_preference_spinner"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|||||||
@@ -68,7 +68,7 @@
|
|||||||
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
app:layout_constraintRight_toLeftOf="@+id/guideline3"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<Spinner
|
<ImageView
|
||||||
android:id="@+id/stats_activity_type_icon"
|
android:id="@+id/stats_activity_type_icon"
|
||||||
style="@style/StatsLargeValue"
|
style="@style/StatsLargeValue"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ limitations under the License.
|
|||||||
android:selectAllOnFocus="true" />
|
android:selectAllOnFocus="true" />
|
||||||
</com.google.android.material.textfield.TextInputLayout>
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
<Spinner
|
<ImageView
|
||||||
android:id="@+id/track_edit_activity_type_icon"
|
android:id="@+id/track_edit_activity_type_icon"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|||||||
Reference in New Issue
Block a user