From af785d60727a8e27c58dd7b8e3a2d1e052139180 Mon Sep 17 00:00:00 2001 From: Cristian Luis Duarte Date: Thu, 19 Apr 2018 17:22:53 -0300 Subject: [PATCH] Android - Search - Cleanup tabs code and code in general. Show 'no places' message when no results from search. --- .../hifiinterface/HomeActivity.java | 83 +++++++--------- .../provider/UserStoryDomainProvider.java | 10 +- .../hifiinterface/view/DomainAdapter.java | 40 +++++--- .../app/src/main/res/layout/content_home.xml | 96 +++++++------------ android/app/src/main/res/values/strings.xml | 3 +- 5 files changed, 102 insertions(+), 130 deletions(-) diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java b/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java index aa68818b05..c4207de898 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/HomeActivity.java @@ -19,8 +19,6 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.EditText; -import android.widget.TabHost; -import android.widget.TabWidget; import android.widget.TextView; import io.highfidelity.hifiinterface.view.DomainAdapter; @@ -38,9 +36,11 @@ public class HomeActivity extends AppCompatActivity implements NavigationView.On public static final int ENTER_DOMAIN_URL = 1; - private DomainAdapter domainAdapter; + private DomainAdapter mDomainAdapter; private DrawerLayout mDrawerLayout; private NavigationView mNavigationView; + private RecyclerView mDomainsView; + private TextView searchNoResultsView; @Override protected void onCreate(Bundle savedInstanceState) { @@ -59,46 +59,40 @@ public class HomeActivity extends AppCompatActivity implements NavigationView.On mNavigationView = (NavigationView) findViewById(R.id.nav_view); mNavigationView.setNavigationItemSelectedListener(this); - TabHost tabs = (TabHost)findViewById(R.id.tabhost); - tabs.setup(); + searchNoResultsView = findViewById(R.id.searchNoResultsView); - TabHost.TabSpec spec=tabs.newTabSpec("featured"); - spec.setContent(R.id.featured); - spec.setIndicator(getString(R.string.featured)); - tabs.addTab(spec); - - spec = tabs.newTabSpec("popular"); - spec.setContent(R.id.popular); - spec.setIndicator(getString(R.string.popular)); - tabs.addTab(spec); - - spec = tabs.newTabSpec("bookmarks"); - spec.setContent(R.id.bookmarks); - spec.setIndicator(getString(R.string.bookmarks)); - tabs.addTab(spec); - - tabs.setCurrentTab(0); - - TabWidget tabwidget=tabs.getTabWidget(); - for(int i=0; i { + if (i == KeyEvent.KEYCODE_ENTER) { + String urlString = searchView.getText().toString(); + if (!urlString.trim().isEmpty()) { + urlString = HifiUtils.getInstance().sanitizeHifiUrl(urlString); } - return false; + gotoDomain(urlString); + return true; } + return false; }); updateLoginMenu(); diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java index 6b1452ed34..32980e6547 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/provider/UserStoryDomainProvider.java @@ -4,10 +4,7 @@ import android.util.Log; import android.util.MutableInt; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; -import java.util.function.BinaryOperator; -import java.util.function.Consumer; import io.highfidelity.hifiinterface.HifiUtils; import io.highfidelity.hifiinterface.view.DomainAdapter; @@ -56,9 +53,7 @@ public class UserStoryDomainProvider implements DomainProvider { getUserStoryPage(1, e -> { allStories.subList(counter.value, allStories.size()).forEach(userStory -> { - // TODO Report error? e filter.filterOrAdd(userStory); - // TODO Visibility stuff according to size of suggestions? }); if (domainCallback != null) { domainCallback.retrieveOk(suggestions); //ended @@ -68,7 +63,6 @@ public class UserStoryDomainProvider implements DomainProvider { allStories.forEach(userStory -> { counter.value++; filter.filterOrAdd(userStory); - // TODO Visibility stuff according to size of suggestions? }); } ); @@ -91,7 +85,7 @@ public class UserStoryDomainProvider implements DomainProvider { UserStories data = response.body(); allStories.addAll(data.user_stories); if (data.current_page < data.total_pages && data.current_page <= MAX_PAGES_TO_GET) { - if (pageNumber == 1 && firstPageCallback!=null) { + if (pageNumber == 1 && firstPageCallback != null) { firstPageCallback.callback(null); } getUserStoryPage(pageNumber + 1, restOfPagesCallback, null); @@ -209,7 +203,7 @@ public class UserStoryDomainProvider implements DomainProvider { // New fields? tags, description String searchText() { - if (searchText==null) { + if (searchText == null) { searchText = place_name == null? "" : place_name.toUpperCase(); } return searchText; diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java b/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java index 6ea7db076a..4c0f54e354 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/view/DomainAdapter.java @@ -37,17 +37,7 @@ public class DomainAdapter extends RecyclerView.Adapter - + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/searchView" + android:layout_marginTop="32dp" + android:text="@string/search_no_results" + android:visibility="gone" + /> - - - - - - - - - - - - - - - - - - - + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index a0dd650da7..2cd8944b6f 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -21,5 +21,6 @@ Username or password incorrect. Logging into High Fidelity Search for a place by name - + Loading places… + No places exist with that name