Skip to content

Commit b3121d3

Browse files
committed
Improved selected states
1 parent 9d63c56 commit b3121d3

File tree

3 files changed

+51
-28
lines changed

3 files changed

+51
-28
lines changed

app/src/main/java/com/saulmm/cui/OrderDialogFragment.java

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import de.hdodenhof.circleimageview.CircleImageView;
4343

4444

45-
4645
public class OrderDialogFragment extends BottomSheetDialogFragment {
4746
public static final String ID_SIZE_SUFFIX = "txt_size";
4847
public static final String ID_COLOR_SUFFIX = "img_color";
@@ -58,10 +57,10 @@ public class OrderDialogFragment extends BottomSheetDialogFragment {
5857
private OrderSelection orderSelection;
5958

6059
public static class OrderSelection {
61-
public int size;
62-
public int color;
63-
public String date;
64-
public String time;
60+
public int size = 0;
61+
public int color = 0;
62+
public String date = "";
63+
public String time = "";
6564
}
6665

6766
public interface Step1Listener {
@@ -102,7 +101,6 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
102101
super.onViewCreated(view, savedInstanceState);
103102

104103
orderSelection = new OrderSelection();
105-
orderSelection.color = ContextCompat.getColor(getContext(), getProduct().color);
106104

107105
selectedViewTransition = TransitionInflater.from(getContext())
108106
.inflateTransition(R.transition.transition_fake_view);
@@ -139,8 +137,6 @@ private void showDeliveryForm() {
139137
}
140138

141139
private void transitionSelectedView(View v) {
142-
v.setSelected(true);
143-
144140
// Create the cloned view from the selected view at the same position
145141
final View clonedView = createSelectionView(v);
146142

@@ -190,10 +186,26 @@ private View getTargetView(View v) {
190186
throw new IllegalStateException();
191187
}
192188

189+
@BindingAdapter("app:spanOffset")
190+
public static void setItemSpan(View v, int spanOffset) {
191+
final String itemText = ((TextView) v).getText().toString();
192+
final SpannableString sString = new SpannableString(itemText);
193+
194+
sString.setSpan(new RelativeSizeSpan(1.5f), itemText.length() - spanOffset, itemText.length(),
195+
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
196+
197+
((TextView) v).setText(sString);
198+
}
199+
193200
private void initOrderStepOneView(LayoutFormOrderStep1Binding layoutStep1) {
194201
binding.btnGo.setOnClickListener(v -> {
195202
binding.txtAction.setText(R.string.action_book);
196203

204+
if (orderSelection.color == 0) {
205+
orderSelection.color = ContextCompat.getColor(
206+
getContext(), getProduct().color);
207+
}
208+
197209
for (View clonedView : clonedViews)
198210
binding.mainContainer.removeView(clonedView);
199211

@@ -205,42 +217,45 @@ private void initOrderStepOneView(LayoutFormOrderStep1Binding layoutStep1) {
205217
layoutStep1.setListener(new Step1Listener() {
206218
@Override
207219
public void onSizeSelected(View v) {
208-
orderSelection.size = Integer.parseInt(((TextView) v).getText().toString());
209-
transitionSelectedView(v);
220+
if (orderSelection.size == 0) {
221+
orderSelection.size = Integer.parseInt(((TextView) v).getText().toString());
222+
v.setSelected(true);
223+
transitionSelectedView(v);
224+
}
210225
}
211226

212227
@Override
213228
public void onColorSelected(View v) {
214-
orderSelection.color = ((ColorDrawable) ((ImageView) v).getDrawable()).getColor();
215-
transitionSelectedView(v);
229+
if (orderSelection.color == 0) {
230+
orderSelection.color = ((ColorDrawable) ((ImageView) v).getDrawable()).getColor();
231+
v.setSelected(true);
232+
transitionSelectedView(v);
233+
}
216234
}
217235
});
218236
}
219237

220-
@BindingAdapter("app:spanOffset")
221-
public static void setItemSpan(View v, int spanOffset) {
222-
final String itemText = ((TextView) v).getText().toString();
223-
final SpannableString sString = new SpannableString(itemText);
224-
225-
sString.setSpan(new RelativeSizeSpan(1.5f), itemText.length() - spanOffset, itemText.length(),
226-
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
227-
228-
((TextView) v).setText(sString);
229-
}
230-
231238
private void initOrderStepTwoView(LayoutFormOrderStep2Binding step2Binding) {
232239
binding.btnGo.setBackground(new ColorDrawable(orderSelection.color));
233240
binding.btnGo.setOnClickListener(v -> changeToConfirmScene());
234241

235242
step2Binding.setListener(new Step2Listener() {
236243
@Override
237244
public void onDateSelected(View v) {
238-
transitionSelectedView(v);
245+
if (orderSelection.date.isEmpty()) {
246+
orderSelection.date = ((TextView) v).getText().toString();
247+
v.setSelected(true);
248+
transitionSelectedView(v);
249+
}
239250
}
240251

241252
@Override
242253
public void onTimeSelected(View v) {
243-
transitionSelectedView(v);
254+
if (orderSelection.time.isEmpty()) {
255+
orderSelection.time = ((TextView) v).getText().toString();
256+
v.setSelected(true);
257+
transitionSelectedView(v);
258+
}
244259
}
245260
});
246261
}

app/src/main/res/color/csl_date.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<selector
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
>
5+
6+
<item android:color="@android:color/white" android:state_selected="true"/>
7+
8+
<item android:color="@color/blue_grey_400"/>
9+
</selector>

app/src/main/res/values/styles.xml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<resources>
2+
23
<style name="Widget"/>
34

45
<style name="ConfirmationTextAppearance" parent="Base.TextAppearance.AppCompat">
@@ -21,8 +22,6 @@
2122
<item name="android:textStyle">italic</item>
2223
</style>
2324

24-
25-
2625
<style name="Widget.Size">
2726
<item name="android:layout_width">@dimen/product_color_size</item>
2827
<item name="android:layout_height">@dimen/product_color_size</item>
@@ -55,7 +54,7 @@
5554
<item name="android:layout_width">wrap_content</item>
5655
<item name="android:layout_height">wrap_content</item>
5756
<item name="android:background">@drawable/bg_square_date</item>
58-
<item name="android:textColor">@color/blue_grey_400</item>
57+
<item name="android:textColor">@color/csl_date</item>
5958
<item name="android:gravity">center</item>
6059
<item name="android:padding">@dimen/spacing_medium</item>
6160
</style>

0 commit comments

Comments
 (0)