[updater] fixes, mono and italic support for changelog
This commit is contained in:
@@ -51,8 +51,6 @@ public class UpdaterBottomSheet extends BottomSheet {
|
||||
private RLottieImageView imageView;
|
||||
private TextView changelogTextView;
|
||||
|
||||
private boolean animationInProgress;
|
||||
|
||||
private boolean isTranslated = false;
|
||||
private CharSequence translatedC;
|
||||
|
||||
@@ -118,10 +116,10 @@ public class UpdaterBottomSheet extends BottomSheet {
|
||||
TextCell changelog = new TextCell(context);
|
||||
changelog.setBackground(Theme.createSelectorDrawable(Theme.getColor(Theme.key_listSelector), 100, 0));
|
||||
changelog.setTextAndIcon(LocaleController.getString("Changelog", R.string.Changelog), R.drawable.msg_log, false);
|
||||
changelog.setOnClickListener(v -> copyText(changelog.getTextView().getText() + "\n" + (isTranslated ? translatedC : AndroidUtilities.replaceTags(args[1]))));
|
||||
changelog.setOnClickListener(v -> copyText(changelog.getTextView().getText() + "\n" + (isTranslated ? translatedC : UpdaterUtils.replaceTags(args[1]))));
|
||||
linearLayout.addView(changelog);
|
||||
|
||||
changelogTextView = new androidx.appcompat.widget.AppCompatTextView(context) {
|
||||
changelogTextView = new TextView(context) {
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
super.onDraw(canvas);
|
||||
@@ -132,12 +130,12 @@ public class UpdaterBottomSheet extends BottomSheet {
|
||||
changelogTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
changelogTextView.setMovementMethod(new AndroidUtilities.LinkMovementMethodMy());
|
||||
changelogTextView.setLinkTextColor(Theme.getColor(Theme.key_dialogTextLink));
|
||||
changelogTextView.setText(AndroidUtilities.replaceTags(args[1]));
|
||||
changelogTextView.setText(UpdaterUtils.replaceTags(args[1]));
|
||||
changelogTextView.setPadding(AndroidUtilities.dp(21), 0, AndroidUtilities.dp(21), AndroidUtilities.dp(10));
|
||||
changelogTextView.setGravity(Gravity.LEFT | Gravity.CENTER_VERTICAL);
|
||||
changelogTextView.setOnClickListener(v -> UpdaterUtils.translate(AndroidUtilities.replaceTags(args[1]), (String translated) -> {
|
||||
changelogTextView.setOnClickListener(v -> UpdaterUtils.translate(args[1], (String translated) -> {
|
||||
translatedC = translated;
|
||||
animateChangelog(isTranslated ? AndroidUtilities.replaceTags(args[1]) : translatedC);
|
||||
animateChangelog(UpdaterUtils.replaceTags(isTranslated ? args[1] : (String) translatedC));
|
||||
isTranslated ^= true;
|
||||
}, () -> {}));
|
||||
linearLayout.addView(changelogTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT));
|
||||
@@ -234,20 +232,13 @@ public class UpdaterBottomSheet extends BottomSheet {
|
||||
|
||||
private void animateChangelog(CharSequence text) {
|
||||
changelogTextView.setText(text);
|
||||
animationInProgress = true;
|
||||
AnimatorSet animatorSet = new AnimatorSet();
|
||||
animatorSet.setDuration(200);
|
||||
animatorSet.setDuration(250);
|
||||
animatorSet.setInterpolator(CubicBezierInterpolator.EASE_OUT_QUINT);
|
||||
animatorSet.playTogether(
|
||||
ObjectAnimator.ofFloat(changelogTextView, View.ALPHA, 0.0f, 1.0f),
|
||||
ObjectAnimator.ofFloat(changelogTextView, View.TRANSLATION_Y, AndroidUtilities.dp(10), 0)
|
||||
ObjectAnimator.ofFloat(changelogTextView, View.TRANSLATION_Y, AndroidUtilities.dp(12), 0)
|
||||
);
|
||||
animatorSet.addListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
animationInProgress = false;
|
||||
}
|
||||
});
|
||||
animatorSet.start();
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ import android.content.IntentFilter;
|
||||
import android.content.pm.PackageInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Build;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
|
||||
import androidx.core.content.FileProvider;
|
||||
|
||||
@@ -33,9 +35,11 @@ import org.json.JSONTokener;
|
||||
import org.telegram.messenger.AndroidUtilities;
|
||||
import org.telegram.messenger.ApplicationLoader;
|
||||
import org.telegram.messenger.BuildVars;
|
||||
import org.telegram.messenger.FileLog;
|
||||
import org.telegram.messenger.LocaleController;
|
||||
import org.telegram.messenger.Utilities;
|
||||
import org.telegram.ui.Components.AlertsCreator;
|
||||
import org.telegram.ui.Components.TypefaceSpan;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
@@ -291,11 +295,45 @@ public class UpdaterUtils {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// TODO
|
||||
public CharSequence formatChangelog(String text) {
|
||||
public static SpannableStringBuilder replaceTags(String str) {
|
||||
try {
|
||||
int start;
|
||||
int end;
|
||||
StringBuilder stringBuilder = new StringBuilder(str);
|
||||
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(str);
|
||||
String symbol = "", font = "fonts/rregular.ttf";
|
||||
for (int i = 0; i < 3; i++) {
|
||||
switch (i) {
|
||||
case 0:
|
||||
symbol = "**";
|
||||
font = "fonts/rmedium.ttf";
|
||||
break;
|
||||
case 1:
|
||||
symbol = "_";
|
||||
font = "fonts/ritalic.ttf";
|
||||
break;
|
||||
case 2:
|
||||
symbol = "`";
|
||||
font = "fonts/rmono.ttf";
|
||||
break;
|
||||
}
|
||||
while ((start = stringBuilder.indexOf(symbol)) != -1) {
|
||||
stringBuilder.replace(start, start + symbol.length(), "");
|
||||
spannableStringBuilder.replace(start, start + symbol.length(), "");
|
||||
end = stringBuilder.indexOf(symbol);
|
||||
if (end >= 0) {
|
||||
stringBuilder.replace(end, end + symbol.length(), "");
|
||||
spannableStringBuilder.replace(end, end + symbol.length(), "");
|
||||
spannableStringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface(font)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
return spannableStringBuilder;
|
||||
} catch (Exception e) {
|
||||
FileLog.e(e);
|
||||
}
|
||||
return new SpannableStringBuilder(str);
|
||||
}
|
||||
*/
|
||||
|
||||
public interface OnTranslationSuccess {
|
||||
void run(String translated);
|
||||
|
||||
@@ -2760,7 +2760,7 @@ public class LaunchActivity extends BasePermissionsActivity implements ActionBar
|
||||
if (currentFragment != null && (currentFragment.isRemovingFromStack() || currentFragment.isInPreviewMode())) {
|
||||
currentFragment = mainFragmentsStack.size() > 1 ? mainFragmentsStack.get(mainFragmentsStack.size() - 2) : null;
|
||||
}
|
||||
UpdaterUtils.checkUpdates(currentFragment.getParentActivity(), false, () -> showBulletin(factory -> factory.createErrorBulletin(LocaleController.getString("NoUpdates", R.string.NoUpdates))), null);
|
||||
UpdaterUtils.checkUpdates(currentFragment.getParentActivity(), true, () -> showBulletin(factory -> factory.createErrorBulletin(LocaleController.getString("NoUpdates", R.string.NoUpdates))), null);
|
||||
} else if (newContact) {
|
||||
final NewContactActivity fragment = new NewContactActivity();
|
||||
if (newContactName != null) {
|
||||
|
||||
Reference in New Issue
Block a user