Compare commits

...

22 Commits

Author SHA1 Message Date
adbenitez 5627f5f123 update build.gradle 2024-10-06 23:25:23 +02:00
adbenitez 7a66085107 Merge remote-tracking branch 'upstream/adb/improve-proxy-ui' 2024-10-06 22:40:06 +02:00
adbenitez aa45a9082e Merge remote-tracking branch 'upstream/adb/issue-3335' 2024-10-06 22:39:43 +02:00
adbenitez 3955f4d505 fix secondary button color 2024-10-06 22:35:47 +02:00
adbenitez 74dd4c0d9a update permanent notification icon 2024-10-06 20:41:33 +02:00
adbenitez 23eb418591 update core 2024-10-06 19:37:13 +02:00
adbenitez edcfa80d92 don't enable IO with proxy settings if account is disabled 2024-10-06 19:36:32 +02:00
adbenitez 5ff1f3d915 Merge remote-tracking branch 'upstream/main' 2024-10-06 19:34:24 +02:00
adbenitez b0ae2da439 improve proxy settings UI 2024-10-06 13:29:46 +02:00
adbenitez 8487c286e6 register app for opening ss:// and socks5:// proxy URLs
also linkify proxy URLs in text messages
2024-10-05 20:15:40 +02:00
Hocuri ffa9177094 Don't show "0%" when exporting backups (#3337)
With https://github.com/deltachat/deltachat-core-rust/pull/6027, when
exporting a backup, the counter stays at 0% while running housekeeping
and vacuuming the database, which takes 10 seconds on my device.

Showing "One moment... 0%" for 10 seconds (or longer on slower devices /
with bigger accounts) might make users think that it's not working and
abort the process. So, instead, simply show "One moment..." until the
progress reaches 1%.
2024-10-05 20:00:03 +02:00
adb 6f3d8a4414 Merge pull request #3334 from deltachat/adb/issue-3316
allow to set proxies from QRs
2024-10-05 18:38:42 +02:00
adb 9bbee2db10 Update src/main/res/values/strings.xml
Co-authored-by: bjoern <r10s@b44t.com>
2024-10-05 18:12:13 +02:00
adbenitez 30580366fd add restartIo() to DcContext 2024-10-05 18:11:26 +02:00
adb ec4bffdabe Merge pull request #3336 from deltachat/adb/issue-3282
don't change delete_server_after, let core handle it
2024-10-05 17:12:07 +02:00
adbenitez ca2d8f4b6e don't change delete_server_after, let core handle it 2024-10-05 16:32:23 +02:00
adbenitez a7f0f753fd allow to set proxies from QRs 2024-10-05 16:16:32 +02:00
link2xt 4025fd5e0b fix: do not expect special value for backup transfer progress
Values 100, 350, 400, 450, 950 are not used in the core,
so this resulted in showing incorrect progress
such as "Preparing account" when actually
database transfer was already in progress.

Desktop already does not expect any special values
and simply shows the progress bar.
2024-10-05 11:40:11 +00:00
Asiel Díaz Benítez 577959a51a Merge pull request #3329 from deltachat/adb/issue-3307
show display name in title bar when user has multiple profiles
2024-10-04 17:18:18 +02:00
adbenitez 776dc05755 remove unnecessary getConnectivitySummary(context, int) 2024-10-04 16:44:38 +02:00
Hocuri 28141bf942 Remove getNextMedia() to make compilation succeed again (#3330) 2024-10-04 16:16:21 +02:00
adbenitez 3431163c24 show display name in title bar when user has multiple profiles 2024-10-04 15:20:45 +02:00
47 changed files with 166 additions and 202 deletions
+2 -2
View File
@@ -33,8 +33,8 @@ android {
useLibrary 'org.apache.http.legacy'
defaultConfig {
versionCode 30000691
versionName "1.46.19"
versionCode 30000692
versionName "1.46.20"
applicationId "chat.delta.lite"
multiDexEnabled true
-6
View File
@@ -1331,12 +1331,6 @@ JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMedia(JNIEnv *env,
}
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getNextMedia(JNIEnv *env, jobject obj, jint msg_id, jint dir, jint type1, jint type2, jint type3)
{
return dc_get_next_media(get_dc_context(env, obj), msg_id, dir, type1, type2, type3);
}
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMsgs(JNIEnv *env, jobject obj, jint chat_id, jint flags, jint marker1before)
{
dc_array_t* ca = dc_get_chat_msgs(get_dc_context(env, obj), chat_id, flags, marker1before);
+16 -1
View File
@@ -265,7 +265,22 @@
<activity android:name=".proxy.ProxySettingsActivity"
android:label="@string/proxy_settings"
android:windowSoftInputMode="stateHidden"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
android:exported="true"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<!-- Android's scheme matcher is case-sensitive, so include most likely variations -->
<data android:scheme="ss" />
<data android:scheme="socks5" />
<data android:scheme="SOCKS5" tools:ignore="AppLinkUrlError" />
<data android:scheme="SS" tools:ignore="AppLinkUrlError" />
</intent-filter>
</activity>
<activity android:name=".LogViewActivity"
android:label="@string/pref_log_header"
+14 -16
View File
@@ -184,7 +184,6 @@ public class DcContext {
public native int[] searchMsgs (int chat_id, String query);
public native int[] getFreshMsgs ();
public native int[] getChatMedia (int chat_id, int type1, int type2, int type3);
public native int getNextMedia (int msg_id, int dir, int type1, int type2, int type3);
public native int[] getChatContacts (int chat_id);
public native int getChatEphemeralTimer (int chat_id);
public native boolean setChatEphemeralTimer (int chat_id, int timer);
@@ -250,6 +249,14 @@ public class DcContext {
return ret.trim();
}
public String getName() {
String displayname = getConfig("displayname");
if (displayname.isEmpty()) {
displayname = getContact(DcContact.DC_CONTACT_ID_SELF).getAddr();
}
return displayname;
}
public boolean isCommunity() {
return getConfigInt("is_community") == 1;
}
@@ -279,21 +286,6 @@ public class DcContext {
setConfigInt("is_muted", muted? 1 : 0);
}
// Called for new profiles on chatmail servers that are "single device" initially;
// to save server disk space, we make use of that delete all messages immediately after download.
public void assumeSingleDevice() {
if (isChatmail()) {
setConfigInt("delete_server_after", 1 /*at once*/);
}
}
// Called when we get a hint that another device may be set up.
public void assumeMultiDevice() {
if (isChatmail() && getConfigInt("delete_server_after") == 1 /*at once*/) {
setConfigInt("delete_server_after", 0 /*never/automatic*/);
}
}
public boolean isGmailOauth2Addr(String addr) {
final String oauth2url = getOauth2Url(addr, "chat.delta:/foo");
return isGmailOauth2Url(oauth2url);
@@ -303,6 +295,12 @@ public class DcContext {
return oauth2url.startsWith("https://accounts.google.com/");
}
public void restartIo() {
if (!isEnabled()) return;
stopIo();
startIo();
}
/**
* @return true if at least one chat has location streaming enabled
*/
@@ -186,7 +186,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
public void handleEvent(@NonNull DcEvent event) {
if (event.getId() == DcContext.DC_EVENT_CONNECTIVITY_CHANGED) {
this.findPreference(PREFERENCE_CATEGORY_CONNECTIVITY)
.setSummary(DcHelper.getConnectivitySummary(getActivity(), R.string.connectivity_connected));
.setSummary(DcHelper.getConnectivitySummary(getActivity(), getString(R.string.connectivity_connected)));
}
}
@@ -202,7 +202,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
this.findPreference(PREFERENCE_CATEGORY_PRIVACY)
.setSummary(PrivacyPreferenceFragment.getSummary(getActivity()));
this.findPreference(PREFERENCE_CATEGORY_CONNECTIVITY)
.setSummary(DcHelper.getConnectivitySummary(getActivity(), R.string.connectivity_connected));
.setSummary(DcHelper.getConnectivitySummary(getActivity(), getString(R.string.connectivity_connected)));
this.findPreference(PREFERENCE_CATEGORY_HELP)
.setSummary(AdvancedPreferenceFragment.getVersion(getActivity()));
}
@@ -301,13 +301,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
}
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
DcContext dcContext = DcHelper.getContext(this);
DcContact self = dcContext.getContact(DcContact.DC_CONTACT_ID_SELF);
String name = dcContext.getConfig("displayname");
if (TextUtils.isEmpty(name)) {
name = self.getAddr();
}
title.setText(name);
title.setText(DcHelper.getContext(this).getName());
selfAvatar.setConnectivity(DcHelper.getContext(this).getConnectivity());
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
@@ -380,7 +380,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
progressUpdate((int)progress);
} else if (progress==1000/*done*/) {
DcHelper.getAccounts(this).startIo();
dcContext.assumeSingleDevice();
progressSuccess();
}
}
@@ -327,7 +327,6 @@ public class WelcomeActivity extends BaseActionBarActivity implements DcEventCen
}
DcHelper.getAccounts(this).startIo();
progressSuccess();
dcContext.assumeMultiDevice();
notificationController.close();
cleanupTempBackupFile();
}
@@ -214,6 +214,7 @@ public class EmojiTextView extends AppCompatTextView {
private static final Pattern CMD_PATTERN = Pattern.compile("(?<=^|\\s)/[a-zA-Z][a-zA-Z@\\d_/.-]{0,254}");
private static final Pattern CUSTOM_PATTERN = Pattern.compile("(?<=^|\\s)(OPENPGP4FPR|openpgp4fpr|mumble):[^ \\n]+");
private static final Pattern PROXY_PATTERN = Pattern.compile("(?<=^|\\s)(SOCKS5|socks5|ss|SS):[^ \\n]+");
private static void replaceURLSpan(Spannable messageBody) {
URLSpan[] urlSpans = messageBody.getSpans(0, messageBody.length(), URLSpan.class);
@@ -234,6 +235,10 @@ public class EmojiTextView extends AppCompatTextView {
Linkify.addLinks(messageBody, CUSTOM_PATTERN, null, null, null);
EmojiTextView.replaceURLSpan(messageBody);
if (Linkify.addLinks(messageBody, PROXY_PATTERN, null, null, null)) {
EmojiTextView.replaceURLSpan(messageBody); // replace URLSpan so that it is not removed on the next addLinks() call
}
// linkyfiy urls etc., this removes all existing URLSpan
if (Linkify.addLinks(messageBody, Linkify.EMAIL_ADDRESSES|Linkify.WEB_URLS|Linkify.PHONE_NUMBERS)) {
EmojiTextView.replaceURLSpan(messageBody);
@@ -449,13 +449,14 @@ public class DcHelper {
* Gets a string you can show to the user with basic information about connectivity.
* @param context
* @param connectedString Usually "Connected", but when using this as the title in
* ConversationListActivity, we want to write "ArcaneChat" there instead.
* ConversationListActivity, we want to write "ArcaneChat"
* or the user's display name there instead.
* @return
*/
public static String getConnectivitySummary(Context context, int connectedString) {
public static String getConnectivitySummary(Context context, String connectedString) {
int connectivity = getContext(context).getConnectivity();
if (connectivity >= DcContext.DC_CONNECTIVITY_CONNECTED) {
return context.getString(connectedString);
return connectedString;
} else if (connectivity >= DcContext.DC_CONNECTIVITY_WORKING) {
return context.getString(R.string.connectivity_updating);
} else if (connectivity >= DcContext.DC_CONNECTIVITY_CONNECTING) {
@@ -138,7 +138,6 @@ public abstract class ListSummaryPreferenceFragment extends CorrectedPreferenceF
protected void startImexInner(int accountId, int what, String imexPath, String pathAsDisplayedToUser)
{
DcContext dcContext = DcHelper.getAccounts(getActivity()).getAccount(accountId);
dcContext.assumeMultiDevice();
this.pathAsDisplayedToUser = pathAsDisplayedToUser;
progressWhat = what;
dcContext.imex(progressWhat, imexPath);
@@ -200,7 +199,7 @@ public abstract class ListSummaryPreferenceFragment extends CorrectedPreferenceF
imexProgress.put(event.getAccountId(), (int) progress);
int totalProgress = getTotalProgress();
int percent = totalProgress / (10 * imexAccounts.length);
String formattedPercent = String.format(" %d%%", percent);
String formattedPercent = percent > 0 ? String.format(" %d%%", percent) : "";
progressDialog.setMessage(getResources().getString(R.string.one_moment) + formattedPercent);
notifController.setProgress(1000L * imexAccounts.length, totalProgress, formattedPercent);
}
@@ -82,8 +82,12 @@ public class ProxyListAdapter extends BaseAdapter {
}
if (proxyUrl.equals(selectedProxy)) {
checkmark.setVisibility(View.VISIBLE);
status.setVisibility(View.VISIBLE);
status.setText(getConnectivityString());
if(dcContext.isConfigured() == 1 && dcContext.getConfigInt(CONFIG_PROXY_ENABLED) == 1) {
status.setVisibility(View.VISIBLE);
status.setText(getConnectivityString());
} else {
status.setVisibility(View.GONE);
}
} else {
checkmark.setVisibility(View.GONE);
status.setVisibility(View.GONE);
@@ -4,6 +4,7 @@ import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_URL;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
@@ -58,7 +59,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
showAddProxyDialog();
} else {
DcHelper.set(this, CONFIG_PROXY_ENABLED, proxySwitch.isChecked()? "1" : "0");
restartIO();
DcHelper.getContext(this).restartIo();
}
});
@@ -70,6 +71,14 @@ public class ProxySettingsActivity extends BaseActionBarActivity
proxyList.addFooterView(footer);
adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL));
DcHelper.getEventCenter(this).addObserver(DcContext.DC_EVENT_CONNECTIVITY_CHANGED, this);
handleOpenProxyUrl();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleOpenProxyUrl();
}
@Override
@@ -96,7 +105,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
@Override
public void onItemClick(String proxyUrl) {
if (DcHelper.getContext(this).setConfigFromQr(proxyUrl)) {
restartIO();
DcHelper.getContext(this).restartIo();
adapter.setSelectedProxy(proxyUrl);
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
} else {
@@ -137,7 +146,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
}
String proxyUrls = String.join("\n", proxies);
DcHelper.set(this, CONFIG_PROXY_URL, proxyUrls);
restartIO();
DcHelper.getContext(this).restartIo();
adapter.changeData(proxyUrls);
}
@@ -156,7 +165,7 @@ public class ProxySettingsActivity extends BaseActionBarActivity
final DcLot qrParsed = dcContext.checkQr(newProxy);
if (qrParsed.getState() == DcContext.DC_QR_PROXY) {
dcContext.setConfigFromQr(newProxy);
restartIO();
DcHelper.getContext(this).restartIo();
adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL));
} else {
Toast.makeText(this, R.string.proxy_invalid, Toast.LENGTH_LONG).show();
@@ -173,10 +182,32 @@ public class ProxySettingsActivity extends BaseActionBarActivity
.show();
}
private void restartIO() {
DcContext dcContext = DcHelper.getContext(this);
dcContext.stopIo();
dcContext.startIo();
private void handleOpenProxyUrl() {
if (getIntent() != null && Intent.ACTION_VIEW.equals(getIntent().getAction())) {
Uri uri = getIntent().getData();
if (uri == null) {
return;
}
DcContext dcContext = DcHelper.getContext(this);
final DcLot qrParsed = dcContext.checkQr(uri.toString());
if (qrParsed.getState() == DcContext.DC_QR_PROXY) {
new AlertDialog.Builder(this)
.setTitle(R.string.proxy_use_proxy)
.setMessage(getString(R.string.proxy_use_proxy_confirm, qrParsed.getText1()))
.setPositiveButton(R.string.proxy_use_proxy, (dlg, btn) -> {
dcContext.setConfigFromQr(uri.toString());
dcContext.restartIo();
adapter.changeData(DcHelper.get(this, CONFIG_PROXY_URL));
proxySwitch.setChecked(DcHelper.getInt(this, CONFIG_PROXY_ENABLED) == 1);
})
.setNegativeButton(R.string.cancel, null)
.setCancelable(false)
.show();
} else {
Toast.makeText(this, R.string.proxy_invalid, Toast.LENGTH_LONG).show();
}
}
}
@Override
@@ -64,7 +64,6 @@ public class BackupProviderFragment extends Fragment implements DcEventCenter.Dc
progressBar.setIndeterminate(true);
dcContext = DcHelper.getContext(getActivity());
dcContext.assumeMultiDevice();
DcHelper.getEventCenter(getActivity()).addObserver(DcContext.DC_EVENT_IMEX_PROGRESS, this);
prepareThread = new Thread(() -> {
@@ -174,17 +173,8 @@ public class BackupProviderFragment extends Fragment implements DcEventCenter.Dc
if (permille == 0) {
getTransferActivity().setTransferError("Sending Error");
hideQrCode = true;
} else if(permille <= 350) {
statusLineText = getString(R.string.preparing_account);
} else if(permille <= 400) {
statusLine.setVisibility(View.GONE);
progressBar.setVisibility(View.GONE);
statusLineText = getString(R.string.waiting_for_receiver);
} else if(permille <= 450) {
statusLineText = getString(R.string.receiver_connected);
hideQrCode = true;
} else if (permille < 1000) {
percent = (permille-450)/5;
percent = permille/10;
percentMax = 100;
statusLineText = getString(R.string.transferring);
hideQrCode = true;
@@ -81,20 +81,14 @@ public class BackupReceiverFragment extends Fragment implements DcEventCenter.Dc
Log.i(TAG,"DC_EVENT_IMEX_PROGRESS, " + permille);
if (permille == 0) {
getTransferActivity().setTransferError("Receiving Error");
} else if (permille <= 100) {
statusLineText = getString(R.string.preparing_account);
hideSameNetworkHint = true;
} else if (permille <= 950 ) {
percent = ((permille-100)*100)/850;
} else if (permille < 1000) {
percent = permille/10;
percentMax = 100;
statusLineText = getString(R.string.transferring) + String.format(Util.getLocale(), " %d%%", percent);
hideSameNetworkHint = true;
} else if (permille < 1000) {
statusLineText = "Finishing..."; // range not used, should not happen
} else if (permille == 1000) {
getTransferActivity().setTransferState(BackupTransferActivity.TransferState.TRANSFER_SUCCESS);
getTransferActivity().doFinish();
dcContext.assumeMultiDevice();
return;
}
@@ -89,6 +89,17 @@ public class QrCodeHandler {
BackupTransferActivity.appendSSID(activity, alertDialog.findViewById(android.R.id.message));
return;
case DcContext.DC_QR_PROXY:
builder.setTitle(R.string.proxy_use_proxy);
builder.setMessage(activity.getString(R.string.proxy_use_proxy_confirm, qrParsed.getText1()));
builder.setPositiveButton(R.string.proxy_use_proxy, (dlg, btn) -> {
dcContext.setConfigFromQr(rawString);
dcContext.restartIo();
});
builder.setNegativeButton(R.string.cancel, null);
builder.setCancelable(false);
break;
case DcContext.DC_QR_WEBRTC:
builder.setMessage(activity.getString(R.string.videochat_instance_from_qr, qrParsed.getText1()));
builder.setPositiveButton(R.string.ok, (dialog, which) -> {
@@ -81,7 +81,14 @@ public class LongClickCopySpan extends ClickableSpan {
QrCodeHandler qrCodeHandler = new QrCodeHandler((Activity) widget.getContext());
qrCodeHandler.handleQrData(url);
} else {
IntentUtils.showBrowserIntent(widget.getContext(), url);
Activity activity = (Activity) widget.getContext();
DcContext dcContext = DcHelper.getContext(activity);
if (dcContext.checkQr(url).getState() == DcContext.DC_QR_PROXY) {
QrCodeHandler qrCodeHandler = new QrCodeHandler(activity);
qrCodeHandler.handleQrData(url);
} else {
IntentUtils.showBrowserIntent(widget.getContext(), url);
}
}
}
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="228"
android:viewportHeight="280"
android:tint="#FFFFFF"
android:alpha="0.5">
<group android:scaleX="0.7491429"
android:scaleY="0.92"
android:translateX="28.597713"
android:translateY="11.2">>
<path android:fillColor="#ffffff" android:pathData="m10.03,234.14c0.3,-0.01 0.6,-0.02 0.9,-0.04 -0.07,-0.49 -0.14,-0.97 -0.2,-1.46 -0.15,-1.34 -0.26,-2.69 -0.25,-4.04 -0.02,-0.86 -0.05,-1.71 -0.07,-2.57 -0.09,-0.06 -0.18,-0.13 -0.27,-0.19 -0.02,-0.02 -0.04,-0.03 -0.07,-0.05zM44.87,232.95c11.71,-8.35 26.86,-14.79 46.21,-15.9 0,0 39.93,-0.27 47.91,-3.53 7.98,-3.26 68.68,-14.69 82.94,-98.43 14.26,-83.74 -1.06,-115.09 -1.06,-115.09 0,0 -21.14,55.68 -81.02,59.81 0,0 -14.5,1.03 -38.82,1.42 -24.32,0.39 -75.77,20.65 -90.55,85.62l-0.22,43.44c2.5,4.22 5.49,8.12 8.91,11.66 3.99,4.11 8.11,8.12 12.79,11.45 2.26,1.65 4.65,3.2 6.51,5.33 1.94,2.34 3.33,5 4.2,7.93 0.71,2.1 1.45,4.2 2.2,6.28z"/>
<path android:fillColor="#ffffff" android:pathData="m217.97,45.86c-0.3,0.01 -0.6,0.02 -0.9,0.04 0.07,0.49 0.14,0.97 0.2,1.46 0.15,1.34 0.26,2.69 0.25,4.04 0.02,0.86 0.05,1.71 0.07,2.57 0.09,0.06 0.18,0.13 0.27,0.19 0.02,0.02 0.04,0.03 0.07,0.05zM183.13,47.05c-11.71,8.35 -26.86,14.79 -46.21,15.9 0,0 -39.93,0.27 -47.91,3.53 -7.98,3.26 -68.68,14.69 -82.94,98.43 -14.26,83.74 1.06,115.09 1.06,115.09 0,0 21.14,-55.68 81.02,-59.81 0,0 14.5,-1.03 38.82,-1.42 24.32,-0.39 75.77,-20.65 90.55,-85.62l0.22,-43.44c-2.5,-4.22 -5.49,-8.12 -8.91,-11.66 -3.99,-4.11 -8.11,-8.12 -12.79,-11.45 -2.26,-1.65 -4.65,-3.2 -6.51,-5.33 -1.94,-2.34 -3.33,-5 -4.2,-7.93 -0.71,-2.1 -1.45,-4.2 -2.2,-6.28z"/>
</group>
</vector>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 956 B

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 740 B

After

Width:  |  Height:  |  Size: 287 B

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<stroke android:width="2dp" android:color="@color/gray50"/>
<stroke android:width="1dp" android:color="@color/gray50"/>
<corners android:radius="8dp"/>
</shape>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 822 B

+1 -2
View File
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/def_primary_lite"/>
<solid android:color="?attr/fab_color"/>
<corners android:radius="8dp"/>
</shape>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/blue_primary_lite"/>
<corners android:radius="8dp"/>
</shape>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/gray_primary_lite"/>
<corners android:radius="8dp"/>
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/green_primary_lite"/>
<corners android:radius="8dp"/>
</shape>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/pink_primary_lite"/>
<corners android:radius="8dp"/>
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/purple_primary_lite"/>
<corners android:radius="8dp"/>
</shape>
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="@color/red_primary_lite"/>
<corners android:radius="8dp"/>
</shape>
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- TODO - Consolidate using attr if we move away from API 19 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<stroke android:width="2px" android:color="@color/def_primary"/>
<stroke android:width="2px" android:color="?attr/fab_color"/>
<corners android:radius="8dp"/>
</shape>
+1 -2
View File
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
<solid android:color="@color/def_primary" />
<solid android:color="?attr/fab_color" />
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
<solid android:color="@color/blue_primary" />
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
<solid android:color="@color/gray_primary" />
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
<solid android:color="@color/green_primary" />
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
<solid android:color="@color/pink_primary" />
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
<solid android:color="@color/purple_primary" />
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- read issue: https://github.com/deltachat/deltachat-android/issues/480 before introducing an attr here. -->
<solid android:color="@color/red_primary" />
</shape>
@@ -126,7 +126,7 @@
android:layout_height="40dp"
android:layout_marginLeft="12dp"
android:layout_marginRight="12dp"
android:background="?attr/send_button_bg"
android:background="@drawable/send_button_bg"
android:layout_gravity="center_vertical">
<ImageButton
+10 -10
View File
@@ -4,12 +4,9 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:layout_width="match_parent"
android:background="?attr/conversation_list_item_background"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingEnd="6dp"
>
<TextView
@@ -19,6 +16,8 @@
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/share"
android:paddingStart="16dp"
android:paddingTop="10dp"
android:drawablePadding="5dp"
android:singleLine="true"
android:ellipsize="marquee"
@@ -34,6 +33,8 @@
android:layout_below="@+id/host"
android:layout_toStartOf="@id/share"
android:layout_marginTop="5dp"
android:paddingStart="16dp"
android:paddingBottom="10dp"
android:gravity="center_vertical"
>
@@ -80,11 +81,10 @@
<ImageButton
android:id="@+id/share"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="50dp"
android:layout_height="60dp"
android:layout_toStartOf="@id/delete"
android:layout_centerVertical="true"
android:layout_marginEnd="5dp"
android:contentDescription="@string/menu_share"
android:background="@drawable/touch_highlight_background"
android:src="@drawable/ic_share_white_24dp"
@@ -93,8 +93,8 @@
<ImageButton
android:id="@+id/delete"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="50dp"
android:layout_height="60dp"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:contentDescription="@string/delete"
@@ -13,7 +13,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="7dp"
android:background="?attr/send_button_bg"
android:background="@drawable/send_button_bg"
android:contentDescription="@string/menu_send"
tools:src="@drawable/ic_send_push_white_24dp" />
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="ButtonSecondary">
<item name="drawableTint">@color/gray10</item>
<item name="android:drawablePadding">5dp</item>
<item name="android:textColor">@color/gray10</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:background">@drawable/button_secondary_background</item>
</style>
</resources>
-3
View File
@@ -16,9 +16,6 @@
<attr name="conversation_list_item_divider" format="reference"/>
<attr name="ic_circle_checkbox" format="reference"/>
<attr name="secondary_button_fg" format="reference"/>
<attr name="send_button_bg" format="reference"/>
<attr name="button_bg" format="reference"/>
<attr name="floating_mini_bg" format="reference"/>
<attr name="fab_color" format="reference|color" />
+1
View File
@@ -633,6 +633,7 @@
<string name="proxy_list_header">Saved Proxies</string>
<string name="proxy_delete">Delete Proxy</string>
<string name="proxy_delete_explain">Are you sure you want to delete \"%1$s\"?</string>
<string name="proxy_use_proxy_confirm">Do you want to use proxy \"%1$s\"?</string>
<!-- deprecated -->
<string name="login_socks5">SOCKS5</string>
+3 -3
View File
@@ -87,13 +87,13 @@
<item name="android:textColor">@color/white</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:background">?attr/button_bg</item>
<item name="android:background">@drawable/button_bg</item>
</style>
<style name="ButtonSecondary">
<item name="drawableTint">?attr/secondary_button_fg</item>
<item name="drawableTint">?attr/fab_color</item>
<item name="android:drawablePadding">5dp</item>
<item name="android:textColor">?attr/secondary_button_fg</item>
<item name="android:textColor">?attr/fab_color</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:background">@drawable/button_secondary_background</item>
+4 -34
View File
@@ -52,7 +52,7 @@
<item name="attachment_type_selector_background">@color/white</item>
<item name="conversation_list_item_unreadcount_color">@color/def_unreadcount</item>
<item name="conversation_list_item_unreadcount_color">@color/def_unreadcount</item>
<item name="conversation_list_item_background">@drawable/conversation_list_item_background</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background</item>
<item name="conversation_list_item_contact_color">@color/core_light_90</item>
@@ -62,9 +62,6 @@
<item name="conversation_list_item_divider">@drawable/conversation_list_divider_shape</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox</item>
<item name="send_button_bg">@drawable/send_button_bg</item>
<item name="button_bg">@drawable/button_bg</item>
<item name="secondary_button_fg">@color/def_primary</item>
<item name="floating_mini_bg">@drawable/floating_mini_bg_light</item>
<item name="fab_color">@color/def_primary_lite</item>
@@ -132,7 +129,7 @@
<item name="quick_camera_icon">@drawable/quick_camera_light</item>
<item name="quick_mic_icon">@drawable/ic_mic_grey600_24dp</item>
<item name="recording_lock_background">@drawable/recording_lock_background_light</item>
<item name="recording_lock_background">@drawable/recording_lock_background_light</item>
<item name="conversation_item_sent_indicator_text_background">@drawable/conversation_item_sent_indicator_text_shape</item>
@@ -196,9 +193,6 @@
<item name="conversation_list_item_divider">@drawable/conversation_list_divider_shape_dark</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox</item>
<item name="send_button_bg">@drawable/send_button_bg</item>
<item name="button_bg">@drawable/button_bg</item>
<item name="secondary_button_fg">@color/gray10</item>
<item name="floating_mini_bg">@drawable/floating_mini_bg_dark</item>
<!-- dark theme -->
@@ -272,7 +266,7 @@
<item name="quick_camera_icon">@drawable/quick_camera_dark</item>
<item name="quick_mic_icon">@drawable/ic_mic_white_24dp</item>
<item name="recording_lock_background">@drawable/recording_lock_background_dark</item>
<item name="recording_lock_background">@drawable/recording_lock_background_dark</item>
<item name="menu_new_conversation_icon">@drawable/ic_add_white_24dp</item>
<item name="menu_search_icon">@drawable/ic_search_white_24dp</item>
@@ -323,8 +317,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_purple</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_purple</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_purple</item>
<item name="send_button_bg">@drawable/send_button_bg_purple</item>
<item name="button_bg">@drawable/button_bg_purple</item>
<item name="fab_color">@color/purple_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/purple_outgoing_bubble</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/purple_outgoing_label</item>
@@ -350,12 +342,10 @@
<item name="colorControlActivated">@color/purple_accent</item>
<item name="colorControlHighlight">@color/purple_accent</item>
<item name="conversation_list_item_unreadcount_color">@color/purple_unreadcount</item>
<item name="conversation_list_item_unreadcount_color">@color/purple_unreadcount</item>
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_purple</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_purple</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_purple</item>
<item name="send_button_bg">@drawable/send_button_bg_purple</item>
<item name="button_bg">@drawable/button_bg_purple</item>
<item name="fab_color">@color/purple_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/black</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/purple_outgoing_label</item>
@@ -394,8 +384,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_green</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_green</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_green</item>
<item name="send_button_bg">@drawable/send_button_bg_green</item>
<item name="button_bg">@drawable/button_bg_green</item>
<item name="fab_color">@color/green_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/green_outgoing_bubble</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/green_outgoing_label</item>
@@ -425,8 +413,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_green</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_green</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_green</item>
<item name="send_button_bg">@drawable/send_button_bg_green</item>
<item name="button_bg">@drawable/button_bg_green</item>
<item name="fab_color">@color/green_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/black</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/green_outgoing_label</item>
@@ -466,8 +452,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_blue</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_blue</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_blue</item>
<item name="send_button_bg">@drawable/send_button_bg_blue</item>
<item name="button_bg">@drawable/button_bg_blue</item>
<item name="fab_color">@color/blue_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/blue_outgoing_bubble</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/blue_outgoing_label</item>
@@ -497,8 +481,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_blue</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_blue</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_blue</item>
<item name="send_button_bg">@drawable/send_button_bg_blue</item>
<item name="button_bg">@drawable/button_bg_blue</item>
<item name="fab_color">@color/blue_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/black</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/blue_outgoing_label</item>
@@ -537,8 +519,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_red</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_red</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_red</item>
<item name="send_button_bg">@drawable/send_button_bg_red</item>
<item name="button_bg">@drawable/button_bg_red</item>
<item name="fab_color">@color/red_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/red_outgoing_bubble</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/red_outgoing_label</item>
@@ -568,8 +548,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_red</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_red</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_red</item>
<item name="send_button_bg">@drawable/send_button_bg_red</item>
<item name="button_bg">@drawable/button_bg_red</item>
<item name="fab_color">@color/red_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/black</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/red_outgoing_label</item>
@@ -608,8 +586,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_pink</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_pink</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_pink</item>
<item name="send_button_bg">@drawable/send_button_bg_pink</item>
<item name="button_bg">@drawable/button_bg_pink</item>
<item name="fab_color">@color/pink_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/pink_outgoing_bubble</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/pink_outgoing_label</item>
@@ -639,8 +615,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_pink</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_pink</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_pink</item>
<item name="send_button_bg">@drawable/send_button_bg_pink</item>
<item name="button_bg">@drawable/button_bg_pink</item>
<item name="fab_color">@color/pink_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/black</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/pink_outgoing_label</item>
@@ -679,8 +653,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_gray</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_gray</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_gray</item>
<item name="send_button_bg">@drawable/send_button_bg_gray</item>
<item name="button_bg">@drawable/button_bg_gray</item>
<item name="fab_color">@color/gray_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/gray_outgoing_bubble</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/gray_outgoing_label</item>
@@ -710,8 +682,6 @@
<item name="conversation_list_item_background">@drawable/conversation_list_item_background_gray</item>
<item name="pinned_list_item_background">@drawable/pinned_list_item_background_gray</item>
<item name="ic_circle_checkbox">@drawable/ic_circle_checkbox_gray</item>
<item name="send_button_bg">@drawable/send_button_bg_gray</item>
<item name="button_bg">@drawable/button_bg_gray</item>
<item name="fab_color">@color/gray_primary_lite</item>
<item name="conversation_item_outgoing_bubble_color">@color/black</item>
<item name="conversation_item_outgoing_text_secondary_color">@color/gray_outgoing_label</item>