|
|
@@ -46,6 +46,7 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
private void renderLatest() {
|
|
|
List<TagBean> list = model.getLatestTagBeans();
|
|
|
if (null != list && list.size() > 0) {
|
|
|
+ model.setShowingAutoCompletion(false);
|
|
|
view.setVisibleAutoCompletionTag(false);
|
|
|
view.setVisibleLatestTag(true);
|
|
|
view.drawLatestTag(list);
|
|
|
@@ -58,6 +59,7 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
private void renderPopular() {
|
|
|
List<TagBean> list = model.getPopularTagBeans();
|
|
|
if (null != list && list.size() > 0) {
|
|
|
+ model.setShowingAutoCompletion(false);
|
|
|
view.setVisibleAutoCompletionTag(false);
|
|
|
view.setVisiblePopularTag(true);
|
|
|
view.drawPopularTag(list);
|
|
|
@@ -70,6 +72,7 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
private void renderAutoCompletion() {
|
|
|
List<TagKeywordBean> list = model.getAutoCompletionBeans();
|
|
|
if (null != list && list.size() > 0) {
|
|
|
+ model.setShowingAutoCompletion(true);
|
|
|
view.setVisibleLatestTag(false);
|
|
|
view.setVisiblePopularTag(false);
|
|
|
view.setVisibleAutoCompletionTag(true);
|
|
|
@@ -95,7 +98,10 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
@Override
|
|
|
protected void startInternal() {
|
|
|
// 최근 검색어 리로드
|
|
|
- renderLatest();
|
|
|
+ // 자동 완성이 표시되어 있지 않을 경우에만 갱신
|
|
|
+ if (model.isShowingAutoCompletion() == false) {
|
|
|
+ renderLatest();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -129,7 +135,7 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
protected void onEventInternal(Event event) {
|
|
|
int integer;
|
|
|
int index;
|
|
|
- String tag;
|
|
|
+ String tag = null;
|
|
|
switch (event.getEventId()) {
|
|
|
case Event.CLICK:
|
|
|
integer = event.getInteger();
|
|
|
@@ -137,17 +143,25 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
if (integer == Event.TAG_LATEST) {
|
|
|
// 최근 검색 태그
|
|
|
tag = model.getLatestTagBeans().get(index).getTagName();
|
|
|
- search(tag);
|
|
|
}
|
|
|
else if (integer == Event.TAG_POPULAR) {
|
|
|
// 인기 태그
|
|
|
tag = model.getPopularTagBeans().get(index).getTagName();
|
|
|
- search(tag);
|
|
|
}
|
|
|
else if (integer == Event.TAG_AUTO_COMPLETION) {
|
|
|
+ // 자동 완성
|
|
|
tag = model.getAutoCompletionBeans().get(index).getTagName();
|
|
|
+ }
|
|
|
+ if (StringUtil.isFull(tag)) {
|
|
|
+ // 키워드를 텍스트필드에 넣을 때 이벤트 발생을 막기위해 리스너 제거/재등록
|
|
|
+ view.removeTextWatcher();
|
|
|
+ view.setBoldGuideHash(false);
|
|
|
+ view.setKeyword(stripTag(tag));
|
|
|
+ view.addTextWatcher();
|
|
|
+
|
|
|
search(tag);
|
|
|
}
|
|
|
+
|
|
|
break;
|
|
|
case Event.DELETE:
|
|
|
integer = event.getInteger();
|
|
|
@@ -163,8 +177,16 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ protected String stripTag(String s) {
|
|
|
+ if (StringUtil.isFull(s) && StringUtil.HASH.equals(String.valueOf(s.charAt(0)))) {
|
|
|
+ s = s.substring(1, s.length());
|
|
|
+ }
|
|
|
+ return s;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public void onScreenReady() {
|
|
|
+ view.addTextWatcher();
|
|
|
view.setVisibleLatestTag(false);
|
|
|
view.setVisiblePopularTag(false);
|
|
|
view.setVisibleAutoCompletionTag(false);
|
|
|
@@ -267,6 +289,10 @@ public class SearchPresenter extends Presenter<SearchModel, ISearchView> {
|
|
|
replaceHash(s);
|
|
|
}
|
|
|
}
|
|
|
+ else if (str[0] == hash.charAt(0)) {
|
|
|
+ // # 직접 입력
|
|
|
+ replaceHash(s);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|