|
|
@@ -154,13 +154,8 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
}
|
|
|
if (StringUtil.isFull(tag)) {
|
|
|
// 키워드를 텍스트필드에 넣을 때 이벤트 발생을 막기위해 리스너 제거/재등록
|
|
|
- view.removeTextWatcher();
|
|
|
view.setBoldGuideHash(false);
|
|
|
- // finder 선택 태그로 설정
|
|
|
- String stripTag = stripTag(tag);
|
|
|
- finder = new CharFinder(stripTag);
|
|
|
- view.setKeyword(stripTag);
|
|
|
- view.addTextWatcher();
|
|
|
+ replaceTag(tag);
|
|
|
|
|
|
search(tag);
|
|
|
}
|
|
|
@@ -224,7 +219,6 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
private void search(String tag) {
|
|
|
if (StringUtil.isFull(tag)) {
|
|
|
model.saveLatestTag(tag);
|
|
|
- model.setTag(tag);
|
|
|
|
|
|
model.setDeliveryPackaging(model.getTag());
|
|
|
go(ScreenID.SEARCH_RESULT);
|
|
|
@@ -253,9 +247,27 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void replaceTag(String tag) {
|
|
|
+ view.removeTextWatcher();
|
|
|
+ model.setTag(tag);
|
|
|
+ String stripTag = stripTag(tag);
|
|
|
+ finder.setPrevStr(stripTag);
|
|
|
+ view.setKeyword(stripTag);
|
|
|
+ view.addTextWatcher();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void onSearchAfterTextChanged(Editable s) {
|
|
|
+ Log.w("APP# SearchPresenter | onSearchAfterTextChanged", "|" + "s: " + s.toString());
|
|
|
+ Log.w("APP# SearchPresenter | onSearchAfterTextChanged", "|" + " tag count: " + model.getTagCount());
|
|
|
+
|
|
|
+ if (model.getTagCount() > model.getTagMaxCount()) {
|
|
|
+ // 태그는 5개까지만 허용
|
|
|
+ String tag = model.getRestrictedTag();
|
|
|
+ replaceTag(tag);
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- public void afterTextChanged(Editable s) {
|
|
|
- Log.w("APP# SearchPresenter | afterTextChanged", "|" + "s: " + s.toString());
|
|
|
char[] str = new char[1];
|
|
|
int[] index = new int[1];
|
|
|
int prevLen = finder.getLength();
|
|
|
@@ -264,14 +276,14 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
|
|
|
int afterLen = finder.getLength();
|
|
|
|
|
|
- Log.i("APP# SearchPresenter | afterTextChanged", "|" + "prevlen: " + prevLen + ", afterlen: " + afterLen);
|
|
|
- Log.i("APP# SearchPresenter | afterTextChanged", "|" + "str[0]: " + str[0] + ", index[0]: " + index[0] + ", bs: " + isBackspace);
|
|
|
+ Log.i("APP# SearchPresenter | onSearchAfterTextChanged", "|" + "prevlen: " + prevLen + ", afterlen: " + afterLen);
|
|
|
+ Log.i("APP# SearchPresenter | onSearchAfterTextChanged", "|" + "str[0]: " + str[0] + ", index[0]: " + index[0] + ", bs: " + isBackspace);
|
|
|
|
|
|
if (index[0] > -1) {
|
|
|
if (isBackspace) {
|
|
|
// backspace
|
|
|
// # 이 삭제되면
|
|
|
- if (hash.equals(String.valueOf(str[0]))) {
|
|
|
+ if (str[0] == hash.charAt(0)) {
|
|
|
// 이전 char 가 ' ' 이라면 삭제 해줌.
|
|
|
int idx = index[0] - 1;
|
|
|
if (idx > -1) {
|
|
|
@@ -286,15 +298,17 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
// 스페이스 입력
|
|
|
if (prevLen == 0) {
|
|
|
// 첫 칸에는 스페이스 제거
|
|
|
- s.delete(0, 1);
|
|
|
+// s.delete(0, 1);
|
|
|
+ view.setBoldGuideHash(true);
|
|
|
+ replaceTag("");
|
|
|
}
|
|
|
else {
|
|
|
- replaceHash(s);
|
|
|
+ convertToHashTag(s);
|
|
|
}
|
|
|
}
|
|
|
else if (str[0] == hash.charAt(0)) {
|
|
|
// # 직접 입력
|
|
|
- replaceHash(s);
|
|
|
+ convertToHashTag(s);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -302,15 +316,21 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
|
|
|
String hash = StringUtil.HASH;
|
|
|
|
|
|
- private Editable replaceHash(Editable s) {
|
|
|
+ private Editable convertToHashTag(Editable s) {
|
|
|
Editable ab = removeHash(s);
|
|
|
|
|
|
- if (ab.toString().contains(hash) == false && ab.toString().length() > 0) {
|
|
|
- ab = new SpannableStringBuilder(ab.toString().replace(" ", " ").replace(" ", " " + hash));
|
|
|
- /**
|
|
|
- * s.replace 를 실행하면 afterTextChanged() 가 다시 호출되므로 주의!!
|
|
|
- */
|
|
|
- s.replace(0, s.length(), ab);
|
|
|
+ if (ab.toString().contains(hash) == false) {
|
|
|
+ if (ab.toString().length() > 0) {
|
|
|
+ ab = new SpannableStringBuilder(ab.toString().replace(" ", " ").replace(" ", " " + hash));
|
|
|
+ /**
|
|
|
+ * s.replace 를 실행하면 onSearchAfterTextChanged() 가 다시 호출되므로 주의!!
|
|
|
+ */
|
|
|
+ s.replace(0, s.length(), ab);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ // 해시 제거하면 빈칸임.
|
|
|
+ s.clear();
|
|
|
+ }
|
|
|
}
|
|
|
return s;
|
|
|
}
|