Skip to content

Commit 2caa4a7

Browse files
committed
add option to show sku in product search view
1 parent b2e104b commit 2caa4a7

File tree

4 files changed

+44
-3
lines changed

4 files changed

+44
-3
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
# Changelog
22
All notable changes to this project will be documented in this file.
33

4+
## [0.16.2]
5+
6+
### Added
7+
- Option to show the product sku in ProductSearchView
8+
49
## [0.16.1]
510

611
### Changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ allprojects {
2323
}
2424

2525
project.ext {
26-
sdkVersion='0.16.1'
26+
sdkVersion='0.16.2'
2727
versionCode=1
2828

2929
compileSdkVersion=28

ui/src/main/java/io/snabble/sdk/ui/search/ProductSearchView.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public class ProductSearchView extends FrameLayout {
3030
private String lastSearchQuery;
3131
private boolean allowAnyCode;
3232
private OnProductSelectedListener onProductSelectedListener;
33+
private boolean showSku;
34+
private boolean showBarcode;
3335

3436
public ProductSearchView(Context context) {
3537
super(context);
@@ -100,6 +102,7 @@ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
100102
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
101103
searchableProductAdapter = new SearchableProductAdapter();
102104
searchableProductAdapter.setShowBarcode(true);
105+
searchableProductAdapter.setShowSku(showSku);
103106
searchableProductAdapter.setSearchType(SearchableProductAdapter.SearchType.BARCODE);
104107
searchableProductAdapter.setOnProductSelectedListener(new OnProductSelectedListener() {
105108
@Override
@@ -189,4 +192,14 @@ public void setAllowAnyCode(boolean allowAnyCode) {
189192
public void setOnProductSelectedListener(OnProductSelectedListener onProductSelectedListener) {
190193
this.onProductSelectedListener = onProductSelectedListener;
191194
}
195+
196+
public void setShowSku(boolean showSku) {
197+
this.showSku = showSku;
198+
searchableProductAdapter.setShowSku(showSku);
199+
}
200+
201+
public void setShowBarcode(boolean showBarcode) {
202+
this.showBarcode = showBarcode;
203+
searchableProductAdapter.setShowBarcode(showBarcode);
204+
}
192205
}

ui/src/main/java/io/snabble/sdk/ui/search/SearchableProductAdapter.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import android.database.Cursor;
5+
import android.graphics.Typeface;
56
import android.os.CancellationSignal;
67
import android.os.Handler;
78
import android.os.HandlerThread;
@@ -10,6 +11,7 @@
1011
import androidx.recyclerview.widget.RecyclerView;
1112
import android.text.Spannable;
1213
import android.text.SpannableString;
14+
import android.text.SpannableStringBuilder;
1315
import android.text.style.StyleSpan;
1416
import android.view.LayoutInflater;
1517
import android.view.View;
@@ -46,6 +48,7 @@ public enum SearchType {
4648
private boolean showBarcode = true;
4749
private String lastQuery = "";
4850
private Project project;
51+
private boolean showSku;
4952

5053
public SearchableProductAdapter() {
5154
this.project = SnabbleUI.getProject();
@@ -107,6 +110,8 @@ public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int
107110
selectedCode = scannableCodes[0];
108111
}
109112

113+
SpannableStringBuilder ssb = new SpannableStringBuilder();
114+
110115
if (showBarcode) {
111116
for (Product.Code code : product.getScannableCodes()) {
112117
String lookupCode = code.lookupCode;
@@ -116,11 +121,25 @@ public void onBindViewHolder(final RecyclerView.ViewHolder viewHolder, final int
116121
}
117122

118123
Spannable spannable = highlight(lastQuery, lookupCode);
119-
holder.code.setText(spannable);
124+
ssb.append(spannable);
120125
selectedCode = code;
121126
break;
122127
}
123128
}
129+
}
130+
131+
if (showSku) {
132+
if (ssb.length() > 0) {
133+
ssb.append(" (");
134+
ssb.append(product.getSku());
135+
ssb.append(")");
136+
} else {
137+
ssb.append(product.getSku());
138+
}
139+
}
140+
141+
if (ssb.length() > 0) {
142+
holder.code.setText(ssb);
124143
} else {
125144
holder.code.setVisibility(View.GONE);
126145
}
@@ -144,6 +163,10 @@ public void setSearchType(SearchType type) {
144163
searchType = type;
145164
}
146165

166+
public void setShowSku(boolean showSku) {
167+
this.showSku = showSku;
168+
}
169+
147170
public void setOnProductSelectedListener(OnProductSelectedListener productSelectedListener) {
148171
this.productSelectedListener = productSelectedListener;
149172
}
@@ -215,7 +238,7 @@ private SpannableString highlight(final String query, final String text) {
215238
break;
216239
}
217240
final StyleSpan styleSpan = new StyleSpan(android.graphics.Typeface.BOLD);
218-
sb.setSpan(styleSpan, lastIndex, lastIndex + q.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
241+
sb.setSpan(styleSpan, lastIndex, lastIndex + q.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
219242
lastIndex += q.length();
220243
}
221244
}

0 commit comments

Comments
 (0)