Use domain thumbnail for the last visited location

This commit is contained in:
Gabriel Calero 2018-05-18 18:32:04 -03:00
parent 7a6b7b8ba3
commit 85cff19020
5 changed files with 36 additions and 5 deletions

View file

@ -22,6 +22,7 @@
#include <AddressManager.h>
#include "AndroidHelper.h"
#include <udt/PacketHeaders.h>
#include <SettingHandle.h>
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<QUrl> 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_,

View file

@ -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
});

View file

@ -24,21 +24,23 @@ import io.highfidelity.hifiinterface.provider.UserStoryDomainProvider;
public class DomainAdapter extends RecyclerView.Adapter<DomainAdapter.ViewHolder> {
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<DomainAdapter.ViewHolder
domainProvider.retrieve(filterText, new DomainProvider.DomainCallback() {
@Override
public void retrieveOk(List<Domain> 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();

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB