From 3da1c3d655f31829280f0ccd0cdcd07fb5f55bb7 Mon Sep 17 00:00:00 2001 From: tom79 Date: Wed, 30 Oct 2019 08:35:09 +0100 Subject: Update layouts --- .../activities/ShowConversationActivity.java | 26 +- .../fedilab/android/client/Entities/Status.java | 23 +- .../fedilab/android/drawers/StatusListAdapter.java | 25 +- app/src/main/res/drawable/diag_bottom.xml | 18 + app/src/main/res/drawable/diag_top.xml | 18 + app/src/main/res/layout/drawer_status_focused.xml | 1406 ++++++++++---------- 6 files changed, 838 insertions(+), 678 deletions(-) create mode 100644 app/src/main/res/drawable/diag_bottom.xml create mode 100644 app/src/main/res/drawable/diag_top.xml diff --git a/app/src/main/java/app/fedilab/android/activities/ShowConversationActivity.java b/app/src/main/java/app/fedilab/android/activities/ShowConversationActivity.java index 07d50150e..19c276ad7 100644 --- a/app/src/main/java/app/fedilab/android/activities/ShowConversationActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ShowConversationActivity.java @@ -367,17 +367,19 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve if (apiResponse.getContext() == null || apiResponse.getContext().getAncestors() == null) { return; } - if (MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.GNU && MainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) { + if (BaseMainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.GNU && BaseMainActivity.social != UpdateAccountInfoAsyncTask.SOCIAL.FRIENDICA) { statusListAdapter.setConversationPosition(apiResponse.getContext().getAncestors().size()); if (!expanded) { if (apiResponse.getContext().getAncestors() != null && apiResponse.getContext().getAncestors().size() > 0) { statuses.addAll(0, apiResponse.getContext().getAncestors()); statusListAdapter.notifyItemRangeInserted(0, apiResponse.getContext().getAncestors().size()); } + int targetedPosition = statuses.size()-1; if (apiResponse.getContext().getDescendants() != null && apiResponse.getContext().getDescendants().size() > 0) { statuses.addAll(apiResponse.getContext().getAncestors().size() + 1, apiResponse.getContext().getDescendants()); statusListAdapter.notifyItemRangeChanged(apiResponse.getContext().getAncestors().size() + 1, apiResponse.getContext().getDescendants().size()); } + decorate(targetedPosition); } else { List statusesTemp = apiResponse.getContext().getDescendants(); int i = 1; @@ -391,6 +393,7 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve } i++; } + decorate(position); statusListAdapter.notifyItemRangeChanged(1, apiResponse.getContext().getDescendants().size()); lv_status.scrollToPosition(position); } @@ -411,6 +414,7 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve } statusListAdapter = new StatusListAdapter((statuses.size() - 1 - i), null, isOnWifi, statuses); statusListAdapter.setConversationPosition((statuses.size() - 1 - i)); + decorate(0); final LinearLayoutManager mLayoutManager; mLayoutManager = new LinearLayoutManager(this); lv_status.setLayoutManager(mLayoutManager); @@ -430,11 +434,29 @@ public class ShowConversationActivity extends BaseActivity implements OnRetrieve setTheme(R.style.AppThemeDark_NoActionBar); } - lv_status.addItemDecoration(new ConversationDecoration(ShowConversationActivity.this, theme)); lv_status.setAdapter(statusListAdapter); } } } + + private void decorate(int targetedPosition){ + for(int i =0 ; i < statuses.size() ; i++){ + if (i == targetedPosition) { + if( targetedPosition < statuses.size()-1 ) + statuses.get(targetedPosition).setShowBottomLine(true); + if( targetedPosition > 0 && statuses.get(targetedPosition).getIn_reply_to_id().compareTo(statuses.get(targetedPosition-1).getId()) == 0){ + statuses.get(targetedPosition-1).setShowBottomLine(true); + statuses.get(targetedPosition).setShowTopLine(true); + } + } else if (0 < i && i <= statuses.size() - 1) { + if( statuses.get(i-1).getId().compareTo(statuses.get(i).getIn_reply_to_id()) == 0){ + statuses.get(i-1).setShowBottomLine(true); + statuses.get(i).setShowTopLine(true); + } + } + } + statusListAdapter.notifyItemRangeChanged(0,statuses.size()); + } } diff --git a/app/src/main/java/app/fedilab/android/client/Entities/Status.java b/app/src/main/java/app/fedilab/android/client/Entities/Status.java index 85081fcac..aee41841b 100644 --- a/app/src/main/java/app/fedilab/android/client/Entities/Status.java +++ b/app/src/main/java/app/fedilab/android/client/Entities/Status.java @@ -149,6 +149,8 @@ public class Status implements Parcelable { private boolean showSpoiler = false; private String quickReplyContent; private String quickReplyPrivacy; + private boolean showBottomLine = false; + private boolean showTopLine = false; public Status() { } @@ -243,7 +245,8 @@ public class Status implements Parcelable { dest.writeByte(this.isFocused ? (byte) 1 : (byte) 0); dest.writeString(this.quickReplyContent); dest.writeString(this.quickReplyPrivacy); - + dest.writeByte(this.showBottomLine ? (byte) 1 : (byte) 0); + dest.writeByte(this.showTopLine ? (byte) 1 : (byte) 0); } protected Status(Parcel in) { @@ -314,6 +317,8 @@ public class Status implements Parcelable { this.isFocused = in.readByte() != 0; this.quickReplyContent = in.readString(); this.quickReplyPrivacy = in.readString(); + this.showBottomLine = in.readByte() != 0; + this.showTopLine = in.readByte() != 0; } public static final Creator CREATOR = new Creator() { @@ -1829,4 +1834,20 @@ public class Status implements Parcelable { public void setQuickReplyPrivacy(String quickReplyPrivacy) { this.quickReplyPrivacy = quickReplyPrivacy; } + + public boolean isShowBottomLine() { + return showBottomLine; + } + + public void setShowBottomLine(boolean showBottomLine) { + this.showBottomLine = showBottomLine; + } + + public boolean isShowTopLine() { + return showTopLine; + } + + public void setShowTopLine(boolean showTopLine) { + this.showTopLine = showTopLine; + } } diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index 0c00bcbcb..59ffc1128 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -38,6 +38,7 @@ import androidx.annotation.NonNull; import androidx.appcompat.widget.SwitchCompat; import androidx.appcompat.widget.TooltipCompat; import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.content.ContextCompat; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; @@ -659,7 +660,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct ImageView status_privacy; LinearLayout status_container2; LinearLayout status_container3; - LinearLayout main_container; + ConstraintLayout main_container; TextView yandex_translate; ConstraintLayout status_action_container; Button fetch_more; @@ -886,10 +887,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct context = parent.getContext(); LayoutInflater layoutInflater = LayoutInflater.from(this.context); - if (viewType == DISPLAYED_STATUS) + if (viewType == DISPLAYED_STATUS || viewType == COMPACT_STATUS) return new ViewHolder(layoutInflater.inflate(R.layout.drawer_status, parent, false)); - else if (viewType == COMPACT_STATUS) - return new ViewHolder(layoutInflater.inflate(R.layout.drawer_status_compact, parent, false)); else if (viewType == CONSOLE_STATUS) return new ViewHolder(layoutInflater.inflate(R.layout.drawer_status_console, parent, false)); else if (viewType == FOCUSED_STATUS) @@ -4381,6 +4380,15 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct if( statuses.get(i).getQuickReplyPrivacy() != null){ status.setQuickReplyPrivacy(statuses.get(i).getQuickReplyPrivacy()); } + if( statuses.get(i).getQuickReplyPrivacy() != null){ + status.setQuickReplyPrivacy(statuses.get(i).getQuickReplyPrivacy()); + } + if( statuses.get(i).isShowTopLine()){ + status.setShowTopLine(true); + } + if( statuses.get(i).isShowBottomLine()){ + status.setShowBottomLine(true); + } statuses.set(i, status); statusListAdapter.notifyItemChanged(i); /*if( mRecyclerView != null) { @@ -4421,6 +4429,15 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct if( statuses.get(i).getQuickReplyPrivacy() != null){ status.setQuickReplyPrivacy(statuses.get(i).getQuickReplyPrivacy()); } + if( statuses.get(i).getQuickReplyPrivacy() != null){ + status.setQuickReplyPrivacy(statuses.get(i).getQuickReplyPrivacy()); + } + if( statuses.get(i).isShowTopLine()){ + status.setShowTopLine(true); + } + if( statuses.get(i).isShowBottomLine()){ + status.setShowBottomLine(true); + } statuses.set(i, status); statusListAdapter.notifyItemChanged(i); /*if( mRecyclerView != null) { diff --git a/app/src/main/res/drawable/diag_bottom.xml b/app/src/main/res/drawable/diag_bottom.xml new file mode 100644 index 000000000..b61b9cb08 --- /dev/null +++ b/app/src/main/res/drawable/diag_bottom.xml @@ -0,0 +1,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/diag_top.xml b/app/src/main/res/drawable/diag_top.xml new file mode 100644 index 000000000..c967844ae --- /dev/null +++ b/app/src/main/res/drawable/diag_top.xml @@ -0,0 +1,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/drawer_status_focused.xml b/app/src/main/res/layout/drawer_status_focused.xml index 6f559058a..422bf5ff9 100644 --- a/app/src/main/res/layout/drawer_status_focused.xml +++ b/app/src/main/res/layout/drawer_status_focused.xml @@ -14,816 +14,880 @@ You should have received a copy of the GNU General Public License along with Fedilab; if not, see . --> - + android:showDividers="end"> + + + + + + + + + + + + + + + android:orientation="vertical" + android:paddingTop="10dp" + android:layout_marginStart="20dp" + android:layout_marginLeft="20dp" + android:layout_marginEnd="20dp" + android:layout_marginRight="20dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent"> + android:baselineAligned="false" + android:orientation="horizontal"> - - - + android:orientation="vertical"> - + - + - - + - - + - + + - + + - + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone" /> - - + android:layout_marginStart="10dp" + android:layout_marginLeft="10dp" + android:layout_weight="1" + android:orientation="vertical"> - - - - - - - - - - -