Skip to content

Commit ada1a78

Browse files
committed
Support Android 15 in profiles
1 parent 528d6a5 commit ada1a78

File tree

4 files changed

+67
-37
lines changed

4 files changed

+67
-37
lines changed

app/src/main/java/org/thunderdog/challegram/navigation/NavigationController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1553,7 +1553,7 @@ public void applyBottomInset (ViewController<?> controller) {
15531553
controller.setBottomInset(bottomInset, bottomInsetWithoutIme);
15541554
} else {
15551555
View view = controller.getValue();
1556-
Views.setBottomMargin(view, bottomInset);
1556+
Views.setPaddingBottom(view, bottomInset);
15571557
}
15581558
}
15591559

app/src/main/java/org/thunderdog/challegram/ui/EncryptionKeyController.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.thunderdog.challegram.theme.Theme;
3939
import org.thunderdog.challegram.tool.Fonts;
4040
import org.thunderdog.challegram.tool.Screen;
41+
import org.thunderdog.challegram.tool.Views;
4142
import org.thunderdog.challegram.util.CustomTypefaceSpan;
4243
import org.thunderdog.challegram.widget.NoScrollTextView;
4344
import org.thunderdog.challegram.widget.ShadowView;
@@ -77,10 +78,26 @@ public CharSequence getName () {
7778
return Lang.getString(R.string.EncryptionKey);
7879
}
7980

81+
private RelativeLayout contentView;
82+
83+
@Override
84+
public boolean supportsBottomInset () {
85+
return true;
86+
}
87+
88+
@Override
89+
protected void onBottomInsetChanged (int extraBottomInset, int extraBottomInsetWithoutIme, boolean isImeInset) {
90+
super.onBottomInsetChanged(extraBottomInset, extraBottomInsetWithoutIme, isImeInset);
91+
if (contentView != null) {
92+
Views.setPaddingBottom(contentView, extraBottomInset);
93+
}
94+
}
95+
8096
@Override
8197
protected View onCreateView (Context context) {
82-
final RelativeLayout contentView = new RelativeLayout(context);
98+
contentView = new RelativeLayout(context);
8399
contentView.setLayoutParams(FrameLayoutFix.newParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
100+
Views.setPaddingBottom(contentView, extraBottomInset);
84101
ViewSupport.setThemedBackground(contentView, ColorId.background, this);
85102

86103
final FrameLayoutFix keyView = new FrameLayoutFix(context) {

app/src/main/java/org/thunderdog/challegram/ui/ProfileController.java

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@
146146
import me.vkryl.core.collection.IntList;
147147
import me.vkryl.core.lambda.CancellableRunnable;
148148
import me.vkryl.core.lambda.FutureBool;
149+
import me.vkryl.core.lambda.RunnableData;
149150
import me.vkryl.core.lambda.RunnableLong;
150151
import tgx.td.ChatId;
151152
import tgx.td.Td;
@@ -945,6 +946,19 @@ private void makeChannelChecks () {
945946
private RtlViewPager pager;
946947
private ViewControllerPagerAdapter pagerAdapter;
947948

949+
@Override
950+
public boolean supportsBottomInset () {
951+
return true;
952+
}
953+
954+
@Override
955+
protected void onBottomInsetChanged (int extraBottomInset, int extraBottomInsetWithoutIme, boolean isImeInset) {
956+
super.onBottomInsetChanged(extraBottomInset, extraBottomInsetWithoutIme, isImeInset);
957+
iterateControllers(c ->
958+
c.setBottomInset(extraBottomInset, extraBottomInsetWithoutIme)
959+
);
960+
}
961+
948962
@Override
949963
protected int getBackButton () {
950964
return BackHeaderButton.TYPE_BACK;
@@ -5511,12 +5525,7 @@ private int calculateCachedContentScrollY () {
55115525
}
55125526

55135527
private void stopCachedScrolls () {
5514-
for (int i = 0; i < pagerAdapter.getCount(); i++) {
5515-
ViewController<?> c = pagerAdapter.findCachedControllerByPosition(i);
5516-
if (c != null) {
5517-
((SharedBaseController<?>) c).stopScroll();
5518-
}
5519-
}
5528+
iterateControllers(SharedBaseController::stopScroll);
55205529
}
55215530

55225531
private boolean belongsToBaseRecycler (int width, float y) {
@@ -5548,26 +5557,25 @@ private boolean belongsToBaseRecycler (int width, float y) {
55485557

55495558
private void onItemsHeightProbablyChanged () {
55505559
cachedItemsWidth = cachedItemsHeight = 0;
5560+
iterateControllers(SharedBaseController::onItemsHeightProbablyChanged);
5561+
checkTopViewPosition();
5562+
}
5563+
5564+
private void iterateControllers (RunnableData<SharedBaseController<?>> callback) {
55515565
for (int i = 0; i < pagerAdapter.getCount(); i++) {
55525566
ViewController<?> c = pagerAdapter.findCachedControllerByPosition(i);
55535567
if (c != null) {
5554-
((SharedBaseController<?>) c).onItemsHeightProbablyChanged();
5568+
callback.runWithData((SharedBaseController<?>) c);
55555569
}
55565570
}
5557-
checkTopViewPosition();
55585571
}
55595572

55605573
private void onGlobalHeightChanged () {
55615574
if (baseAdapter.indexOfViewById(R.id.btn_description) != -1 || baseAdapter.indexOfViewById(R.id.description) != -1) {
55625575
onItemsHeightProbablyChanged();
55635576
}
55645577
baseRecyclerView.invalidateItemDecorations();
5565-
for (int i = 0; i < pagerAdapter.getCount(); i++) {
5566-
ViewController<?> c = pagerAdapter.findCachedControllerByPosition(i);
5567-
if (c != null) {
5568-
((SharedBaseController<?>) c).onGlobalHeightChanged();
5569-
}
5570-
}
5578+
iterateControllers(SharedBaseController::onGlobalHeightChanged);
55715579
}
55725580

55735581
private boolean eventsBelongToPager;
@@ -6127,6 +6135,7 @@ public ViewController<?> createControllerForPosition (int position) {
61276135
@Override
61286136
public void onPrepareToShow (int position, ViewController<?> controller) {
61296137
super.onPrepareToShow();
6138+
controller.setBottomInset(extraBottomInset, extraBottomInsetWithoutIme);
61306139
if (baseRecyclerView.getMeasuredWidth() != 0) {
61316140
checkContentScrollY(controller);
61326141
}
@@ -6674,36 +6683,24 @@ private void addMessage (TdApi.Message message) {
66746683
}
66756684
}
66766685

6677-
final int size = pagerAdapter.getCount();
6678-
for (int i = 0; i < size; i++) {
6679-
ViewController<?> c = pagerAdapter.findCachedControllerByPosition(i);
6680-
if (c != null) {
6681-
((SharedBaseController<?>) c).addMessage(message);
6682-
}
6683-
}
6686+
iterateControllers(c ->
6687+
c.addMessage(message)
6688+
);
66846689
}
66856690

66866691
@UiThread
66876692
private void removeMessages (long[] messageIds) {
6688-
final int size = pagerAdapter.getCount();
6689-
for (int i = 0; i < size; i++) {
6690-
ViewController<?> c = pagerAdapter.findCachedControllerByPosition(i);
6691-
if (c != null) {
6692-
((SharedBaseController<?>) c).removeMessages(messageIds);
6693-
}
6694-
}
6693+
iterateControllers(c ->
6694+
c.removeMessages(messageIds)
6695+
);
66956696
refreshCounters();
66966697
}
66976698

66986699
@UiThread
66996700
private void editMessage (long messageId, TdApi.MessageContent content) {
6700-
final int size = pagerAdapter.getCount();
6701-
for (int i = 0; i < size; i++) {
6702-
ViewController<?> c = pagerAdapter.findCachedControllerByPosition(i);
6703-
if (c != null) {
6704-
((SharedBaseController<?>) c).editMessage(messageId, content);
6705-
}
6706-
}
6701+
iterateControllers(c ->
6702+
c.editMessage(messageId, content)
6703+
);
67076704
}
67086705

67096706
public static boolean filterMediaMessage (TdApi.Message message) {

app/src/main/java/org/thunderdog/challegram/ui/SharedBaseController.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,20 @@ public void setParent (@NonNull MessagesController parent) {
160160
tdlib.listeners().subscribeToMessageUpdates(chatId, this);
161161
}
162162

163+
@Override
164+
public boolean supportsBottomInset () {
165+
return true;
166+
}
167+
168+
@Override
169+
protected void onBottomInsetChanged (int extraBottomInset, int extraBottomInsetWithoutIme, boolean isImeInset) {
170+
super.onBottomInsetChanged(extraBottomInset, extraBottomInsetWithoutIme, isImeInset);
171+
if (recyclerView != null) {
172+
recyclerView.setClipToPadding(extraBottomInset == 0);
173+
Views.setPaddingBottom(recyclerView, extraBottomInset);
174+
}
175+
}
176+
163177
private TdlibMessageViewer.Viewport messageViewport;
164178

165179
@SuppressLint("InflateParams")
@@ -168,6 +182,8 @@ protected final View onCreateView (Context context) {
168182
messageViewport = tdlib.messageViewer().createViewport(new TdApi.MessageSourceSearch(), this);
169183
recyclerView = (MediaRecyclerView) Views.inflate(context(), R.layout.recycler_sharedmedia, null);
170184
recyclerView.setOverScrollMode(RecyclerView.OVER_SCROLL_NEVER);
185+
recyclerView.setClipToPadding(extraBottomInset == 0);
186+
Views.setPaddingBottom(recyclerView, extraBottomInset);
171187
addThemeInvalidateListener(recyclerView);
172188
if (alternateParent != null) {
173189
recyclerView.setBackgroundColor(Theme.backgroundColor());

0 commit comments

Comments
 (0)