diff --git a/app/src/main/java/org/thunderdog/challegram/filegen/TdlibFileGenerationManager.java b/app/src/main/java/org/thunderdog/challegram/filegen/TdlibFileGenerationManager.java
index fb05818ada..f3aa1bff2d 100644
--- a/app/src/main/java/org/thunderdog/challegram/filegen/TdlibFileGenerationManager.java
+++ b/app/src/main/java/org/thunderdog/challegram/filegen/TdlibFileGenerationManager.java
@@ -1026,7 +1026,23 @@ private void generatePhoto (PhotoGenerationInfo info) throws Throwable {
final boolean applyLessCompression = U.isScreenshotFolder(originalPath);
boolean isTransparent = info.getAllowTransparency() || (!applyLessCompression && isTransparent(originalPath, uri));
- final int maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : PhotoGenerationInfo.SIZE_LIMIT;
+ final int maxSize;
+
+ switch (Settings.instance().getResolutionOption()) {
+ case Settings.RESOLUTION_OPTION_LOW:
+ maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 800;
+ break;
+ /*case Settings.RESOLUTION_OPTION_MEDIUM:
+ maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 1280;
+ break;*/
+ case Settings.RESOLUTION_OPTION_HIGH:
+ maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 2560;
+ break;
+ default:
+ maxSize = info.getResolutionLimit() != 0 ? info.getResolutionLimit() : 1280;
+ break;
+ }
+
final boolean saveToGallery = Settings.instance().needSaveEditedMediaToGallery() && info.isEdited();
Bitmap bitmap = null;
diff --git a/app/src/main/java/org/thunderdog/challegram/ui/SettingsBugController.java b/app/src/main/java/org/thunderdog/challegram/ui/SettingsBugController.java
index a99a8dac01..755da970d2 100644
--- a/app/src/main/java/org/thunderdog/challegram/ui/SettingsBugController.java
+++ b/app/src/main/java/org/thunderdog/challegram/ui/SettingsBugController.java
@@ -626,6 +626,18 @@ protected void setValuedSetting (ListItem item, SettingView view, boolean isUpda
view.setData(Strings.buildSize(logSize[1]));
} else if (itemId == R.id.btn_tdlib_androidLogs) {
view.getToggler().setRadioEnabled(Settings.instance().getLogSettings().needAndroidLog(), isUpdate);
+ } else if (itemId == R.id.btn_resolutionOption) {
+ switch (Settings.instance().getResolutionOption()) {
+ case Settings.RESOLUTION_OPTION_LOW:
+ view.setData(R.string.ResolutionLow);
+ break;
+ case Settings.RESOLUTION_OPTION_MEDIUM:
+ view.setData(R.string.ResolutionMedium);
+ break;
+ case Settings.RESOLUTION_OPTION_HIGH:
+ view.setData(R.string.ResolutionHigh);
+ break;
+ }
}
}
};
@@ -742,6 +754,12 @@ protected void setValuedSetting (ListItem item, SettingView view, boolean isUpda
items.add(new ListItem(ListItem.TYPE_SHADOW_BOTTOM));
items.add(new ListItem(ListItem.TYPE_DESCRIPTION, 0, 0, Lang.getMarkdownStringSecure(this, R.string.Experiment_ChatFoldersInfo)));
+ if (testerLevel >= Tdlib.TESTER_LEVEL_TESTER || Settings.instance().isExperimentEnabled(Settings.EXPERIMENT_FLAG_SEND_HQ_PHOTO)) {
+ items.add(new ListItem(ListItem.TYPE_SEPARATOR_FULL));
+ items.add(new ListItem(ListItem.TYPE_VALUED_SETTING_COMPACT, R.id.btn_resolutionOption, 0, R.string.Experiment_ResolutionOption));
+ items.add(new ListItem(ListItem.TYPE_DESCRIPTION, 0, 0, Lang.getMarkdownStringSecure(this, R.string.Experiment_ResolutionInfo)));
+ }
+
if (testerLevel >= Tdlib.TESTER_LEVEL_TESTER || Settings.instance().isExperimentEnabled(Settings.EXPERIMENT_FLAG_SHOW_PEER_IDS)) {
items.add(new ListItem(ListItem.TYPE_SHADOW_TOP));
items.add(new ListItem(ListItem.TYPE_RADIO_SETTING, R.id.btn_experiment, 0, R.string.Experiment_PeerIds).setLongValue(Settings.EXPERIMENT_FLAG_SHOW_PEER_IDS));
@@ -1435,6 +1453,8 @@ public boolean onAcceptInput (MaterialEditTextGroup inputView, String result) {
viewTdlibLog(v, true);
} else if (viewId == R.id.btn_tdlib_androidLogs) {
Settings.instance().getLogSettings().setNeedAndroidLog(adapter.toggleView(v));
+ } else if (viewId == R.id.btn_resolutionOption) {
+ showResolutionOption();
}
}
@@ -1601,4 +1621,25 @@ public void onApplySettings (@IdRes int id, SparseIntArray result) {
adapter.updateValuedSettingById(R.id.btn_log_tags);
}
}
+
+ private void showResolutionOption () {
+ int resolutionOption = Settings.instance().getResolutionOption();
+ showSettings(new SettingsWrapBuilder(R.id.btn_resolutionOption).setRawItems(new ListItem[] {
+ new ListItem(ListItem.TYPE_RADIO_OPTION, R.id.btn_resolutionLow, 0, R.string.ResolutionLow, R.id.btn_resolutionOption, resolutionOption == Settings.RESOLUTION_OPTION_LOW),
+ new ListItem(ListItem.TYPE_RADIO_OPTION, R.id.btn_resolutionMedium, 0, R.string.ResolutionMedium, R.id.btn_resolutionOption, resolutionOption == Settings.RESOLUTION_OPTION_MEDIUM),
+ new ListItem(ListItem.TYPE_RADIO_OPTION, R.id.btn_resolutionHigh, 0, R.string.ResolutionHigh, R.id.btn_resolutionOption, resolutionOption == Settings.RESOLUTION_OPTION_HIGH),
+ }).setAllowResize(false).addHeaderItem(Lang.getString(R.string.Experiment_ResolutionInfo)).setIntDelegate((id, result) -> {
+ int newResolutionOption = Settings.instance().getResolutionOption();
+ int resolutionResult = result.get(R.id.btn_resolutionOption);
+ if (resolutionResult == R.id.btn_resolutionLow) {
+ newResolutionOption = Settings.RESOLUTION_OPTION_LOW;
+ } else if (resolutionResult == R.id.btn_resolutionMedium) {
+ newResolutionOption = Settings.RESOLUTION_OPTION_MEDIUM;
+ } else if (resolutionResult == R.id.btn_resolutionHigh) {
+ newResolutionOption = Settings.RESOLUTION_OPTION_HIGH;
+ }
+ Settings.instance().setResolutionOption(newResolutionOption);
+ adapter.updateValuedSettingById(R.id.btn_resolutionOption);
+ }));
+ }
}
diff --git a/app/src/main/java/org/thunderdog/challegram/unsorted/Settings.java b/app/src/main/java/org/thunderdog/challegram/unsorted/Settings.java
index 717e7d7d01..c2f7a60597 100644
--- a/app/src/main/java/org/thunderdog/challegram/unsorted/Settings.java
+++ b/app/src/main/java/org/thunderdog/challegram/unsorted/Settings.java
@@ -234,6 +234,7 @@ public static Settings instance () {
private static final String KEY_CHAT_TRANSLATE_RECENTS = "language_recents";
private static final String KEY_DEFAULT_LANGUAGE_FOR_TRANSLATE_DRAFT = "language_draft_translate";
private static final String KEY_INSTANT_VIEW = "settings_iv_mode";
+ private static final String KEY_RESOLUTION_OPTION = "settings_resolution_options";
private static final String KEY_RESTRICT_CONTENT = "settings_restrict_content";
private static final String KEY_CAMERA_ASPECT_RATIO = "settings_camera_ratio";
private static final String KEY_CAMERA_TYPE = "settings_camera_type";
@@ -418,6 +419,8 @@ private static String key (String key, int accountId) {
public static final long EXPERIMENT_FLAG_ENABLE_FOLDERS = 1 << 1;
public static final long EXPERIMENT_FLAG_SHOW_PEER_IDS = 1 << 2;
+ public static final long EXPERIMENT_FLAG_SEND_HQ_PHOTO = 1 << 3;
+
private static final @Deprecated int DISABLED_FLAG_OTHER_NEED_RAISE_TO_SPEAK = 1 << 2;
private static final @Deprecated int DISABLED_FLAG_OTHER_AUTODOWNLOAD_IN_BACKGROUND = 1 << 3;
private static final @Deprecated int DISABLED_FLAG_OTHER_DEFAULT_CRASH_MANAGER = 1 << 5;
@@ -771,6 +774,11 @@ public void apply (boolean async) {
public static final int INSTANT_VIEW_MODE_INTERNAL = 1;
public static final int INSTANT_VIEW_MODE_ALL = 2;
+ public static final int RESOLUTION_OPTION_DEFAULT = 1;
+ public static final int RESOLUTION_OPTION_LOW = 0;
+ public static final int RESOLUTION_OPTION_MEDIUM = 1;
+ public static final int RESOLUTION_OPTION_HIGH = 2;
+
@Nullable
private Float _chatFontSize;
@@ -2762,6 +2770,18 @@ public void setInstantViewMode (int mode) {
}
}
+ public int getResolutionOption () {
+ return getInt(KEY_RESOLUTION_OPTION, RESOLUTION_OPTION_DEFAULT);
+ }
+
+ public void setResolutionOption (int option) {
+ if (option == RESOLUTION_OPTION_DEFAULT) {
+ remove(KEY_RESOLUTION_OPTION);
+ } else {
+ putInt(KEY_RESOLUTION_OPTION, option);
+ }
+ }
+
public int getStickerMode () {
if (_stickerMode == null)
_stickerMode = pmc.getInt(KEY_STICKER_MODE, STICKER_MODE_ALL);
@@ -6981,4 +7001,8 @@ public boolean chatFoldersEnabled () {
public boolean showPeerIds () {
return isExperimentEnabled(EXPERIMENT_FLAG_SHOW_PEER_IDS);
}
+
+ public boolean sendHqPhotos () {
+ return isExperimentEnabled(EXPERIMENT_FLAG_SEND_HQ_PHOTO);
+ }
}
diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml
index d0937a211d..03096acf2b 100644
--- a/app/src/main/res/values/ids.xml
+++ b/app/src/main/res/values/ids.xml
@@ -1338,6 +1338,13 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 41f12af399..b8889188d8 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -4965,6 +4965,15 @@
Supergroup ID
Channel ID
+
+
+ Send large photo
+ Photo Resolution Selector
+ Resolution Selector (Experimental): Possible instability or app crashes.
+ Low (800px)
+ Medium (1280px)
+ High (2560px)
+
%1$s just started a giveaway of Telegram Premium subscriptions for its followers.
%1$s winner of the giveaway was randomly selected by Telegram and received their gift link in a private message.
%1$s winners of the giveaway were randomly selected by Telegram and received their gift link in a private message.
@@ -4984,7 +4993,6 @@
This message is a reply to the message that was deleted.
This message is from another chat. Tap again to view.
-
Swipe to choose specific link preview
This is a service message from Telegram