From 469d485ab3fefc859978c8adf66566631c535d6f Mon Sep 17 00:00:00 2001 From: stom79 Date: Sun, 17 Dec 2017 10:09:16 +0100 Subject: [PATCH] Prepares layout + fixes attribute in API --- .../activities/ShowAccountActivity.java | 19 ++++++++ .../fr/gouv/etalab/mastodon/client/API.java | 4 +- .../mastodon/client/Entities/Account.java | 43 +++++++++++++++++++ .../res/drawable-anydpi/ic_card_travel.xml | 9 ++++ .../layout-sw600dp/activity_show_account.xml | 10 +++++ .../main/res/layout/activity_show_account.xml | 16 +++++-- app/src/main/res/values/strings.xml | 2 +- 7 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 app/src/main/res/drawable-anydpi/ic_card_travel.xml diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java index 42b36b3a8..52ab49d83 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/ShowAccountActivity.java @@ -91,6 +91,8 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsAccountInterface; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface; import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface; import fr.gouv.etalab.mastodon.client.Entities.Relationship; + +import static fr.gouv.etalab.mastodon.helper.Helper.THEME_DARK; import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor; import static fr.gouv.etalab.mastodon.helper.Helper.withSuffix; @@ -494,6 +496,23 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt startActivity(intent); } }); + //This account was moved to another one + if( account.getMoved_to_account() != null){ + TextView account_moved = findViewById(R.id.account_moved); + account_moved.setVisibility(View.VISIBLE); + if( theme == THEME_DARK) + changeDrawableColor(ShowAccountActivity.this, R.drawable.ic_card_travel,R.color.dark_icon); + else + changeDrawableColor(ShowAccountActivity.this, R.drawable.ic_card_travel,R.color.black); + Drawable imgTravel = ContextCompat.getDrawable(ShowAccountActivity.this, R.drawable.ic_card_travel); + assert imgTravel != null; + imgTravel.setBounds(0,0,(int) (20 * scale + 0.5f),(int) (20 * scale + 0.5f)); + account_moved.setCompoundDrawables(imgTravel, null, null, null); + //Retrieves content and make account names clickable + SpannableString spannableString = account.moveToText(ShowAccountActivity.this); + account_moved.setText(spannableString, TextView.BufferType.SPANNABLE); + } + if( account.getAcct().contains("@") ) warning_message.setVisibility(View.VISIBLE); else diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java index 568992ab2..8ba3ecd66 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java @@ -1752,8 +1752,8 @@ public class API { account.setStatuses_count(Integer.valueOf(resobj.get("statuses_count").toString())); account.setNote(resobj.get("note").toString()); try{ - account.setMoved_to_account(parseAccountResponse(context, resobj.getJSONObject("moved_to_account"))); - }catch (Exception ignored){} + account.setMoved_to_account(parseAccountResponse(context, resobj.getJSONObject("moved"))); + }catch (Exception ignored){ignored.printStackTrace();} account.setUrl(resobj.get("url").toString()); account.setAvatar(resobj.get("avatar").toString()); account.setAvatar_static(resobj.get("avatar_static").toString()); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java index 7c9261278..e42eeb358 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java @@ -14,12 +14,22 @@ * see . */ package fr.gouv.etalab.mastodon.client.Entities; +import android.content.*; +import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.TextPaint; +import android.text.style.ClickableSpan; +import android.view.View; import java.io.Serializable; import java.util.Date; +import fr.gouv.etalab.mastodon.R; +import fr.gouv.etalab.mastodon.activities.ShowAccountActivity; + /** * Created by Thomas on 23/04/2017. * Manage accounts @@ -52,6 +62,7 @@ public class Account implements Parcelable { private boolean isMakingAction = false; private Account moved_to_account; + public followAction getFollowType() { return followType; } @@ -313,4 +324,36 @@ public class Account implements Parcelable { public void setStatuses_count_str(String statuses_count_str) { this.statuses_count_str = statuses_count_str; } + + /** + * Makes the move to account clickable + * @param context Context + * @return SpannableString + */ + public SpannableString moveToText(final android.content.Context context){ + SpannableString spannableString = null; + if( this.getMoved_to_account() != null) { + spannableString = new SpannableString(context.getString(R.string.account_moved_to, this.getAcct(), "@"+this.getMoved_to_account().getAcct())); + int startPositionTar = spannableString.toString().indexOf("@"+this.getMoved_to_account().getAcct()); + int endPositionTar = startPositionTar + ("@"+this.getMoved_to_account().getAcct()).length(); + final String idTar = this.getMoved_to_account().getId(); + spannableString.setSpan(new ClickableSpan() { + @Override + public void onClick(View textView) { + Intent intent = new Intent(context, ShowAccountActivity.class); + Bundle b = new Bundle(); + b.putString("accountId", idTar); + intent.putExtras(b); + context.startActivity(intent); + } + @Override + public void updateDrawState(TextPaint ds) { + super.updateDrawState(ds); + } + }, + startPositionTar, endPositionTar, + Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + } + return spannableString; + } } diff --git a/app/src/main/res/drawable-anydpi/ic_card_travel.xml b/app/src/main/res/drawable-anydpi/ic_card_travel.xml new file mode 100644 index 000000000..29cd27ee2 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_card_travel.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout-sw600dp/activity_show_account.xml b/app/src/main/res/layout-sw600dp/activity_show_account.xml index cebf63edd..3528685be 100644 --- a/app/src/main/res/layout-sw600dp/activity_show_account.xml +++ b/app/src/main/res/layout-sw600dp/activity_show_account.xml @@ -186,6 +186,16 @@ android:layout_height="wrap_content" /> + diff --git a/app/src/main/res/layout/activity_show_account.xml b/app/src/main/res/layout/activity_show_account.xml index 688d0bf4c..e22c2cc23 100644 --- a/app/src/main/res/layout/activity_show_account.xml +++ b/app/src/main/res/layout/activity_show_account.xml @@ -120,14 +120,15 @@ android:gravity="center" android:orientation="horizontal" android:layout_height="wrap_content" - > + android:baselineAligned="false"> + android:layout_height="wrap_content" + tools:ignore="UselessParent"> - + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9ef3ef87c..3623b2e01 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -465,5 +465,5 @@ Your lists - %1$s has moved to: %2$s + %1$s has moved to %2$s \ No newline at end of file