diff --git a/android/app/src/main/cpp/native.cpp b/android/app/src/main/cpp/native.cpp index 2a82f3e3a2..437505be3f 100644 --- a/android/app/src/main/cpp/native.cpp +++ b/android/app/src/main/cpp/native.cpp @@ -22,6 +22,7 @@ #include #include "AndroidHelper.h" #include +#include QAndroidJniObject __interfaceActivity; QAndroidJniObject __loginCompletedListener; @@ -210,6 +211,12 @@ JNIEXPORT jstring JNICALL Java_io_highfidelity_hifiinterface_HifiUtils_protocolV return env->NewStringUTF(protocolVersionsSignatureBase64().toLatin1().data()); } +JNIEXPORT jstring JNICALL Java_io_highfidelity_hifiinterface_fragment_HomeFragment_nativeGetLastLocation(JNIEnv *env, jobject instance) { + Setting::Handle currentAddressHandle(QStringList() << "AddressManager" << "address", QString()); + QUrl lastLocation = currentAddressHandle.get(); + return env->NewStringUTF(lastLocation.toString().toLatin1().data()); +} + JNIEXPORT void JNICALL Java_io_highfidelity_hifiinterface_fragment_LoginFragment_nativeLogin(JNIEnv *env, jobject instance, jstring username_, jstring password_, diff --git a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java index 606dbca123..e05b25f3c3 100644 --- a/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java +++ b/android/app/src/main/java/io/highfidelity/hifiinterface/fragment/HomeFragment.java @@ -33,6 +33,8 @@ public class HomeFragment extends Fragment { private OnHomeInteractionListener mListener; + public native String nativeGetLastLocation(); + public HomeFragment() { // Required empty public constructor } @@ -60,7 +62,7 @@ public class HomeFragment extends Fragment { int numberOfColumns = 1; GridLayoutManager gridLayoutMgr = new GridLayoutManager(getContext(), numberOfColumns); mDomainsView.setLayoutManager(gridLayoutMgr); - mDomainAdapter = new DomainAdapter(getContext(), HifiUtils.getInstance().protocolVersionSignature()); + mDomainAdapter = new DomainAdapter(getContext(), HifiUtils.getInstance().protocolVersionSignature(), nativeGetLastLocation()); mDomainAdapter.setClickListener((view, position, domain) -> { new Handler(getActivity().getMainLooper()).postDelayed(() -> mListener.onSelectedDomain(domain.url), 400); // a delay so the ripple effect can be seen }); 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 907433d938..268bfdef3a 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 @@ -24,21 +24,23 @@ import io.highfidelity.hifiinterface.provider.UserStoryDomainProvider; public class DomainAdapter extends RecyclerView.Adapter { private static final String TAG = "HiFi Interface"; - private static final String DEFAULT_THUMBNAIL_PLACE = "android.resource://io.highfidelity.hifiinterface/" + R.drawable.thumbnail_default_place; + private static final String DEFAULT_THUMBNAIL_PLACE = "android.resource://io.highfidelity.hifiinterface/" + R.drawable.domain_placeholder; private Context mContext; private LayoutInflater mInflater; private ItemClickListener mClickListener; private String mProtocol; + private String mLastLocation; private UserStoryDomainProvider domainProvider; private AdapterListener mAdapterListener; // references to our domains private Domain[] mDomains = {}; - public DomainAdapter(Context c, String protocol) { + public DomainAdapter(Context c, String protocol, String lastLocation) { mContext = c; this.mInflater = LayoutInflater.from(mContext); mProtocol = protocol; + mLastLocation = lastLocation; domainProvider = new UserStoryDomainProvider(mProtocol); loadDomains(""); } @@ -51,9 +53,29 @@ public class DomainAdapter extends RecyclerView.Adapter domain) { - if (filterText.length() == 0) { - domain.add(0, new Domain(mContext.getString(R.string.your_last_location), "", DEFAULT_THUMBNAIL_PLACE)); + Domain lastVisitedDomain = new Domain(mContext.getString(R.string.your_last_location), mLastLocation, DEFAULT_THUMBNAIL_PLACE); + if (!mLastLocation.isEmpty() && mLastLocation.contains("://")) { + int startIndex = mLastLocation.indexOf("://"); + int endIndex = mLastLocation.indexOf("/", startIndex + 3); + String toSearch = mLastLocation.substring(0, endIndex + 1).toLowerCase(); + for (Domain d : domain) { + if (d.url.toLowerCase().startsWith(toSearch)) { + lastVisitedDomain.thumbnail = d.thumbnail; + } + } } + + if (filterText.length() == 0) { + domain.add(0, lastVisitedDomain); + } + + for (Domain d : domain) { + if (d.thumbnail != null && + d.thumbnail.endsWith("assets/places/thumbnail-default-place-e5a3f33e773ab699495774990a562f9f7693dc48ef90d8be6985c645a0280f75.png")) { + d.thumbnail = DEFAULT_THUMBNAIL_PLACE; + } + } + mDomains = new Domain[domain.size()]; mDomains = domain.toArray(mDomains); notifyDataSetChanged(); diff --git a/android/app/src/main/res/drawable/domain_placeholder.png b/android/app/src/main/res/drawable/domain_placeholder.png new file mode 100644 index 0000000000..7852ec473f Binary files /dev/null and b/android/app/src/main/res/drawable/domain_placeholder.png differ diff --git a/android/app/src/main/res/drawable/thumbnail_default_place.png b/android/app/src/main/res/drawable/thumbnail_default_place.png deleted file mode 100644 index 1bd7d02ffb..0000000000 Binary files a/android/app/src/main/res/drawable/thumbnail_default_place.png and /dev/null differ