mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
Compare commits
89 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f60f4539b5 | |||
| db7c8a9dfc | |||
| 9d1f4266c2 | |||
| 0614c4fc32 | |||
| 58e452b711 | |||
| b478696bed | |||
| f3584d9eaf | |||
| d9998167f4 | |||
| 874e300220 | |||
| 49e4b90cc3 | |||
| f492f2cd71 | |||
| 2800a282ec | |||
| 593e93304c | |||
| 77b6108ca8 | |||
| 90bf2b6b19 | |||
| dd91d52df4 | |||
| de29317fa6 | |||
| 44faee6208 | |||
| 41ccf19e58 | |||
| 05c390980a | |||
| 4446ed0792 | |||
| 11942da0c0 | |||
| 9a0604a1a8 | |||
| 93ca874e61 | |||
| 9ba21c4346 | |||
| c0e7798cad | |||
| 0aea5a2201 | |||
| 63873ec1d5 | |||
| 23f269d4b3 | |||
| 9ebacb23c4 | |||
| d1e83f46d8 | |||
| 5f2dd23a6e | |||
| d29b24e9a6 | |||
| 4f1415e127 | |||
| c604313c09 | |||
| e6bc14a8de | |||
| 4a5729d371 | |||
| d9ac76a317 | |||
| 867df35d44 | |||
| e946d61b92 | |||
| fa2ffbd70f | |||
| 1123f03134 | |||
| 49e86d08bf | |||
| 5f00826e65 | |||
| 82382f31f1 | |||
| 833cbf7302 | |||
| 4e329adaca | |||
| dbc9e4c3c2 | |||
| d9cff40fd5 | |||
| ef248712d6 | |||
| 9765ba1bac | |||
| afcccaa864 | |||
| 7caef2ceb9 | |||
| cb4480ad78 | |||
| 6388349c16 | |||
| 73a111aeac | |||
| 5869bdc9dd | |||
| ff7f75abed | |||
| 28ac3bd9eb | |||
| 49f07874f8 | |||
| 59779b7f2a | |||
| 677df359ae | |||
| 4e4aca675f | |||
| 76163e6012 | |||
| 85b319825d | |||
| 8edf8a6140 | |||
| acba74142c | |||
| c06f34923e | |||
| bb00342b5d | |||
| 25b43986d3 | |||
| 9b5984182f | |||
| ae9dfb1595 | |||
| 001a4a8675 | |||
| 13a1e92321 | |||
| fb97c8edaf | |||
| ffce59ea7e | |||
| dd7ef2d744 | |||
| a76f840368 | |||
| c4bac7359b | |||
| 67e028502d | |||
| e05b31a76b | |||
| d1b95e369d | |||
| 64a71f25f2 | |||
| 76e906579b | |||
| 23dc66622b | |||
| 997bbd336c | |||
| d8a0225b1a | |||
| ce656ca374 | |||
| dd202b4c72 |
@@ -0,0 +1,39 @@
|
||||
# Delta Chat Changelog
|
||||
|
||||
## v0.1.19
|
||||
2017-02-16
|
||||
|
||||
* Avoid unwanted downloads of lots of old messages
|
||||
* Make the "Chats" folder visible if the server hides new folders by default
|
||||
* Fix a crash when the server returns empty folders
|
||||
* Update Polish and Portuguese translations
|
||||
|
||||
## v0.1.18
|
||||
2017-02-11
|
||||
|
||||
* Add Polish translation
|
||||
* Use a new default background for chats
|
||||
* Improve typography by using the system font instead of a custom resource font
|
||||
* Remove custom plural handling, use Android's routines instead
|
||||
* Remove unused source code and strings
|
||||
* More fixes of lint errors and warnings
|
||||
|
||||
## v0.1.17
|
||||
2017-02-07
|
||||
|
||||
* Drop two unnecessary permissions: ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION
|
||||
* Really add French translation
|
||||
* Update Portuguese translation
|
||||
* Start fixing translation handling of the program
|
||||
* Remove special "foss" build, because the whole program is free now.
|
||||
|
||||
## v0.1.16
|
||||
2017-02-06
|
||||
|
||||
* Add French translation
|
||||
* Fix some lint errors and warnings
|
||||
|
||||
## v0.1.15
|
||||
2017-01-31
|
||||
|
||||
* Prepare for release on [F-Droid](https://f-droid.org/)
|
||||
@@ -24,15 +24,15 @@ tasks.withType(JavaCompile) {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile 'com.android.support:support-v4:23.4.0'
|
||||
compile 'com.android.support:appcompat-v7:25.1.1'
|
||||
compile 'com.googlecode.mp4parser:isoparser:1.0.6'
|
||||
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
||||
compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 23
|
||||
buildToolsVersion '23.0.3'
|
||||
compileSdkVersion 25
|
||||
buildToolsVersion '25.0.2'
|
||||
|
||||
useLibrary 'org.apache.http.legacy'
|
||||
defaultConfig.applicationId = "com.b44t.messenger"
|
||||
@@ -74,34 +74,17 @@ android {
|
||||
minifyEnabled false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
|
||||
foss {
|
||||
debuggable false
|
||||
jniDebuggable false
|
||||
signingConfig signingConfigs.release
|
||||
}
|
||||
}
|
||||
|
||||
defaultConfig.versionCode = 15
|
||||
defaultConfig.versionCode = 18
|
||||
|
||||
sourceSets.main {
|
||||
jniLibs.srcDir 'libs'
|
||||
jni.srcDirs = [] //disable automatic ndk-build call
|
||||
}
|
||||
|
||||
sourceSets.debug {
|
||||
manifest.srcFile 'config/debug/AndroidManifest.xml'
|
||||
}
|
||||
|
||||
sourceSets.release {
|
||||
manifest.srcFile 'config/release/AndroidManifest.xml'
|
||||
}
|
||||
|
||||
sourceSets.foss {
|
||||
manifest.srcFile 'config/foss/AndroidManifest.xml'
|
||||
}
|
||||
|
||||
productFlavors {
|
||||
/*
|
||||
x86 {
|
||||
ndk {
|
||||
abiFilter "x86"
|
||||
@@ -120,6 +103,7 @@ android {
|
||||
}
|
||||
versionCode = 1
|
||||
}
|
||||
*/
|
||||
fat {
|
||||
versionCode = 3
|
||||
}
|
||||
@@ -132,7 +116,7 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 14 // 14: Android 4.0 Ice Cream Sandwich 2011 (Telegram default), 21: Android 5.0 Lollipop 2014 (recommended for InstantRun)
|
||||
targetSdkVersion 23
|
||||
versionName "0.1.16"
|
||||
targetSdkVersion 25
|
||||
versionName "0.1.19" // do NOT forget to increase defaultConfig.versionCode!
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.b44t.messenger"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.location.network" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.location" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.LOCATION" android:required="false" />
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<application
|
||||
android:allowBackup="false"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/AppName"
|
||||
android:theme="@style/Theme.MessengerProj.Start"
|
||||
android:name=".ApplicationLoader"
|
||||
android:hardwareAccelerated="@bool/useHardwareAcceleration"
|
||||
android:largeHeap="true">
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.b44t.messenger"
|
||||
android:installLocation="auto">
|
||||
|
||||
<application
|
||||
android:allowBackup="false"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/AppName"
|
||||
android:theme="@style/Theme.MessengerProj.Start"
|
||||
android:name=".ApplicationLoader"
|
||||
android:hardwareAccelerated="@bool/useHardwareAcceleration"
|
||||
android:largeHeap="true">
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
package="com.b44t.messenger"
|
||||
android:installLocation="auto">
|
||||
|
||||
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.location.network" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.location" android:required="false" />
|
||||
<uses-feature android:name="android.hardware.LOCATION" android:required="false" />
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<application
|
||||
android:allowBackup="false"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/AppName"
|
||||
android:theme="@style/Theme.MessengerProj.Start"
|
||||
android:name=".ApplicationLoader"
|
||||
android:hardwareAccelerated="@bool/useHardwareAcceleration"
|
||||
android:largeHeap="true">
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
Submodule MessengerProj/jni/messenger-backend updated: a5cabc8147...9a9464fada
@@ -935,11 +935,15 @@ JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_CPtr2String(JNIEnv *env, jcl
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_MrStockAddStr(JNIEnv* env, jclass c, jint id, jstring str)
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrMailbox_String2CPtr(JNIEnv *env, jclass c, jstring str)
|
||||
{
|
||||
CHAR_REF(str);
|
||||
mrstock_add_str(id, strPtr);
|
||||
CHAR_UNREF(str)
|
||||
char* hStr = NULL;
|
||||
if( str ) {
|
||||
CHAR_REF(str);
|
||||
hStr = strdup(strPtr);
|
||||
CHAR_UNREF(str);
|
||||
}
|
||||
return (jlong)hStr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
android:allowBackup="false"
|
||||
android:hardwareAccelerated="@bool/useHardwareAcceleration"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/AppName"
|
||||
android:largeHeap="true"
|
||||
android:theme="@style/Theme.MessengerProj.Start"
|
||||
android:manageSpaceActivity="com.b44t.ui.ManageSpaceActivity">
|
||||
|
||||
Binary file not shown.
@@ -37,15 +37,9 @@ import android.content.pm.PackageManager;
|
||||
import android.content.res.Configuration;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.BitmapShader;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Point;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Shader;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
@@ -73,7 +67,6 @@ import android.widget.ListView;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.b44t.ui.ActionBar.BaseFragment;
|
||||
import com.b44t.ui.Components.ForegroundDetector;
|
||||
import com.b44t.ui.Components.TypefaceSpan;
|
||||
|
||||
@@ -95,7 +88,6 @@ import java.util.regex.Pattern;
|
||||
|
||||
public class AndroidUtilities {
|
||||
|
||||
private static final Hashtable<String, Typeface> typefaceCache = new Hashtable<>();
|
||||
private static int prevOrientation = -10;
|
||||
|
||||
public static int statusBarHeight = 0;
|
||||
@@ -142,101 +134,6 @@ public class AndroidUtilities {
|
||||
checkDisplaySize();
|
||||
}
|
||||
|
||||
public static int[] calcDrawableColor(Drawable drawable) {
|
||||
int bitmapColor = 0xff000000;
|
||||
int result[] = new int[2];
|
||||
try {
|
||||
if (drawable instanceof BitmapDrawable) {
|
||||
Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
|
||||
if (bitmap != null) {
|
||||
Bitmap b = Bitmaps.createScaledBitmap(bitmap, 1, 1, true);
|
||||
if (b != null) {
|
||||
bitmapColor = b.getPixel(0, 0);
|
||||
b.recycle();
|
||||
}
|
||||
}
|
||||
} else if (drawable instanceof ColorDrawable) {
|
||||
bitmapColor = ((ColorDrawable) drawable).getColor();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FileLog.e("messenger", e);
|
||||
}
|
||||
|
||||
double[] hsv = rgbToHsv((bitmapColor >> 16) & 0xff, (bitmapColor >> 8) & 0xff, bitmapColor & 0xff);
|
||||
hsv[1] = Math.min(1.0, hsv[1] + 0.05 + 0.1 * (1.0 - hsv[1]));
|
||||
hsv[2] = Math.max(0, hsv[2] * 0.65);
|
||||
int rgb[] = hsvToRgb(hsv[0], hsv[1], hsv[2]);
|
||||
result[0] = Color.argb(0x66, rgb[0], rgb[1], rgb[2]);
|
||||
result[1] = Color.argb(0x88, rgb[0], rgb[1], rgb[2]);
|
||||
return result;
|
||||
}
|
||||
|
||||
private static double[] rgbToHsv(int r, int g, int b) {
|
||||
double rf = r / 255.0;
|
||||
double gf = g / 255.0;
|
||||
double bf = b / 255.0;
|
||||
double max = (rf > gf && rf > bf) ? rf : (gf > bf) ? gf : bf;
|
||||
double min = (rf < gf && rf < bf) ? rf : (gf < bf) ? gf : bf;
|
||||
double h, s;
|
||||
double d = max - min;
|
||||
s = max == 0 ? 0 : d / max;
|
||||
if (max == min) {
|
||||
h = 0;
|
||||
} else {
|
||||
if (rf > gf && rf > bf) {
|
||||
h = (gf - bf) / d + (gf < bf ? 6 : 0);
|
||||
} else if (gf > bf) {
|
||||
h = (bf - rf) / d + 2;
|
||||
} else {
|
||||
h = (rf - gf) / d + 4;
|
||||
}
|
||||
h /= 6;
|
||||
}
|
||||
return new double[]{h, s, max};
|
||||
}
|
||||
|
||||
private static int[] hsvToRgb(double h, double s, double v) {
|
||||
double r = 0, g = 0, b = 0;
|
||||
double i = (int) Math.floor(h * 6);
|
||||
double f = h * 6 - i;
|
||||
double p = v * (1 - s);
|
||||
double q = v * (1 - f * s);
|
||||
double t = v * (1 - (1 - f) * s);
|
||||
switch ((int) i % 6) {
|
||||
case 0:
|
||||
r = v;
|
||||
g = t;
|
||||
b = p;
|
||||
break;
|
||||
case 1:
|
||||
r = q;
|
||||
g = v;
|
||||
b = p;
|
||||
break;
|
||||
case 2:
|
||||
r = p;
|
||||
g = v;
|
||||
b = t;
|
||||
break;
|
||||
case 3:
|
||||
r = p;
|
||||
g = q;
|
||||
b = v;
|
||||
break;
|
||||
case 4:
|
||||
r = t;
|
||||
g = p;
|
||||
b = v;
|
||||
break;
|
||||
case 5:
|
||||
r = v;
|
||||
g = p;
|
||||
b = q;
|
||||
break;
|
||||
}
|
||||
return new int[]{(int) (r * 255), (int) (g * 255), (int) (b * 255)};
|
||||
}
|
||||
|
||||
public static void requestAdjustResize(Activity activity, int classGuid) {
|
||||
if (activity == null || isTablet()) {
|
||||
return;
|
||||
@@ -325,21 +222,6 @@ public class AndroidUtilities {
|
||||
}
|
||||
}
|
||||
|
||||
public static Typeface getTypeface(String assetPath) {
|
||||
synchronized (typefaceCache) {
|
||||
if (!typefaceCache.containsKey(assetPath)) {
|
||||
try {
|
||||
Typeface t = Typeface.createFromAsset(ApplicationLoader.applicationContext.getAssets(), assetPath);
|
||||
typefaceCache.put(assetPath, t);
|
||||
} catch (Exception e) {
|
||||
FileLog.e("Typefaces", "Could not get typeface '" + assetPath + "' because " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return typefaceCache.get(assetPath);
|
||||
}
|
||||
}
|
||||
|
||||
public static void showKeyboard(View view) {
|
||||
if (view == null) {
|
||||
return;
|
||||
@@ -513,25 +395,6 @@ public class AndroidUtilities {
|
||||
return photoSize;
|
||||
}
|
||||
|
||||
public static String formatTTLString(int ttl) {
|
||||
if (ttl < 60) {
|
||||
return LocaleController.formatPluralString("Seconds", ttl);
|
||||
} else if (ttl < 60 * 60) {
|
||||
return LocaleController.formatPluralString("Minutes", ttl / 60);
|
||||
} else if (ttl < 60 * 60 * 24) {
|
||||
return LocaleController.formatPluralString("Hours", ttl / 60 / 60);
|
||||
} else if (ttl < 60 * 60 * 24 * 7) {
|
||||
return LocaleController.formatPluralString("Days", ttl / 60 / 60 / 24);
|
||||
} else {
|
||||
int days = ttl / 60 / 60 / 24;
|
||||
if (ttl % 7 == 0) {
|
||||
return LocaleController.formatPluralString("Weeks", days / 7);
|
||||
} else {
|
||||
return String.format("%s %s", LocaleController.formatPluralString("Weeks", days / 7), LocaleController.formatPluralString("Days", days % 7));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void clearCursorDrawable(EditText editText) {
|
||||
if (editText == null) {
|
||||
return;
|
||||
@@ -746,7 +609,7 @@ public class AndroidUtilities {
|
||||
}
|
||||
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(stringBuilder);
|
||||
for (int a = 0; a < bolds.size() / 2; a++) {
|
||||
spannableStringBuilder.setSpan(new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf")), bolds.get(a * 2), bolds.get(a * 2 + 1), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
spannableStringBuilder.setSpan(new TypefaceSpan(Typeface.DEFAULT_BOLD), bolds.get(a * 2), bolds.get(a * 2 + 1), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
for (int a = 0; a < colors.size() / 3; a++) {
|
||||
spannableStringBuilder.setSpan(new ForegroundColorSpan(colors.get(a * 3 + 2)), colors.get(a * 3), colors.get(a * 3 + 1), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
|
||||
@@ -53,9 +53,6 @@ public class ApplicationLoader extends Application {
|
||||
private static boolean isCustomTheme;
|
||||
private static final Object sync = new Object();
|
||||
|
||||
private static int serviceMessageColor;
|
||||
private static int serviceSelectedMessageColor;
|
||||
|
||||
public static volatile Context applicationContext;
|
||||
public static volatile Handler applicationHandler;
|
||||
private static volatile boolean applicationInited = false;
|
||||
@@ -73,25 +70,11 @@ public class ApplicationLoader extends Application {
|
||||
|
||||
public static void reloadWallpaper() {
|
||||
cachedWallpaper = null;
|
||||
serviceMessageColor = 0;
|
||||
ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).edit().remove("serviceMessageColor").commit();
|
||||
loadWallpaper();
|
||||
}
|
||||
|
||||
private static void calcBackgroundColor() {
|
||||
int result[] = AndroidUtilities.calcDrawableColor(cachedWallpaper);
|
||||
serviceMessageColor = result[0];
|
||||
serviceSelectedMessageColor = result[1];
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
preferences.edit().putInt("serviceMessageColor", serviceMessageColor).putInt("serviceSelectedMessageColor", serviceSelectedMessageColor).commit();
|
||||
}
|
||||
|
||||
public static int getServiceMessageColor() {
|
||||
return serviceMessageColor;
|
||||
}
|
||||
|
||||
public static int getServiceSelectedMessageColor() {
|
||||
return serviceSelectedMessageColor;
|
||||
return 0x44000000; // this color is used as a background for date headlines, empty chat hints and in the drawer
|
||||
}
|
||||
|
||||
public static void loadWallpaper() {
|
||||
@@ -107,8 +90,6 @@ public class ApplicationLoader extends Application {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
int selectedBackground = preferences.getInt("selectedBackground", 1000001);
|
||||
selectedColor = preferences.getInt("selectedColor", 0);
|
||||
serviceMessageColor = preferences.getInt("serviceMessageColor", 0);
|
||||
serviceSelectedMessageColor = preferences.getInt("serviceSelectedMessageColor", 0);
|
||||
if (selectedColor == 0) {
|
||||
if (selectedBackground == 1000001) {
|
||||
cachedWallpaper = applicationContext.getResources().getDrawable(R.drawable.background_hd);
|
||||
@@ -133,9 +114,6 @@ public class ApplicationLoader extends Application {
|
||||
}
|
||||
cachedWallpaper = new ColorDrawable(selectedColor);
|
||||
}
|
||||
if (serviceMessageColor == 0) {
|
||||
calcBackgroundColor();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -235,7 +213,7 @@ public class ApplicationLoader extends Application {
|
||||
// make sure, the notifications for the "deaddrop" dialog are muted by default
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("notify2_"+MrChat.MR_CHAT_ID_DEADDROP, 2);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
// open() sqlite file (you can inspect the file eg. with "Tools / Android Device Monitor / File Explorer")
|
||||
@@ -266,7 +244,6 @@ public class ApplicationLoader extends Application {
|
||||
// however, we may want to to have a look at onPause() eg. of activities (eg. for flushing data, if needed)
|
||||
MrMailbox.MrCallback(0, 0, 0); // do not remove this call; this makes sure, the function is not removed from build or warnings are printed!
|
||||
MrMailbox.init();
|
||||
MrMailbox.initStockStrings();
|
||||
|
||||
applicationHandler = new Handler(applicationContext.getMainLooper());
|
||||
|
||||
|
||||
@@ -50,13 +50,6 @@ import java.util.TimeZone;
|
||||
|
||||
public class LocaleController {
|
||||
|
||||
static final int QUANTITY_OTHER = 0x0000;
|
||||
static final int QUANTITY_ZERO = 0x0001;
|
||||
static final int QUANTITY_ONE = 0x0002;
|
||||
static final int QUANTITY_TWO = 0x0004;
|
||||
static final int QUANTITY_FEW = 0x0008;
|
||||
static final int QUANTITY_MANY = 0x0010;
|
||||
|
||||
public static boolean isRTL = false;
|
||||
public static int nameDisplayOrder = 1;
|
||||
private static boolean is24HourFormat = false;
|
||||
@@ -68,11 +61,7 @@ public class LocaleController {
|
||||
public FastDateFormat chatDate;
|
||||
public FastDateFormat chatFullDate;
|
||||
|
||||
private HashMap<String, PluralRules> allRules = new HashMap<>();
|
||||
|
||||
private Locale currentLocale;
|
||||
private Locale systemDefaultLocale;
|
||||
private PluralRules currentPluralRules;
|
||||
private LocaleInfo currentLocaleInfo;
|
||||
private LocaleInfo defaultLocalInfo;
|
||||
private HashMap<String, String> localeValues = new HashMap<>();
|
||||
@@ -140,30 +129,6 @@ public class LocaleController {
|
||||
}
|
||||
|
||||
public LocaleController() {
|
||||
addRules(new String[]{"bem", "brx", "da", "de", "el", "en", "eo", "es", "et", "fi", "fo", "gl", "he", "iw", "it", "nb",
|
||||
"nl", "nn", "no", "sv", "af", "bg", "bn", "ca", "eu", "fur", "fy", "gu", "ha", "is", "ku",
|
||||
"lb", "ml", "mr", "nah", "ne", "om", "or", "pa", "pap", "ps", "so", "sq", "sw", "ta", "te",
|
||||
"tk", "ur", "zu", "mn", "gsw", "chr", "rm", "pt", "an", "ast"}, new PluralRules_One());
|
||||
addRules(new String[]{"cs", "sk"}, new PluralRules_Czech());
|
||||
addRules(new String[]{"ff", "fr", "kab"}, new PluralRules_French());
|
||||
addRules(new String[]{"hr", "ru", "sr", "uk", "be", "bs", "sh"}, new PluralRules_Balkan());
|
||||
addRules(new String[]{"lv"}, new PluralRules_Latvian());
|
||||
addRules(new String[]{"lt"}, new PluralRules_Lithuanian());
|
||||
addRules(new String[]{"pl"}, new PluralRules_Polish());
|
||||
addRules(new String[]{"ro", "mo"}, new PluralRules_Romanian());
|
||||
addRules(new String[]{"sl"}, new PluralRules_Slovenian());
|
||||
addRules(new String[]{"ar"}, new PluralRules_Arabic());
|
||||
addRules(new String[]{"mk"}, new PluralRules_Macedonian());
|
||||
addRules(new String[]{"cy"}, new PluralRules_Welsh());
|
||||
addRules(new String[]{"br"}, new PluralRules_Breton());
|
||||
addRules(new String[]{"lag"}, new PluralRules_Langi());
|
||||
addRules(new String[]{"shi"}, new PluralRules_Tachelhit());
|
||||
addRules(new String[]{"mt"}, new PluralRules_Maltese());
|
||||
addRules(new String[]{"ga", "se", "sma", "smi", "smj", "smn", "sms"}, new PluralRules_Two());
|
||||
addRules(new String[]{"ak", "am", "bh", "fil", "tl", "guw", "hi", "ln", "mg", "nso", "ti", "wa"}, new PluralRules_Zero());
|
||||
addRules(new String[]{"az", "bm", "fa", "ig", "hu", "ja", "kde", "kea", "ko", "my", "ses", "sg", "to",
|
||||
"tr", "vi", "wo", "yo", "zh", "bo", "dz", "id", "jv", "ka", "km", "kn", "ms", "th"}, new PluralRules_None());
|
||||
|
||||
LocaleInfo localeInfo = new LocaleInfo();
|
||||
localeInfo.name = "English";
|
||||
localeInfo.nameEnglish = "English";
|
||||
@@ -195,6 +160,14 @@ public class LocaleController {
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
|
||||
localeInfo = new LocaleInfo();
|
||||
localeInfo.name = "Français";
|
||||
localeInfo.nameEnglish = "French";
|
||||
localeInfo.shortName = "fr";
|
||||
localeInfo.pathToFile = null;
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
|
||||
localeInfo = new LocaleInfo();
|
||||
localeInfo.name = "Nederlands";
|
||||
localeInfo.nameEnglish = "Dutch";
|
||||
@@ -203,15 +176,13 @@ public class LocaleController {
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
|
||||
/* EDIT BY MR
|
||||
localeInfo = new LocaleInfo();
|
||||
localeInfo.name = "العربية";
|
||||
localeInfo.nameEnglish = "Arabic";
|
||||
localeInfo.shortName = "ar";
|
||||
localeInfo.name = "Polski";
|
||||
localeInfo.nameEnglish = "Polish";
|
||||
localeInfo.shortName = "pl";
|
||||
localeInfo.pathToFile = null;
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
*/
|
||||
|
||||
localeInfo = new LocaleInfo();
|
||||
localeInfo.name = "Português";
|
||||
@@ -221,24 +192,6 @@ public class LocaleController {
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
|
||||
/* EDIT BY MR
|
||||
localeInfo = new LocaleInfo();
|
||||
localeInfo.name = "Português (Portugal)";
|
||||
localeInfo.nameEnglish = "Portuguese (Portugal)";
|
||||
localeInfo.shortName = "pt_PT";
|
||||
localeInfo.pathToFile = null;
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
|
||||
localeInfo = new LocaleInfo();
|
||||
localeInfo.name = "한국어";
|
||||
localeInfo.nameEnglish = "Korean";
|
||||
localeInfo.shortName = "ko";
|
||||
localeInfo.pathToFile = null;
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
*/
|
||||
|
||||
loadOtherLanguages();
|
||||
|
||||
for (LocaleInfo locale : otherLanguages) {
|
||||
@@ -260,7 +213,6 @@ public class LocaleController {
|
||||
localeInfo.pathToFile = null;
|
||||
sortedLanguages.add(0, localeInfo);
|
||||
|
||||
systemDefaultLocale = Locale.getDefault();
|
||||
is24HourFormat = DateFormat.is24HourFormat(ApplicationLoader.applicationContext);
|
||||
LocaleInfo currentInfo = null;
|
||||
boolean override = false;
|
||||
@@ -275,11 +227,11 @@ public class LocaleController {
|
||||
}
|
||||
}
|
||||
|
||||
if (currentInfo == null && systemDefaultLocale.getLanguage() != null) {
|
||||
currentInfo = languagesDict.get(systemDefaultLocale.getLanguage());
|
||||
if (currentInfo == null && Locale.getDefault().getLanguage() != null) {
|
||||
currentInfo = languagesDict.get(Locale.getDefault().getLanguage());
|
||||
}
|
||||
if (currentInfo == null) {
|
||||
currentInfo = languagesDict.get(getLocaleString(systemDefaultLocale));
|
||||
currentInfo = languagesDict.get(getLocaleString(Locale.getDefault()));
|
||||
}
|
||||
if (currentInfo == null) {
|
||||
currentInfo = languagesDict.get("en");
|
||||
@@ -297,33 +249,6 @@ public class LocaleController {
|
||||
}
|
||||
}
|
||||
|
||||
private void addRules(String[] languages, PluralRules rules) {
|
||||
for (String language : languages) {
|
||||
allRules.put(language, rules);
|
||||
}
|
||||
}
|
||||
|
||||
private String stringForQuantity(int quantity) {
|
||||
switch (quantity) {
|
||||
case QUANTITY_ZERO:
|
||||
return "zero";
|
||||
case QUANTITY_ONE:
|
||||
return "one";
|
||||
case QUANTITY_TWO:
|
||||
return "two";
|
||||
case QUANTITY_FEW:
|
||||
return "few";
|
||||
case QUANTITY_MANY:
|
||||
return "many";
|
||||
default:
|
||||
return "other";
|
||||
}
|
||||
}
|
||||
|
||||
public Locale getSystemDefaultLocale() {
|
||||
return systemDefaultLocale;
|
||||
}
|
||||
|
||||
private String getLocaleString(Locale locale) {
|
||||
if (locale == null) {
|
||||
return "en";
|
||||
@@ -348,7 +273,7 @@ public class LocaleController {
|
||||
}
|
||||
|
||||
public static String getLocaleStringIso639() {
|
||||
Locale locale = getInstance().getSystemDefaultLocale();
|
||||
Locale locale = Locale.getDefault();
|
||||
if (locale == null) {
|
||||
return "en";
|
||||
}
|
||||
@@ -371,68 +296,6 @@ public class LocaleController {
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
public boolean applyLanguageFile(File file) {
|
||||
try {
|
||||
HashMap<String, String> stringMap = getLocaleFileStrings(file);
|
||||
|
||||
String languageName = stringMap.get("LanguageName");
|
||||
String languageNameInEnglish = stringMap.get("LanguageNameInEnglish");
|
||||
String languageCode = stringMap.get("LanguageCode");
|
||||
|
||||
if (languageName != null && languageName.length() > 0 &&
|
||||
languageNameInEnglish != null && languageNameInEnglish.length() > 0 &&
|
||||
languageCode != null && languageCode.length() > 0) {
|
||||
|
||||
if (languageName.contains("&") || languageName.contains("|")) {
|
||||
return false;
|
||||
}
|
||||
if (languageNameInEnglish.contains("&") || languageNameInEnglish.contains("|")) {
|
||||
return false;
|
||||
}
|
||||
if (languageCode.contains("&") || languageCode.contains("|") || languageCode.contains("/") || languageCode.contains("\\")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
File finalFile = new File(ApplicationLoader.getFilesDirFixed(), languageCode + ".xml");
|
||||
if (!AndroidUtilities.copyFile(file, finalFile)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
LocaleInfo localeInfo = languagesDict.get(languageCode);
|
||||
if (localeInfo == null) {
|
||||
localeInfo = new LocaleInfo();
|
||||
localeInfo.name = languageName;
|
||||
localeInfo.nameEnglish = languageNameInEnglish;
|
||||
localeInfo.shortName = languageCode;
|
||||
|
||||
localeInfo.pathToFile = finalFile.getAbsolutePath();
|
||||
sortedLanguages.add(localeInfo);
|
||||
languagesDict.put(localeInfo.shortName, localeInfo);
|
||||
otherLanguages.add(localeInfo);
|
||||
|
||||
Collections.sort(sortedLanguages, new Comparator<LocaleInfo>() {
|
||||
@Override
|
||||
public int compare(LocaleController.LocaleInfo o, LocaleController.LocaleInfo o2) {
|
||||
if (o.shortName == null) {
|
||||
return -1;
|
||||
} else if (o2.shortName == null) {
|
||||
return 1;
|
||||
}
|
||||
return o.name.compareTo(o2.name);
|
||||
}
|
||||
});
|
||||
saveOtherLanguages();
|
||||
}
|
||||
localeValues = stringMap;
|
||||
applyLanguage(localeInfo, true, true);
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FileLog.e("messenger", e);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void saveOtherLanguages() {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("langconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
@@ -447,7 +310,7 @@ public class LocaleController {
|
||||
}
|
||||
}
|
||||
editor.putString("locales", locales);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public boolean deleteLanguage(LocaleInfo localeInfo) {
|
||||
@@ -561,16 +424,16 @@ public class LocaleController {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putString("language", localeInfo.shortName);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
newLocale = systemDefaultLocale;
|
||||
newLocale = Locale.getDefault();
|
||||
languageOverride = null;
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.remove("language");
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
|
||||
if (newLocale != null) {
|
||||
LocaleInfo info = null;
|
||||
@@ -593,10 +456,6 @@ public class LocaleController {
|
||||
}
|
||||
currentLocale = newLocale;
|
||||
currentLocaleInfo = localeInfo;
|
||||
currentPluralRules = allRules.get(currentLocale.getLanguage());
|
||||
if (currentPluralRules == null) {
|
||||
currentPluralRules = allRules.get("en");
|
||||
}
|
||||
changingConfiguration = true;
|
||||
Locale.setDefault(currentLocale);
|
||||
android.content.res.Configuration config = new android.content.res.Configuration();
|
||||
@@ -611,10 +470,6 @@ public class LocaleController {
|
||||
recreateFormatters();
|
||||
}
|
||||
|
||||
private void loadCurrentLocale() {
|
||||
localeValues.clear();
|
||||
}
|
||||
|
||||
public static String getCurrentLanguageName() {
|
||||
return getString("LanguageName", R.string.LanguageName);
|
||||
}
|
||||
@@ -638,16 +493,6 @@ public class LocaleController {
|
||||
return getInstance().getStringInternal(key, res);
|
||||
}
|
||||
|
||||
public static String formatPluralString(String key, int plural) {
|
||||
if (key == null || key.length() == 0 || getInstance().currentPluralRules == null) {
|
||||
return "LOC_ERR:" + key;
|
||||
}
|
||||
String param = getInstance().stringForQuantity(getInstance().currentPluralRules.quantityForNumber(plural));
|
||||
param = key + "_" + param;
|
||||
int resourceId = ApplicationLoader.applicationContext.getResources().getIdentifier(param, "string", ApplicationLoader.applicationContext.getPackageName());
|
||||
return formatString(param, resourceId, plural);
|
||||
}
|
||||
|
||||
public static String formatString(String key, int res, Object... args) {
|
||||
try {
|
||||
String value = getInstance().localeValues.get(key);
|
||||
@@ -684,7 +529,6 @@ public class LocaleController {
|
||||
return;
|
||||
}
|
||||
is24HourFormat = DateFormat.is24HourFormat(ApplicationLoader.applicationContext);
|
||||
systemDefaultLocale = newConfig.locale;
|
||||
if (languageOverride != null) {
|
||||
LocaleInfo toSet = currentLocaleInfo;
|
||||
currentLocaleInfo = null;
|
||||
@@ -698,10 +542,6 @@ public class LocaleController {
|
||||
recreateFormatters();
|
||||
}
|
||||
currentLocale = newLocale;
|
||||
currentPluralRules = allRules.get(currentLocale.getLanguage());
|
||||
if (currentPluralRules == null) {
|
||||
currentPluralRules = allRules.get("en");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -724,30 +564,6 @@ public class LocaleController {
|
||||
return "LOC_ERR: formatDateChat";
|
||||
}
|
||||
|
||||
public static String formatDate(long date) {
|
||||
try {
|
||||
Calendar rightNow = Calendar.getInstance();
|
||||
int day = rightNow.get(Calendar.DAY_OF_YEAR);
|
||||
int year = rightNow.get(Calendar.YEAR);
|
||||
rightNow.setTimeInMillis(date * 1000);
|
||||
int dateDay = rightNow.get(Calendar.DAY_OF_YEAR);
|
||||
int dateYear = rightNow.get(Calendar.YEAR);
|
||||
|
||||
if (dateDay == day && year == dateYear) {
|
||||
return getInstance().formatterDay.format(new Date(date * 1000));
|
||||
} else if (dateDay + 1 == day && year == dateYear) {
|
||||
return getString("Yesterday", R.string.Yesterday);
|
||||
} else if (year == dateYear) {
|
||||
return getInstance().formatterMonth.format(new Date(date * 1000));
|
||||
} else {
|
||||
return getInstance().formatterYear.format(new Date(date * 1000));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FileLog.e("messenger", e);
|
||||
}
|
||||
return "LOC_ERR: formatDate";
|
||||
}
|
||||
|
||||
public static String formatDateAudio(long date) {
|
||||
try {
|
||||
Calendar rightNow = Calendar.getInstance();
|
||||
@@ -772,40 +588,6 @@ public class LocaleController {
|
||||
return "LOC_ERR";
|
||||
}
|
||||
|
||||
public static String formatDateOnline(long date) {
|
||||
try {
|
||||
Calendar rightNow = Calendar.getInstance();
|
||||
int day = rightNow.get(Calendar.DAY_OF_YEAR);
|
||||
int year = rightNow.get(Calendar.YEAR);
|
||||
rightNow.setTimeInMillis(date * 1000);
|
||||
int dateDay = rightNow.get(Calendar.DAY_OF_YEAR);
|
||||
int dateYear = rightNow.get(Calendar.YEAR);
|
||||
|
||||
if (dateDay == day && year == dateYear) {
|
||||
return String.format("%s %s %s", LocaleController.getString("LastSeen", R.string.LastSeen), LocaleController.getString("TodayAt", R.string.TodayAt), getInstance().formatterDay.format(new Date(date * 1000)));
|
||||
/*int diff = (int) (ConnectionsManager.getInstance().getCurrentTime() - date) / 60;
|
||||
if (diff < 1) {
|
||||
return LocaleController.getString("LastSeenNow", R.string.LastSeenNow);
|
||||
} else if (diff < 60) {
|
||||
return LocaleController.formatPluralString("LastSeenMinutes", diff);
|
||||
} else {
|
||||
return LocaleController.formatPluralString("LastSeenHours", (int) Math.ceil(diff / 60.0f));
|
||||
}*/
|
||||
} else if (dateDay + 1 == day && year == dateYear) {
|
||||
return String.format("%s %s %s", LocaleController.getString("LastSeen", R.string.LastSeen), LocaleController.getString("YesterdayAt", R.string.YesterdayAt), getInstance().formatterDay.format(new Date(date * 1000)));
|
||||
} else if (year == dateYear) {
|
||||
String format = LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, getInstance().formatterMonth.format(new Date(date * 1000)), getInstance().formatterDay.format(new Date(date * 1000)));
|
||||
return String.format("%s %s", LocaleController.getString("LastSeenDate", R.string.LastSeenDate), format);
|
||||
} else {
|
||||
String format = LocaleController.formatString("formatDateAtTime", R.string.formatDateAtTime, getInstance().formatterYear.format(new Date(date * 1000)), getInstance().formatterDay.format(new Date(date * 1000)));
|
||||
return String.format("%s %s", LocaleController.getString("LastSeenDate", R.string.LastSeenDate), format);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
FileLog.e("messenger", e);
|
||||
}
|
||||
return "LOC_ERR";
|
||||
}
|
||||
|
||||
private FastDateFormat createFormatter(Locale locale, String format, String defaultFormat) {
|
||||
if (format == null || format.length() == 0) {
|
||||
format = defaultFormat;
|
||||
@@ -867,284 +649,4 @@ public class LocaleController {
|
||||
}
|
||||
return "LOC_ERR";
|
||||
}
|
||||
|
||||
/*
|
||||
public static String formatShortNumber(int number, int[] rounded) {
|
||||
String K = "";
|
||||
int lastDec = 0;
|
||||
int KCount = 0;
|
||||
while (number / 1000 > 0) {
|
||||
K += "K";
|
||||
lastDec = (number % 1000) / 100;
|
||||
number /= 1000;
|
||||
}
|
||||
if (rounded != null) {
|
||||
double value = number + lastDec / 10.0;
|
||||
for (int a = 0; a < K.length(); a++) {
|
||||
value *= 1000;
|
||||
}
|
||||
rounded[0] = (int) value;
|
||||
}
|
||||
if (lastDec != 0 && K.length() > 0) {
|
||||
if (K.length() == 2) {
|
||||
return String.format(Locale.US, "%d.%dM", number, lastDec);
|
||||
} else {
|
||||
return String.format(Locale.US, "%d.%d%s", number, lastDec, K);
|
||||
}
|
||||
}
|
||||
if (K.length() == 2) {
|
||||
return String.format(Locale.US, "%dM", number);
|
||||
} else {
|
||||
return String.format(Locale.US, "%d%s", number, K);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
abstract public static class PluralRules {
|
||||
abstract int quantityForNumber(int n);
|
||||
}
|
||||
|
||||
public static class PluralRules_Zero extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count == 0 || count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Welsh extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count == 0) {
|
||||
return QUANTITY_ZERO;
|
||||
} else if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (count == 2) {
|
||||
return QUANTITY_TWO;
|
||||
} else if (count == 3) {
|
||||
return QUANTITY_FEW;
|
||||
} else if (count == 6) {
|
||||
return QUANTITY_MANY;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Two extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (count == 2) {
|
||||
return QUANTITY_TWO;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Tachelhit extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count >= 0 && count <= 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (count >= 2 && count <= 10) {
|
||||
return QUANTITY_FEW;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Slovenian extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
int rem100 = count % 100;
|
||||
if (rem100 == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (rem100 == 2) {
|
||||
return QUANTITY_TWO;
|
||||
} else if (rem100 >= 3 && rem100 <= 4) {
|
||||
return QUANTITY_FEW;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Romanian extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
int rem100 = count % 100;
|
||||
if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if ((count == 0 || (rem100 >= 1 && rem100 <= 19))) {
|
||||
return QUANTITY_FEW;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Polish extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
int rem100 = count % 100;
|
||||
int rem10 = count % 10;
|
||||
if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (rem10 >= 2 && rem10 <= 4 && !(rem100 >= 12 && rem100 <= 14) && !(rem100 >= 22 && rem100 <= 24)) {
|
||||
return QUANTITY_FEW;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_One extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
return count == 1 ? QUANTITY_ONE : QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_None extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Maltese extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
int rem100 = count % 100;
|
||||
if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (count == 0 || (rem100 >= 2 && rem100 <= 10)) {
|
||||
return QUANTITY_FEW;
|
||||
} else if (rem100 >= 11 && rem100 <= 19) {
|
||||
return QUANTITY_MANY;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Macedonian extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count % 10 == 1 && count != 11) {
|
||||
return QUANTITY_ONE;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Lithuanian extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
int rem100 = count % 100;
|
||||
int rem10 = count % 10;
|
||||
if (rem10 == 1 && !(rem100 >= 11 && rem100 <= 19)) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (rem10 >= 2 && rem10 <= 9 && !(rem100 >= 11 && rem100 <= 19)) {
|
||||
return QUANTITY_FEW;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Latvian extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count == 0) {
|
||||
return QUANTITY_ZERO;
|
||||
} else if (count % 10 == 1 && count % 100 != 11) {
|
||||
return QUANTITY_ONE;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Langi extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count == 0) {
|
||||
return QUANTITY_ZERO;
|
||||
} else if (count > 0 && count < 2) {
|
||||
return QUANTITY_ONE;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_French extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count >= 0 && count < 2) {
|
||||
return QUANTITY_ONE;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Czech extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (count >= 2 && count <= 4) {
|
||||
return QUANTITY_FEW;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Breton extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
if (count == 0) {
|
||||
return QUANTITY_ZERO;
|
||||
} else if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (count == 2) {
|
||||
return QUANTITY_TWO;
|
||||
} else if (count == 3) {
|
||||
return QUANTITY_FEW;
|
||||
} else if (count == 6) {
|
||||
return QUANTITY_MANY;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Balkan extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
int rem100 = count % 100;
|
||||
int rem10 = count % 10;
|
||||
if (rem10 == 1 && rem100 != 11) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (rem10 >= 2 && rem10 <= 4 && !(rem100 >= 12 && rem100 <= 14)) {
|
||||
return QUANTITY_FEW;
|
||||
} else if ((rem10 == 0 || (rem10 >= 5 && rem10 <= 9) || (rem100 >= 11 && rem100 <= 14))) {
|
||||
return QUANTITY_MANY;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class PluralRules_Arabic extends PluralRules {
|
||||
public int quantityForNumber(int count) {
|
||||
int rem100 = count % 100;
|
||||
if (count == 0) {
|
||||
return QUANTITY_ZERO;
|
||||
} else if (count == 1) {
|
||||
return QUANTITY_ONE;
|
||||
} else if (count == 2) {
|
||||
return QUANTITY_TWO;
|
||||
} else if (rem100 >= 3 && rem100 <= 10) {
|
||||
return QUANTITY_FEW;
|
||||
} else if (rem100 >= 11 && rem100 <= 99) {
|
||||
return QUANTITY_MANY;
|
||||
} else {
|
||||
return QUANTITY_OTHER;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2422,7 +2422,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("shuffleMusic", shuffleMusic);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (shuffleMusic) {
|
||||
buildShuffledPlayList();
|
||||
currentPlaylistNum = 0;
|
||||
@@ -2446,7 +2446,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("repeatMode", repeatMode);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public boolean pauseAudio(MessageObject messageObject) {
|
||||
@@ -2982,7 +2982,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("save_gallery", saveToGallery);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
checkSaveToGalleryFiles();
|
||||
}
|
||||
|
||||
@@ -2991,7 +2991,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("autoplay_gif", autoplayGifs);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -3000,7 +3000,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("raise_to_speak", raiseToSpeak);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public void toggleDirectShare() {
|
||||
@@ -3008,7 +3008,7 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("direct_share", directShare);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public void checkSaveToGalleryFiles() { // not sure, but it seems as if these paths are not needed
|
||||
@@ -3495,12 +3495,12 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("videoconvert", Activity.MODE_PRIVATE);
|
||||
boolean isPreviousOk = preferences.getBoolean("isPreviousOk", true);
|
||||
preferences.edit().putBoolean("isPreviousOk", false).commit();
|
||||
preferences.edit().putBoolean("isPreviousOk", false).apply();
|
||||
|
||||
File inputFile = new File(videoPath);
|
||||
if (!inputFile.canRead() || !isPreviousOk) {
|
||||
didWriteData(messageObject, cacheFile, true, true);
|
||||
preferences.edit().putBoolean("isPreviousOk", true).commit();
|
||||
preferences.edit().putBoolean("isPreviousOk", true).apply();
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -3888,11 +3888,11 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
FileLog.e("messenger", "time = " + (System.currentTimeMillis() - time));
|
||||
}
|
||||
} else {
|
||||
preferences.edit().putBoolean("isPreviousOk", true).commit();
|
||||
preferences.edit().putBoolean("isPreviousOk", true).apply();
|
||||
didWriteData(messageObject, cacheFile, true, true);
|
||||
return false;
|
||||
}
|
||||
preferences.edit().putBoolean("isPreviousOk", true).commit();
|
||||
preferences.edit().putBoolean("isPreviousOk", true).apply();
|
||||
didWriteData(messageObject, cacheFile, true, error);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
package com.b44t.messenger;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Paint;
|
||||
import android.text.Layout;
|
||||
import android.text.Spannable;
|
||||
@@ -43,6 +44,8 @@ import java.util.regex.Pattern;
|
||||
|
||||
public class MessageObject {
|
||||
|
||||
private Context mContext = ApplicationLoader.applicationContext;
|
||||
|
||||
public static final int MESSAGE_SEND_STATE_SENDING = 1;
|
||||
public static final int MESSAGE_SEND_STATE_SENT = 0;
|
||||
public static final int MESSAGE_SEND_STATE_SEND_ERROR = 2;
|
||||
@@ -113,130 +116,36 @@ public class MessageObject {
|
||||
}
|
||||
}
|
||||
|
||||
/*if (message instanceof TLRPC.TL_messageService) {
|
||||
if (message.action != null) {
|
||||
if (message.action instanceof TLRPC.TL_messageActionChatCreate) {
|
||||
if (isOut()) {
|
||||
messageText = LocaleController.getString("ActionYouCreateGroup", R.string.ActionYouCreateGroup);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionCreateGroup", R.string.ActionCreateGroup), "un1", fromUser);
|
||||
}
|
||||
} else if (message.action instanceof TLRPC.TL_messageActionChatDeleteUser) {
|
||||
if (message.action.user_id == message.from_id) {
|
||||
if (isOut()) {
|
||||
messageText = LocaleController.getString("ActionYouLeftUser", R.string.ActionYouLeftUser);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionLeftUser", R.string.ActionLeftUser), "un1", fromUser);
|
||||
}
|
||||
} else {
|
||||
TLRPC.User whoUser = null;
|
||||
if (users != null) {
|
||||
whoUser = users.get(message.action.user_id);
|
||||
}
|
||||
if (whoUser == null) {
|
||||
whoUser = MessagesController.getInstance().getUser(message.action.user_id);
|
||||
}
|
||||
if (isOut()) {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionYouKickUser", R.string.ActionYouKickUser), "un2", whoUser);
|
||||
} else if (message.action.user_id == UserConfig.getClientUserId()) {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionKickUserYou", R.string.ActionKickUserYou), "un1", fromUser);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionKickUser", R.string.ActionKickUser), "un2", whoUser);
|
||||
messageText = replaceWithLink(messageText, "un1", fromUser);
|
||||
}
|
||||
}
|
||||
} else if (message.action instanceof TLRPC.TL_messageActionChatAddUser) {
|
||||
int singleUserId = messageOwner.action.user_id;
|
||||
if (singleUserId == 0 && messageOwner.action.users.size() == 1) {
|
||||
singleUserId = messageOwner.action.users.get(0);
|
||||
}
|
||||
if (singleUserId != 0) {
|
||||
TLRPC.User whoUser = null;
|
||||
if (users != null) {
|
||||
whoUser = users.get(singleUserId);
|
||||
}
|
||||
if (whoUser == null) {
|
||||
whoUser = MessagesController.getInstance().getUser(singleUserId);
|
||||
}
|
||||
if (singleUserId == message.from_id) {
|
||||
if (isOut()) {
|
||||
messageText = LocaleController.getString("ActionAddUserSelfYou", R.string.ActionAddUserSelfYou);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionAddUserSelf", R.string.ActionAddUserSelf), "un1", fromUser);
|
||||
}
|
||||
} else {
|
||||
if (isOut()) {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionYouAddUser", R.string.ActionYouAddUser), "un2", whoUser);
|
||||
} else if (singleUserId == UserConfig.getClientUserId()) {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionAddUserYou", R.string.ActionAddUserYou), "un1", fromUser);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionAddUser", R.string.ActionAddUser), "un2", whoUser);
|
||||
messageText = replaceWithLink(messageText, "un1", fromUser);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (isOut()) {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionYouAddUser", R.string.ActionYouAddUser), "un2", message.action.users, users);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionAddUser", R.string.ActionAddUser), "un2", message.action.users, users);
|
||||
messageText = replaceWithLink(messageText, "un1", fromUser);
|
||||
}
|
||||
}
|
||||
} else if (message.action instanceof TLRPC.TL_messageActionChatEditPhoto) {
|
||||
if (isOut()) {
|
||||
messageText = LocaleController.getString("ActionYouChangedPhoto", R.string.ActionYouChangedPhoto);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionChangedPhoto", R.string.ActionChangedPhoto), "un1", fromUser);
|
||||
}
|
||||
} else if (message.action instanceof TLRPC.TL_messageActionChatEditTitle) {
|
||||
if (isOut()) {
|
||||
messageText = LocaleController.getString("ActionYouChangedTitle", R.string.ActionYouChangedTitle).replace("un2", message.action.title);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionChangedTitle", R.string.ActionChangedTitle).replace("un2", message.action.title), "un1", fromUser);
|
||||
}
|
||||
} else if (message.action instanceof TLRPC.TL_messageActionChatDeletePhoto) {
|
||||
if (isOut()) {
|
||||
messageText = LocaleController.getString("ActionYouRemovedPhoto", R.string.ActionYouRemovedPhoto);
|
||||
} else {
|
||||
messageText = replaceWithLink(LocaleController.getString("ActionRemovedPhoto", R.string.ActionRemovedPhoto), "un1", fromUser);
|
||||
}
|
||||
} else if (message.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) {
|
||||
messageText = LocaleController.formatString("NotificationContactNewPhoto", R.string.NotificationContactNewPhoto, UserObject.getUserName(fromUser));
|
||||
} else if (message.action instanceof TLRPC.TL_messageActionHistoryClear) {
|
||||
messageText = LocaleController.getString("HistoryCleared", R.string.HistoryCleared);
|
||||
}
|
||||
}
|
||||
} else*/ if (!isMediaEmpty()) {
|
||||
if (!isMediaEmpty()) {
|
||||
if (message.media instanceof TLRPC.TL_messageMediaPhoto) {
|
||||
messageText = LocaleController.getString("AttachPhoto", R.string.AttachPhoto);
|
||||
messageText = mContext.getString(R.string.AttachPhoto);
|
||||
} else if (isVideo()) {
|
||||
messageText = LocaleController.getString("AttachVideo", R.string.AttachVideo);
|
||||
messageText = mContext.getString(R.string.AttachVideo);
|
||||
} else if (isVoice()) {
|
||||
messageText = LocaleController.getString("AttachAudio", R.string.AttachAudio);
|
||||
messageText = mContext.getString(R.string.AttachAudio);
|
||||
} else if (message.media instanceof TLRPC.TL_messageMediaGeo || message.media instanceof TLRPC.TL_messageMediaVenue) {
|
||||
messageText = LocaleController.getString("AttachLocation", R.string.AttachLocation);
|
||||
messageText = mContext.getString(R.string.AttachLocation);
|
||||
} else if (message.media instanceof TLRPC.TL_messageMediaContact) {
|
||||
messageText = LocaleController.getString("AttachContact", R.string.AttachContact);
|
||||
/*} else if (message.media instanceof TLRPC.TL_messageMediaUnsupported) {
|
||||
messageText = LocaleController.getString("UnsupportedMedia", R.string.UnsupportedMedia);*/
|
||||
messageText = mContext.getString(R.string.AttachContact);
|
||||
} else if (message.media instanceof TLRPC.TL_messageMediaDocument) {
|
||||
if (isSticker()) {
|
||||
String sch = getStrickerChar();
|
||||
if (sch != null && sch.length() > 0) {
|
||||
messageText = String.format("%s %s", sch, LocaleController.getString("AttachSticker", R.string.AttachSticker));
|
||||
// @TODO: This needs plural handling.
|
||||
messageText = String.format("%s %s", sch, mContext.getString(R.string.AttachSticker));
|
||||
} else {
|
||||
messageText = LocaleController.getString("AttachSticker", R.string.AttachSticker);
|
||||
messageText = mContext.getString(R.string.AttachSticker);
|
||||
}
|
||||
} else if (isMusic()) {
|
||||
messageText = LocaleController.getString("AttachMusic", R.string.AttachMusic);
|
||||
messageText = mContext.getString(R.string.AttachMusic);
|
||||
} else if (isGif()) {
|
||||
messageText = LocaleController.getString("AttachGif", R.string.AttachGif);
|
||||
messageText = mContext.getString(R.string.AttachGif);
|
||||
} else {
|
||||
String name = FileLoader.getDocumentFileName(message.media.document);
|
||||
if (name != null && name.length() > 0) {
|
||||
messageText = name;
|
||||
} else {
|
||||
messageText = LocaleController.getString("AttachDocument", R.string.AttachDocument);
|
||||
messageText = mContext.getString(R.string.AttachDocument);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1294,7 +1203,7 @@ public class MessageObject {
|
||||
if (title == null || title.length() == 0) {
|
||||
title = FileLoader.getDocumentFileName(document);
|
||||
if (title == null || title.length() == 0) {
|
||||
title = LocaleController.getString("AudioUnknownTitle", R.string.AudioUnknownTitle);
|
||||
title = mContext.getString(R.string.AudioUnknownTitle);
|
||||
}
|
||||
}
|
||||
return title;
|
||||
@@ -1331,7 +1240,7 @@ public class MessageObject {
|
||||
if (attribute instanceof TLRPC.TL_documentAttributeAudio) {
|
||||
if (attribute.voice) {
|
||||
if (isOutOwner() ) {
|
||||
return LocaleController.getString("FromSelf", R.string.FromSelf);
|
||||
return mContext.getString(R.string.FromSelf);
|
||||
}
|
||||
else if (messageOwner.fwd_from != null ) {
|
||||
return messageOwner.fwd_from.m_name;
|
||||
@@ -1342,7 +1251,7 @@ public class MessageObject {
|
||||
}
|
||||
String performer = attribute.performer;
|
||||
if (performer == null || performer.length() == 0) {
|
||||
performer = LocaleController.getString("AudioUnknownArtist", R.string.AudioUnknownArtist);
|
||||
performer = mContext.getString(R.string.AudioUnknownArtist);
|
||||
}
|
||||
return performer;
|
||||
}
|
||||
@@ -1363,7 +1272,7 @@ public class MessageObject {
|
||||
}
|
||||
|
||||
public boolean isReply() {
|
||||
return !(replyMessageObject != null && replyMessageObject.messageOwner instanceof TLRPC.TL_messageEmpty) && (messageOwner.reply_to_msg_id != 0 || messageOwner.reply_to_random_id != 0) && (messageOwner.flags & TLRPC.MESSAGE_FLAG_REPLY) != 0;
|
||||
return (messageOwner.reply_to_msg_id != 0 || messageOwner.reply_to_random_id != 0) && (messageOwner.flags & TLRPC.MESSAGE_FLAG_REPLY) != 0;
|
||||
}
|
||||
|
||||
public boolean isMediaEmpty() {
|
||||
@@ -1410,9 +1319,7 @@ public class MessageObject {
|
||||
if (currentPhotoObject == null) {
|
||||
return;
|
||||
}
|
||||
if (currentPhotoObject != null) {
|
||||
mediaExists = FileLoader.getPathToAttach(currentPhotoObject, true).exists();
|
||||
}
|
||||
mediaExists = FileLoader.getPathToAttach(currentPhotoObject, true).exists();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -91,36 +91,6 @@ public class MessagesController implements NotificationCenter.NotificationCenter
|
||||
fontSize = preferences.getInt("msg_font_size", SettingsActivity.defMsgFontSize());
|
||||
}
|
||||
|
||||
/*
|
||||
public static TLRPC.InputUser getInputUser(TLRPC.User user) {
|
||||
if (user == null) {
|
||||
return new TLRPC.TL_inputUserEmpty();
|
||||
}
|
||||
TLRPC.InputUser inputUser;
|
||||
if (user.id == UserConfig.getClientUserId()) {
|
||||
inputUser = new TLRPC.TL_inputUserSelf();
|
||||
} else {
|
||||
inputUser = new TLRPC.TL_inputUser();
|
||||
inputUser.user_id = user.id;
|
||||
}
|
||||
return inputUser;
|
||||
}
|
||||
|
||||
public static TLRPC.InputUser getInputUser(int user_id) {
|
||||
TLRPC.User user = getInstance().getUser(user_id);
|
||||
return getInputUser(user);
|
||||
}
|
||||
*/
|
||||
|
||||
public static TLRPC.InputPeer getInputPeer(int id) {
|
||||
TLRPC.InputPeer inputPeer;
|
||||
{
|
||||
inputPeer = new TLRPC.TL_inputPeerUser();
|
||||
inputPeer.user_id = id;
|
||||
}
|
||||
return inputPeer;
|
||||
}
|
||||
|
||||
public static TLRPC.Peer getPeer(int id) {
|
||||
TLRPC.Peer inputPeer;
|
||||
/*if (id < 0) {
|
||||
|
||||
@@ -180,10 +180,9 @@ public class MrMailbox {
|
||||
private native static String MrMailboxGetMsgInfo (long hMailbox, int id);
|
||||
|
||||
// static
|
||||
private native static void MrStockAddStr (int id, String str);
|
||||
public native static String MrGetVersionStr ();
|
||||
public native static String CPtr2String (long hString); // get strings eg. from data1 from the callback
|
||||
|
||||
public native static long String2CPtr (String str);
|
||||
|
||||
/* receive events
|
||||
**********************************************************************************************/
|
||||
@@ -196,6 +195,8 @@ public class MrMailbox {
|
||||
public final static int MR_EVENT_CONTACTS_CHANGED = 2030;
|
||||
public final static int MR_EVENT_CONNECTION_STATE_CHANGED = 2040;
|
||||
public final static int MR_EVENT_REPORT = 2050;
|
||||
public final static int MR_EVENT_GET_STRING = 2091;
|
||||
public final static int MR_EVENT_GET_QUANTITIY_STRING = 2092;
|
||||
|
||||
public final static int MR_REPORT_ERR_SELF_NOT_IN_GROUP = 1;
|
||||
|
||||
@@ -271,6 +272,35 @@ public class MrMailbox {
|
||||
}
|
||||
});
|
||||
return 0;
|
||||
|
||||
case MR_EVENT_GET_STRING:
|
||||
String s = "ErrStrBadId";
|
||||
switch( (int)data1 ) {
|
||||
case 1: s = ApplicationLoader.applicationContext.getString(R.string.NoMessages); break;
|
||||
case 2: s = ApplicationLoader.applicationContext.getString(R.string.FromSelf); break;
|
||||
case 3: s = ApplicationLoader.applicationContext.getString(R.string.Draft); break;
|
||||
case 8: s = ApplicationLoader.applicationContext.getString(R.string.Deaddrop); break;
|
||||
case 9: s = ApplicationLoader.applicationContext.getString(R.string.AttachPhoto); break;
|
||||
case 10: s = ApplicationLoader.applicationContext.getString(R.string.AttachVideo); break;
|
||||
case 11: s = ApplicationLoader.applicationContext.getString(R.string.AttachAudio); break;
|
||||
case 12: s = ApplicationLoader.applicationContext.getString(R.string.AttachDocument); break;
|
||||
case 13: s = ApplicationLoader.applicationContext.getString(R.string.DefaultStatusText); break;
|
||||
case 14: s = ApplicationLoader.applicationContext.getString(R.string.MsgNewGroupDraft); break;
|
||||
case 15: s = ApplicationLoader.applicationContext.getString(R.string.MsgGroupNameChanged); break;
|
||||
case 16: s = ApplicationLoader.applicationContext.getString(R.string.MsgGroupImageChanged); break;
|
||||
case 17: s = ApplicationLoader.applicationContext.getString(R.string.MsgMemberAddedToGroup); break;
|
||||
case 18: s = ApplicationLoader.applicationContext.getString(R.string.MsgMemberRemovedFromToGroup); break;
|
||||
case 19: s = ApplicationLoader.applicationContext.getString(R.string.MsgGroupLeft); break;
|
||||
}
|
||||
return String2CPtr(s);
|
||||
|
||||
case MR_EVENT_GET_QUANTITIY_STRING:
|
||||
String sp = "ErrQtyStrBadId";
|
||||
switch( (int)data1 ) {
|
||||
case 4: sp = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Members, (int)data2, (int)data2); break;
|
||||
case 6: sp = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Contacts, (int)data2, (int)data2); break;
|
||||
}
|
||||
return String2CPtr(sp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -304,29 +334,6 @@ public class MrMailbox {
|
||||
});
|
||||
}
|
||||
|
||||
public static void initStockStrings()
|
||||
{
|
||||
MrStockAddStr(1, LocaleController.getString("NoMessages", R.string.NoMessages));
|
||||
MrStockAddStr(2, LocaleController.getString("FromSelf", R.string.FromSelf));
|
||||
MrStockAddStr(3, LocaleController.getString("Draft", R.string.Draft));
|
||||
MrStockAddStr(4, LocaleController.getString("MemberSg", R.string.MemberSg));
|
||||
MrStockAddStr(5, LocaleController.getString("MemberPl", R.string.MemberPl));
|
||||
MrStockAddStr(6, LocaleController.getString("ContactSg", R.string.ContactSg));
|
||||
MrStockAddStr(7, LocaleController.getString("ContactPl", R.string.ContactPl));
|
||||
MrStockAddStr(8, LocaleController.getString("Deaddrop", R.string.Deaddrop));
|
||||
MrStockAddStr(9, LocaleController.getString("AttachPhoto", R.string.AttachPhoto));
|
||||
MrStockAddStr(10, LocaleController.getString("AttachVideo", R.string.AttachVideo));
|
||||
MrStockAddStr(11, LocaleController.getString("AttachAudio", R.string.AttachAudio));
|
||||
MrStockAddStr(12, LocaleController.getString("AttachDocument", R.string.AttachDocument));
|
||||
MrStockAddStr(13, LocaleController.getString("DefaultStatusText", R.string.DefaultStatusText));
|
||||
MrStockAddStr(14, LocaleController.getString("MsgNewGroupDraft", R.string.MsgNewGroupDraft));
|
||||
MrStockAddStr(15, LocaleController.getString("MsgGroupNameChanged", R.string.MsgGroupNameChanged));
|
||||
MrStockAddStr(16, LocaleController.getString("MsgGroupImageChanged", R.string.MsgGroupImageChanged));
|
||||
MrStockAddStr(17, LocaleController.getString("MsgMemberAddedToGroup", R.string.MsgMemberAddedToGroup));
|
||||
MrStockAddStr(18, LocaleController.getString("MsgMemberRemovedFromToGroup", R.string.MsgMemberRemovedFromToGroup));
|
||||
MrStockAddStr(19, LocaleController.getString("MsgGroupLeft", R.string.MsgGroupLeft));
|
||||
}
|
||||
|
||||
public static String getInviteText() {
|
||||
String url = "https://getdelta.org";
|
||||
String email = getConfig("addr", "");
|
||||
|
||||
@@ -408,7 +408,7 @@ public class MusicBrowserService extends MediaBrowserService implements Notifica
|
||||
return;
|
||||
}
|
||||
lastSelectedDialog = did;
|
||||
ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE).edit().putInt("auto_lastSelectedDialog", did).commit();
|
||||
ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE).edit().putInt("auto_lastSelectedDialog", did).apply();
|
||||
MediaController.getInstance().setPlaylist(arrayList, arrayList.get(id), false);
|
||||
mediaSession.setQueue(arrayList1);
|
||||
if (did > 0) {
|
||||
|
||||
@@ -33,6 +33,6 @@ public class NotificationDismissReceiver extends BroadcastReceiver {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
|
||||
preferences.edit().putInt("dismissDate", intent.getIntExtra("messageDate", 0)).commit();
|
||||
preferences.edit().putInt("dismissDate", intent.getIntExtra("messageDate", 0)).apply();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -55,6 +55,8 @@ import java.util.List;
|
||||
|
||||
public class NotificationsController {
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public static final String EXTRA_VOICE_REPLY = "extra_voice_reply";
|
||||
|
||||
private DispatchQueue notificationsQueue = new DispatchQueue("notificationsQueue");
|
||||
@@ -104,6 +106,7 @@ public class NotificationsController {
|
||||
}
|
||||
|
||||
public NotificationsController() {
|
||||
mContext = ApplicationLoader.applicationContext;
|
||||
notificationManager = NotificationManagerCompat.from(ApplicationLoader.applicationContext);
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Context.MODE_PRIVATE);
|
||||
inChatSoundEnabled = preferences.getBoolean("EnableInChatSound", true);
|
||||
@@ -1106,7 +1109,7 @@ public class NotificationsController {
|
||||
|
||||
String name;
|
||||
if ( pushDialogs.size() > 1 || !showPreview ) {
|
||||
name = LocaleController.getString("AppName", R.string.AppName);
|
||||
name = mContext.getString(R.string.AppName);
|
||||
} else {
|
||||
if ( isGroupChat ) {
|
||||
name = mrChat.getName();
|
||||
@@ -1117,11 +1120,10 @@ public class NotificationsController {
|
||||
|
||||
String detailText;
|
||||
if (pushDialogs.size() == 1) {
|
||||
detailText = LocaleController.formatPluralString("NewMessages", total_unread_count);
|
||||
detailText = mContext.getResources().getQuantityString(R.plurals.NewMessages, total_unread_count, total_unread_count);
|
||||
} else {
|
||||
detailText = LocaleController.formatString("NotificationMessagesPeopleDisplayOrder", R.string.NotificationMessagesPeopleDisplayOrder,
|
||||
LocaleController.formatPluralString("NewMessages", total_unread_count),
|
||||
LocaleController.formatPluralString("FromChats", pushDialogs.size()));
|
||||
String newMessages = mContext.getResources().getQuantityString(R.plurals.NewMessages, total_unread_count, total_unread_count);
|
||||
detailText = mContext.getResources().getQuantityString(R.plurals.NewMessagesInChats, pushDialogs.size(), newMessages, pushDialogs.size());
|
||||
}
|
||||
|
||||
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ApplicationLoader.applicationContext)
|
||||
@@ -1332,7 +1334,7 @@ public class NotificationsController {
|
||||
}
|
||||
TLRPC.FileLocation photoPath = null;
|
||||
if (AndroidUtilities.needShowPasscode(false) || UserConfig.isWaitingForPasscodeEnter) {
|
||||
name = LocaleController.getString("AppName", R.string.AppName);
|
||||
name = mContext.getString(R.string.AppName);
|
||||
} else {
|
||||
if (chat != null) {
|
||||
name = chat.title;
|
||||
@@ -1383,19 +1385,19 @@ public class NotificationsController {
|
||||
msgReplyIntent.putExtra("dialog_id", dialog_id);
|
||||
msgReplyIntent.putExtra("max_id", max_id);
|
||||
PendingIntent msgReplyPendingIntent = PendingIntent.getBroadcast(ApplicationLoader.applicationContext, notificationIdAuto, msgReplyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
RemoteInput remoteInputAuto = new RemoteInput.Builder(NotificationsController.EXTRA_VOICE_REPLY).setLabel(LocaleController.getString("Reply", R.string.Reply)).build();
|
||||
RemoteInput remoteInputAuto = new RemoteInput.Builder(NotificationsController.EXTRA_VOICE_REPLY).setLabel(mContext.getString(R.string.Reply)).build();
|
||||
unreadConvBuilder.setReplyAction(msgReplyPendingIntent, remoteInputAuto);
|
||||
|
||||
Intent replyIntent = new Intent(ApplicationLoader.applicationContext, WearReplyReceiver.class);
|
||||
replyIntent.putExtra("dialog_id", dialog_id);
|
||||
replyIntent.putExtra("max_id", max_id);
|
||||
PendingIntent replyPendingIntent = PendingIntent.getBroadcast(ApplicationLoader.applicationContext, notificationIdWear, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
RemoteInput remoteInputWear = new RemoteInput.Builder(EXTRA_VOICE_REPLY).setLabel(LocaleController.getString("Reply", R.string.Reply)).build();
|
||||
RemoteInput remoteInputWear = new RemoteInput.Builder(EXTRA_VOICE_REPLY).setLabel(mContext.getString(R.string.Reply)).build();
|
||||
String replyToString;
|
||||
if (chat != null) {
|
||||
replyToString = LocaleController.formatString("ReplyToGroup", R.string.ReplyToGroup, name);
|
||||
replyToString = String.format(mContext.getString(R.string.ReplyToGroup), name);
|
||||
} else {
|
||||
replyToString = LocaleController.formatString("ReplyToUser", R.string.ReplyToUser, name);
|
||||
replyToString = String.format(mContext.getString(R.string.ReplyToUser), name);
|
||||
}
|
||||
wearReplyAction = new NotificationCompat.Action.Builder(R.drawable.ic_reply_icon, replyToString, replyPendingIntent).addRemoteInput(remoteInputWear).build();
|
||||
}
|
||||
|
||||
@@ -425,15 +425,6 @@ public class TLRPC {
|
||||
public static class TL_inputPhoto extends InputPhoto {
|
||||
}
|
||||
|
||||
public static class InputPeer extends TLObject {
|
||||
public int user_id;
|
||||
public int chat_id;
|
||||
public int channel_id;
|
||||
}
|
||||
|
||||
public static class TL_inputPeerUser extends InputPeer {
|
||||
}
|
||||
|
||||
public static class MessageMedia extends TLObject {
|
||||
public byte[] bytes;
|
||||
public Photo photo;
|
||||
@@ -478,9 +469,6 @@ public class TLRPC {
|
||||
public boolean created_by_mr;
|
||||
}
|
||||
|
||||
public static class TL_messageEmpty extends Message {
|
||||
}
|
||||
|
||||
public static class TL_message extends Message {
|
||||
}
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ public class UserConfig {
|
||||
}
|
||||
*/
|
||||
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (oldFile != null) {
|
||||
oldFile.delete();
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package com.b44t.messenger;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.IBinder;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
@@ -31,6 +32,7 @@ import android.support.v4.app.NotificationManagerCompat;
|
||||
|
||||
public class VideoEncodingService extends Service implements NotificationCenter.NotificationCenterDelegate {
|
||||
|
||||
private Context mContext = ApplicationLoader.applicationContext;
|
||||
private NotificationCompat.Builder builder = null;
|
||||
private String path = null;
|
||||
private int currentProgress = 0;
|
||||
@@ -61,7 +63,7 @@ public class VideoEncodingService extends Service implements NotificationCenter.
|
||||
Boolean enc = (Boolean) args[2];
|
||||
currentProgress = (int)(progress * 100);
|
||||
builder.setProgress(100, currentProgress, currentProgress == 0);
|
||||
NotificationManagerCompat.from(ApplicationLoader.applicationContext).notify(4, builder.build());
|
||||
NotificationManagerCompat.from(mContext).notify(4, builder.build());
|
||||
}
|
||||
} else if (id == NotificationCenter.stopEncodingService) {
|
||||
String filepath = (String)args[0];
|
||||
@@ -79,17 +81,17 @@ public class VideoEncodingService extends Service implements NotificationCenter.
|
||||
}
|
||||
FileLog.e("messenger", "start video service");
|
||||
if (builder == null) {
|
||||
builder = new NotificationCompat.Builder(ApplicationLoader.applicationContext);
|
||||
builder = new NotificationCompat.Builder(mContext);
|
||||
builder.setSmallIcon(android.R.drawable.stat_sys_upload);
|
||||
builder.setWhen(System.currentTimeMillis());
|
||||
builder.setContentTitle(LocaleController.getString("AppName", R.string.AppName));
|
||||
builder.setTicker(LocaleController.getString("SendingVideo", R.string.SendingVideo));
|
||||
builder.setContentText(LocaleController.getString("SendingVideo", R.string.SendingVideo));
|
||||
builder.setContentTitle(mContext.getString(R.string.AppName));
|
||||
builder.setTicker(mContext.getString(R.string.SendingVideo));
|
||||
builder.setContentText(mContext.getString(R.string.SendingVideo));
|
||||
}
|
||||
currentProgress = 0;
|
||||
builder.setProgress(100, currentProgress, currentProgress == 0);
|
||||
startForeground(4, builder.build());
|
||||
NotificationManagerCompat.from(ApplicationLoader.applicationContext).notify(4, builder.build());
|
||||
NotificationManagerCompat.from(mContext).notify(4, builder.build());
|
||||
return Service.START_NOT_STICKY;
|
||||
}
|
||||
}
|
||||
|
||||
-107
@@ -1,107 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.b44t.messenger.volley.toolbox;
|
||||
|
||||
import com.b44t.messenger.volley.AuthFailureError;
|
||||
|
||||
import android.accounts.Account;
|
||||
import android.accounts.AccountManager;
|
||||
import android.accounts.AccountManagerFuture;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
/**
|
||||
* An Authenticator that uses {@link AccountManager} to get auth
|
||||
* tokens of a specified type for a specified account.
|
||||
*/
|
||||
public class AndroidAuthenticator implements Authenticator {
|
||||
private final AccountManager mAccountManager;
|
||||
private final Account mAccount;
|
||||
private final String mAuthTokenType;
|
||||
private final boolean mNotifyAuthFailure;
|
||||
|
||||
/**
|
||||
* Creates a new authenticator.
|
||||
* @param context Context for accessing AccountManager
|
||||
* @param account Account to authenticate as
|
||||
* @param authTokenType Auth token type passed to AccountManager
|
||||
*/
|
||||
public AndroidAuthenticator(Context context, Account account, String authTokenType) {
|
||||
this(context, account, authTokenType, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new authenticator.
|
||||
* @param context Context for accessing AccountManager
|
||||
* @param account Account to authenticate as
|
||||
* @param authTokenType Auth token type passed to AccountManager
|
||||
* @param notifyAuthFailure Whether to raise a notification upon auth failure
|
||||
*/
|
||||
public AndroidAuthenticator(Context context, Account account, String authTokenType,
|
||||
boolean notifyAuthFailure) {
|
||||
this(AccountManager.get(context), account, authTokenType, notifyAuthFailure);
|
||||
}
|
||||
|
||||
// Visible for testing. Allows injection of a mock AccountManager.
|
||||
AndroidAuthenticator(AccountManager accountManager, Account account,
|
||||
String authTokenType, boolean notifyAuthFailure) {
|
||||
mAccountManager = accountManager;
|
||||
mAccount = account;
|
||||
mAuthTokenType = authTokenType;
|
||||
mNotifyAuthFailure = notifyAuthFailure;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Account being used by this authenticator.
|
||||
*/
|
||||
public Account getAccount() {
|
||||
return mAccount;
|
||||
}
|
||||
|
||||
// TODO: Figure out what to do about notifyAuthFailure
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public String getAuthToken() throws AuthFailureError {
|
||||
AccountManagerFuture<Bundle> future = mAccountManager.getAuthToken(mAccount,
|
||||
mAuthTokenType, mNotifyAuthFailure, null, null);
|
||||
Bundle result;
|
||||
try {
|
||||
result = future.getResult();
|
||||
} catch (Exception e) {
|
||||
throw new AuthFailureError("Error while retrieving auth token", e);
|
||||
}
|
||||
String authToken = null;
|
||||
if (future.isDone() && !future.isCancelled()) {
|
||||
if (result.containsKey(AccountManager.KEY_INTENT)) {
|
||||
Intent intent = result.getParcelable(AccountManager.KEY_INTENT);
|
||||
throw new AuthFailureError(intent);
|
||||
}
|
||||
authToken = result.getString(AccountManager.KEY_AUTHTOKEN);
|
||||
}
|
||||
if (authToken == null) {
|
||||
throw new AuthFailureError("Got null auth token for type: " + mAuthTokenType);
|
||||
}
|
||||
|
||||
return authToken;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidateAuthToken(String authToken) {
|
||||
mAccountManager.invalidateAuthToken(mAccount.type, authToken);
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2011 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.b44t.messenger.volley.toolbox;
|
||||
|
||||
import com.b44t.messenger.volley.AuthFailureError;
|
||||
|
||||
/**
|
||||
* An interface for interacting with auth tokens.
|
||||
*/
|
||||
public interface Authenticator {
|
||||
/**
|
||||
* Synchronously retrieves an auth token.
|
||||
*
|
||||
* @throws AuthFailureError If authentication did not succeed
|
||||
*/
|
||||
public String getAuthToken() throws AuthFailureError;
|
||||
|
||||
/**
|
||||
* Invalidates the provided auth token.
|
||||
*/
|
||||
public void invalidateAuthToken(String authToken);
|
||||
}
|
||||
@@ -28,6 +28,7 @@ import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.view.Gravity;
|
||||
@@ -160,7 +161,6 @@ public class ActionBar extends FrameLayout {
|
||||
titleTextView = new SimpleTextView(getContext());
|
||||
titleTextView.setGravity(Gravity.LEFT);
|
||||
titleTextView.setTextColor(0xffffffff);
|
||||
titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
addView(titleTextView, 0, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP));
|
||||
}
|
||||
|
||||
|
||||
@@ -464,7 +464,6 @@ public class BottomSheet extends Dialog {
|
||||
textView.setGravity(Gravity.CENTER);
|
||||
textView.setTextColor(0xff212121);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ public class Theme {
|
||||
|
||||
public static final int ATTACH_SHEET_TEXT_COLOR = 0xff757575;
|
||||
|
||||
public static final int DIALOGS_TITLE_TEXT_COLOR = 0xff212121;
|
||||
public static final int DIALOGS_TITLE_TEXT_COLOR = 0xff000000;
|
||||
public static final int DIALOGS_MESSAGE_TEXT_COLOR = 0xff8f8f8f;
|
||||
public static final int DIALOGS_NAME_TEXT_COLOR = 0xff555555;
|
||||
public static final int DIALOGS_SELF_TEXT_COLOR = 0xff00a60e; // from encrypted chat title: 0xff00a60e, alternative: 0xff3c912e
|
||||
@@ -76,11 +76,6 @@ public class Theme {
|
||||
public static final int INAPP_PLAYER_TITLE_TEXT_COLOR = 0xff2f3438;
|
||||
public static final int INAPP_PLAYER_BACKGROUND_COLOR = 0xffffffff;
|
||||
|
||||
public static final int ALERT_PANEL_NAME_TEXT_COLOR = 0xff3a8ccf;
|
||||
public static final int ALERT_PANEL_MESSAGE_TEXT_COLOR = 0xff999999;
|
||||
|
||||
public static final int AUTODOWNLOAD_SHEET_SAVE_TEXT_COLOR = 0xff3a8ccf;
|
||||
|
||||
public static final int STICKERS_SHEET_TITLE_TEXT_COLOR = 0xff212121;
|
||||
public static final int STICKERS_SHEET_SEND_TEXT_COLOR = 0xff3a8ccf;
|
||||
public static final int STICKERS_SHEET_ADD_TEXT_COLOR = 0xff3a8ccf;
|
||||
@@ -190,16 +185,12 @@ public class Theme {
|
||||
|
||||
public static Drawable shareIconDrawable;
|
||||
|
||||
public static Drawable geoInDrawable;
|
||||
public static Drawable geoOutDrawable;
|
||||
|
||||
public static Drawable[] contactDrawable = new Drawable[2];
|
||||
public static Drawable[][] fileStatesDrawable = new Drawable[10][2];
|
||||
public static Drawable[][] photoStatesDrawables = new Drawable[13][2];
|
||||
public static Drawable[] docMenuDrawable = new Drawable[4];
|
||||
|
||||
public static PorterDuffColorFilter colorFilter;
|
||||
public static PorterDuffColorFilter colorPressedFilter;
|
||||
private static int currentColor;
|
||||
|
||||
public static Drawable attachButtonDrawables[] = new Drawable[8];
|
||||
@@ -295,7 +286,6 @@ public class Theme {
|
||||
int color = ApplicationLoader.getServiceMessageColor();
|
||||
if (currentColor != color) {
|
||||
colorFilter = new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY);
|
||||
colorPressedFilter = new PorterDuffColorFilter(ApplicationLoader.getServiceSelectedMessageColor(), PorterDuff.Mode.MULTIPLY);
|
||||
currentColor = color;
|
||||
for (int a = 0; a < 4; a++) {
|
||||
cornerOuter[a].setColorFilter(colorFilter);
|
||||
|
||||
@@ -27,11 +27,11 @@ import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.b44t.messenger.LocaleController;
|
||||
import com.b44t.messenger.MrChat;
|
||||
import com.b44t.messenger.MrChatlist;
|
||||
import com.b44t.messenger.MrMsg;
|
||||
import com.b44t.messenger.MrPoortext;
|
||||
import com.b44t.messenger.R;
|
||||
import com.b44t.messenger.support.widget.RecyclerView;
|
||||
import com.b44t.messenger.MrMailbox;
|
||||
import com.b44t.ui.Cells.DialogCell;
|
||||
@@ -177,9 +177,9 @@ public class DialogsSearchAdapter extends RecyclerView.Adapter {
|
||||
case ROWTYPE_HEADLINE: {
|
||||
GreySectionCell headlineCell = (GreySectionCell) viewHolder.itemView;
|
||||
if (i == rowChatsHeadline) {
|
||||
headlineCell.setText(LocaleController.formatPluralString("Chats", m_chatlistCnt));
|
||||
headlineCell.setText(mContext.getResources().getQuantityString(R.plurals.Chats, m_chatlistCnt, m_chatlistCnt));
|
||||
} else if (i == rowMsgsHeadline) {
|
||||
headlineCell.setText(LocaleController.formatPluralString("messages", m_msgIds.length));
|
||||
headlineCell.setText(mContext.getResources().getQuantityString(R.plurals.messages, m_msgIds.length, m_msgIds.length));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -320,7 +320,7 @@ public class CacheControlActivity extends BaseFragment {
|
||||
*/
|
||||
|
||||
@Override
|
||||
public View createView(Context context) {
|
||||
public View createView(final Context context) {
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(LocaleController.getString("CacheSettings", R.string.CacheSettings));
|
||||
@@ -351,11 +351,11 @@ public class CacheControlActivity extends BaseFragment {
|
||||
public void onItemClick(final AdapterView<?> adapterView, View view, final int i, long l) {
|
||||
if (i == keepMediaRow) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setItems(new CharSequence[]{LocaleController.formatPluralString("Weeks", 1), LocaleController.formatPluralString("Months", 1), LocaleController.getString("KeepMediaForever", R.string.KeepMediaForever)}, new DialogInterface.OnClickListener() {
|
||||
builder.setItems(new CharSequence[]{context.getResources().getQuantityString(R.plurals.Weeks, 1, 1), context.getResources().getQuantityString(R.plurals.Months, 1, 1), LocaleController.getString("KeepMediaForever", R.string.KeepMediaForever)}, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, final int which) {
|
||||
SharedPreferences.Editor editor = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE).edit();
|
||||
editor.putInt("keep_media", which).commit();
|
||||
editor.putInt("keep_media", which).apply();
|
||||
if (listAdapter != null) {
|
||||
listAdapter.notifyDataSetChanged();
|
||||
}
|
||||
@@ -639,13 +639,13 @@ public class CacheControlActivity extends BaseFragment {
|
||||
int keepMedia = preferences.getInt("keep_media", 2);
|
||||
String value;
|
||||
if (keepMedia == 0) {
|
||||
value = LocaleController.formatPluralString("Weeks", 1);
|
||||
value = mContext.getResources().getQuantityString(R.plurals.Weeks, 1, 1);
|
||||
} else if (keepMedia == 1) {
|
||||
value = LocaleController.formatPluralString("Months", 1);
|
||||
value = mContext.getResources().getQuantityString(R.plurals.Months, 1, 1);
|
||||
} else {
|
||||
value = LocaleController.getString("KeepMediaForever", R.string.KeepMediaForever);
|
||||
value = mContext.getString(R.string.KeepMediaForever);
|
||||
}
|
||||
textCell.setTextAndValue(LocaleController.getString("KeepMedia", R.string.KeepMedia), value, false);
|
||||
textCell.setTextAndValue(mContext.getString(R.string.KeepMedia), value, false);
|
||||
}
|
||||
} else if (type_ == typeTextInfo) {
|
||||
if (view == null) {
|
||||
|
||||
@@ -99,7 +99,6 @@ public class AudioCell extends FrameLayout {
|
||||
titleTextView = new TextView(context);
|
||||
titleTextView.setTextColor(0xff212121);
|
||||
titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
|
||||
titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
titleTextView.setLines(1);
|
||||
titleTextView.setMaxLines(1);
|
||||
titleTextView.setSingleLine(true);
|
||||
|
||||
@@ -24,45 +24,26 @@
|
||||
package com.b44t.ui.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Typeface;
|
||||
import android.text.Layout;
|
||||
import android.text.Spannable;
|
||||
import android.text.StaticLayout;
|
||||
import android.text.TextPaint;
|
||||
import android.text.style.URLSpan;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SoundEffectConstants;
|
||||
|
||||
import com.b44t.messenger.AndroidUtilities;
|
||||
import com.b44t.messenger.ApplicationLoader;
|
||||
import com.b44t.messenger.ImageReceiver;
|
||||
import com.b44t.messenger.MessageObject;
|
||||
import com.b44t.messenger.MessagesController;
|
||||
import com.b44t.messenger.FileLoader;
|
||||
import com.b44t.messenger.FileLog;
|
||||
import com.b44t.messenger.TLRPC;
|
||||
import com.b44t.messenger.UserConfig;
|
||||
import com.b44t.ui.ActionBar.Theme;
|
||||
import com.b44t.ui.PhotoViewer;
|
||||
import com.b44t.ui.Components.AvatarDrawable;
|
||||
|
||||
public class ChatActionCell extends BaseCell {
|
||||
|
||||
public interface ChatActionCellDelegate {
|
||||
void didClickedImage(ChatActionCell cell);
|
||||
void didLongPressed(ChatActionCell cell);
|
||||
void needOpenUserProfile(int uid);
|
||||
}
|
||||
|
||||
private static TextPaint textPaint;
|
||||
private static Paint backPaint;
|
||||
|
||||
private URLSpan pressedLink;
|
||||
|
||||
private ImageReceiver imageReceiver;
|
||||
private AvatarDrawable avatarDrawable;
|
||||
private StaticLayout textLayout;
|
||||
private int textWidth = 0;
|
||||
private int textHeight = 0;
|
||||
@@ -70,36 +51,26 @@ public class ChatActionCell extends BaseCell {
|
||||
private int textY = 0;
|
||||
private int textXLeft = 0;
|
||||
private int previousWidth = 0;
|
||||
private boolean imagePressed = false;
|
||||
|
||||
private boolean hasReplyMessage;
|
||||
|
||||
private MessageObject currentMessageObject;
|
||||
|
||||
private ChatActionCellDelegate delegate;
|
||||
|
||||
public ChatActionCell(Context context) {
|
||||
super(context);
|
||||
if (textPaint == null) {
|
||||
textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
textPaint.setColor(0xffffffff);
|
||||
textPaint.linkColor = 0xffffffff;
|
||||
textPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
textPaint.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
|
||||
backPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
}
|
||||
backPaint.setColor(ApplicationLoader.getServiceMessageColor());
|
||||
|
||||
imageReceiver = new ImageReceiver(this);
|
||||
imageReceiver.setRoundRadius(AndroidUtilities.dp(32));
|
||||
avatarDrawable = new AvatarDrawable();
|
||||
textPaint.setTextSize(AndroidUtilities.dp(MessagesController.getInstance().fontSize - 2));
|
||||
}
|
||||
|
||||
public void setDelegate(ChatActionCellDelegate delegate) {
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
public void setMessageObject(MessageObject messageObject) {
|
||||
if (currentMessageObject == messageObject && (hasReplyMessage || messageObject.replyMessageObject == null)) {
|
||||
return;
|
||||
@@ -107,35 +78,6 @@ public class ChatActionCell extends BaseCell {
|
||||
currentMessageObject = messageObject;
|
||||
hasReplyMessage = messageObject.replyMessageObject != null;
|
||||
previousWidth = 0;
|
||||
if (currentMessageObject.type == 11) {
|
||||
int id = 0;
|
||||
if (messageObject.messageOwner.to_id != null) {
|
||||
if (messageObject.messageOwner.to_id.chat_id != 0) {
|
||||
id = messageObject.messageOwner.to_id.chat_id;
|
||||
} else if (messageObject.messageOwner.to_id.channel_id != 0) {
|
||||
id = messageObject.messageOwner.to_id.channel_id;
|
||||
} else {
|
||||
id = messageObject.messageOwner.to_id.user_id;
|
||||
if (id == UserConfig.getClientUserId()) {
|
||||
id = messageObject.messageOwner.from_id;
|
||||
}
|
||||
}
|
||||
}
|
||||
avatarDrawable.setInfoByName(null);
|
||||
/*if (currentMessageObject.messageOwner.action instanceof TLRPC.TL_messageActionUserUpdatedPhoto) {
|
||||
imageReceiver.setImage(currentMessageObject.messageOwner.action.newUserPhoto.photo_small, "50_50", avatarDrawable, null, false);
|
||||
} else */ {
|
||||
TLRPC.PhotoSize photo = FileLoader.getClosestPhotoSizeWithSize(currentMessageObject.photoThumbs, AndroidUtilities.dp(64));
|
||||
if (photo != null) {
|
||||
imageReceiver.setImage(photo.location, "50_50", avatarDrawable, null, false);
|
||||
} else {
|
||||
imageReceiver.setImageBitmap(avatarDrawable);
|
||||
}
|
||||
}
|
||||
imageReceiver.setVisible(!PhotoViewer.getInstance().isShowingImage(currentMessageObject), false);
|
||||
} else {
|
||||
imageReceiver.setImageBitmap((Bitmap)null);
|
||||
}
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
@@ -143,95 +85,13 @@ public class ChatActionCell extends BaseCell {
|
||||
return currentMessageObject;
|
||||
}
|
||||
|
||||
public ImageReceiver getPhotoImage() {
|
||||
return imageReceiver;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLongPress() {
|
||||
if (delegate != null) {
|
||||
delegate.didLongPressed(this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
float x = event.getX();
|
||||
float y = event.getY();
|
||||
|
||||
boolean result = false;
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
if (delegate != null) {
|
||||
if (currentMessageObject.type == 11 && imageReceiver.isInsideImage(x, y)) {
|
||||
imagePressed = true;
|
||||
result = true;
|
||||
}
|
||||
if (result) {
|
||||
startCheckLongPress();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (event.getAction() != MotionEvent.ACTION_MOVE) {
|
||||
cancelCheckLongPress();
|
||||
}
|
||||
if (imagePressed) {
|
||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
imagePressed = false;
|
||||
if (delegate != null) {
|
||||
delegate.didClickedImage(this);
|
||||
playSoundEffect(SoundEffectConstants.CLICK);
|
||||
}
|
||||
} else if (event.getAction() == MotionEvent.ACTION_CANCEL) {
|
||||
imagePressed = false;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
if (!imageReceiver.isInsideImage(x, y)) {
|
||||
imagePressed = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!result) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN || pressedLink != null && event.getAction() == MotionEvent.ACTION_UP) {
|
||||
if (x >= textX && y >= textY && x <= textX + textWidth && y <= textY + textHeight) {
|
||||
y -= textY;
|
||||
x -= textXLeft;
|
||||
|
||||
final int line = textLayout.getLineForVertical((int)y);
|
||||
final int off = textLayout.getOffsetForHorizontal(line, x);
|
||||
final float left = textLayout.getLineLeft(line);
|
||||
if (left <= x && left + textLayout.getLineWidth(line) >= x && currentMessageObject.messageText instanceof Spannable) {
|
||||
Spannable buffer = (Spannable) currentMessageObject.messageText;
|
||||
URLSpan[] link = buffer.getSpans(off, off, URLSpan.class);
|
||||
|
||||
if (link.length != 0) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
||||
pressedLink = link[0];
|
||||
result = true;
|
||||
} else {
|
||||
if (link[0] == pressedLink) {
|
||||
if (delegate != null) {
|
||||
delegate.needOpenUserProfile(Integer.parseInt(link[0].getURL()));
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
pressedLink = null;
|
||||
}
|
||||
} else {
|
||||
pressedLink = null;
|
||||
}
|
||||
} else {
|
||||
pressedLink = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
result = super.onTouchEvent(event);
|
||||
}
|
||||
|
||||
return result;
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -270,10 +130,6 @@ public class ChatActionCell extends BaseCell {
|
||||
textX = (width - textWidth) / 2;
|
||||
textY = AndroidUtilities.dp(7);
|
||||
textXLeft = (width - textLayout.getWidth()) / 2;
|
||||
|
||||
if (currentMessageObject.type == 11) {
|
||||
imageReceiver.setImageCoords((width - AndroidUtilities.dp(64)) / 2, textHeight + AndroidUtilities.dp(15), AndroidUtilities.dp(64), AndroidUtilities.dp(64));
|
||||
}
|
||||
}
|
||||
setMeasuredDimension(width, textHeight + AndroidUtilities.dp(14 + (currentMessageObject.type == 11 ? 70 : 0)));
|
||||
}
|
||||
@@ -306,10 +162,6 @@ public class ChatActionCell extends BaseCell {
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentMessageObject.type == 11) {
|
||||
imageReceiver.draw(canvas);
|
||||
}
|
||||
|
||||
if (textLayout != null) {
|
||||
final int count = textLayout.getLineCount();
|
||||
final int corner = AndroidUtilities.dp(6);
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
@@ -297,14 +298,12 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
infoPaint.setTextSize(dp(12));
|
||||
|
||||
docNamePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
docNamePaint.setTypeface(getTypeface("fonts/rmedium.ttf"));
|
||||
docNamePaint.setTextSize(dp(15));
|
||||
|
||||
docBackPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
|
||||
|
||||
locationTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
locationTitlePaint.setTextSize(dp(15));
|
||||
locationTitlePaint.setTypeface(getTypeface("fonts/rmedium.ttf"));
|
||||
|
||||
locationAddressPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
locationAddressPaint.setTextSize(dp(13));
|
||||
@@ -320,14 +319,13 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
|
||||
audioTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
audioTitlePaint.setTextSize(dp(16));
|
||||
audioTitlePaint.setTypeface(getTypeface("fonts/rmedium.ttf"));
|
||||
|
||||
audioPerformerPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
audioPerformerPaint.setTextSize(dp(15));
|
||||
|
||||
contactNamePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
contactNamePaint.setTextSize(dp(15));
|
||||
contactNamePaint.setTypeface(getTypeface("fonts/rmedium.ttf"));
|
||||
contactNamePaint.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
|
||||
contactPhonePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
contactPhonePaint.setTextSize(dp(13));
|
||||
@@ -340,14 +338,14 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
timePaint.setTextSize(dp(12));
|
||||
|
||||
namePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
namePaint.setTypeface(getTypeface("fonts/rmedium.ttf"));
|
||||
namePaint.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
namePaint.setTextSize(dp(14));
|
||||
|
||||
forwardNamePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
forwardNamePaint.setTextSize(dp(14));
|
||||
|
||||
replyNamePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
replyNamePaint.setTypeface(getTypeface("fonts/rmedium.ttf"));
|
||||
replyNamePaint.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
replyNamePaint.setTextSize(dp(14));
|
||||
|
||||
replyTextPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package com.b44t.ui.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.widget.FrameLayout;
|
||||
@@ -51,7 +52,7 @@ public class ChatUnreadCell extends FrameLayout {
|
||||
textView.setPadding(0, 0, 0, AndroidUtilities.dp(1));
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, MessagesController.getInstance().fontSize-2);
|
||||
textView.setTextColor(Theme.MSG_IN_TIME_TEXT_COLOR);
|
||||
textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
textView.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER));
|
||||
}
|
||||
|
||||
|
||||
@@ -115,7 +115,6 @@ public class ContextLinkCell extends View implements MediaController.FileDownloa
|
||||
|
||||
if (titleTextPaint == null) {
|
||||
titleTextPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
titleTextPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
titleTextPaint.setColor(0xff212121);
|
||||
titleTextPaint.setTextSize(AndroidUtilities.dp(15));
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ package com.b44t.ui.Cells;
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Typeface;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.text.Layout;
|
||||
@@ -143,7 +144,6 @@ public class DialogCell extends BaseCell {
|
||||
namePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
namePaint.setTextSize(AndroidUtilities.dp(17));
|
||||
namePaint.setColor(Theme.DIALOGS_TITLE_TEXT_COLOR);
|
||||
namePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
|
||||
messagePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
messagePaint.setTextSize(AndroidUtilities.dp(16));
|
||||
@@ -167,7 +167,7 @@ public class DialogCell extends BaseCell {
|
||||
countPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
countPaint.setTextSize(AndroidUtilities.dp(13));
|
||||
countPaint.setColor(0xffffffff);
|
||||
countPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
countPaint.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
|
||||
checkDrawable = getResources().getDrawable(R.drawable.dialogs_check);
|
||||
halfCheckDrawable = getResources().getDrawable(R.drawable.dialogs_halfcheck);
|
||||
|
||||
@@ -41,9 +41,8 @@ public class DrawerActionCell extends FrameLayout {
|
||||
super(context);
|
||||
|
||||
textView = new TextView(context);
|
||||
textView.setTextColor(0xff444444);
|
||||
textView.setTextColor(0xff000000);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
|
||||
textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
textView.setLines(1);
|
||||
textView.setMaxLines(1);
|
||||
textView.setSingleLine(true);
|
||||
|
||||
@@ -73,8 +73,7 @@ public class DrawerProfileCell extends FrameLayout {
|
||||
|
||||
nameTextView = new TextView(context);
|
||||
nameTextView.setTextColor(0xffffffff);
|
||||
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 22 /*EDIT BY MR, was 15*/);
|
||||
nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 23);
|
||||
nameTextView.setLines(1);
|
||||
nameTextView.setMaxLines(1);
|
||||
nameTextView.setSingleLine(true);
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package com.b44t.ui.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.widget.FrameLayout;
|
||||
@@ -43,7 +44,7 @@ public class GreySectionCell extends FrameLayout {
|
||||
|
||||
textView = new TextView(getContext());
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13);
|
||||
textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
textView.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
textView.setTextColor(0xff8a8a8a);
|
||||
textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL);
|
||||
addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 16, 0, 16, 0));
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package com.b44t.ui.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.widget.FrameLayout;
|
||||
@@ -42,8 +43,8 @@ public class HeaderCell extends FrameLayout {
|
||||
|
||||
textView = new TextView(getContext());
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
|
||||
textView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
textView.setTextColor(0xff3e90cf);
|
||||
textView.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
textView.setTextColor(0xff5099c9);
|
||||
textView.setGravity((LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.CENTER_VERTICAL);
|
||||
addView(textView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, 17, 15, 17, 0));
|
||||
}
|
||||
|
||||
@@ -51,7 +51,6 @@ public class PhotoEditToolCell extends FrameLayout {
|
||||
nameTextView.setGravity(Gravity.CENTER);
|
||||
nameTextView.setTextColor(0xffffffff);
|
||||
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10);
|
||||
nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
nameTextView.setMaxLines(1);
|
||||
nameTextView.setSingleLine(true);
|
||||
nameTextView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
@@ -60,7 +59,6 @@ public class PhotoEditToolCell extends FrameLayout {
|
||||
valueTextView = new TextView(context);
|
||||
valueTextView.setTextColor(0xff6cc3ff);
|
||||
valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 11);
|
||||
valueTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP, 57, 3, 0, 0));
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,6 @@ public class PhotoPickerSearchCell extends LinearLayout {
|
||||
textView1 = new TextView(context);
|
||||
textView1.setGravity(Gravity.CENTER_VERTICAL);
|
||||
textView1.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
textView1.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
textView1.setTextColor(0xffffffff);
|
||||
textView1.setSingleLine(true);
|
||||
textView1.setEllipsize(TextUtils.TruncateAt.END);
|
||||
@@ -78,7 +77,6 @@ public class PhotoPickerSearchCell extends LinearLayout {
|
||||
textView2 = new TextView(context);
|
||||
textView2.setGravity(Gravity.CENTER_VERTICAL);
|
||||
textView2.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10);
|
||||
textView2.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
textView2.setTextColor(0xff666666);
|
||||
textView2.setSingleLine(true);
|
||||
textView2.setEllipsize(TextUtils.TruncateAt.END);
|
||||
|
||||
@@ -1,482 +0,0 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Messenger Android Frontend
|
||||
* (C) 2013-2016 Nikolai Kudashov
|
||||
* (C) 2017 Björn Petersen
|
||||
* Contact: r10s@b44t.com, http://b44t.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see http://www.gnu.org/licenses/ .
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
package com.b44t.ui.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.os.Build;
|
||||
import android.text.Layout;
|
||||
import android.text.StaticLayout;
|
||||
import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
import com.b44t.messenger.AndroidUtilities;
|
||||
import com.b44t.messenger.ImageReceiver;
|
||||
import com.b44t.messenger.LocaleController;
|
||||
import com.b44t.messenger.MessagesController;
|
||||
import com.b44t.messenger.UserObject;
|
||||
import com.b44t.messenger.R;
|
||||
import com.b44t.messenger.ConnectionsManager;
|
||||
import com.b44t.messenger.TLObject;
|
||||
import com.b44t.messenger.TLRPC;
|
||||
import com.b44t.messenger.UserConfig;
|
||||
import com.b44t.ui.Components.AvatarDrawable;
|
||||
import com.b44t.ui.ActionBar.Theme;
|
||||
|
||||
public class ProfileSearchCell extends BaseCell {
|
||||
|
||||
private static TextPaint namePaint;
|
||||
private static TextPaint onlinePaint;
|
||||
private static TextPaint offlinePaint;
|
||||
private static TextPaint countPaint;
|
||||
private static Drawable groupDrawable;
|
||||
private static Drawable countDrawable;
|
||||
private static Drawable countDrawableGrey;
|
||||
private static Paint linePaint;
|
||||
|
||||
private CharSequence currentName;
|
||||
private ImageReceiver avatarImage;
|
||||
private AvatarDrawable avatarDrawable;
|
||||
private CharSequence subLabel;
|
||||
|
||||
private TLRPC.User user = null;
|
||||
private TLRPC.Chat chat = null;
|
||||
private final Object encryptedChat = null;
|
||||
private long dialog_id;
|
||||
|
||||
private String lastName = null;
|
||||
private int lastStatus = 0;
|
||||
private TLRPC.FileLocation lastAvatar = null;
|
||||
|
||||
public boolean useSeparator = false;
|
||||
public float drawAlpha = 1;
|
||||
|
||||
private int nameLeft;
|
||||
private int nameTop;
|
||||
private StaticLayout nameLayout;
|
||||
private boolean drawNameGroup;
|
||||
private int nameLockLeft;
|
||||
private int nameLockTop;
|
||||
|
||||
private boolean drawCount;
|
||||
private int lastUnreadCount;
|
||||
private int countTop = AndroidUtilities.dp(25);
|
||||
private int countLeft;
|
||||
private int countWidth;
|
||||
private StaticLayout countLayout;
|
||||
|
||||
private int onlineLeft;
|
||||
private StaticLayout onlineLayout;
|
||||
|
||||
public ProfileSearchCell(Context context) {
|
||||
super(context);
|
||||
|
||||
if (namePaint == null) {
|
||||
namePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
namePaint.setTextSize(AndroidUtilities.dp(17));
|
||||
namePaint.setColor(0xff212121);
|
||||
namePaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
|
||||
onlinePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
onlinePaint.setTextSize(AndroidUtilities.dp(16));
|
||||
onlinePaint.setColor(Theme.MSG_LINK_TEXT_COLOR);
|
||||
|
||||
offlinePaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
offlinePaint.setTextSize(AndroidUtilities.dp(16));
|
||||
offlinePaint.setColor(0xff999999);
|
||||
|
||||
linePaint = new Paint();
|
||||
linePaint.setColor(0xffdcdcdc);
|
||||
|
||||
countPaint = new TextPaint(TextPaint.ANTI_ALIAS_FLAG);
|
||||
countPaint.setTextSize(AndroidUtilities.dp(13));
|
||||
countPaint.setColor(0xffffffff);
|
||||
countPaint.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
|
||||
groupDrawable = getResources().getDrawable(R.drawable.list_group);
|
||||
countDrawable = getResources().getDrawable(R.drawable.dialogs_badge);
|
||||
countDrawableGrey = getResources().getDrawable(R.drawable.dialogs_badge2);
|
||||
}
|
||||
|
||||
avatarImage = new ImageReceiver(this);
|
||||
avatarImage.setRoundRadius(AndroidUtilities.dp(26));
|
||||
avatarDrawable = new AvatarDrawable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
getBackground().setHotspot(event.getX(), event.getY());
|
||||
}
|
||||
}
|
||||
return super.onTouchEvent(event);
|
||||
}
|
||||
|
||||
public void setData(TLObject object, Object ec, CharSequence n, CharSequence s, boolean needCount) {
|
||||
currentName = n;
|
||||
if (object instanceof TLRPC.User) {
|
||||
user = (TLRPC.User) object;
|
||||
chat = null;
|
||||
} else if (object instanceof TLRPC.Chat) {
|
||||
chat = (TLRPC.Chat) object;
|
||||
user = null;
|
||||
}
|
||||
subLabel = s;
|
||||
drawCount = needCount;
|
||||
update(0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
avatarImage.onDetachedFromWindow();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onAttachedToWindow() {
|
||||
super.onAttachedToWindow();
|
||||
avatarImage.onAttachedToWindow();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), AndroidUtilities.dp(72));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
if (user == null && chat == null && encryptedChat == null) {
|
||||
super.onLayout(changed, left, top, right, bottom);
|
||||
return;
|
||||
}
|
||||
if (changed) {
|
||||
buildLayout();
|
||||
}
|
||||
}
|
||||
|
||||
public void buildLayout() {
|
||||
CharSequence nameString;
|
||||
TextPaint currentNamePaint;
|
||||
|
||||
drawNameGroup = false;
|
||||
|
||||
{
|
||||
if (chat != null) {
|
||||
/*if (chat.id < 0) {
|
||||
dialog_id = AndroidUtilities.makeBroadcastId(chat.id);
|
||||
drawNameBroadcast = true;
|
||||
nameLockTop = AndroidUtilities.dp(28.5f);
|
||||
} else*/ {
|
||||
dialog_id = -chat.id;
|
||||
/*if (ChatObject.isChannel(chat) && !chat.megagroup) {
|
||||
drawNameBroadcast = true;
|
||||
nameLockTop = AndroidUtilities.dp(28.5f);
|
||||
} else*/ {
|
||||
drawNameGroup = true;
|
||||
nameLockTop = AndroidUtilities.dp(30);
|
||||
}
|
||||
}
|
||||
if (!LocaleController.isRTL) {
|
||||
nameLockLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
|
||||
nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline + 4) + (groupDrawable.getIntrinsicWidth());
|
||||
} else {
|
||||
nameLockLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline + 2) - (groupDrawable.getIntrinsicWidth());
|
||||
nameLeft = AndroidUtilities.dp(11);
|
||||
}
|
||||
} else {
|
||||
dialog_id = user.id;
|
||||
if (!LocaleController.isRTL) {
|
||||
nameLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
|
||||
} else {
|
||||
nameLeft = AndroidUtilities.dp(11);
|
||||
}
|
||||
nameLockTop = AndroidUtilities.dp(17);
|
||||
}
|
||||
}
|
||||
|
||||
if (currentName != null) {
|
||||
nameString = currentName;
|
||||
} else {
|
||||
String nameString2 = "";
|
||||
if (chat != null) {
|
||||
nameString2 = chat.title;
|
||||
} else if (user != null) {
|
||||
nameString2 = UserObject.getUserName(user);
|
||||
}
|
||||
nameString = nameString2.replace('\n', ' ');
|
||||
}
|
||||
|
||||
currentNamePaint = namePaint;
|
||||
|
||||
int onlineWidth;
|
||||
int nameWidth;
|
||||
if (!LocaleController.isRTL) {
|
||||
onlineWidth = nameWidth = getMeasuredWidth() - nameLeft - AndroidUtilities.dp(14);
|
||||
} else {
|
||||
onlineWidth = nameWidth = getMeasuredWidth() - nameLeft - AndroidUtilities.dp(AndroidUtilities.leftBaseline);
|
||||
}
|
||||
/*if (drawNameLock) {
|
||||
nameWidth -= AndroidUtilities.dp(6) + lockDrawable.getIntrinsicWidth();
|
||||
} else*/ if (drawNameGroup) {
|
||||
nameWidth -= AndroidUtilities.dp(6) + groupDrawable.getIntrinsicWidth();
|
||||
}
|
||||
|
||||
if (drawCount) {
|
||||
TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
|
||||
if (dialog != null && dialog.unread_count != 0) {
|
||||
lastUnreadCount = dialog.unread_count;
|
||||
String countString = String.format("%d", dialog.unread_count);
|
||||
countWidth = Math.max(AndroidUtilities.dp(12), (int) Math.ceil(countPaint.measureText(countString)));
|
||||
countLayout = new StaticLayout(countString, countPaint, countWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);
|
||||
int w = countWidth + AndroidUtilities.dp(18);
|
||||
nameWidth -= w;
|
||||
if (!LocaleController.isRTL) {
|
||||
countLeft = getMeasuredWidth() - countWidth - AndroidUtilities.dp(19);
|
||||
} else {
|
||||
countLeft = AndroidUtilities.dp(19);
|
||||
nameLeft += w;
|
||||
}
|
||||
} else {
|
||||
lastUnreadCount = 0;
|
||||
countLayout = null;
|
||||
}
|
||||
} else {
|
||||
lastUnreadCount = 0;
|
||||
countLayout = null;
|
||||
}
|
||||
|
||||
CharSequence nameStringFinal = TextUtils.ellipsize(nameString, currentNamePaint, nameWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END);
|
||||
nameLayout = new StaticLayout(nameStringFinal, currentNamePaint, nameWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
|
||||
|
||||
if (chat == null || subLabel != null) {
|
||||
if (!LocaleController.isRTL) {
|
||||
onlineLeft = AndroidUtilities.dp(AndroidUtilities.leftBaseline);
|
||||
} else {
|
||||
onlineLeft = AndroidUtilities.dp(11);
|
||||
}
|
||||
|
||||
CharSequence onlineString = "";
|
||||
TextPaint currentOnlinePaint = offlinePaint;
|
||||
|
||||
if (subLabel != null) {
|
||||
onlineString = subLabel;
|
||||
} else if (user != null) {
|
||||
onlineString = "ErrOnline";
|
||||
}
|
||||
|
||||
CharSequence onlineStringFinal = TextUtils.ellipsize(onlineString, currentOnlinePaint, onlineWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END);
|
||||
onlineLayout = new StaticLayout(onlineStringFinal, currentOnlinePaint, onlineWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
|
||||
nameTop = AndroidUtilities.dp(13);
|
||||
if (subLabel != null && chat != null) {
|
||||
nameLockTop -= AndroidUtilities.dp(12);
|
||||
}
|
||||
} else {
|
||||
onlineLayout = null;
|
||||
nameTop = AndroidUtilities.dp(25);
|
||||
}
|
||||
|
||||
int avatarLeft;
|
||||
if (!LocaleController.isRTL) {
|
||||
avatarLeft = AndroidUtilities.dp(AndroidUtilities.isTablet() ? 13 : 9);
|
||||
} else {
|
||||
avatarLeft = getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.isTablet() ? 65 : 61);
|
||||
}
|
||||
|
||||
avatarImage.setImageCoords(avatarLeft, AndroidUtilities.dp(10), AndroidUtilities.dp(52), AndroidUtilities.dp(52));
|
||||
|
||||
double widthpx;
|
||||
float left;
|
||||
if (LocaleController.isRTL) {
|
||||
if (nameLayout.getLineCount() > 0) {
|
||||
left = nameLayout.getLineLeft(0);
|
||||
if (left == 0) {
|
||||
widthpx = Math.ceil(nameLayout.getLineWidth(0));
|
||||
if (widthpx < nameWidth) {
|
||||
nameLeft += (nameWidth - widthpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (onlineLayout != null && onlineLayout.getLineCount() > 0) {
|
||||
left = onlineLayout.getLineLeft(0);
|
||||
if (left == 0) {
|
||||
widthpx = Math.ceil(onlineLayout.getLineWidth(0));
|
||||
if (widthpx < onlineWidth) {
|
||||
onlineLeft += (onlineWidth - widthpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (nameLayout.getLineCount() > 0) {
|
||||
left = nameLayout.getLineRight(0);
|
||||
if (left == nameWidth) {
|
||||
widthpx = Math.ceil(nameLayout.getLineWidth(0));
|
||||
if (widthpx < nameWidth) {
|
||||
nameLeft -= (nameWidth - widthpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (onlineLayout != null && onlineLayout.getLineCount() > 0) {
|
||||
left = onlineLayout.getLineRight(0);
|
||||
if (left == onlineWidth) {
|
||||
widthpx = Math.ceil(onlineLayout.getLineWidth(0));
|
||||
if (widthpx < onlineWidth) {
|
||||
onlineLeft -= (onlineWidth - widthpx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void update(int mask) {
|
||||
TLRPC.FileLocation photo = null;
|
||||
if (user != null) {
|
||||
if (user.photo != null) {
|
||||
photo = user.photo.photo_small;
|
||||
}
|
||||
avatarDrawable.setInfoByUser(user);
|
||||
} else if (chat != null) {
|
||||
if (chat.photo != null) {
|
||||
photo = chat.photo.photo_small;
|
||||
}
|
||||
avatarDrawable.setInfoByChat(chat);
|
||||
} else {
|
||||
avatarDrawable.setInfoByName(null);
|
||||
}
|
||||
|
||||
if (mask != 0) {
|
||||
boolean continueUpdate = false;
|
||||
if ((mask & MessagesController.UPDATE_MASK_AVATAR) != 0 && user != null || (mask & MessagesController.UPDATE_MASK_CHAT_AVATAR) != 0 && chat != null) {
|
||||
if (lastAvatar != null && photo == null || lastAvatar == null && photo != null && lastAvatar != null && photo != null && (lastAvatar.volume_id != photo.volume_id || lastAvatar.local_id != photo.local_id)) {
|
||||
continueUpdate = true;
|
||||
}
|
||||
}
|
||||
if (!continueUpdate && (mask & MessagesController.UPDATE_MASK_STATUS) != 0 && user != null) {
|
||||
int newStatus = 0;
|
||||
if (newStatus != lastStatus) {
|
||||
continueUpdate = true;
|
||||
}
|
||||
}
|
||||
if (!continueUpdate && ((mask & MessagesController.UPDATE_MASK_NAME) != 0 && user != null) || (mask & MessagesController.UPDATE_MASK_CHAT_NAME) != 0 && chat != null) {
|
||||
String newName;
|
||||
if (user != null) {
|
||||
newName = user.first_name + user.last_name;
|
||||
} else {
|
||||
newName = chat.title;
|
||||
}
|
||||
if (!newName.equals(lastName)) {
|
||||
continueUpdate = true;
|
||||
}
|
||||
}
|
||||
if (!continueUpdate && drawCount && (mask & MessagesController.UPDATE_MASK_READ_DIALOG_MESSAGE) != 0) {
|
||||
TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
|
||||
if (dialog != null && dialog.unread_count != lastUnreadCount) {
|
||||
continueUpdate = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!continueUpdate) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (user != null) {
|
||||
lastStatus = 0;
|
||||
lastName = user.first_name + user.last_name;
|
||||
} else if (chat != null) {
|
||||
lastName = chat.title;
|
||||
}
|
||||
|
||||
|
||||
lastAvatar = photo;
|
||||
avatarImage.setImage(photo, "50_50", avatarDrawable, null, false);
|
||||
|
||||
if (getMeasuredWidth() != 0 || getMeasuredHeight() != 0) {
|
||||
buildLayout();
|
||||
} else {
|
||||
requestLayout();
|
||||
}
|
||||
postInvalidate();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
if (user == null && chat == null && encryptedChat == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (useSeparator) {
|
||||
if (LocaleController.isRTL) {
|
||||
canvas.drawLine(0, getMeasuredHeight() - 1, getMeasuredWidth() - AndroidUtilities.dp(AndroidUtilities.leftBaseline), getMeasuredHeight() - 1, linePaint);
|
||||
} else {
|
||||
canvas.drawLine(AndroidUtilities.dp(AndroidUtilities.leftBaseline), getMeasuredHeight() - 1, getMeasuredWidth(), getMeasuredHeight() - 1, linePaint);
|
||||
}
|
||||
}
|
||||
|
||||
if (drawAlpha != 1) {
|
||||
canvas.saveLayerAlpha(0, 0, canvas.getWidth(), canvas.getHeight(), (int)(255 * drawAlpha), Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);
|
||||
}
|
||||
|
||||
/*if (drawNameLock) {
|
||||
setDrawableBounds(lockDrawable, nameLockLeft, nameLockTop);
|
||||
lockDrawable.draw(canvas);
|
||||
} else*/ if (drawNameGroup) {
|
||||
setDrawableBounds(groupDrawable, nameLockLeft, nameLockTop);
|
||||
groupDrawable.draw(canvas);
|
||||
}
|
||||
|
||||
if (nameLayout != null) {
|
||||
canvas.save();
|
||||
canvas.translate(nameLeft, nameTop);
|
||||
nameLayout.draw(canvas);
|
||||
canvas.restore();
|
||||
}
|
||||
|
||||
if (onlineLayout != null) {
|
||||
canvas.save();
|
||||
canvas.translate(onlineLeft, AndroidUtilities.dp(40));
|
||||
onlineLayout.draw(canvas);
|
||||
canvas.restore();
|
||||
}
|
||||
|
||||
if (countLayout != null) {
|
||||
if (MessagesController.getInstance().isDialogMuted(dialog_id)) {
|
||||
setDrawableBounds(countDrawableGrey, countLeft - AndroidUtilities.dp(5.5f), countTop, countWidth + AndroidUtilities.dp(11), countDrawableGrey.getIntrinsicHeight());
|
||||
countDrawableGrey.draw(canvas);
|
||||
} else {
|
||||
setDrawableBounds(countDrawable, countLeft - AndroidUtilities.dp(5.5f), countTop, countWidth + AndroidUtilities.dp(11), countDrawable.getIntrinsicHeight());
|
||||
countDrawable.draw(canvas);
|
||||
}
|
||||
canvas.save();
|
||||
canvas.translate(countLeft, countTop + AndroidUtilities.dp(4));
|
||||
countLayout.draw(canvas);
|
||||
canvas.restore();
|
||||
}
|
||||
|
||||
avatarImage.draw(canvas);
|
||||
}
|
||||
}
|
||||
@@ -93,7 +93,6 @@ public class SharedDocumentCell extends FrameLayout implements MediaController.F
|
||||
extTextView = new TextView(context);
|
||||
extTextView.setTextColor(0xffffffff);
|
||||
extTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
extTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
extTextView.setLines(1);
|
||||
extTextView.setMaxLines(1);
|
||||
extTextView.setSingleLine(true);
|
||||
@@ -114,7 +113,6 @@ public class SharedDocumentCell extends FrameLayout implements MediaController.F
|
||||
nameTextView = new TextView(context);
|
||||
nameTextView.setTextColor(0xff212121);
|
||||
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
|
||||
nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
nameTextView.setLines(1);
|
||||
nameTextView.setMaxLines(1);
|
||||
nameTextView.setSingleLine(true);
|
||||
|
||||
@@ -1,159 +0,0 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Messenger Android Frontend
|
||||
* (C) 2013-2016 Nikolai Kudashov
|
||||
* (C) 2017 Björn Petersen
|
||||
* Contact: r10s@b44t.com, http://b44t.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see http://www.gnu.org/licenses/ .
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
package com.b44t.ui.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Build;
|
||||
import android.text.TextUtils;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.b44t.messenger.AndroidUtilities;
|
||||
import com.b44t.messenger.LocaleController;
|
||||
import com.b44t.messenger.R;
|
||||
import com.b44t.messenger.TLRPC;
|
||||
import com.b44t.ui.ActionBar.Theme;
|
||||
import com.b44t.ui.Components.BackupImageView;
|
||||
import com.b44t.ui.Components.LayoutHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class StickerSetCell extends FrameLayout {
|
||||
|
||||
private TextView textView;
|
||||
private TextView valueTextView;
|
||||
private BackupImageView imageView;
|
||||
private boolean needDivider;
|
||||
private ImageView optionsButton;
|
||||
private TLRPC.TL_messages_stickerSet stickersSet;
|
||||
private Rect rect = new Rect();
|
||||
|
||||
private static Paint paint;
|
||||
|
||||
public StickerSetCell(Context context) {
|
||||
super(context);
|
||||
|
||||
if (paint == null) {
|
||||
paint = new Paint();
|
||||
paint.setColor(0xffd9d9d9);
|
||||
}
|
||||
|
||||
textView = new TextView(context);
|
||||
textView.setTextColor(0xff212121);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
|
||||
textView.setLines(1);
|
||||
textView.setMaxLines(1);
|
||||
textView.setSingleLine(true);
|
||||
textView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
textView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT);
|
||||
addView(textView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, LocaleController.isRTL ? 40 : 71, 10, LocaleController.isRTL ? 71 : 40, 0));
|
||||
|
||||
valueTextView = new TextView(context);
|
||||
valueTextView.setTextColor(0xff8a8a8a);
|
||||
valueTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13);
|
||||
valueTextView.setLines(1);
|
||||
valueTextView.setMaxLines(1);
|
||||
valueTextView.setSingleLine(true);
|
||||
valueTextView.setGravity(LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT);
|
||||
addView(valueTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, LocaleController.isRTL ? 40 : 71, 35, LocaleController.isRTL ? 71 : 40, 0));
|
||||
|
||||
imageView = new BackupImageView(context);
|
||||
imageView.setAspectFit(true);
|
||||
addView(imageView, LayoutHelper.createFrame(48, 48, (LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT) | Gravity.TOP, LocaleController.isRTL ? 0 : 12, 8, LocaleController.isRTL ? 12 : 0, 0));
|
||||
|
||||
optionsButton = new ImageView(context);
|
||||
optionsButton.setFocusable(false);
|
||||
optionsButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR));
|
||||
optionsButton.setImageResource(R.drawable.doc_actions_b);
|
||||
optionsButton.setScaleType(ImageView.ScaleType.CENTER);
|
||||
addView(optionsButton, LayoutHelper.createFrame(40, 40, (LocaleController.isRTL ? Gravity.LEFT : Gravity.RIGHT) | Gravity.TOP));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(64) + (needDivider ? 1 : 0), MeasureSpec.EXACTLY));
|
||||
}
|
||||
|
||||
public void setStickersSet(TLRPC.TL_messages_stickerSet set, boolean divider) {
|
||||
needDivider = divider;
|
||||
stickersSet = set;
|
||||
|
||||
textView.setText(stickersSet.set.title);
|
||||
if (stickersSet.set.disabled) {
|
||||
textView.setAlpha(0.5f);
|
||||
valueTextView.setAlpha(0.5f);
|
||||
imageView.setAlpha(0.5f);
|
||||
} else {
|
||||
textView.setAlpha(1.0f);
|
||||
valueTextView.setAlpha(1.0f);
|
||||
imageView.setAlpha(1.0f);
|
||||
}
|
||||
ArrayList<TLRPC.Document> documents = set.documents;
|
||||
if (documents != null && !documents.isEmpty()) {
|
||||
valueTextView.setText(LocaleController.formatPluralString("Stickers", documents.size()));
|
||||
TLRPC.Document document = documents.get(0);
|
||||
if (document.thumb != null && document.thumb.location != null) {
|
||||
imageView.setImage(document.thumb.location, null, "webp", null);
|
||||
}
|
||||
} else {
|
||||
valueTextView.setText(LocaleController.formatPluralString("Stickers", 0));
|
||||
}
|
||||
}
|
||||
|
||||
public void setOnOptionsClick(OnClickListener listener) {
|
||||
optionsButton.setOnClickListener(listener);
|
||||
}
|
||||
|
||||
public TLRPC.TL_messages_stickerSet getStickersSet() {
|
||||
return stickersSet;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) {
|
||||
optionsButton.getHitRect(rect);
|
||||
if (rect.contains((int) event.getX(), (int) event.getY())) {
|
||||
return true;
|
||||
}
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
getBackground().setHotspot(event.getX(), event.getY());
|
||||
}
|
||||
}
|
||||
return super.onTouchEvent(event);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
if (needDivider) {
|
||||
canvas.drawLine(0, getHeight() - 1, getWidth() - getPaddingRight(), getHeight() - 1, paint);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -153,10 +153,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
private TextView pagedownButtonCounter;
|
||||
private ChatAttachAlert chatAttachAlert;
|
||||
private PlayerView playerView;
|
||||
private TextView alertTextView;
|
||||
|
||||
private ObjectAnimator pagedownButtonAnimation;
|
||||
private ObjectAnimator iconAnimator;
|
||||
|
||||
private boolean openSearchKeyboard;
|
||||
|
||||
@@ -670,7 +668,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
|
||||
actionModeTextView = new SimpleTextView(context);
|
||||
actionModeTextView.setTextSize(18);
|
||||
actionModeTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
actionModeTextView.setTextColor(Theme.ACTION_BAR_ACTION_MODE_TEXT_COLOR);
|
||||
actionModeTextView.setText(LocaleController.getString("Edit", R.string.Edit));
|
||||
actionModeTitleContainer.addView(actionModeTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT));
|
||||
@@ -1005,30 +1002,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
}
|
||||
});
|
||||
|
||||
FrameLayout alertView = new FrameLayout(context);
|
||||
alertView.setTag(1);
|
||||
alertView.setTranslationY(-AndroidUtilities.dp(50));
|
||||
alertView.setVisibility(View.GONE);
|
||||
alertView.setBackgroundResource(R.drawable.blockpanel);
|
||||
contentView.addView(alertView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 50, Gravity.TOP | Gravity.LEFT));
|
||||
|
||||
TextView alertNameTextView = new TextView(context);
|
||||
alertNameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
alertNameTextView.setTextColor(Theme.ALERT_PANEL_NAME_TEXT_COLOR);
|
||||
alertNameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
alertNameTextView.setSingleLine(true);
|
||||
alertNameTextView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
alertNameTextView.setMaxLines(1);
|
||||
alertView.addView(alertNameTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 8, 5, 8, 0));
|
||||
|
||||
alertTextView = new TextView(context);
|
||||
alertTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
alertTextView.setTextColor(Theme.ALERT_PANEL_MESSAGE_TEXT_COLOR);
|
||||
alertTextView.setSingleLine(true);
|
||||
alertTextView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
alertTextView.setMaxLines(1);
|
||||
alertView.addView(alertTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 8, 23, 8, 0));
|
||||
|
||||
pagedownButton = new FrameLayout(context);
|
||||
pagedownButton.setVisibility(View.INVISIBLE);
|
||||
contentView.addView(pagedownButton, LayoutHelper.createFrame(46, 59, Gravity.RIGHT | Gravity.BOTTOM, 0, 0, 7, 5));
|
||||
@@ -1049,7 +1022,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
|
||||
pagedownButtonCounter = new TextView(context);
|
||||
pagedownButtonCounter.setVisibility(View.INVISIBLE);
|
||||
pagedownButtonCounter.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
pagedownButtonCounter.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13);
|
||||
pagedownButtonCounter.setTextColor(0xffffffff);
|
||||
pagedownButtonCounter.setGravity(Gravity.CENTER);
|
||||
@@ -1147,7 +1119,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
|
||||
bottomOverlayChatText = new TextView(context);
|
||||
bottomOverlayChatText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
|
||||
//bottomOverlayChatText.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
bottomOverlayChatText.setTextColor(0xffb2b2b2); // same as hintTextColor of the keyboard
|
||||
bottomOverlayChat.addView(bottomOverlayChatText, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER));
|
||||
|
||||
@@ -1529,9 +1500,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); // was: BottomSheet.Builder
|
||||
//builder.setTitle(LocaleController.getString("Notifications", R.string.Notifications)); -- a title seems more confusing than helping -- the user has clicked "mute" before and there are several options all starting with "mute...", I think, this is very clear
|
||||
CharSequence[] items = new CharSequence[]{
|
||||
LocaleController.formatString("MuteFor", R.string.MuteFor, LocaleController.formatPluralString("Hours", 1)),
|
||||
LocaleController.formatString("MuteFor", R.string.MuteFor, LocaleController.formatPluralString("Hours", 8)),
|
||||
LocaleController.formatString("MuteFor", R.string.MuteFor, LocaleController.formatPluralString("Days", 2)),
|
||||
ApplicationLoader.applicationContext.getString(R.string.MuteFor1Hour),
|
||||
ApplicationLoader.applicationContext.getString(R.string.MuteFor8Hours),
|
||||
ApplicationLoader.applicationContext.getString(R.string.MuteFor2Days),
|
||||
LocaleController.getString("MuteAlways", R.string.MuteAlways)
|
||||
};
|
||||
builder.setItems(items, new DialogInterface.OnClickListener() {
|
||||
@@ -1551,7 +1522,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
editor.putInt("notify2_" + dialog_id, 3);
|
||||
editor.putInt("notifyuntil_" + dialog_id, untilTime);
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
/*NotificationsController.getInstance().removeNotificationsForDialog(dialog_id);
|
||||
TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
|
||||
if (dialog != null) {
|
||||
@@ -1569,7 +1540,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("notify2_" + dialog_id, 0);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
/*TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
|
||||
if (dialog != null) {
|
||||
dialog.notify_settings = new TLRPC.TL_peerNotifySettings();
|
||||
@@ -1717,8 +1688,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
MessageObject message = null;
|
||||
if (view instanceof ChatMessageCell) {
|
||||
message = ((ChatMessageCell) view).getMessageObject();
|
||||
} else if (view instanceof ChatActionCell) {
|
||||
message = ((ChatActionCell) view).getMessageObject();
|
||||
}
|
||||
|
||||
if (message==null || !message.isSelectable()) {
|
||||
@@ -2050,10 +2019,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
if (chatListView != null) {
|
||||
chatListView.invalidateViews();
|
||||
}
|
||||
if (alertTextView != null) {
|
||||
alertTextView.invalidate();
|
||||
}
|
||||
|
||||
}
|
||||
else if (id == NotificationCenter.updateInterfaces)
|
||||
{
|
||||
@@ -2503,7 +2468,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
|
||||
private void createDeleteMessagesAlert() {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(LocaleController.formatString("AreYouSureDeleteMessages", R.string.AreYouSureDeleteMessages, LocaleController.formatPluralString("messages", selectedMessagesIds.size())));
|
||||
builder.setMessage(ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.AreYouSureDeleteMessages, selectedMessagesIds.size(), selectedMessagesIds.size()));
|
||||
builder.setPositiveButton(LocaleController.getString("OK", R.string.OK), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
@@ -2782,24 +2747,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
imageReceiver = cell.getPhotoImage();
|
||||
}
|
||||
}
|
||||
} else if (view instanceof ChatActionCell) {
|
||||
ChatActionCell cell = (ChatActionCell) view;
|
||||
MessageObject message = cell.getMessageObject();
|
||||
if (message != null) {
|
||||
if (messageObject != null) {
|
||||
if (message.getId() == messageObject.getId()) {
|
||||
imageReceiver = cell.getPhotoImage();
|
||||
}
|
||||
} else if (fileLocation != null && message.photoThumbs != null) {
|
||||
for (int b = 0; b < message.photoThumbs.size(); b++) {
|
||||
TLRPC.PhotoSize photoSize = message.photoThumbs.get(b);
|
||||
if (photoSize.location.volume_id == fileLocation.volume_id && photoSize.location.local_id == fileLocation.local_id) {
|
||||
imageReceiver = cell.getPhotoImage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (imageReceiver != null) {
|
||||
@@ -3091,38 +3038,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
chatMessageCell.setAllowAssistant(true);
|
||||
} else if (viewType == ROWTYPE_DATE_HEADLINE ) {
|
||||
view = new ChatActionCell(mContext);
|
||||
((ChatActionCell) view).setDelegate(new ChatActionCell.ChatActionCellDelegate() {
|
||||
@Override
|
||||
public void didClickedImage(ChatActionCell cell) {
|
||||
MessageObject message = cell.getMessageObject();
|
||||
PhotoViewer.getInstance().setParentActivity(getParentActivity());
|
||||
TLRPC.PhotoSize photoSize = FileLoader.getClosestPhotoSizeWithSize(message.photoThumbs, 640);
|
||||
if (photoSize != null) {
|
||||
PhotoViewer.getInstance().openPhoto(photoSize.location, ChatActivity.this);
|
||||
} else {
|
||||
PhotoViewer.getInstance().openPhoto(message, 0, 0, ChatActivity.this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void didLongPressed(ChatActionCell cell) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void needOpenUserProfile(int uid) {
|
||||
if (uid < 0) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", -uid);
|
||||
presentFragment(new ChatActivity(args), true);
|
||||
} else if (uid != UserConfig.getClientUserId()) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("user_id", uid);
|
||||
ProfileActivity fragment = new ProfileActivity(args);
|
||||
fragment.setPlayProfileAnimation(false/*currentUser != null && currentUser.id == uid*/);
|
||||
presentFragment(fragment);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else if (viewType == ROWTYPE_UNREAD_HEADLINE) {
|
||||
view = new ChatUnreadCell(mContext);
|
||||
}
|
||||
@@ -3198,7 +3113,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
else if (view instanceof ChatUnreadCell)
|
||||
{
|
||||
ChatUnreadCell unreadCell = (ChatUnreadCell) view;
|
||||
unreadCell.setText(LocaleController.formatPluralString("NewMessages", markerUnreadCount));
|
||||
unreadCell.setText(mContext.getResources().getQuantityString(R.plurals.NewMessages, markerUnreadCount, markerUnreadCount));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1965,10 +1965,10 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
|
||||
if (height > AndroidUtilities.dp(50) && keyboardVisible) {
|
||||
if (isWidthGreater) {
|
||||
keyboardHeightLand = height;
|
||||
ApplicationLoader.applicationContext.getSharedPreferences("emoji", 0).edit().putInt("kbd_height_land3", keyboardHeightLand).commit();
|
||||
ApplicationLoader.applicationContext.getSharedPreferences("emoji", 0).edit().putInt("kbd_height_land3", keyboardHeightLand).apply();
|
||||
} else {
|
||||
keyboardHeight = height;
|
||||
ApplicationLoader.applicationContext.getSharedPreferences("emoji", 0).edit().putInt("kbd_height", keyboardHeight).commit();
|
||||
ApplicationLoader.applicationContext.getSharedPreferences("emoji", 0).edit().putInt("kbd_height", keyboardHeight).apply();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package com.b44t.ui.Components;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
@@ -61,7 +62,6 @@ public class ChatAvatarContainer extends FrameLayout {
|
||||
titleTextView.setTextColor(Theme.ACTION_BAR_TITLE_COLOR);
|
||||
titleTextView.setTextSize(18);
|
||||
titleTextView.setGravity(Gravity.LEFT);
|
||||
titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
titleTextView.setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
titleTextView.setRightDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
addView(titleTextView);
|
||||
|
||||
@@ -1001,7 +1001,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
|
||||
|
||||
public void clearRecentEmoji() {
|
||||
SharedPreferences preferences = getContext().getSharedPreferences("emoji", Activity.MODE_PRIVATE);
|
||||
preferences.edit().putBoolean("filled_default", true).commit();
|
||||
preferences.edit().putBoolean("filled_default", true).apply();
|
||||
emojiUseHistory.clear();
|
||||
recentEmoji.clear();
|
||||
saveRecentEmoji();
|
||||
@@ -1108,7 +1108,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
|
||||
stringBuilder.append("=");
|
||||
stringBuilder.append(entry.getValue());
|
||||
}
|
||||
preferences.edit().putString("emojis2", stringBuilder.toString()).commit();
|
||||
preferences.edit().putString("emojis2", stringBuilder.toString()).apply();
|
||||
}
|
||||
|
||||
private void saveEmojiColors() {
|
||||
@@ -1122,7 +1122,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
|
||||
stringBuilder.append("=");
|
||||
stringBuilder.append(entry.getValue());
|
||||
}
|
||||
preferences.edit().putString("color", stringBuilder.toString()).commit();
|
||||
preferences.edit().putString("color", stringBuilder.toString()).apply();
|
||||
}
|
||||
|
||||
private void saveRecentStickers() {
|
||||
@@ -1135,7 +1135,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
|
||||
stringBuilder.append(newRecentStickers.get(a));
|
||||
}
|
||||
editor.putString("stickers2", stringBuilder.toString());
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
public void switchToGifRecent() {
|
||||
@@ -1331,7 +1331,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
|
||||
}
|
||||
}
|
||||
}
|
||||
preferences.edit().remove("emojis").commit();
|
||||
preferences.edit().remove("emojis").apply();
|
||||
saveRecentEmoji();
|
||||
} else {
|
||||
str = preferences.getString("emojis2", "");
|
||||
@@ -1355,7 +1355,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
|
||||
for (int i = 0; i < newRecent.length; i++) {
|
||||
emojiUseHistory.put(newRecent[i], newRecent.length - i);
|
||||
}
|
||||
preferences.edit().putBoolean("filled_default", true).commit();
|
||||
preferences.edit().putBoolean("filled_default", true).apply();
|
||||
saveRecentEmoji();
|
||||
}
|
||||
}
|
||||
@@ -1412,7 +1412,7 @@ public class EmojiView extends FrameLayout implements NotificationCenter.Notific
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
preferences.edit().remove("stickers").commit();
|
||||
preferences.edit().remove("stickers").apply();
|
||||
saveRecentStickers();
|
||||
} else {
|
||||
str = preferences.getString("stickers2", "");
|
||||
|
||||
@@ -31,6 +31,7 @@ import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Matrix;
|
||||
import android.graphics.SurfaceTexture;
|
||||
import android.graphics.Typeface;
|
||||
import android.opengl.GLES20;
|
||||
import android.opengl.GLUtils;
|
||||
import android.os.Build;
|
||||
@@ -2087,7 +2088,6 @@ public class PhotoFilterView extends FrameLayout {
|
||||
cancelTextView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR, false));
|
||||
cancelTextView.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0);
|
||||
cancelTextView.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase());
|
||||
cancelTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
frameLayout.addView(cancelTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT));
|
||||
|
||||
doneTextView = new TextView(context);
|
||||
@@ -2097,7 +2097,7 @@ public class PhotoFilterView extends FrameLayout {
|
||||
doneTextView.setBackgroundDrawable(Theme.createBarSelectorDrawable(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR, false));
|
||||
doneTextView.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0);
|
||||
doneTextView.setText(LocaleController.getString("Done", R.string.Done).toUpperCase());
|
||||
doneTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
doneTextView.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
frameLayout.addView(doneTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT));
|
||||
|
||||
recyclerListView = new RecyclerListView(context);
|
||||
@@ -2315,7 +2315,6 @@ public class PhotoFilterView extends FrameLayout {
|
||||
} else if (a == 3) {
|
||||
curveTextView[a].setText(LocaleController.getString("CurvesBlue", R.string.CurvesBlue).toUpperCase());
|
||||
}
|
||||
curveTextView[a].setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
curveTextViewContainer.addView(curveTextView[a], LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 28, a == 0 ? 0 : 30, 0, 0, 0));
|
||||
curveTextView[a].setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
@@ -2341,7 +2340,6 @@ public class PhotoFilterView extends FrameLayout {
|
||||
tintShadowsButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
tintShadowsButton.setGravity(Gravity.CENTER_VERTICAL);
|
||||
tintShadowsButton.setText(LocaleController.getString("TintShadows", R.string.TintShadows).toUpperCase());
|
||||
tintShadowsButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
tintTextViewContainer.addView(tintShadowsButton, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 28));
|
||||
tintShadowsButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
@@ -2355,7 +2353,6 @@ public class PhotoFilterView extends FrameLayout {
|
||||
tintHighlightsButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
tintHighlightsButton.setGravity(Gravity.CENTER_VERTICAL);
|
||||
tintHighlightsButton.setText(LocaleController.getString("TintHighlights", R.string.TintHighlights).toUpperCase());
|
||||
tintHighlightsButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
tintTextViewContainer.addView(tintHighlightsButton, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, 28, 100, 0, 0, 0));
|
||||
tintHighlightsButton.setOnClickListener(new OnClickListener() {
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package com.b44t.ui.Components;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Typeface;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.view.View;
|
||||
@@ -62,7 +63,6 @@ public class PickerBottomLayout extends FrameLayout {
|
||||
cancelButton.setBackgroundDrawable(Theme.createBarSelectorDrawable(isDarkTheme ? Theme.ACTION_BAR_PICKER_SELECTOR_COLOR : Theme.ACTION_BAR_AUDIO_SELECTOR_COLOR, false));
|
||||
cancelButton.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0);
|
||||
cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel).toUpperCase());
|
||||
cancelButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
addView(cancelButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT));
|
||||
|
||||
doneButton = new LinearLayout(context);
|
||||
@@ -72,7 +72,6 @@ public class PickerBottomLayout extends FrameLayout {
|
||||
addView(doneButton, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.RIGHT));
|
||||
|
||||
doneButtonBadgeTextView = new TextView(context);
|
||||
doneButtonBadgeTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
doneButtonBadgeTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 13);
|
||||
doneButtonBadgeTextView.setTextColor(0xffffffff);
|
||||
doneButtonBadgeTextView.setGravity(Gravity.CENTER);
|
||||
@@ -87,7 +86,7 @@ public class PickerBottomLayout extends FrameLayout {
|
||||
doneButtonTextView.setGravity(Gravity.CENTER);
|
||||
doneButtonTextView.setCompoundDrawablePadding(AndroidUtilities.dp(8));
|
||||
doneButtonTextView.setText(LocaleController.getString("Send", R.string.Send).toUpperCase());
|
||||
doneButtonTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
doneButtonTextView.setTypeface(Typeface.DEFAULT_BOLD);
|
||||
doneButton.addView(doneButtonTextView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL));
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import android.animation.AnimatorSet;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.content.Context;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Typeface;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
@@ -248,7 +249,7 @@ public class PlayerView extends FrameLayout implements NotificationCenter.Notifi
|
||||
stringBuilder = new SpannableStringBuilder(String.format("%s - %s", messageObject.getMusicAuthor(), messageObject.getMusicTitle()));
|
||||
titleTextView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
}
|
||||
TypefaceSpan span = new TypefaceSpan(AndroidUtilities.getTypeface("fonts/rmedium.ttf"), 0, Theme.INAPP_PLAYER_PERFORMER_TEXT_COLOR);
|
||||
TypefaceSpan span = new TypefaceSpan(Typeface.DEFAULT_BOLD, 0, Theme.INAPP_PLAYER_PERFORMER_TEXT_COLOR);
|
||||
stringBuilder.setSpan(span, 0, messageObject.getMusicAuthor().length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
|
||||
titleTextView.setText(stringBuilder);
|
||||
}
|
||||
|
||||
@@ -167,7 +167,6 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not
|
||||
titleTextView.setEllipsize(TextUtils.TruncateAt.MIDDLE);
|
||||
titleTextView.setPadding(AndroidUtilities.dp(18), 0, AndroidUtilities.dp(18), 0);
|
||||
titleTextView.setGravity(Gravity.CENTER_VERTICAL);
|
||||
titleTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
containerView.addView(titleTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, 48));
|
||||
titleTextView.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
@@ -326,7 +325,6 @@ public class StickersAlert extends BottomSheet implements NotificationCenter.Not
|
||||
previewSendButton.setBackgroundColor(0xffffffff);
|
||||
previewSendButton.setPadding(AndroidUtilities.dp(29), 0, AndroidUtilities.dp(29), 0);
|
||||
previewSendButton.setText(LocaleController.getString("Close", R.string.Close).toUpperCase());
|
||||
previewSendButton.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
previewSendButton.setVisibility(View.GONE);
|
||||
stickerPreviewLayout.addView(previewSendButton, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, Gravity.BOTTOM | Gravity.LEFT));
|
||||
previewSendButton.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Messenger Android Frontend
|
||||
* (C) 2013-2016 Nikolai Kudashov
|
||||
* (C) 2017 Björn Petersen
|
||||
* Contact: r10s@b44t.com, http://b44t.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see http://www.gnu.org/licenses/ .
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
package com.b44t.ui.Components;
|
||||
|
||||
import android.text.TextPaint;
|
||||
|
||||
import com.b44t.messenger.AndroidUtilities;
|
||||
|
||||
public class URLSpanNoUnderlineBold extends URLSpanNoUnderline {
|
||||
public URLSpanNoUnderlineBold(String url) {
|
||||
super(url);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDrawState(TextPaint ds) {
|
||||
super.updateDrawState(ds);
|
||||
ds.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
ds.setUnderlineText(false);
|
||||
}
|
||||
}
|
||||
@@ -136,7 +136,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
else if( do_what == SELECT_CONTACTS_FOR_NEW_GROUP )
|
||||
{
|
||||
title = LocaleController.getString("NewGroup", R.string.NewGroup);
|
||||
subtitle = LocaleController.getString("MeAnd", R.string.MeAnd) + " " + LocaleController.formatPluralString("Members", 0);
|
||||
subtitle = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.MeAndMembers, 0, 0);
|
||||
}
|
||||
else if( do_what == ADD_CONTACTS_TO_GROUP )
|
||||
{
|
||||
@@ -163,7 +163,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
private volatile boolean m_in_sync = false;
|
||||
|
||||
@Override
|
||||
public View createView(Context context) {
|
||||
public View createView(final Context context) {
|
||||
|
||||
// do sync?
|
||||
boolean do_sync_now = true;
|
||||
@@ -464,7 +464,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
span.uid = user.id;
|
||||
ignoreChange = false;
|
||||
}
|
||||
actionBar.setSubtitle(LocaleController.getString("MeAnd", R.string.MeAnd) + " " + LocaleController.formatPluralString("Members", selectedContacts.size()));
|
||||
actionBar.setSubtitle(context.getResources().getQuantityString(R.plurals.MeAndMembers, selectedContacts.size(), selectedContacts.size()));
|
||||
if (searching || searchWas) {
|
||||
ignoreChange = true;
|
||||
SpannableStringBuilder ssb = new SpannableStringBuilder("");
|
||||
|
||||
@@ -66,7 +66,6 @@ import com.b44t.messenger.R;
|
||||
import com.b44t.messenger.UserConfig;
|
||||
import com.b44t.ui.Adapters.DialogsAdapter;
|
||||
import com.b44t.ui.Adapters.DialogsSearchAdapter;
|
||||
import com.b44t.ui.Cells.ProfileSearchCell;
|
||||
import com.b44t.ui.Cells.UserCell;
|
||||
import com.b44t.ui.Cells.DialogCell;
|
||||
import com.b44t.ui.ActionBar.ActionBar;
|
||||
@@ -695,18 +694,7 @@ public class DialogsActivity extends BaseFragment implements NotificationCenter.
|
||||
}
|
||||
} else if (child instanceof UserCell) {
|
||||
((UserCell) child).update(mask);
|
||||
} else if (child instanceof ProfileSearchCell) {
|
||||
((ProfileSearchCell) child).update(mask);
|
||||
} /*else if (child instanceof RecyclerListView) {
|
||||
RecyclerListView innerListView = (RecyclerListView) child;
|
||||
int count2 = innerListView.getChildCount();
|
||||
for (int b = 0; b < count2; b++) {
|
||||
View child2 = innerListView.getChildAt(b);
|
||||
if (child2 instanceof HintDialogCell) {
|
||||
((HintDialogCell) child2).checkUnreadCounter(mask);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -192,7 +192,6 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
|
||||
selectedMessagesCountTextView = new NumberTextView(actionMode.getContext());
|
||||
selectedMessagesCountTextView.setTextSize(18);
|
||||
selectedMessagesCountTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
selectedMessagesCountTextView.setTextColor(0xff737373);
|
||||
selectedMessagesCountTextView.setOnTouchListener(new View.OnTouchListener() {
|
||||
@Override
|
||||
|
||||
@@ -271,7 +271,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
}
|
||||
|
||||
GreySectionCell sectionCell = new GreySectionCell(context);
|
||||
sectionCell.setText(LocaleController.formatPluralString("Members", selectedContacts.size()));
|
||||
sectionCell.setText(context.getResources().getQuantityString(R.plurals.Members, selectedContacts.size(), selectedContacts.size()));
|
||||
linearLayout.addView(sectionCell);
|
||||
|
||||
listView = new ListView(context);
|
||||
|
||||
@@ -43,10 +43,13 @@ import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.b44t.messenger.AndroidUtilities;
|
||||
import com.b44t.messenger.ApplicationLoader;
|
||||
import com.b44t.messenger.LocaleController;
|
||||
import com.b44t.messenger.R;
|
||||
import com.b44t.ui.ActionBar.Theme;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class IntroActivity extends Activity {
|
||||
|
||||
private ViewPager viewPager;
|
||||
@@ -133,7 +136,7 @@ public class IntroActivity extends Activity {
|
||||
}
|
||||
viewPager = (ViewPager) findViewById(R.id.intro_view_pager);
|
||||
TextView startMessagingButton = (TextView) findViewById(R.id.start_messaging_button);
|
||||
startMessagingButton.setText(LocaleController.getString("StartMessaging", R.string.IntroStartMessaging).toUpperCase());
|
||||
startMessagingButton.setText(ApplicationLoader.applicationContext.getString(R.string.IntroStartMessaging).toUpperCase(Locale.getDefault()));
|
||||
if (Build.VERSION.SDK_INT >= 21) {
|
||||
StateListAnimator animator = new StateListAnimator();
|
||||
animator.addState(new int[]{android.R.attr.state_pressed}, ObjectAnimator.ofFloat(startMessagingButton, "translationZ", AndroidUtilities.dp(2), AndroidUtilities.dp(4)).setDuration(200));
|
||||
|
||||
@@ -185,7 +185,6 @@ public class LanguageSelectActivity extends BaseFragment {
|
||||
}
|
||||
if (localeInfo != null) {
|
||||
LocaleController.getInstance().applyLanguage(localeInfo, true);
|
||||
MrMailbox.initStockStrings();
|
||||
parentLayout.rebuildAllFragmentViews(false);
|
||||
}
|
||||
finishFragment();
|
||||
|
||||
@@ -191,7 +191,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
enabled = preferences.getBoolean("EnableGroup", true);
|
||||
editor.putBoolean("EnableGroup", !enabled);
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
} else if (i == messagePreviewRow /*|| i == groupPreviewRow*/) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
@@ -202,7 +202,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
// enabled = preferences.getBoolean("EnablePreviewGroup", true);
|
||||
// editor.putBoolean("EnablePreviewGroup", !enabled);
|
||||
//}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
} else if (i == messageSoundRow || i == groupSoundRow) {
|
||||
try {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
@@ -253,7 +253,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.clear();
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
}
|
||||
@@ -267,13 +267,13 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
enabled = preferences.getBoolean("EnableInAppSounds", true);
|
||||
editor.putBoolean("EnableInAppSounds", !enabled);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
} else if (i == inappVibrateRow) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
enabled = preferences.getBoolean("EnableInAppVibrate", true);
|
||||
editor.putBoolean("EnableInAppVibrate", !enabled);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
/*} else if (i == inappPreviewRow) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
@@ -285,21 +285,21 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
enabled = preferences.getBoolean("EnableInChatSound", true);
|
||||
editor.putBoolean("EnableInChatSound", !enabled);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
NotificationsController.getInstance().setInChatSoundEnabled(!enabled);
|
||||
} else if (i == badgeNumberRow) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
enabled = preferences.getBoolean("badgeNumber", true);
|
||||
editor.putBoolean("badgeNumber", !enabled);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
NotificationsController.getInstance().setBadgeEnabled(!enabled);
|
||||
} else if (i == notificationsServiceConnectionRow) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
enabled = preferences.getBoolean("pushConnection", true);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("pushConnection", !enabled);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (!enabled) {
|
||||
ConnectionsManager.getInstance().setPushConnectionEnabled(true);
|
||||
} else {
|
||||
@@ -310,7 +310,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
final SharedPreferences.Editor editor = preferences.edit();
|
||||
enabled = preferences.getBoolean("pushService", true);
|
||||
editor.putBoolean("pushService", !enabled);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
ApplicationLoader.stopPushService();
|
||||
ApplicationLoader.startPushService();
|
||||
} else if (i == messageLedRow || i == groupLedRow) {
|
||||
@@ -346,7 +346,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
editor.putInt("GroupLed", colorPickerView.getColor());
|
||||
textCell.setTextAndColor(LocaleController.getString("LedColor", R.string.LedColor), colorPickerView.getColor(), true);
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
});
|
||||
builder.setNeutralButton(LocaleController.getString("Disabled", R.string.Disabled), new DialogInterface.OnClickListener() {
|
||||
@@ -362,7 +362,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
editor.putInt("GroupLed", 0);
|
||||
textCell.setTextAndColor(LocaleController.getString("LedColor", R.string.LedColor), 0, true);
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
listView.invalidateViews();
|
||||
}
|
||||
});
|
||||
@@ -396,7 +396,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
} else if (which == 4) {
|
||||
editor.putInt(param, 4);
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
}
|
||||
@@ -416,11 +416,11 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
if (i == messagePriorityRow) {
|
||||
preferences.edit().putInt("priority_messages", which).commit();
|
||||
preferences.edit().putInt("priority_messages", which).apply();
|
||||
} else if (i == groupPriorityRow) {
|
||||
preferences.edit().putInt("priority_group", which).commit();
|
||||
preferences.edit().putInt("priority_group", which).apply();
|
||||
} else if (i == inappPriorityRow) {
|
||||
preferences.edit().putInt("priority_inapp", which).commit();
|
||||
preferences.edit().putInt("priority_inapp", which).apply();
|
||||
}
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
@@ -434,12 +434,12 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
builder.setTitle(LocaleController.getString("RepeatNotifications", R.string.RepeatNotifications));
|
||||
builder.setItems(new CharSequence[]{
|
||||
LocaleController.getString("Disabled", R.string.Disabled),
|
||||
LocaleController.formatPluralString("Minutes", 5),
|
||||
LocaleController.formatPluralString("Minutes", 10),
|
||||
LocaleController.formatPluralString("Minutes", 30),
|
||||
LocaleController.formatPluralString("Hours", 1),
|
||||
LocaleController.formatPluralString("Hours", 2),
|
||||
LocaleController.formatPluralString("Hours", 4)
|
||||
ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, 5, 5),
|
||||
ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, 10, 10),
|
||||
ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, 30, 30),
|
||||
ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Hours, 1, 1),
|
||||
ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Hours, 2, 2),
|
||||
ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Hours, 4, 4)
|
||||
}, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
@@ -458,7 +458,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
minutes = 60 * 4;
|
||||
}
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
preferences.edit().putInt("repeat_messages", minutes).commit();
|
||||
preferences.edit().putInt("repeat_messages", minutes).apply();
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
}
|
||||
@@ -513,7 +513,7 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
editor.putString("GroupSoundPath", "NoSound");
|
||||
}
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
listView.invalidateViews();
|
||||
}
|
||||
}
|
||||
@@ -679,9 +679,9 @@ public class NotificationsSettingsActivity extends BaseFragment implements Notif
|
||||
if (minutes == 0) {
|
||||
value = LocaleController.getString("Disabled", R.string.Disabled);
|
||||
} else if (minutes < 60) {
|
||||
value = LocaleController.formatPluralString("Minutes", minutes);
|
||||
value = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, minutes, minutes);
|
||||
} else {
|
||||
value = LocaleController.formatPluralString("Hours", minutes / 60);
|
||||
value = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Hours, minutes / 60, minutes / 60);
|
||||
}
|
||||
textCell.setTextAndValue(LocaleController.getString("RepeatNotifications", R.string.RepeatNotifications), value, true);
|
||||
}
|
||||
|
||||
@@ -288,7 +288,6 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter
|
||||
dropDown.setMaxLines(1);
|
||||
dropDown.setEllipsize(TextUtils.TruncateAt.END);
|
||||
dropDown.setTextColor(0xffffffff);
|
||||
dropDown.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
dropDown.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_arrow_drop_down, 0);
|
||||
dropDown.setCompoundDrawablePadding(AndroidUtilities.dp(4));
|
||||
dropDown.setPadding(0, 0, AndroidUtilities.dp(10), 0);
|
||||
@@ -371,13 +370,13 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter
|
||||
if (value == 0) {
|
||||
return LocaleController.getString("Disabled", R.string.Disabled);
|
||||
} else if (value == 1) {
|
||||
return LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Minutes", 1));
|
||||
return ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, 1, 1);
|
||||
} else if (value == 2) {
|
||||
return LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Minutes", 5));
|
||||
return ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, 5, 5);
|
||||
} else if (value == 3) {
|
||||
return LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Hours", 1));
|
||||
return ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Hours, 1, 1);
|
||||
} else if (value == 4) {
|
||||
return LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Hours", 5));
|
||||
return ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Hours, 5, 5);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
@@ -674,11 +673,11 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter
|
||||
if (UserConfig.autoLockIn == 0) {
|
||||
val = LocaleController.formatString("Disabled", R.string.Disabled);
|
||||
} else if (UserConfig.autoLockIn < 60 * 60) {
|
||||
val = LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Minutes", UserConfig.autoLockIn / 60));
|
||||
val = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, UserConfig.autoLockIn / 60, UserConfig.autoLockIn / 60);
|
||||
} else if (UserConfig.autoLockIn < 60 * 60 * 24) {
|
||||
val = LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Hours", (int) Math.ceil(UserConfig.autoLockIn / 60.0f / 60)));
|
||||
val = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Hours, (int) Math.ceil(UserConfig.autoLockIn / 60.0f / 60), (int) Math.ceil(UserConfig.autoLockIn / 60.0f / 60));
|
||||
} else {
|
||||
val = LocaleController.formatString("AutoLockInTime", R.string.AutoLockInTime, LocaleController.formatPluralString("Days", (int) Math.ceil(UserConfig.autoLockIn / 60.0f / 60 / 24)));
|
||||
val = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Days, (int) Math.ceil(UserConfig.autoLockIn / 60.0f / 60 / 24), (int) Math.ceil(UserConfig.autoLockIn / 60.0f / 60 / 24));
|
||||
}
|
||||
textCell.setTextAndValue(LocaleController.getString("AutoLock", R.string.AutoLock), val, true);
|
||||
textCell.setTextColor(0xff000000);
|
||||
|
||||
@@ -196,7 +196,6 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati
|
||||
dropDown.setMaxLines(1);
|
||||
dropDown.setEllipsize(TextUtils.TruncateAt.END);
|
||||
dropDown.setTextColor(0xffffffff);
|
||||
dropDown.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
dropDown.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_arrow_drop_down, 0);
|
||||
dropDown.setCompoundDrawablePadding(AndroidUtilities.dp(4));
|
||||
dropDown.setPadding(0, 0, AndroidUtilities.dp(10), 0);
|
||||
|
||||
@@ -1351,7 +1351,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||
|
||||
nameTextView = new TextView(containerView.getContext());
|
||||
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
nameTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
nameTextView.setSingleLine(true);
|
||||
nameTextView.setMaxLines(1);
|
||||
nameTextView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
@@ -1365,7 +1364,6 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||
dateTextView.setMaxLines(1);
|
||||
dateTextView.setEllipsize(TextUtils.TruncateAt.END);
|
||||
dateTextView.setTextColor(0xffffffff);
|
||||
dateTextView.setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
dateTextView.setGravity(Gravity.LEFT);
|
||||
bottomLayout.addView(dateTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.LEFT, 16, 25, 50, 0));
|
||||
|
||||
|
||||
@@ -165,7 +165,7 @@ public class PrivacySettingsActivity extends BaseFragment implements Notificatio
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("notify2_" + MrChat.MR_CHAT_ID_DEADDROP, oldval==1? 2 /*always muted*/ : 0);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -38,6 +38,7 @@ import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.view.Gravity;
|
||||
@@ -553,7 +554,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
nameTextView[a].setTextColor(Theme.ACTION_BAR_TITLE_COLOR);
|
||||
nameTextView[a].setTextSize(18);
|
||||
nameTextView[a].setGravity(Gravity.LEFT);
|
||||
nameTextView[a].setTypeface(AndroidUtilities.getTypeface("fonts/rmedium.ttf"));
|
||||
nameTextView[a].setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
nameTextView[a].setRightDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
nameTextView[a].setPivotX(0);
|
||||
|
||||
@@ -182,7 +182,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
} else if (which == 4) {
|
||||
editor.putInt("vibrate_" + dialog_id, 3);
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
}
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
@@ -210,7 +210,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
NotificationsController.getInstance().removeNotificationsForDialog(dialog_id);
|
||||
}*/
|
||||
//MessagesStorage.getInstance().setDialogFlags(dialog_id, which == 2 ? 1 : 0);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
TLRPC.TL_dialog dialog = MessagesController.getInstance().dialogs_dict.get(dialog_id);
|
||||
if (dialog != null) {
|
||||
dialog.notify_settings = new TLRPC.TL_peerNotifySettings();
|
||||
@@ -285,7 +285,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
final SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("color_" + dialog_id, colorPickerView.getColor());
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
listView.invalidateViews();
|
||||
}
|
||||
});
|
||||
@@ -295,7 +295,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
final SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("color_" + dialog_id, 0);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
listView.invalidateViews();
|
||||
}
|
||||
});
|
||||
@@ -305,7 +305,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
final SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.remove("color_" + dialog_id);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
listView.invalidateViews();
|
||||
}
|
||||
});
|
||||
@@ -327,7 +327,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
which--;
|
||||
}
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
preferences.edit().putInt("priority_" + dialog_id, which).commit();
|
||||
preferences.edit().putInt("priority_" + dialog_id, which).apply();
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
}
|
||||
@@ -434,8 +434,8 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
preferences.edit().putInt("smart_max_count_" + dialog_id, numberPickerTimes.getValue()).commit();
|
||||
preferences.edit().putInt("smart_delay_" + dialog_id, numberPickerMinutes.getValue() * 60).commit();
|
||||
preferences.edit().putInt("smart_max_count_" + dialog_id, numberPickerTimes.getValue()).apply();
|
||||
preferences.edit().putInt("smart_delay_" + dialog_id, numberPickerMinutes.getValue() * 60).apply();
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
}
|
||||
@@ -445,7 +445,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("Notifications", Activity.MODE_PRIVATE);
|
||||
preferences.edit().putInt("smart_max_count_" + dialog_id, 0).commit();
|
||||
preferences.edit().putInt("smart_max_count_" + dialog_id, 0).apply();
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
}
|
||||
@@ -491,7 +491,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
editor.putString("sound_path_" + dialog_id, "NoSound");
|
||||
}
|
||||
}
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
listView.invalidateViews();
|
||||
}
|
||||
}
|
||||
@@ -583,11 +583,14 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
if (delta <= 0) {
|
||||
val = LocaleController.getString("Enabled", R.string.Enabled);
|
||||
} else if (delta < 60 * 60) {
|
||||
val = LocaleController.formatString("WillUnmuteIn", R.string.WillUnmuteIn, LocaleController.formatPluralString("Minutes", delta / 60));
|
||||
// @TODO: Maybe this should be reworded a bit.
|
||||
val = mContext.getResources().getQuantityString(R.plurals.Minutes, delta / 60, delta / 60);
|
||||
} else if (delta < 60 * 60 * 24) {
|
||||
val = LocaleController.formatString("WillUnmuteIn", R.string.WillUnmuteIn, LocaleController.formatPluralString("Hours", (int) Math.ceil(delta / 60.0f / 60)));
|
||||
// @TODO: Maybe this should be reworded a bit.
|
||||
val = mContext.getResources().getQuantityString(R.plurals.Hours, (int) Math.ceil(delta / 60.0f / 60), (int) Math.ceil(delta / 60.0f / 60));
|
||||
} else if (delta < 60 * 60 * 24 * 365) {
|
||||
val = LocaleController.formatString("WillUnmuteIn", R.string.WillUnmuteIn, LocaleController.formatPluralString("Days", (int) Math.ceil(delta / 60.0f / 60 / 24)));
|
||||
// @TODO: Maybe this should be reworded a bit.
|
||||
val = mContext.getResources().getQuantityString(R.plurals.Days, (int) Math.ceil(delta / 60.0f / 60 / 24), (int) Math.ceil(delta / 60.0f / 60 / 24));
|
||||
} else {
|
||||
val = null;
|
||||
}
|
||||
@@ -628,9 +631,9 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
if (notifyMaxCount == 0) {
|
||||
textCell.setTextAndValue(LocaleController.getString("SmartNotifications", R.string.SmartNotifications), LocaleController.getString("Disabled", R.string.Disabled), true);
|
||||
} else {
|
||||
String times = LocaleController.formatPluralString("Times", notifyMaxCount);
|
||||
String minutes = LocaleController.formatPluralString("Minutes", notifyDelay / 60);
|
||||
textCell.setTextAndValue(LocaleController.getString("SmartNotifications", R.string.SmartNotifications), LocaleController.formatString("SmartNotificationsInfo", R.string.SmartNotificationsInfo, times, minutes), true);
|
||||
String minutes = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.Minutes, notifyDelay / 60, notifyDelay / 60);
|
||||
String value = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.MaxNotifications, notifyMaxCount, notifyMaxCount, minutes);
|
||||
textCell.setTextAndValue(LocaleController.getString("SmartNotifications", R.string.SmartNotifications), value, true);
|
||||
}
|
||||
}
|
||||
} else if (type == TYPE_COLOR_CELL) {
|
||||
|
||||
@@ -209,7 +209,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("msg_font_size", numberPicker.getValue());
|
||||
MessagesController.getInstance().fontSize = numberPicker.getValue();
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (listView != null) {
|
||||
listView.invalidateViews();
|
||||
}
|
||||
@@ -221,7 +221,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
|
||||
boolean animations = preferences.getBoolean("view_animations", true);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("view_animations", !animations);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (view instanceof TextCheckCell) {
|
||||
((TextCheckCell) view).setChecked(!animations);
|
||||
}
|
||||
@@ -234,7 +234,7 @@ public class SettingsActivity extends BaseFragment implements NotificationCenter
|
||||
boolean send = preferences.getBoolean("send_by_enter", false);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("send_by_enter", !send);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
if (view instanceof TextCheckCell) {
|
||||
((TextCheckCell) view).setChecked(!send);
|
||||
}
|
||||
|
||||
@@ -294,7 +294,7 @@ public class VideoEditorActivity extends BaseFragment implements TextureView.Sur
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("compress_video", isChecked);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
updateVideoEditedInfo();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -79,8 +79,6 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
|
||||
private ListAdapter listAdapter;
|
||||
private ImageView backgroundImage;
|
||||
private FrameLayout progressView;
|
||||
private View progressViewBackground;
|
||||
private int selectedBackground;
|
||||
private int selectedColor;
|
||||
private ArrayList<TLRPC.WallPaper> wallPapers = new ArrayList<>();
|
||||
@@ -175,7 +173,7 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putInt("selectedBackground", selectedBackground);
|
||||
editor.putInt("selectedColor", selectedColor);
|
||||
editor.commit();
|
||||
editor.apply();
|
||||
ApplicationLoader.reloadWallpaper();
|
||||
}
|
||||
finishFragment();
|
||||
@@ -199,24 +197,6 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
}
|
||||
});
|
||||
|
||||
progressView = new FrameLayout(context);
|
||||
progressView.setVisibility(View.INVISIBLE);
|
||||
frameLayout.addView(progressView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.MATCH_PARENT, Gravity.TOP | Gravity.LEFT, 0, 0, 0, 52));
|
||||
|
||||
progressViewBackground = new View(context);
|
||||
progressViewBackground.setBackgroundResource(R.drawable.system_loader);
|
||||
progressView.addView(progressViewBackground, LayoutHelper.createFrame(36, 36, Gravity.CENTER));
|
||||
|
||||
ProgressBar progressBar = new ProgressBar(context);
|
||||
try {
|
||||
progressBar.setIndeterminateDrawable(context.getResources().getDrawable(R.drawable.loading_animation));
|
||||
} catch (Exception e) {
|
||||
//don't promt
|
||||
}
|
||||
progressBar.setIndeterminate(true);
|
||||
AndroidUtilities.setProgressBarAnimationDuration(progressBar, 1500);
|
||||
progressView.addView(progressBar, LayoutHelper.createFrame(32, 32, Gravity.CENTER));
|
||||
|
||||
RecyclerListView listView = new RecyclerListView(context);
|
||||
listView.setClipToPadding(false);
|
||||
listView.setTag(8);
|
||||
@@ -357,12 +337,9 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
String fileName = size.location.volume_id + "_" + size.location.local_id + ".jpg";
|
||||
File f = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), fileName);
|
||||
if (!f.exists()) {
|
||||
int result[] = AndroidUtilities.calcDrawableColor(backgroundImage.getDrawable());
|
||||
progressViewBackground.getBackground().setColorFilter(new PorterDuffColorFilter(result[0], PorterDuff.Mode.MULTIPLY));
|
||||
loadingFile = fileName;
|
||||
loadingFileObject = f;
|
||||
doneButton.setEnabled(false);
|
||||
progressView.setVisibility(View.VISIBLE);
|
||||
loadingSize = size;
|
||||
selectedColor = 0;
|
||||
FileLoader.getInstance().loadFile(size, null, true);
|
||||
@@ -382,7 +359,6 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
backgroundImage.setBackgroundColor(0);
|
||||
selectedColor = 0;
|
||||
doneButton.setEnabled(true);
|
||||
progressView.setVisibility(View.GONE);
|
||||
}
|
||||
} else {
|
||||
if (loadingFile != null) {
|
||||
@@ -418,7 +394,6 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
loadingFile = null;
|
||||
loadingSize = null;
|
||||
doneButton.setEnabled(true);
|
||||
progressView.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -431,14 +406,12 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
loadingFileObject = null;
|
||||
loadingFile = null;
|
||||
loadingSize = null;
|
||||
progressView.setVisibility(View.GONE);
|
||||
doneButton.setEnabled(false);
|
||||
}
|
||||
} else if (id == NotificationCenter.FileDidLoaded) {
|
||||
String location = (String) args[0];
|
||||
if (loadingFile != null && loadingFile.equals(location)) {
|
||||
backgroundImage.setImageURI(Uri.fromFile(loadingFileObject));
|
||||
progressView.setVisibility(View.GONE);
|
||||
backgroundImage.setBackgroundColor(0);
|
||||
doneButton.setEnabled(true);
|
||||
loadingFileObject = null;
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 385 KiB After Width: | Height: | Size: 112 KiB |
@@ -20,9 +20,10 @@
|
||||
<string name="SelectChat">Chat auswählen …</string>
|
||||
<string name="Search">Suche</string>
|
||||
<string name="MuteNotifications">Stummschalten</string>
|
||||
<string name="MuteFor">Stumm für %1$s</string>
|
||||
<string name="MuteFor1Hour">Stumm für 1 Stunde</string>
|
||||
<string name="MuteFor8Hours">Stumm für 8 Stunden</string>
|
||||
<string name="MuteFor2Days">Stumm für 2 Tage</string>
|
||||
<string name="UnmuteNotifications">Stumm aus</string>
|
||||
<string name="WillUnmuteIn">In %1$s</string>
|
||||
<string name="Draft">Entwurf</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Musikdateien der Android Musikbibliothek hinzufügen, um sie hier zu sehen.</string>
|
||||
@@ -64,8 +65,6 @@
|
||||
<string name="OpenInBrowser">ÖFFNEN MIT …</string>
|
||||
<string name="SendItems">%1$s senden</string>
|
||||
<string name="OpenUrlAlert">URL %1$s öffnen?</string>
|
||||
<string name="MoreInfo">Mehr Infos</string>
|
||||
<string name="ShareSendTo">Sende an …</string>
|
||||
<string name="ClearRecentEmoji">Zuletzt benutzte Emoji leeren?</string>
|
||||
<string name="AddShortcut">Auf Startbildschirm platzieren</string>
|
||||
<string name="ShortcutAdded">Widget zum Startbildschirm hinzugefügt</string>
|
||||
@@ -73,13 +72,10 @@
|
||||
<string name="Reply">Antworten</string>
|
||||
<string name="ReplyToGroup">%1$s antworten</string>
|
||||
<string name="ReplyToUser">%1$s antworten</string>
|
||||
<string name="NotificationMessagesPeopleDisplayOrder">%1$s %2$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Keine Benutzer.</string>
|
||||
<string name="TodayAt">um</string>
|
||||
<string name="YesterdayAt">gestern um</string>
|
||||
<string name="LastSeen">zul. online</string>
|
||||
<string name="LastSeenDate">zul. online</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Sende Nachricht an …</string>
|
||||
<string name="EnterGroupNamePlaceholder">Gruppenname</string>
|
||||
@@ -308,14 +304,11 @@
|
||||
<string name="ShareYouLocationUnableManually">Selbst wählen</string>
|
||||
<string name="AreYouSureBlockContact">Diesen Benutzer wirklich blockieren?</string>
|
||||
<string name="AreYouSureDeleteContact">Diesen Benutzer wirklich löschen?</string>
|
||||
<string name="AreYouSureDeleteMessages">%1$s löschen? Die Nachrichten werden auch auf dem Server gelöscht.</string>
|
||||
<string name="RaiseToSpeakAlert">Möchtest du \"Zum Sprechen ans Ohr\" für Sprachnachrichten aktivieren?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Für eine einfache Kontaktaufnahme, benötigt Delta Chat Zugriff auf die Kontakte. Die Daten werden dabei nur lokal verarbeitet und zu keinem Server oder Dienst übertragen.</string>
|
||||
<string name="PermissionStorage">Um Bilder, Videos, Musik und Dateien senden und speichern zu können, benötigt Delta Chat Zugriff auf den Speicher.</string>
|
||||
<string name="PermissionNoAudio">Um Sprachnachrichten versenden zu können, benötigt Delta Chat Zugriff auf das Mikrofon.</string>
|
||||
<string name="PermissionNoLocation">Delta Chat benötigt Zugriff auf deinen Standort, damit du ihn mit Freunden teilen kannst. </string>
|
||||
<string name="PermissionNoLocationPosition">Delta Chat benötigt Zugriff auf deinen Standort.</string>
|
||||
<string name="PermissionOpenSettings">Einstellungen</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
@@ -341,128 +334,69 @@
|
||||
|
||||
<string name="IntroStartMessaging">Jetzt beginnen</string>
|
||||
<!--plural-->
|
||||
<string name="Members_zero">%1$d Mitglieder</string>
|
||||
<string name="Members_one">%1$d Mitglied</string>
|
||||
<string name="Members_two">%1$d Mitglieder</string>
|
||||
<string name="Members_few">%1$d Mitglieder</string>
|
||||
<string name="Members_many">%1$d Mitglieder</string>
|
||||
<string name="Members_other">%1$d Mitglieder</string>
|
||||
<string name="NewMessages_zero">keine neuen Nachrichten</string>
|
||||
<string name="NewMessages_one">%1$d neue Nachricht</string>
|
||||
<string name="NewMessages_two">%1$d neue Nachrichten</string>
|
||||
<string name="NewMessages_few">%1$d neue Nachrichten</string>
|
||||
<string name="NewMessages_many">%1$d neue Nachrichten</string>
|
||||
<string name="NewMessages_other">%1$d neue Nachrichten</string>
|
||||
<string name="messages_zero">keine Nachrichten</string>
|
||||
<string name="messages_one">%1$d Nachricht</string>
|
||||
<string name="messages_two">%1$d Nachrichten</string>
|
||||
<string name="messages_few">%1$d Nachrichten</string>
|
||||
<string name="messages_many">%1$d Nachrichten</string>
|
||||
<string name="messages_other">%1$d Nachrichten</string>
|
||||
<string name="items_zero">keine Objekte</string>
|
||||
<string name="items_one">%1$d Objekt</string>
|
||||
<string name="items_two">%1$d Objekte</string>
|
||||
<string name="items_few">%1$d Objekte</string>
|
||||
<string name="items_many">%1$d Objekte</string>
|
||||
<string name="items_other">%1$d Objekte</string>
|
||||
<string name="FromChats_zero">in keinen Chats</string>
|
||||
<string name="FromChats_one">in %1$d Chat</string>
|
||||
<string name="FromChats_two">in %1$d Chats</string>
|
||||
<string name="FromChats_few">in %1$d Chats</string>
|
||||
<string name="FromChats_many">in %1$d Chats</string>
|
||||
<string name="FromChats_other">in %1$d Chats</string>
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d Mitglied</item>
|
||||
<item quantity="other">%d Mitglieder</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%d Kontakt</item>
|
||||
<item quantity="other">%d Kontakte</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Ich und %d Mitglied</item>
|
||||
<item quantity="other">Ich und %d Mitglieder</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d neue Nachricht</item>
|
||||
<item quantity="other">%d neue Nachrichten</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d Nachricht</item>
|
||||
<item quantity="other">%d Nachrichten</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">%d Nachricht löschen? Die Nachricht wird auch auf dem Server gelöscht.</item>
|
||||
<item quantity="other">%d Nachrichten löschen? Die Nachrichten werden auch auf dem Server gelöscht.</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessagesInChats">
|
||||
<!-- Translators: the first string placeholder "%s" gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<item quantity="one">%1$s in %2$d Chat</item>
|
||||
<item quantity="other">%1$s in %2$d Chats</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d Chat</item>
|
||||
<item quantity="other">%d Chats</item>
|
||||
</plurals>
|
||||
|
||||
<string name="Chats_zero">Keine Chats</string>
|
||||
<string name="Chats_one">%1$d Chat</string>
|
||||
<string name="Chats_two">%1$d Chats</string>
|
||||
<string name="Chats_few">%1$d Chats</string>
|
||||
<string name="Chats_many">%1$d Chats</string>
|
||||
<string name="Chats_other">%1$d Chats</string>
|
||||
|
||||
<string name="Seconds_zero">%1$d Sekunden</string>
|
||||
<string name="Seconds_one">%1$d Sekunde</string>
|
||||
<string name="Seconds_two">%1$d Sekunden</string>
|
||||
<string name="Seconds_few">%1$d Sekunden</string>
|
||||
<string name="Seconds_many">%1$d Sekunden</string>
|
||||
<string name="Seconds_other">%1$d Sekunden</string>
|
||||
<string name="Minutes_zero">%1$d Minuten</string>
|
||||
<string name="Minutes_one">%1$d Minute</string>
|
||||
<string name="Minutes_two">%1$d Minuten</string>
|
||||
<string name="Minutes_few">%1$d Minuten</string>
|
||||
<string name="Minutes_many">%1$d Minuten</string>
|
||||
<string name="Minutes_other">%1$d Minuten</string>
|
||||
<string name="Hours_zero">%1$d Stunden</string>
|
||||
<string name="Hours_one">%1$d Stunde</string>
|
||||
<string name="Hours_two">%1$d Stunden</string>
|
||||
<string name="Hours_few">%1$d Stunden</string>
|
||||
<string name="Hours_many">%1$d Stunden</string>
|
||||
<string name="Hours_other">%1$d Stunden</string>
|
||||
<string name="Days_zero">%1$d Tage</string>
|
||||
<string name="Days_one">%1$d Tag</string>
|
||||
<string name="Days_two">%1$d Tage</string>
|
||||
<string name="Days_few">%1$d Tage</string>
|
||||
<string name="Days_many">%1$d Tage</string>
|
||||
<string name="Days_other">%1$d Tage</string>
|
||||
<string name="Weeks_zero">%1$d Wochen</string>
|
||||
<string name="Weeks_one">%1$d Woche</string>
|
||||
<string name="Weeks_two">%1$d Wochen</string>
|
||||
<string name="Weeks_few">%1$d Wochen</string>
|
||||
<string name="Weeks_many">%1$d Wochen</string>
|
||||
<string name="Weeks_other">%1$d Wochen</string>
|
||||
<string name="Months_zero">%1$d Monate</string>
|
||||
<string name="Months_one">%1$d Monat</string>
|
||||
<string name="Months_two">%1$d Monate</string>
|
||||
<string name="Months_few">%1$d Monate</string>
|
||||
<string name="Months_many">%1$d Monate</string>
|
||||
<string name="Months_other">%1$d Monate</string>
|
||||
<string name="Years_zero">%1$d Jahre</string>
|
||||
<string name="Years_one">%1$d Jahr</string>
|
||||
<string name="Years_two">%1$d Jahre</string>
|
||||
<string name="Years_few">%1$d Jahre</string>
|
||||
<string name="Years_many">%1$d Jahre</string>
|
||||
<string name="Years_other">%1$d Jahre</string>
|
||||
<string name="Users_zero">%1$d Nutzer</string>
|
||||
<string name="Users_one">%1$d Nutzer</string>
|
||||
<string name="Users_two">%1$d Nutzer</string>
|
||||
<string name="Users_few">%1$d Nutzer</string>
|
||||
<string name="Users_many">%1$d Nutzer</string>
|
||||
<string name="Users_other">%1$d Nutzer</string>
|
||||
<string name="Times_zero">%1$d Mal</string>
|
||||
<string name="Times_one">%1$d Mal</string>
|
||||
<string name="Times_two">%1$d Mal</string>
|
||||
<string name="Times_few">%1$d Mal</string>
|
||||
<string name="Times_many">%1$d Mal</string>
|
||||
<string name="Times_other">%1$d Mal</string>
|
||||
<string name="Meters_zero">%1$d Meter</string>
|
||||
<string name="Meters_one">%1$d Meter</string>
|
||||
<string name="Meters_two">%1$d Meter</string>
|
||||
<string name="Meters_few">%1$d Meter</string>
|
||||
<string name="Meters_many">%1$d Meter</string>
|
||||
<string name="Meters_other">%1$d Meter</string>
|
||||
<string name="Stickers_zero">%1$d Sticker</string>
|
||||
<string name="Stickers_one">%1$d Sticker</string>
|
||||
<string name="Stickers_two">%1$d Sticker</string>
|
||||
<string name="Stickers_few">%1$d Sticker</string>
|
||||
<string name="Stickers_many">%1$d Sticker</string>
|
||||
<string name="Stickers_other">%1$d Sticker</string>
|
||||
<string name="Photos_zero">%1$d Bilder</string>
|
||||
<string name="Photos_one">%1$d Bild</string>
|
||||
<string name="Photos_two">%1$d Bilder</string>
|
||||
<string name="Photos_few">%1$d Bilder</string>
|
||||
<string name="Photos_many">%1$d Bilder</string>
|
||||
<string name="Photos_other">%1$d Bilder</string>
|
||||
<string name="LastSeenMinutes_zero">zul. online vor %1$d Minuten</string>
|
||||
<string name="LastSeenMinutes_one">zul. online vor %1$d Minute</string>
|
||||
<string name="LastSeenMinutes_two">zul. online vor %1$d Minuten</string>
|
||||
<string name="LastSeenMinutes_few">zul. online vor %1$d Minuten</string>
|
||||
<string name="LastSeenMinutes_many">zul. online vor %1$d Minuten</string>
|
||||
<string name="LastSeenMinutes_other">zul. online vor %1$d Minuten</string>
|
||||
<string name="LastSeenHours_zero">zul. online vor %1$d Stunden</string>
|
||||
<string name="LastSeenHours_one">zul. online vor %1$d Stunde</string>
|
||||
<string name="LastSeenHours_two">zul. online vor %1$d Stunden</string>
|
||||
<string name="LastSeenHours_few">zul. online vor %1$d Stunden</string>
|
||||
<string name="LastSeenHours_many">zul. online vor %1$d Stunden</string>
|
||||
<string name="LastSeenHours_other">zul. online vor %1$d Stunden</string>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d Minute</item>
|
||||
<item quantity="other">%d Minuten</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d Stunde</item>
|
||||
<item quantity="other">%d Stunden</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d Tag</item>
|
||||
<item quantity="other">%d Tage</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d Woche</item>
|
||||
<item quantity="other">%d Wochen</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d Monat</item>
|
||||
<item quantity="other">%d Monate</item>
|
||||
</plurals>
|
||||
<plurals name="MaxNotifications">
|
||||
<!-- Translators: the second string placeholder "%s" gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<item quantity="one">Höchstens %1$d Benachrichtigung in %2$s</item>
|
||||
<item quantity="other">Höchstens %1$d Benachrichtigungen in %2$s</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">d. MMM</string>
|
||||
@@ -499,10 +433,6 @@
|
||||
<string name="AboutThisProgram">Über Delta Chat</string>
|
||||
<string name="NotSet">Nicht gesetzt</string>
|
||||
<string name="NewChat">Neuer Chat</string>
|
||||
<string name="ContactPl">## Kontakte</string>
|
||||
<string name="ContactSg">## Kontakt</string>
|
||||
<string name="MemberSg">## Mitglied</string>
|
||||
<string name="MemberPl">## Mitglieder</string>
|
||||
<string name="Deaddrop">Briefkasten</string>
|
||||
<string name="Media">Medien</string>
|
||||
<string name="DeaddropInChatlist">Briefkasten in Chatliste</string>
|
||||
@@ -515,7 +445,6 @@
|
||||
<string name="SeachUser">Benutzer suchen</string>
|
||||
<string name="Name">Name</string>
|
||||
<string name="EmailAddress">E-Mail-Adresse</string>
|
||||
<string name="MeAnd">Ich und</string>
|
||||
<string name="CannotDeleteContact">Der Benutzer kann nicht gelöscht werden, da er verwendet wird; er kann aber blockiert werden.</string>
|
||||
<string name="BadEmailAddress">Ungültige E-Mail-Adresse.</string>
|
||||
<string name="ContactDeleted">Benutzer gelöscht.</string>
|
||||
@@ -532,12 +461,12 @@
|
||||
<string name="AskResetNotifications">Alle Benachrichtigungseinstellungen und Töne dieser Seite und auch der einzelnen Chats zurücksetzen?</string>
|
||||
<string name="AttachFiles">Dateien anhängen</string>
|
||||
<string name="ErrGroupNameEmpty">Bitte einen Namen für die Gruppe eingeben.</string>
|
||||
<string name="MsgNewGroupDraft">Hallo, ich habe die Gruppe \"##\" für uns erstellt.</string>
|
||||
<string name="MsgNewGroupDraft">Hallo, ich habe die Gruppe \"%1$s\" für uns erstellt.</string>
|
||||
<string name="MsgNewGroupDraftHint">Eine erste Nachricht schreiben; dann können die anderen in der Gruppe antworten.\n\n• Gruppenmitglieder müssen hierzu Delta Chat nicht installiert haben.\n\n• Die Zustellung der ersten Nachricht kann einen Moment dauern.</string>
|
||||
<string name="MsgGroupImageChanged">Gruppenbild geändert.</string>
|
||||
<string name="MsgGroupNameChanged">Gruppenname von \"##\" in \"##\" geändert.</string>
|
||||
<string name="MsgMemberAddedToGroup">## zur Gruppe hinzugefügt.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">## aus Gruppe entfernt.</string>
|
||||
<string name="MsgGroupNameChanged">Gruppenname von \"%1$s\" in \"%2$s\" geändert.</string>
|
||||
<string name="MsgMemberAddedToGroup">%1$s zur Gruppe hinzugefügt.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">%1$s aus Gruppe entfernt.</string>
|
||||
<string name="AskAddMemberToGroup">Benutzer <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> zur Gruppe hinzufügen?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Benutzer <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> aus Gruppe entfernen?</string>
|
||||
<string name="ErrSelfNotInGroup">Sie müssen ein Gruppenmitglied sein, um diese Aktion ausführen zu können.</string>
|
||||
|
||||
@@ -20,9 +20,7 @@
|
||||
<string name="SelectChat">Elige el chat …</string>
|
||||
<string name="Search">Buscar</string>
|
||||
<string name="MuteNotifications">Silenciar notificaciones</string>
|
||||
<string name="MuteFor">Silenciar %1$s</string>
|
||||
<string name="UnmuteNotifications">No silenciar</string>
|
||||
<string name="WillUnmuteIn">En %1$s</string>
|
||||
<string name="Draft">Borrador</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Por favor, añade archivos a la carpeta de música en tu dispositivo para verlos aquí.</string>
|
||||
@@ -64,8 +62,6 @@
|
||||
<string name="OpenInBrowser">ABRIR EN…</string>
|
||||
<string name="SendItems">Enviar %1$s</string>
|
||||
<string name="OpenUrlAlert">¿Abrir %1$s?</string>
|
||||
<string name="MoreInfo">Más información</string>
|
||||
<string name="ShareSendTo">Enviar a…</string>
|
||||
<string name="ClearRecentEmoji">¿Borrar los emojis recientes?</string>
|
||||
<string name="AddShortcut">Añadir acceso directo</string>
|
||||
<string name="ShortcutAdded">Acceso directo añadido al escritorio</string>
|
||||
@@ -73,13 +69,10 @@
|
||||
<string name="Reply">Responder</string>
|
||||
<string name="ReplyToGroup">Responder a %1$s</string>
|
||||
<string name="ReplyToUser">Responder a %1$s</string>
|
||||
<string name="NotificationMessagesPeopleDisplayOrder">%1$s %2$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Aún sin contactos</string>
|
||||
<string name="TodayAt">a las</string>
|
||||
<string name="YesterdayAt">ayer a las</string>
|
||||
<string name="LastSeen">últ. vez</string>
|
||||
<string name="LastSeenDate">últ. vez el</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Invitar a…</string>
|
||||
<string name="EnterGroupNamePlaceholder">Nombre del grupo</string>
|
||||
@@ -308,132 +301,47 @@
|
||||
<string name="ShareYouLocationUnableManually">Elegir manualmente</string>
|
||||
<string name="AreYouSureBlockContact">¿Quieres bloquear este contacto?</string>
|
||||
<string name="AreYouSureDeleteContact">¿Quieres eliminar este contacto?</string>
|
||||
<string name="AreYouSureDeleteMessages">¿Quieres eliminar %1$s?</string>
|
||||
<string name="RaiseToSpeakAlert">¿Quieres habilitar “Elevar para hablar” para mensajes de voz?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat necesita el acceso a tus contactos, para que puedas comunicarte con ellos en todos tus dispositivos.</string>
|
||||
<string name="PermissionStorage">Delta Chat necesita acceso a tu almacenamiento, para que puedas enviar y guardar fotos, vídeos, música y otros archivos.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat necesita acceso a tu micrófono, para que puedas enviar mensajes de voz.</string>
|
||||
<string name="PermissionNoLocation">Delta Chat necesita acceso a tu ubicación, para que puedas compartirla con tus amigos.</string>
|
||||
<string name="PermissionNoLocationPosition">Delta Chat necesita acceso a tu ubicación.</string>
|
||||
<string name="PermissionOpenSettings">Ajustes</string>
|
||||
<!--Intro view-->
|
||||
<string name="IntroStartMessaging">Empieza a conversar</string>
|
||||
<!--plural-->
|
||||
<string name="Members_zero">%1$d miembros</string>
|
||||
<string name="Members_one">%1$d miembro</string>
|
||||
<string name="Members_two">%1$d miembros</string>
|
||||
<string name="Members_few">%1$d miembros</string>
|
||||
<string name="Members_many">%1$d miembros</string>
|
||||
<string name="Members_other">%1$d miembros</string>
|
||||
<string name="NewMessages_zero">Sin mensajes nuevos</string>
|
||||
<string name="NewMessages_one">%1$d nuevo mensaje</string>
|
||||
<string name="NewMessages_two">%1$d nuevos mensajes</string>
|
||||
<string name="NewMessages_few">%1$d nuevos mensajes</string>
|
||||
<string name="NewMessages_many">%1$d nuevos mensajes</string>
|
||||
<string name="NewMessages_other">%1$d nuevos mensajes</string>
|
||||
<string name="messages_zero">Sin mensajes</string>
|
||||
<string name="messages_one">%1$d mensaje</string>
|
||||
<string name="messages_two">%1$d mensajes</string>
|
||||
<string name="messages_few">%1$d mensajes</string>
|
||||
<string name="messages_many">%1$d mensajes</string>
|
||||
<string name="messages_other">%1$d mensajes</string>
|
||||
<string name="items_zero">Sin ítems</string>
|
||||
<string name="items_one">%1$d ítem</string>
|
||||
<string name="items_two">%1$d ítems</string>
|
||||
<string name="items_few">%1$d ítems</string>
|
||||
<string name="items_many">%1$d ítems</string>
|
||||
<string name="items_other">%1$d ítems</string>
|
||||
<string name="FromChats_zero">desde ningún chat</string>
|
||||
<string name="FromChats_one">desde %1$d chat</string>
|
||||
<string name="FromChats_two">desde %1$d chats</string>
|
||||
<string name="FromChats_few">desde %1$d chats</string>
|
||||
<string name="FromChats_many">desde %1$d chats</string>
|
||||
<string name="FromChats_other">desde %1$d chats</string>
|
||||
<string name="Seconds_zero">%1$d segundos</string>
|
||||
<string name="Seconds_one">%1$d segundo</string>
|
||||
<string name="Seconds_two">%1$d segundos</string>
|
||||
<string name="Seconds_few">%1$d segundos</string>
|
||||
<string name="Seconds_many">%1$d segundos</string>
|
||||
<string name="Seconds_other">%1$d segundos</string>
|
||||
<string name="Minutes_zero">%1$d minutos</string>
|
||||
<string name="Minutes_one">%1$d minuto</string>
|
||||
<string name="Minutes_two">%1$d minutos</string>
|
||||
<string name="Minutes_few">%1$d minutos</string>
|
||||
<string name="Minutes_many">%1$d minutos</string>
|
||||
<string name="Minutes_other">%1$d minutos</string>
|
||||
<string name="Hours_zero">%1$d horas</string>
|
||||
<string name="Hours_one">%1$d hora</string>
|
||||
<string name="Hours_two">%1$d horas</string>
|
||||
<string name="Hours_few">%1$d horas</string>
|
||||
<string name="Hours_many">%1$d horas</string>
|
||||
<string name="Hours_other">%1$d horas</string>
|
||||
<string name="Days_zero">%1$d días</string>
|
||||
<string name="Days_one">%1$d día</string>
|
||||
<string name="Days_two">%1$d días</string>
|
||||
<string name="Days_few">%1$d días</string>
|
||||
<string name="Days_many">%1$d días</string>
|
||||
<string name="Days_other">%1$d días</string>
|
||||
<string name="Weeks_zero">%1$d semanas</string>
|
||||
<string name="Weeks_one">%1$d semana</string>
|
||||
<string name="Weeks_two">%1$d semanas</string>
|
||||
<string name="Weeks_few">%1$d semanas</string>
|
||||
<string name="Weeks_many">%1$d semanas</string>
|
||||
<string name="Weeks_other">%1$d semanas</string>
|
||||
<string name="Months_zero">%1$d meses</string>
|
||||
<string name="Months_one">%1$d mes</string>
|
||||
<string name="Months_two">%1$d meses</string>
|
||||
<string name="Months_few">%1$d meses</string>
|
||||
<string name="Months_many">%1$d meses</string>
|
||||
<string name="Months_other">%1$d meses</string>
|
||||
<string name="Years_zero">%1$d años</string>
|
||||
<string name="Years_one">%1$d año</string>
|
||||
<string name="Years_two">%1$d años</string>
|
||||
<string name="Years_few">%1$d años</string>
|
||||
<string name="Years_many">%1$d años</string>
|
||||
<string name="Years_other">%1$d años</string>
|
||||
<string name="Users_zero">%1$d usuarios</string>
|
||||
<string name="Users_one">%1$d usuario</string>
|
||||
<string name="Users_two">%1$d usuarios</string>
|
||||
<string name="Users_few">%1$d usuarios</string>
|
||||
<string name="Users_many">%1$d usuarios</string>
|
||||
<string name="Users_other">%1$d usuarios</string>
|
||||
<string name="Times_zero">%1$d veces</string>
|
||||
<string name="Times_one">%1$d vez</string>
|
||||
<string name="Times_two">%1$d veces</string>
|
||||
<string name="Times_few">%1$d veces</string>
|
||||
<string name="Times_many">%1$d veces</string>
|
||||
<string name="Times_other">%1$d veces</string>
|
||||
<string name="Meters_zero">%1$d metros</string>
|
||||
<string name="Meters_one">%1$d metro</string>
|
||||
<string name="Meters_two">%1$d metros</string>
|
||||
<string name="Meters_few">%1$d metros</string>
|
||||
<string name="Meters_many">%1$d metros</string>
|
||||
<string name="Meters_other">%1$d metros</string>
|
||||
<string name="Stickers_zero">%1$d stickers</string>
|
||||
<string name="Stickers_one">%1$d sticker</string>
|
||||
<string name="Stickers_two">%1$d stickers</string>
|
||||
<string name="Stickers_few">%1$d stickers</string>
|
||||
<string name="Stickers_many">%1$d stickers</string>
|
||||
<string name="Stickers_other">%1$d stickers</string>
|
||||
<string name="Photos_zero">%1$d fotos</string>
|
||||
<string name="Photos_one">%1$d foto</string>
|
||||
<string name="Photos_two">%1$d fotos</string>
|
||||
<string name="Photos_few">%1$d fotos</string>
|
||||
<string name="Photos_many">%1$d fotos</string>
|
||||
<string name="Photos_other">%1$d fotos</string>
|
||||
<string name="LastSeenMinutes_zero">últ. vez hace %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_one">últ. vez hace %1$d minuto</string>
|
||||
<string name="LastSeenMinutes_two">últ. vez hace %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_few">últ. vez hace %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_many">últ. vez hace %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_other">últ. vez hace %1$d minutos</string>
|
||||
<string name="LastSeenHours_zero">últ. vez hace %1$d horas</string>
|
||||
<string name="LastSeenHours_one">últ. vez hace %1$d hora</string>
|
||||
<string name="LastSeenHours_two">últ. vez hace %1$d horas</string>
|
||||
<string name="LastSeenHours_few">últ. vez hace %1$d horas</string>
|
||||
<string name="LastSeenHours_many">últ. vez hace %1$d horas</string>
|
||||
<string name="LastSeenHours_other">últ. vez hace %1$d horas</string>
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d miembro</item>
|
||||
<item quantity="other">%d miembros</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nuevo mensaje</item>
|
||||
<item quantity="other">%d nuevos mensajes</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d mensaje</item>
|
||||
<item quantity="other">%d mensajes</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minuto</item>
|
||||
<item quantity="other">%d minutos</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d hora</item>
|
||||
<item quantity="other">%d horas</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d día</item>
|
||||
<item quantity="other">%d días</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d semana</item>
|
||||
<item quantity="other">%d semanas</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d mes</item>
|
||||
<item quantity="other">%d meses</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM \'de\' yyyy</string>
|
||||
<string name="formatterMonth">dd \'de\' MMM</string>
|
||||
|
||||
@@ -18,9 +18,7 @@
|
||||
<string name="SelectChat">Selectionner la conversation…</string>
|
||||
<string name="Search">Rechercher</string>
|
||||
<string name="MuteNotifications">Désactiver les notifications</string>
|
||||
<string name="MuteFor">Silence pour %1$s</string>
|
||||
<string name="UnmuteNotifications">Activer les notifications</string>
|
||||
<string name="WillUnmuteIn">Dans %1$s</string>
|
||||
<string name="Draft">Brouillons</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Veuillez ajouter des fichiers dans votre bibliotèque musicale pour les voir ici.</string>
|
||||
@@ -62,8 +60,6 @@
|
||||
<string name="OpenInBrowser">OUVRIR DANS…</string>
|
||||
<string name="SendItems">Envoyer %1$s</string>
|
||||
<string name="OpenUrlAlert">Ouvrir URL %1$s ?</string>
|
||||
<string name="MoreInfo">Plus d\'info</string>
|
||||
<string name="ShareSendTo">Envoyer à…</string>
|
||||
<string name="ClearRecentEmoji">Vider les emokis récent ?</string>
|
||||
<string name="AddShortcut">Ajouter le widget à l\'écran d\'accueil</string>
|
||||
<string name="ShortcutAdded">Widget ajouté à l\'écran d\'accueil</string>
|
||||
@@ -71,13 +67,10 @@
|
||||
<string name="Reply">Répondre</string>
|
||||
<string name="ReplyToGroup">Répondre à %1$s</string>
|
||||
<string name="ReplyToUser">Répondre à %1$s</string>
|
||||
<string name="NotificationMessagesPeopleDisplayOrder">%1$s %2$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Aucun utilisateur pour le moment.</string>
|
||||
<string name="TodayAt">à</string>
|
||||
<string name="YesterdayAt">hier à</string>
|
||||
<string name="LastSeen">vu(e) à</string>
|
||||
<string name="LastSeenDate">vu(e) le</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Envoyer un message à…</string>
|
||||
<string name="EnterGroupNamePlaceholder">Saisissez le nom du groupe</string>
|
||||
@@ -306,14 +299,11 @@
|
||||
<string name="ShareYouLocationUnableManually">Choisir manuellement</string>
|
||||
<string name="AreYouSureBlockContact">Êtes-vous sûr de vouloir bloquer cet utilisateur ?</string>
|
||||
<string name="AreYouSureDeleteContact">Êtes-vous sûr de vouloir supprimer cet utilisateur ?</string>
|
||||
<string name="AreYouSureDeleteMessages">Supprimer %1$s ? Les messages seront aussi supprimés du serveur.</string>
|
||||
<string name="RaiseToSpeakAlert">Voulez-vous activer le "Soulever pour parler" pour les messages vocaux ?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat a besoin d\'accéder aux contacts de façon à pouvoir vous connecter avec vos amis avec tous vos appareils.</string>
|
||||
<string name="PermissionStorage">Delta Chat a besoin d\'accéder au stockage pour envoyer vos photos, vidéos, musiques et autres médias.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat a besoin d\'accéder à votre microphone pour envoyer des messages vocaux.</string>
|
||||
<string name="PermissionNoLocation">Delta Chat a besoin d\'accéder à votre localisation pour le partager avec vos amis.</string>
|
||||
<string name="PermissionNoLocationPosition">Delta Chat a besoin d\'accéder à votre localisation.</string>
|
||||
<string name="PermissionOpenSettings">Paramètres</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
@@ -338,128 +328,52 @@
|
||||
|
||||
<string name="IntroStartMessaging">Commencez à converser</string>
|
||||
<!--plural-->
|
||||
<string name="Members_zero">%1$d membre</string>
|
||||
<string name="Members_one">%1$d membre</string>
|
||||
<string name="Members_two">%1$d membres</string>
|
||||
<string name="Members_few">%1$d membres</string>
|
||||
<string name="Members_many">%1$d membres</string>
|
||||
<string name="Members_other">%1$d membres</string>
|
||||
<string name="NewMessages_zero">aucun nouveau message</string>
|
||||
<string name="NewMessages_one">%1$d nouveau message</string>
|
||||
<string name="NewMessages_two">%1$d nouveaux messages</string>
|
||||
<string name="NewMessages_few">%1$d nouveaux messages</string>
|
||||
<string name="NewMessages_many">%1$d nouveaux messages</string>
|
||||
<string name="NewMessages_other">%1$d nouveau messages</string>
|
||||
<string name="messages_zero">aucun message</string>
|
||||
<string name="messages_one">%1$d message</string>
|
||||
<string name="messages_two">%1$d messages</string>
|
||||
<string name="messages_few">%1$d messages</string>
|
||||
<string name="messages_many">%1$d messages</string>
|
||||
<string name="messages_other">%1$d messages</string>
|
||||
<string name="items_zero">aucun élément</string>
|
||||
<string name="items_one">%1$d élément</string>
|
||||
<string name="items_two">%1$d éléments</string>
|
||||
<string name="items_few">%1$d éléments</string>
|
||||
<string name="items_many">%1$d éléments</string>
|
||||
<string name="items_other">%1$d éléments</string>
|
||||
<string name="FromChats_zero">d\'aucune conversation</string>
|
||||
<string name="FromChats_one">de %1$d conversation</string>
|
||||
<string name="FromChats_two">de %1$d conversations</string>
|
||||
<string name="FromChats_few">de %1$d conversations</string>
|
||||
<string name="FromChats_many">de %1$d conversations</string>
|
||||
<string name="FromChats_other">de %1$d conversations</string>
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d membre</item>
|
||||
<item quantity="other">%d membres</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%d contact</item>
|
||||
<item quantity="other">%d contacts</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Moi et %d membre</item>
|
||||
<item quantity="other">Moi et %d membres</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nouveau message</item>
|
||||
<item quantity="other">%d nouveaux messages</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d message</item>
|
||||
<item quantity="other">%d messages</item>
|
||||
</plurals>
|
||||
|
||||
<string name="Chats_zero">Aucune conversation</string>
|
||||
<string name="Chats_one">%1$d conversation</string>
|
||||
<string name="Chats_two">%1$d conversations</string>
|
||||
<string name="Chats_few">%1$d conversations</string>
|
||||
<string name="Chats_many">%1$d conversations</string>
|
||||
<string name="Chats_other">%1$d conversations</string>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d conversation</item>
|
||||
<item quantity="other">%d conversations</item>
|
||||
</plurals>
|
||||
|
||||
<string name="Seconds_zero">%1$d seconde</string>
|
||||
<string name="Seconds_one">%1$d seconde</string>
|
||||
<string name="Seconds_two">%1$d secondes</string>
|
||||
<string name="Seconds_few">%1$d secondes</string>
|
||||
<string name="Seconds_many">%1$d secondes</string>
|
||||
<string name="Seconds_other">%1$d secondes</string>
|
||||
<string name="Minutes_zero">%1$d minute</string>
|
||||
<string name="Minutes_one">%1$d minute</string>
|
||||
<string name="Minutes_two">%1$d minutes</string>
|
||||
<string name="Minutes_few">%1$d minutes</string>
|
||||
<string name="Minutes_many">%1$d minutes</string>
|
||||
<string name="Minutes_other">%1$d minutes</string>
|
||||
<string name="Hours_zero">%1$d heure</string>
|
||||
<string name="Hours_one">%1$d heure</string>
|
||||
<string name="Hours_two">%1$d heures</string>
|
||||
<string name="Hours_few">%1$d heures</string>
|
||||
<string name="Hours_many">%1$d heures</string>
|
||||
<string name="Hours_other">%1$d heures</string>
|
||||
<string name="Days_zero">%1$d jour</string>
|
||||
<string name="Days_one">%1$d jour</string>
|
||||
<string name="Days_two">%1$d jours</string>
|
||||
<string name="Days_few">%1$d jours</string>
|
||||
<string name="Days_many">%1$d jours</string>
|
||||
<string name="Days_other">%1$d jours</string>
|
||||
<string name="Weeks_zero">%1$d semaine</string>
|
||||
<string name="Weeks_one">%1$d semaine</string>
|
||||
<string name="Weeks_two">%1$d semaines</string>
|
||||
<string name="Weeks_few">%1$d semaines</string>
|
||||
<string name="Weeks_many">%1$d semaines</string>
|
||||
<string name="Weeks_other">%1$d semaines</string>
|
||||
<string name="Months_zero">%1$d mois</string>
|
||||
<string name="Months_one">%1$d mois</string>
|
||||
<string name="Months_two">%1$d mois</string>
|
||||
<string name="Months_few">%1$d mois</string>
|
||||
<string name="Months_many">%1$d mois</string>
|
||||
<string name="Months_other">%1$d mois</string>
|
||||
<string name="Years_zero">%1$d année</string>
|
||||
<string name="Years_one">%1$d année</string>
|
||||
<string name="Years_two">%1$d années</string>
|
||||
<string name="Years_few">%1$d années</string>
|
||||
<string name="Years_many">%1$d années</string>
|
||||
<string name="Years_other">%1$d années</string>
|
||||
<string name="Users_zero">%1$d utilisateur</string>
|
||||
<string name="Users_one">%1$d utilisateur</string>
|
||||
<string name="Users_two">%1$d utilisateurs</string>
|
||||
<string name="Users_few">%1$d utilisateurs</string>
|
||||
<string name="Users_many">%1$d utilisateurs</string>
|
||||
<string name="Users_other">%1$d utilisateurs</string>
|
||||
<string name="Times_zero">%1$d fois</string>
|
||||
<string name="Times_one">%1$d fois</string>
|
||||
<string name="Times_two">%1$d fois</string>
|
||||
<string name="Times_few">%1$d fois</string>
|
||||
<string name="Times_many">%1$d fois</string>
|
||||
<string name="Times_other">%1$d fois</string>
|
||||
<string name="Meters_zero">%1$d metre</string>
|
||||
<string name="Meters_one">%1$d metre</string>
|
||||
<string name="Meters_two">%1$d metres</string>
|
||||
<string name="Meters_few">%1$d metres</string>
|
||||
<string name="Meters_many">%1$d metres</string>
|
||||
<string name="Meters_other">%1$d metres</string>
|
||||
<string name="Stickers_zero">%1$d autocollant</string>
|
||||
<string name="Stickers_one">%1$d autocollant</string>
|
||||
<string name="Stickers_two">%1$d autocollants</string>
|
||||
<string name="Stickers_few">%1$d autocollants</string>
|
||||
<string name="Stickers_many">%1$d autocollants</string>
|
||||
<string name="Stickers_other">%1$d autocollants</string>
|
||||
<string name="Photos_zero">%1$d photo</string>
|
||||
<string name="Photos_one">%1$d photo</string>
|
||||
<string name="Photos_two">%1$d photos</string>
|
||||
<string name="Photos_few">%1$d photos</string>
|
||||
<string name="Photos_many">%1$d photos</string>
|
||||
<string name="Photos_other">%1$d photos</string>
|
||||
<string name="LastSeenMinutes_zero">vu il y a %1$d minute</string>
|
||||
<string name="LastSeenMinutes_one">vu il y a %1$d minute</string>
|
||||
<string name="LastSeenMinutes_two">vu il y a %1$d minutes</string>
|
||||
<string name="LastSeenMinutes_few">vu il y a %1$d minutes</string>
|
||||
<string name="LastSeenMinutes_many">vu il y a %1$d minutes</string>
|
||||
<string name="LastSeenMinutes_other">vu il y a %1$d minutes</string>
|
||||
<string name="LastSeenHours_zero">vu il y a %1$d heure</string>
|
||||
<string name="LastSeenHours_one">vu il y a %1$d heure</string>
|
||||
<string name="LastSeenHours_two">vu il y a %1$d heures</string>
|
||||
<string name="LastSeenHours_few">vu il y a %1$d heures</string>
|
||||
<string name="LastSeenHours_many">vu il y a %1$d heures</string>
|
||||
<string name="LastSeenHours_other">vu il y a %1$d heures</string>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minute</item>
|
||||
<item quantity="other">%d minutes</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d heure</item>
|
||||
<item quantity="other">%d heures</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d jour</item>
|
||||
<item quantity="other">%d jours</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d semaine</item>
|
||||
<item quantity="other">%d semaines</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d mois</item>
|
||||
<item quantity="other">%d mois</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
@@ -496,10 +410,6 @@
|
||||
<string name="AboutThisProgram">À propos Delta Chat</string>
|
||||
<string name="NotSet">Non défini</string>
|
||||
<string name="NewChat">Nouvelle conversation</string>
|
||||
<string name="MemberSg">## membre</string>
|
||||
<string name="MemberPl">## membres</string>
|
||||
<string name="ContactSg">## contact</string>
|
||||
<string name="ContactPl">## contacts</string>
|
||||
<string name="Deaddrop">Boîte de reception</string>
|
||||
<string name="Media">Média</string>
|
||||
<string name="DeaddropInChatlist">Montrer la boîte de reception dans la liste des conversations</string>
|
||||
@@ -512,7 +422,6 @@
|
||||
<string name="SeachUser">Recherche un contact</string>
|
||||
<string name="Name" >Nom</string>
|
||||
<string name="EmailAddress">Adresse e-mail</string>
|
||||
<string name="MeAnd">Moi et</string>
|
||||
<string name="CannotDeleteContact">Impossible de supprimer les contacts en cours d\'utilisation, bloquez-les à la place.</string>
|
||||
<string name="BadEmailAddress">Mauvaise adresse e-mail.</string>
|
||||
<string name="ContactDeleted">Utilisateur supprimé.</string>
|
||||
@@ -532,11 +441,11 @@
|
||||
<string name="Chats">Conversations</string>
|
||||
<string name="ErrGroupNameEmpty">Merci de saisir un nom pour le groupe.</string>
|
||||
<string name="MsgNewGroupDraftHint">Écrivez un premier message pour permettre aux autres de répondre dans ce group.\n\n• C\'est bon si tout les membres n\'utilisent pas Delta Chat.\n\n• La livraison du premier message peut prendre un moment.</string>
|
||||
<string name="MsgNewGroupDraft">Bonjour, je viens juste de créer le groupe \"##\" pour nous.</string>
|
||||
<string name="MsgGroupNameChanged">Le nom du group a changé de \"##\" à \"##\".</string>
|
||||
<string name="MsgNewGroupDraft">Bonjour, je viens juste de créer le groupe \"%1$s\" pour nous.</string>
|
||||
<string name="MsgGroupNameChanged">Le nom du group a changé de \"%1$s\" à \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">L\'image du groupe a changé.</string>
|
||||
<string name="MsgMemberAddedToGroup">Le membre ## vient d\'être ajouté.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Le membre ## vient d\'être retiré.</string>
|
||||
<string name="MsgMemberAddedToGroup">Le membre %1$s vient d\'être ajouté.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Le membre %1$s vient d\'être retiré.</string>
|
||||
<string name="AskAddMemberToGroup">Voulez-vous ajouter <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> au groupe ?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Voulez-vous retirer <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> du groupe ?</string>
|
||||
<string name="ErrSelfNotInGroup">Vous devez être membre du groupe pour effectuer cette action.</string>
|
||||
|
||||
@@ -20,9 +20,7 @@
|
||||
<string name="SelectChat">Seleziona chat …</string>
|
||||
<string name="Search">Cerca</string>
|
||||
<string name="MuteNotifications">Silenzia notifiche</string>
|
||||
<string name="MuteFor">Silenzia per %1$s</string>
|
||||
<string name="UnmuteNotifications">Suona</string>
|
||||
<string name="WillUnmuteIn">Tra %1$s</string>
|
||||
<string name="Draft">Bozza</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Aggiungi file nella libreria musicale del tuo dispositivo per vederli qui.</string>
|
||||
@@ -64,8 +62,6 @@
|
||||
<string name="OpenInBrowser">APRI IN…</string>
|
||||
<string name="SendItems">Invia %1$s</string>
|
||||
<string name="OpenUrlAlert">Aprire url %1$s?</string>
|
||||
<string name="MoreInfo">Maggiori info</string>
|
||||
<string name="ShareSendTo">Invia a…</string>
|
||||
<string name="ClearRecentEmoji">Cancellare le emoji recenti?</string>
|
||||
<string name="AddShortcut">Aggiungi scorciatoia</string>
|
||||
<string name="ShortcutAdded">Scorciatoia aggiunta alla schermata home</string>
|
||||
@@ -73,13 +69,10 @@
|
||||
<string name="Reply">Rispondi</string>
|
||||
<string name="ReplyToGroup">Rispondi a %1$s</string>
|
||||
<string name="ReplyToUser">Rispondi a %1$s</string>
|
||||
<string name="NotificationMessagesPeopleDisplayOrder">%1$s %2$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Ancora nessun contatto</string>
|
||||
<string name="TodayAt">alle</string>
|
||||
<string name="YesterdayAt">ieri alle</string>
|
||||
<string name="LastSeen">ultimo accesso</string>
|
||||
<string name="LastSeenDate">ultimo accesso</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Invia messaggio a…</string>
|
||||
<string name="EnterGroupNamePlaceholder">Immetti il nome del gruppo</string>
|
||||
@@ -308,140 +301,53 @@
|
||||
<string name="ShareYouLocationUnableManually">Scegli manualmente</string>
|
||||
<string name="AreYouSureBlockContact">Vuoi bloccare questo contatto?</string>
|
||||
<string name="AreYouSureDeleteContact">Sei sicuro di voler eliminare questo contatto?</string>
|
||||
<string name="AreYouSureDeleteMessages">Sei sicuro di voler eliminare %1$s?</string>
|
||||
<string name="RaiseToSpeakAlert">Vuoi attivare \"Alza per parlare\" per i messaggi vocali?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat deve accedere ai tuoi contatti per poterti connettere con i tuoi amici su tutti i tuoi dispositivi.</string>
|
||||
<string name="PermissionStorage">Delta Chat deve accedere alla tua memoria per poter inviare e salvare foto,video, musica e altri media.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat deve accedere al microfono per poter inviare messaggi vocali.</string>
|
||||
<string name="PermissionNoLocation">Delta Chat deve accedere alla tua posizione per poterla condividere con i tuoi amici.</string>
|
||||
<string name="PermissionNoLocationPosition">Delta Chat deve accedere alla tua posizione.</string>
|
||||
<string name="PermissionOpenSettings">Impostazioni</string>
|
||||
<!--Intro view-->
|
||||
<string name="IntroStartMessaging">Inizia a chattare</string>
|
||||
<!--plural-->
|
||||
<string name="Members_zero">%1$d membri</string>
|
||||
<string name="Members_one">%1$d membro</string>
|
||||
<string name="Members_two">%1$d membri</string>
|
||||
<string name="Members_few">%1$d membri</string>
|
||||
<string name="Members_many">%1$d membri</string>
|
||||
<string name="Members_other">%1$d membri</string>
|
||||
<string name="NewMessages_zero">nessun nuovo messaggio</string>
|
||||
<string name="NewMessages_one">%1$d nuovo messaggio</string>
|
||||
<string name="NewMessages_two">%1$d nuovi messaggi</string>
|
||||
<string name="NewMessages_few">%1$d nuovi messaggi</string>
|
||||
<string name="NewMessages_many">%1$d nuovi messaggi</string>
|
||||
<string name="NewMessages_other">%1$d nuovi messaggi</string>
|
||||
<string name="messages_zero">nessun messaggio</string>
|
||||
<string name="messages_one">%1$d messaggio</string>
|
||||
<string name="messages_two">%1$d messaggi</string>
|
||||
<string name="messages_few">%1$d messaggi</string>
|
||||
<string name="messages_many">%1$d messaggi</string>
|
||||
<string name="messages_other">%1$d messaggi</string>
|
||||
<string name="items_zero">nessun oggetto</string>
|
||||
<string name="items_one">%1$d oggetto</string>
|
||||
<string name="items_two">%1$d oggetti</string>
|
||||
<string name="items_few">%1$d oggetti</string>
|
||||
<string name="items_many">%1$d oggetti</string>
|
||||
<string name="items_other">%1$d oggetti</string>
|
||||
<string name="FromChats_zero">da nessuna chat</string>
|
||||
<string name="FromChats_one">da %1$d chat</string>
|
||||
<string name="FromChats_two">da %1$d chat</string>
|
||||
<string name="FromChats_few">da %1$d chat</string>
|
||||
<string name="FromChats_many">da %1$d chat</string>
|
||||
<string name="FromChats_other">da %1$d chat</string>
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d membro</item>
|
||||
<item quantity="other">%d membri</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nuovo messaggio</item>
|
||||
<item quantity="other">%d nuovi messaggi</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d messaggio</item>
|
||||
<item quantity="other">%d messaggi</item>
|
||||
</plurals>
|
||||
|
||||
<string name="Chats_zero">Nessuna chat</string>
|
||||
<string name="Chats_one">%1$d chat</string>
|
||||
<string name="Chats_two">%1$d chat</string>
|
||||
<string name="Chats_few">%1$d chat</string>
|
||||
<string name="Chats_many">%1$d chat</string>
|
||||
<string name="Chats_other">%1$d chat</string>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d chat</item>
|
||||
<item quantity="other">%d chat</item>
|
||||
</plurals>
|
||||
|
||||
<string name="Seconds_zero">%1$d secondi</string>
|
||||
<string name="Seconds_one">%1$d secondo</string>
|
||||
<string name="Seconds_two">%1$d secondi</string>
|
||||
<string name="Seconds_few">%1$d secondi</string>
|
||||
<string name="Seconds_many">%1$d secondi</string>
|
||||
<string name="Seconds_other">%1$d secondi</string>
|
||||
<string name="Minutes_zero">%1$d minuti</string>
|
||||
<string name="Minutes_one">%1$d minuto</string>
|
||||
<string name="Minutes_two">%1$d minuti</string>
|
||||
<string name="Minutes_few">%1$d minuti</string>
|
||||
<string name="Minutes_many">%1$d minuti</string>
|
||||
<string name="Minutes_other">%1$d minuti</string>
|
||||
<string name="Hours_zero">%1$d ore</string>
|
||||
<string name="Hours_one">%1$d ora</string>
|
||||
<string name="Hours_two">%1$d ore</string>
|
||||
<string name="Hours_few">%1$d ore</string>
|
||||
<string name="Hours_many">%1$d ore</string>
|
||||
<string name="Hours_other">%1$d ore</string>
|
||||
<string name="Days_zero">%1$d giorni</string>
|
||||
<string name="Days_one">%1$d giorno</string>
|
||||
<string name="Days_two">%1$d giorni</string>
|
||||
<string name="Days_few">%1$d giorni</string>
|
||||
<string name="Days_many">%1$d giorni</string>
|
||||
<string name="Days_other">%1$d giorni</string>
|
||||
<string name="Weeks_zero">%1$d settimane</string>
|
||||
<string name="Weeks_one">%1$d settimana</string>
|
||||
<string name="Weeks_two">%1$d settimane</string>
|
||||
<string name="Weeks_few">%1$d settimane</string>
|
||||
<string name="Weeks_many">%1$d settimane</string>
|
||||
<string name="Weeks_other">%1$d settimane</string>
|
||||
<string name="Months_zero">%1$d mesi</string>
|
||||
<string name="Months_one">%1$d mese</string>
|
||||
<string name="Months_two">%1$d mesi</string>
|
||||
<string name="Months_few">%1$d mesi</string>
|
||||
<string name="Months_many">%1$d mesi</string>
|
||||
<string name="Months_other">%1$d mesi</string>
|
||||
<string name="Years_zero">%1$d anni</string>
|
||||
<string name="Years_one">%1$d anno</string>
|
||||
<string name="Years_two">%1$d anni</string>
|
||||
<string name="Years_few">%1$d anni</string>
|
||||
<string name="Years_many">%1$d ann</string>
|
||||
<string name="Years_other">%1$d anni</string>
|
||||
<string name="Users_zero">%1$d utenti</string>
|
||||
<string name="Users_one">%1$d utente</string>
|
||||
<string name="Users_two">%1$d utenti</string>
|
||||
<string name="Users_few">%1$d utenti</string>
|
||||
<string name="Users_many">%1$d utenti</string>
|
||||
<string name="Users_other">%1$d utenti</string>
|
||||
<string name="Times_zero">%1$d volte</string>
|
||||
<string name="Times_one">%1$d volta</string>
|
||||
<string name="Times_two">%1$d volte</string>
|
||||
<string name="Times_few">%1$d volte</string>
|
||||
<string name="Times_many">%1$d volte</string>
|
||||
<string name="Times_other">%1$d volte</string>
|
||||
<string name="Meters_zero">%1$d metri</string>
|
||||
<string name="Meters_one">%1$d metro</string>
|
||||
<string name="Meters_two">%1$d metri</string>
|
||||
<string name="Meters_few">%1$d metri</string>
|
||||
<string name="Meters_many">%1$d metri</string>
|
||||
<string name="Meters_other">%1$d metri</string>
|
||||
<string name="Stickers_zero">%1$d sticker</string>
|
||||
<string name="Stickers_one">%1$d sticker</string>
|
||||
<string name="Stickers_two">%1$d sticker</string>
|
||||
<string name="Stickers_few">%1$d sticker</string>
|
||||
<string name="Stickers_many">%1$d sticker</string>
|
||||
<string name="Stickers_other">%1$d sticker</string>
|
||||
<string name="Photos_zero">%1$d foto</string>
|
||||
<string name="Photos_one">%1$d foto</string>
|
||||
<string name="Photos_two">%1$d foto</string>
|
||||
<string name="Photos_few">%1$d foto</string>
|
||||
<string name="Photos_many">%1$d foto</string>
|
||||
<string name="Photos_other">%1$d foto</string>
|
||||
<string name="LastSeenMinutes_zero">ultimo accesso %1$d minuti fa</string>
|
||||
<string name="LastSeenMinutes_one">ultimo accesso %1$d minuto fa</string>
|
||||
<string name="LastSeenMinutes_two">ultimo accesso %1$d minuti fa</string>
|
||||
<string name="LastSeenMinutes_few">ultimo accesso %1$d minuti fa</string>
|
||||
<string name="LastSeenMinutes_many">ultimo accesso %1$d minuti fa</string>
|
||||
<string name="LastSeenMinutes_other">ultimo accesso %1$d minuti fa</string>
|
||||
<string name="LastSeenHours_zero">ultimo accesso %1$d ore fa</string>
|
||||
<string name="LastSeenHours_one">ultimo accesso %1$d ora fa</string>
|
||||
<string name="LastSeenHours_two">ultimo accesso %1$d ore fa</string>
|
||||
<string name="LastSeenHours_few">ultimo accesso %1$d ore fa</string>
|
||||
<string name="LastSeenHours_many">ultimo accesso %1$d ore fa</string>
|
||||
<string name="LastSeenHours_other">ultimo accesso %1$d ore fa</string>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minuto</item>
|
||||
<item quantity="other">%d minuti</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d ora</item>
|
||||
<item quantity="other">%d ore</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d giorno</item>
|
||||
<item quantity="other">%d giorni</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d settimana</item>
|
||||
<item quantity="other">%d settimane</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d mese</item>
|
||||
<item quantity="other">%d mesi</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
|
||||
@@ -20,9 +20,7 @@
|
||||
<string name="SelectChat">Kies een chat …</string>
|
||||
<string name="Search">Zoeken</string>
|
||||
<string name="MuteNotifications">Meldingen stil</string>
|
||||
<string name="MuteFor">%1$s stil</string>
|
||||
<string name="UnmuteNotifications">Stil uitschakelen</string>
|
||||
<string name="WillUnmuteIn">Over %1$s</string>
|
||||
<string name="Draft">Concept</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Voeg bestanden toe aan de muziekbibliotheek op je apparaat om ze hier te zien.</string>
|
||||
@@ -64,8 +62,6 @@
|
||||
<string name="OpenInBrowser">OPENEN IN…</string>
|
||||
<string name="SendItems">%1$s versturen</string>
|
||||
<string name="OpenUrlAlert">URL %1$s openen?</string>
|
||||
<string name="MoreInfo">Meer informatie</string>
|
||||
<string name="ShareSendTo">Versturen naar…</string>
|
||||
<string name="ClearRecentEmoji">Recente emoji\'s wissen?</string>
|
||||
<string name="AddShortcut">Snelkoppeling toevoegen</string>
|
||||
<string name="ShortcutAdded">Snelkoppeling aan startscherm toegevoegd</string>
|
||||
@@ -73,13 +69,10 @@
|
||||
<string name="Reply">Antwoord</string>
|
||||
<string name="ReplyToGroup">Antwoord op %1$s</string>
|
||||
<string name="ReplyToUser">Antwoord op %1$s</string>
|
||||
<string name="NotificationMessagesPeopleDisplayOrder">%1$s %2$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Nog geen contacten</string>
|
||||
<string name="TodayAt">om</string>
|
||||
<string name="YesterdayAt">gisteren om</string>
|
||||
<string name="LastSeen">gezien</string>
|
||||
<string name="LastSeenDate">gezien</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Bericht versturen naar</string>
|
||||
<string name="EnterGroupNamePlaceholder">Groepsnaam</string>
|
||||
@@ -308,132 +301,47 @@
|
||||
<string name="ShareYouLocationUnableManually">Handmatig kiezen</string>
|
||||
<string name="AreYouSureBlockContact">Weet je zeker dat je deze persoon wilt blokkeren?</string>
|
||||
<string name="AreYouSureDeleteContact">Contact echt verwijderen?</string>
|
||||
<string name="AreYouSureDeleteMessages">%1$s echt verwijderen?</string>
|
||||
<string name="RaiseToSpeakAlert">Wil je \"Houd bij oor\" inschakelen voor spraakberichten?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat heeft toegang tot je contacten nodig zodat je kan chatten met je vrienden vanaf al je apparaten.</string>
|
||||
<string name="PermissionStorage">Delta Chat heeft toegang tot je opslaggeheugen nodig zodat je foto\'s, video\'s, muziek en andere media kunt opslaan en versturen.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat heeft toegang tot je microfoon nodig om spraakberichten te kunnen verzenden.</string>
|
||||
<string name="PermissionNoLocation">Delta Chat heeft toegang tot je locatie nodig om deze te kunnen delen met je vrienden.</string>
|
||||
<string name="PermissionNoLocationPosition">Delta Chat heeft toegang tot je locatie nodig.</string>
|
||||
<string name="PermissionOpenSettings">Instellingen</string>
|
||||
<!--Intro view-->
|
||||
<string name="IntroStartMessaging">Begin met chatten</string>
|
||||
<!--plural-->
|
||||
<string name="Members_zero">%1$d leden</string>
|
||||
<string name="Members_one">%1$d leden</string>
|
||||
<string name="Members_two">%1$d leden</string>
|
||||
<string name="Members_few">%1$d leden</string>
|
||||
<string name="Members_many">%1$d leden</string>
|
||||
<string name="Members_other">%1$d leden</string>
|
||||
<string name="NewMessages_zero">geen nieuwe berichten</string>
|
||||
<string name="NewMessages_one">%1$d nieuw bericht</string>
|
||||
<string name="NewMessages_two">%1$d nieuwe berichten</string>
|
||||
<string name="NewMessages_few">%1$d nieuwe berichten</string>
|
||||
<string name="NewMessages_many">%1$d nieuwe berichten</string>
|
||||
<string name="NewMessages_other">%1$d nieuwe berichten</string>
|
||||
<string name="messages_zero">geen berichten</string>
|
||||
<string name="messages_one">%1$d bericht</string>
|
||||
<string name="messages_two">%1$d berichten</string>
|
||||
<string name="messages_few">%1$d berichten</string>
|
||||
<string name="messages_many">%1$d berichten</string>
|
||||
<string name="messages_other">%1$d berichten</string>
|
||||
<string name="items_zero">geen items</string>
|
||||
<string name="items_one">%1$d item</string>
|
||||
<string name="items_two">%1$d items</string>
|
||||
<string name="items_few">%1$d items</string>
|
||||
<string name="items_many">%1$d items</string>
|
||||
<string name="items_other">%1$d items</string>
|
||||
<string name="FromChats_zero">van geen chats</string>
|
||||
<string name="FromChats_one">van %1$d chat</string>
|
||||
<string name="FromChats_two">van %1$d chats</string>
|
||||
<string name="FromChats_few">van %1$d chats</string>
|
||||
<string name="FromChats_many">van %1$d chats</string>
|
||||
<string name="FromChats_other">van %1$d chats</string>
|
||||
<string name="Seconds_zero">%1$d seconden</string>
|
||||
<string name="Seconds_one">%1$d seconde</string>
|
||||
<string name="Seconds_two">%1$d seconden</string>
|
||||
<string name="Seconds_few">%1$d seconden</string>
|
||||
<string name="Seconds_many">%1$d seconden</string>
|
||||
<string name="Seconds_other">%1$d seconden</string>
|
||||
<string name="Minutes_zero">%1$d minuten</string>
|
||||
<string name="Minutes_one">%1$d minuut</string>
|
||||
<string name="Minutes_two">%1$d minuten</string>
|
||||
<string name="Minutes_few">%1$d minuten</string>
|
||||
<string name="Minutes_many">%1$d minuten</string>
|
||||
<string name="Minutes_other">%1$d minuten</string>
|
||||
<string name="Hours_zero">%1$d uur</string>
|
||||
<string name="Hours_one">%1$d uur</string>
|
||||
<string name="Hours_two">%1$d uur</string>
|
||||
<string name="Hours_few">%1$d uur</string>
|
||||
<string name="Hours_many">%1$d uur</string>
|
||||
<string name="Hours_other">%1$d uur</string>
|
||||
<string name="Days_zero">%1$d dagen</string>
|
||||
<string name="Days_one">%1$d dag</string>
|
||||
<string name="Days_two">%1$d dagen</string>
|
||||
<string name="Days_few">%1$d dagen</string>
|
||||
<string name="Days_many">%1$d dagen</string>
|
||||
<string name="Days_other">%1$d dagen</string>
|
||||
<string name="Weeks_zero">%1$d weken</string>
|
||||
<string name="Weeks_one">%1$d week</string>
|
||||
<string name="Weeks_two">%1$d weken</string>
|
||||
<string name="Weeks_few">%1$d weken</string>
|
||||
<string name="Weeks_many">%1$d weken</string>
|
||||
<string name="Weeks_other">%1$d weken</string>
|
||||
<string name="Months_zero">%1$d maanden</string>
|
||||
<string name="Months_one">%1$d maand</string>
|
||||
<string name="Months_two">%1$d maanden</string>
|
||||
<string name="Months_few">%1$d maanden</string>
|
||||
<string name="Months_many">%1$d maanden</string>
|
||||
<string name="Months_other">%1$d maanden</string>
|
||||
<string name="Years_zero">%1$d jaar</string>
|
||||
<string name="Years_one">%1$d jaar</string>
|
||||
<string name="Years_two">%1$d jaar</string>
|
||||
<string name="Years_few">%1$d jaar</string>
|
||||
<string name="Years_many">%1$d jaar</string>
|
||||
<string name="Years_other">%1$d jaar</string>
|
||||
<string name="Users_zero">%1$d gebruikers</string>
|
||||
<string name="Users_one">%1$d gebruiker</string>
|
||||
<string name="Users_two">%1$d gebruikers</string>
|
||||
<string name="Users_few">%1$d gebruikers</string>
|
||||
<string name="Users_many">%1$d gebruikers</string>
|
||||
<string name="Users_other">%1$d gebruikers</string>
|
||||
<string name="Times_zero">%1$d keer</string>
|
||||
<string name="Times_one">%1$d keer</string>
|
||||
<string name="Times_two">%1$d keer</string>
|
||||
<string name="Times_few">%1$d keer</string>
|
||||
<string name="Times_many">%1$d keer</string>
|
||||
<string name="Times_other">%1$d keer</string>
|
||||
<string name="Meters_zero">%1$d meter</string>
|
||||
<string name="Meters_one">%1$d meter</string>
|
||||
<string name="Meters_two">%1$d meter</string>
|
||||
<string name="Meters_few">%1$d meter</string>
|
||||
<string name="Meters_many">%1$d meter</string>
|
||||
<string name="Meters_other">%1$d meter</string>
|
||||
<string name="Stickers_zero">%1$d stickers</string>
|
||||
<string name="Stickers_one">%1$d sticker</string>
|
||||
<string name="Stickers_two">%1$d stickers</string>
|
||||
<string name="Stickers_few">%1$d stickers</string>
|
||||
<string name="Stickers_many">%1$d stickers</string>
|
||||
<string name="Stickers_other">%1$d stickers</string>
|
||||
<string name="Photos_zero">%1$d foto\'s</string>
|
||||
<string name="Photos_one">%1$d foto</string>
|
||||
<string name="Photos_two">%1$d foto\'s</string>
|
||||
<string name="Photos_few">%1$d foto\'s</string>
|
||||
<string name="Photos_many">%1$d foto\'s</string>
|
||||
<string name="Photos_other">%1$d foto\'s</string>
|
||||
<string name="LastSeenMinutes_zero">laatst gezien %1$d min geleden</string>
|
||||
<string name="LastSeenMinutes_one">laatst gezien %1$d minuut geleden</string>
|
||||
<string name="LastSeenMinutes_two">laatst gezien %1$d min geleden</string>
|
||||
<string name="LastSeenMinutes_few">laatst gezien %1$d min geleden</string>
|
||||
<string name="LastSeenMinutes_many">laatst gezien %1$d min geleden</string>
|
||||
<string name="LastSeenMinutes_other">laatst gezien %1$d min geleden</string>
|
||||
<string name="LastSeenHours_zero">laatst gezien %1$d uur geleden</string>
|
||||
<string name="LastSeenHours_one">laatst gezien %1$d uur geleden</string>
|
||||
<string name="LastSeenHours_two">laatst gezien %1$d uur geleden</string>
|
||||
<string name="LastSeenHours_few">laatst gezien %1$d uur geleden</string>
|
||||
<string name="LastSeenHours_many">laatst gezien %1$d uur geleden</string>
|
||||
<string name="LastSeenHours_other">laatst gezien %1$d uur geleden</string>
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d leden</item>
|
||||
<item quantity="other">%d leden</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nieuw bericht</item>
|
||||
<item quantity="other">%d nieuwe berichten</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d bericht</item>
|
||||
<item quantity="other">%d berichten</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minuut</item>
|
||||
<item quantity="other">%d minuten</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d uur</item>
|
||||
<item quantity="other">%d uur</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d dag</item>
|
||||
<item quantity="other">%d dagen</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d week</item>
|
||||
<item quantity="other">%d weken</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d maand</item>
|
||||
<item quantity="other">%d maanden</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
|
||||
@@ -0,0 +1,490 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
|
||||
|
||||
<resources>
|
||||
<string name="AppName">Delta Chat</string>
|
||||
<string name="LanguageName">Polski</string>
|
||||
<string name="LanguageNameInEnglish">Polish</string>
|
||||
<string name="LanguageCode">pl</string>
|
||||
<!--chats view-->
|
||||
<string name="Settings">Ustawienia</string>
|
||||
<string name="NewGroup">Nowa grupa</string>
|
||||
<string name="Yesterday">wczoraj</string>
|
||||
<string name="NoResult">Nie ma wyników.</string>
|
||||
<string name="NoChats">Nie ma czatów.</string>
|
||||
<string name="WaitingForNetwork">Czekam na sieć…</string>
|
||||
<string name="Connecting">Łączenie…</string>
|
||||
<string name="Updating">Aktualizowanie…</string>
|
||||
<string name="DeleteChat">Usuń czat</string>
|
||||
<string name="SelectChat">Wybierz czat…</string>
|
||||
<string name="Search">Szukaj</string>
|
||||
<string name="MuteNotifications">Wyłącz powiadomienia</string>
|
||||
<string name="MuteFor1Hour">Wyłącz na 1 godzinę</string>
|
||||
<string name="MuteFor8Hours">Wyłącz na 8 godzin</string>
|
||||
<string name="MuteFor2Days">Wyłącz na 2 dni</string>
|
||||
<string name="UnmuteNotifications">Włącz powiadomienia</string>
|
||||
<string name="Draft">Szkic</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Dodaj pliki do biblioteki muzyki w urządzeniu, aby zobaczyć je tutaj.</string>
|
||||
<string name="AttachMusic">Muzyka</string>
|
||||
<string name="AudioUnknownArtist">Nieznany artysta</string>
|
||||
<string name="AudioUnknownTitle">Nieznany tytuł</string>
|
||||
<!--documents view-->
|
||||
<string name="SelectFile">Wybierz plik</string>
|
||||
<string name="FreeOfTotal">Wolne %1$s z %2$s</string>
|
||||
<string name="UnknownError">Nieznany błąd</string>
|
||||
<string name="AccessError">Błąd dostępu</string>
|
||||
<string name="NoFiles">Nie ma plików…</string>
|
||||
<string name="FileUploadLimit">Rozmiar pliku nie powinien być większy niż %1$s</string>
|
||||
<string name="NotMounted">Nie zamontowano pamięci</string>
|
||||
<string name="UsbActive">Aktywny transfer USB</string>
|
||||
<string name="InternalStorage">Pamięć wewnętrzna</string>
|
||||
<string name="ExternalStorage">Pamięć zewnętrzna</string>
|
||||
<string name="SystemRoot">Katalog systemowy</string>
|
||||
<string name="SdCard">Karta SD</string>
|
||||
<string name="Folder">Folder</string>
|
||||
<string name="GalleryInfo">Wyślij obrazki bez kompresji</string>
|
||||
<!--chat view-->
|
||||
<string name="ChatGallery">Galeria</string>
|
||||
<string name="ChatLocation">Lokalizacja</string>
|
||||
<string name="ChatVideo">Wideo</string>
|
||||
<string name="ChatDocument">Plik</string>
|
||||
<string name="ChatCamera">Kamera</string>
|
||||
<string name="NoMessages">Brak wiadomości.</string>
|
||||
<string name="ForwardedMessage">Przekazana wiadomość</string>
|
||||
<string name="From">Od</string>
|
||||
<string name="NoRecent">Nie ma wcześniejszych</string>
|
||||
<string name="TypeMessage">Wiadomość</string>
|
||||
<string name="SlideToCancel">PRZESUŃ, BY ANULOWAĆ</string>
|
||||
<string name="SaveToDownloads">Zapisz w pobranych</string>
|
||||
<string name="DeleteGif">Usunąć GIFa?</string>
|
||||
<string name="SaveToMusic">Zapisz w muzyce</string>
|
||||
<string name="ShareFile">Udostępnij</string>
|
||||
<string name="UnsupportedAttachment">Nieobsługiwany załącznik</string>
|
||||
<string name="OpenInBrowser">OTWÓRZ W…</string>
|
||||
<string name="SendItems">Wyślij %1$s</string>
|
||||
<string name="OpenUrlAlert">Otworzyć adres %1$s?</string>
|
||||
<string name="ClearRecentEmoji">Wyczyścić ostatnie emoji?</string>
|
||||
<string name="AddShortcut">Dodaj widget do ekranu głównego</string>
|
||||
<string name="ShortcutAdded">Widget dodany do ekranu głównego</string>
|
||||
<!--notification-->
|
||||
<string name="Reply">Odpowiedz</string>
|
||||
<string name="ReplyToGroup">Odpowiedz grupie %1$s</string>
|
||||
<string name="ReplyToUser">Odpowiedz grupie %1$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Nie ma użytkowników.</string>
|
||||
<string name="TodayAt">o</string>
|
||||
<string name="YesterdayAt">wczoraj o</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Wyślij wiadomość do…</string>
|
||||
<string name="EnterGroupNamePlaceholder">Podaj nazwę grupy</string>
|
||||
<string name="ShareLink">Udostępnij link</string>
|
||||
<!--group info view-->
|
||||
<string name="SharedMedia">Udostępnione media</string>
|
||||
<string name="SETTINGS">Ustawienia</string>
|
||||
<string name="AddMember">Dodaj członka</string>
|
||||
<string name="Notifications">Powiadomienia</string>
|
||||
<string name="RemoveMember">Usuń członka</string>
|
||||
<!--contact info view-->
|
||||
<string name="ShareContact">Udostępnij</string>
|
||||
<string name="AddContact">Dodaj</string>
|
||||
<string name="NewContactTitle">Nowy użytkownik</string>
|
||||
<string name="BlockContact">Zablokuj użytkownika</string>
|
||||
<string name="DeleteContact">Usuń użytkownika</string>
|
||||
<string name="Info">Informacje</string>
|
||||
<!--stickers view-->
|
||||
<string name="Stickers">Naklejki</string>
|
||||
<string name="AddStickers">Dodaj naklejki</string>
|
||||
<string name="AddToStickers">Dodaj do naklejek</string>
|
||||
<string name="AddStickersNotFound">Nie znaleziono naklejek</string>
|
||||
<string name="StickersRemoved">Naklejki zostały usunięte</string>
|
||||
<string name="AddStickersInstalled">Dodano nowe naklejki</string>
|
||||
<string name="StickersHide">Ukryj</string>
|
||||
<string name="StickersShow">Pokaż</string>
|
||||
<string name="StickersShare">Udostępnij</string>
|
||||
<string name="StickersCopy">Kopiuj link</string>
|
||||
<string name="StickersRemove">Usuń</string>
|
||||
<string name="NoStickers">Nie ma naklejek</string>
|
||||
<string name="SendSticker">WYŚLIJ NAKLEJKĘ</string>
|
||||
<!--settings view-->
|
||||
<string name="TextSize">Rozmiar czcionki w wiadomości</string>
|
||||
<string name="EnableAnimations">Animacja przejścia</string>
|
||||
<string name="UnblockContact">Odblokuj użytkownika</string>
|
||||
<string name="NoBlocked">Nie ma zablokowanych użytkowników</string>
|
||||
<string name="NormalMessages">Normalne wiadomości</string>
|
||||
<string name="Alert">Alarm</string>
|
||||
<string name="MessagePreview">Podgląd wiadomości</string>
|
||||
<string name="GroupMessages">Grupowe wiadomości</string>
|
||||
<string name="Sound">Dźwięki</string>
|
||||
<string name="InAppNotifications">Powiadomienia w aplikacji</string>
|
||||
<string name="Vibrate">Wibracje</string>
|
||||
<string name="Reset">Resetuj</string>
|
||||
<string name="ResetAllNotifications">Resetuj wszystkie powiadomienia</string>
|
||||
<string name="NotificationsAndSounds">Powiadomienia i dźwięki</string>
|
||||
<string name="BlockedUsers">Zablokowani użytkownicy</string>
|
||||
<string name="Default">domyślny</string>
|
||||
<string name="OnlyIfSilent">Tylko jeśli wyciszony</string>
|
||||
<string name="ChatBackground">Tło czatu</string>
|
||||
<string name="SendByEnter">Wyślij wiadomość naciskając Enter</string>
|
||||
<string name="Language">Język</string>
|
||||
<string name="Help">Pomoc</string>
|
||||
<string name="DeleteLocalization">Usunąć lokalizację?</string>
|
||||
<string name="Enabled">Włączone</string>
|
||||
<string name="Disabled">Wyłączony</string>
|
||||
<string name="NotificationsService">Podtrzymywanie usługi</string>
|
||||
<string name="NotificationsServiceInfo">Uruchom ponownie aplikację, gdy zostanie wyłączona przez użytkownika lub przez system. Zapewni to otrzymywanie powiadomień.</string>
|
||||
<string name="NotificationsServiceConnection">Łączenie w tle</string>
|
||||
<string name="NotificationsServiceConnectionInfo">Utrzymuj niski wpływ połączenia w tle, by odbierać powiadomienia. Włącz dla zaufanych powiadomień.</string>
|
||||
<string name="LedColor">Kolor LED-a</string>
|
||||
<string name="BadgeNumber">Pokaż ilość na ikonie, jeśli to możliwe</string>
|
||||
<string name="Short">Krótkie</string>
|
||||
<string name="Long">Długie</string>
|
||||
<string name="SystemDefault">Domyślny systemu</string>
|
||||
<string name="RaiseToSpeak">Odbierz i mów / słuchaj</string>
|
||||
<string name="EditName">Edytuj nazwę</string>
|
||||
<string name="NotificationsPriority">Priorytet</string>
|
||||
<string name="NotificationsPriorityDefault">Normaly priorytet</string>
|
||||
<string name="NotificationsPriorityHigh">Wysoki priorytet</string>
|
||||
<string name="NotificationsPriorityMax">Najwyższy priorytet</string>
|
||||
<string name="RepeatNotifications">Powtarzanie powiadomień co</string>
|
||||
<string name="NotificationsOther">Inne</string>
|
||||
<string name="InChatSound">Dźwięki w czacie</string>
|
||||
<string name="SoundDefault">Domyślne</string>
|
||||
<string name="VibrationDefault">Domyślne</string>
|
||||
<string name="SmartNotifications">Limit powiadomień</string>
|
||||
<string name="SmartNotificationsInfo">Dźwięk, co najwyżej %1$s w ciągu %2$s</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Dźwięk, co najwyżej</string>
|
||||
<string name="SmartNotificationsTimes">razy</string>
|
||||
<string name="SmartNotificationsWithin">w ciągu</string>
|
||||
<string name="SmartNotificationsMinutes">minut</string>
|
||||
<string name="DirectShare">Bezpośrednie udostępnianie</string>
|
||||
<string name="DirectShareInfo">Pokaż ostatnie czaty w menu udostępniania</string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">Pamięć</string>
|
||||
<string name="LocalDatabase">Lokalna baza danych</string>
|
||||
<string name="LocalDatabaseClear">Wyczyścić zbuforowane wiadomości?</string>
|
||||
<string name="LocalDatabaseInfo">Wyczyszczenie lokalnej bazy danych spowoduje usunięcie tekstów zbuforowanych wiadomości i skompresowanie bazy, by zaoszczędzić miejsce w pamięci wewnętrznej. Aplikacja do działania potrzebuje niektórych danych, więc rozmiar bazy danych nie osiągnie zero.\\n\\nOperacja ta może potrwać kilka minut.</string>
|
||||
<string name="ClearMediaCache">Wyczyść pamięć podręczną</string>
|
||||
<string name="CacheClear">Wyczyść</string>
|
||||
<string name="LocalDocumentCache">Dokumenty</string>
|
||||
<string name="LocalPhotoCache">Zdjęcia</string>
|
||||
<string name="LocalAudioCache">Wiadomości głosowe</string>
|
||||
<string name="LocalVideoCache">Wideo</string>
|
||||
<string name="LocalMusicCache">Muzyka</string>
|
||||
<string name="LocalCache">Inne pliki</string>
|
||||
<string name="CacheEmpty">Pusty</string>
|
||||
<string name="KeepMedia">Przechowywanie multimediów</string>
|
||||
<string name="KeepMediaInfo">Zdjęcia, wideo i inne pliki z czatów w chmurze <![CDATA[<b>nie używane</b>]]> w tym okresie zostaną usunięte z urządzenia, by zaoszczędzić miejsce w pamięci.</string>
|
||||
<string name="KeepMediaForever">Na zawsze</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Blokada kodem dostępu</string>
|
||||
<string name="ChangePasscode">Zmień kod dostępu</string>
|
||||
<string name="ChangePasscodeInfo">Po skonfigurowaniu dodatkowego kodu dostępu, na stronie czatów pojawi się ikona kłódki. Dotknij ją, aby zablokować lub odblokować aplikację.\\n\\nUwaga! Jeśli zapomnisz kod dostępu, musisz usunąć i ponownie zainstalować aplikację.</string>
|
||||
<string name="PasscodePIN">PIN</string>
|
||||
<string name="PasscodePassword">Hasło</string>
|
||||
<string name="EnterCurrentPasscode">Wprowadź aktualny kod dostępu</string>
|
||||
<string name="EnterNewFirstPasscode">Wprowadź kod dostępu</string>
|
||||
<string name="EnterNewPasscode">Wprowadź nowy kod dostępu</string>
|
||||
<string name="EnterYourPasscode">Wprowadź kod dostępu</string>
|
||||
<string name="ReEnterYourPasscode">Powtórz nowy kod dostępu</string>
|
||||
<string name="PasscodeDoNotMatch">Hasła są niezgodne</string>
|
||||
<string name="AutoLock">Automatyczna blokada</string>
|
||||
<string name="AutoLockInfo">Wymagaj kodu dostępu po dłuższej nieaktywności.</string>
|
||||
<string name="AutoLockInTime">za %1$s</string>
|
||||
<string name="UnlockFingerprint">Odblokuj odciskiem palca</string>
|
||||
<string name="FingerprintInfo">Potwierdź odcisk palca, aby kontynuować</string>
|
||||
<string name="FingerprintHelp">Czujnik dotykowy</string>
|
||||
<string name="FingerprintNotRecognized">Odcisk palca nie rozpoznany. Spróbuj ponownie</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="ShowAllMedia">Pokaż wszystkie multimedia</string>
|
||||
<string name="SaveToGallery">Zapisz w galerii</string>
|
||||
<string name="Of">%1$d z %2$d</string>
|
||||
<string name="Gallery">Galeria</string>
|
||||
<string name="AllPhotos">Wszystkie zdjęcia</string>
|
||||
<string name="AllVideo">Wszystkie wideo</string>
|
||||
<string name="NoPhotos">Nie ma zdjęć</string>
|
||||
<string name="NoVideo">Nie ma jeszcze wideo</string>
|
||||
<string name="PleaseDownload">Pobierz najpierw multimedia</string>
|
||||
<string name="NoRecentPhotos">Nie ma wcześniejszych zdjęć</string>
|
||||
<string name="NoRecentGIFs">Nie ma wcześniejszych GIFów</string>
|
||||
<string name="SearchImages">SZUKAJ OBRAZY</string>
|
||||
<string name="SearchImagesInfo">W INTERNECIE</string>
|
||||
<string name="SearchGifs">SZUKAJ GIFY</string>
|
||||
<string name="SearchImagesTitle">Przeszukaj internet</string>
|
||||
<string name="SearchGifsTitle">Szukaj GIFy</string>
|
||||
<string name="CropImage">Przytnij zdjęcie</string>
|
||||
<string name="EditImage">Edytuj zdjęcie</string>
|
||||
<string name="Enhance">Ulepszenie</string>
|
||||
<string name="Highlights">Wyróżnienia</string>
|
||||
<string name="Contrast">Kontrast</string>
|
||||
<string name="Exposure">Ekspozycja</string>
|
||||
<string name="Warmth">Ciepło</string>
|
||||
<string name="Saturation">Saturacja</string>
|
||||
<string name="Vignette">Winieta</string>
|
||||
<string name="Shadows">Cienie</string>
|
||||
<string name="Grain">Ziarno</string>
|
||||
<string name="Sharpen">Wyostrzenie</string>
|
||||
<string name="Fade">Zanikanie</string>
|
||||
<string name="Tint">Odcień</string>
|
||||
<string name="TintShadows">CIENIE</string>
|
||||
<string name="TintHighlights">WYRÓŻNIENIA</string>
|
||||
<string name="Curves">Krzywe</string>
|
||||
<string name="CurvesAll">WSZYSTKIE</string>
|
||||
<string name="CurvesRed">CZERWONE</string>
|
||||
<string name="CurvesGreen">ZIELONE</string>
|
||||
<string name="CurvesBlue">NIEBIESKIE</string>
|
||||
<string name="Blur">Rozmycie</string>
|
||||
<string name="BlurOff">Wyłączone</string>
|
||||
<string name="BlurLinear">Liniowe</string>
|
||||
<string name="BlurRadial">Radialne</string>
|
||||
<string name="DiscardChanges">Odrzucić zmiany?</string>
|
||||
<string name="ClearSearch">Wyczyścić historię wyszukiwania?</string>
|
||||
<string name="ClearButton">Wyczyść</string>
|
||||
<string name="PickerPhotos">Zdjęcia</string>
|
||||
<string name="PickerVideo">Wideo</string>
|
||||
<string name="AddCaption">Dodaj podpis…</string>
|
||||
<string name="PhotoCaption">Podpis zdjęcia</string>
|
||||
<string name="VideoCaption">Podpis wideo</string>
|
||||
<string name="Caption">Podpis</string>
|
||||
<!--privacy settings-->
|
||||
<string name="PrivacySettings">Prywatność i bezpieczeństwo</string>
|
||||
<string name="PrivacyTitle">Prywatność</string>
|
||||
<string name="SecurityTitle">Bezpieczeństwo</string>
|
||||
<!--edit video view-->
|
||||
<string name="EditVideo">Edycja wideo</string>
|
||||
<string name="OriginalVideo">Oryginalne wideo</string>
|
||||
<string name="EditedVideo">Edytowane wideo</string>
|
||||
<string name="SendingVideo">Wysyłanie wideo…</string>
|
||||
<string name="CompressVideo">Kompresuj wideo</string>
|
||||
<!--button titles-->
|
||||
<string name="Next">Dalej</string>
|
||||
<string name="Back">Wstecz</string>
|
||||
<string name="Done">Gotowe</string>
|
||||
<string name="Open">Otwórz</string>
|
||||
<string name="Save">Zapisz</string>
|
||||
<string name="Cancel">Anuluj</string>
|
||||
<string name="Close">Zamknij</string>
|
||||
<string name="Add">Dodaj</string>
|
||||
<string name="Edit">Edytuj</string>
|
||||
<string name="Send">Wyślij</string>
|
||||
<string name="CopyToClipboard">Kopiuj do schowka</string>
|
||||
<string name="Delete">Usuń</string>
|
||||
<string name="Forward">Przekaż</string>
|
||||
<string name="Retry">Spróbuj ponownie</string>
|
||||
<string name="FromCamera">Z kamery</string>
|
||||
<string name="FromGalley">Z galerii</string>
|
||||
<string name="DeletePhoto">Usuń zdjęcie</string>
|
||||
<string name="Set">Ustaw</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">PRZYTNIJ</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Zdjęcie</string>
|
||||
<string name="AttachVideo">Wideo</string>
|
||||
<string name="AttachGif">GIF</string>
|
||||
<string name="AttachLocation">Lokalizacja</string>
|
||||
<string name="AttachContact">Kontakt</string>
|
||||
<string name="AttachDocument">Plik</string>
|
||||
<string name="AttachSticker">naklejka</string>
|
||||
<string name="AttachAudio">Wiadomość głosowa</string>
|
||||
<string name="FromSelf">Ja</string>
|
||||
<!--Alert messages-->
|
||||
<string name="Loading">Wczytywanie…</string>
|
||||
<string name="NoPlayerInstalled">Nie masz odtwarzacza wideo. Zainstaluj jakiś, aby kontynuować.</string>
|
||||
<string name="NoHandleAppInstalled">Nie masz aplikacji obsługujących pliki typu „%1$s”. Zainstaluj jakąś, aby kontynuować.</string>
|
||||
<string name="AddToTheGroupTitle">Dodać %1$s do czatu %2$s?</string>
|
||||
<string name="AddToTheGroup">Dodać %1$s do grupy?</string>
|
||||
<string name="UserAlreadyInGroup">Ten użytkownik jest już w tej grupie</string>
|
||||
<string name="ForwardMessagesTo">Przekazać wybrane wiadomości do <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Wysłać wiadomość do <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendContactTo">Wysłać kontakt do użytkownika %1$s?</string>
|
||||
<string name="AreYouSureDeleteAndExit">Opuścić grupę? Nie będziesz już otrzymywać wiadomości od grupy.</string>
|
||||
<string name="AreYouSureDeleteThisChat">Usunąć ten czat? Czat nie będzie widoczny na liście czatów, wiadomości pozostaną na serwerze.</string>
|
||||
<string name="ShareYouLocationUnable">Aplikacja nie była w stanie określić twojej aktualnej lokalizacji</string>
|
||||
<string name="ShareYouLocationUnableManually">Wybierz ręcznie</string>
|
||||
<string name="AreYouSureBlockContact">Czy na pewno chcesz zablokować tego użytkownika?</string>
|
||||
<string name="AreYouSureDeleteContact">Czy na pewno chcesz usunąć tego użytkownika?</string>
|
||||
<string name="RaiseToSpeakAlert">Czy chcesz włączyć funkcję „Odbierz i mów / słuchaj” dla wiadomości głosowych?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Aby można było łączyć się ze znajomymi na wszystkich urządzeniach, Delta Chat musi mieć dostęp do listy kontaktów.</string>
|
||||
<string name="PermissionStorage">Aby wysyłać i zapisywać zdjęcia, wideo, muzykę i inne multimedia, Delta Chat musi mieć dostęp do pamięci.</string>
|
||||
<string name="PermissionNoAudio">Aby wysyłać wiadomości głosowe Delta Chat musi mieć dostęp do mikrofonu.</string>
|
||||
<string name="PermissionOpenSettings">Ustawienia</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">Komunikator o <![CDATA[<b>największym zasięgu</b>]]> na świecie.<![CDATA[<br/><b>Darmowy</b>]]> i <![CDATA[<b>bezpieczny</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">Niezależny</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Niezależny</b>]]> od obcych komputerów i usług. Aplikacja wykorzystuje tylko twój serwer e-mail.</string>
|
||||
|
||||
<string name="Intro3Headline">Szybki</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Wiadomości push</b>]]> w kilka sekund.<![CDATA[<br/>]]>Szybki interfejs.</string>
|
||||
|
||||
<string name="Intro4Headline">Potężny</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Nieograniczone</b>]]> czaty, obrazy, filmy, wiadomości audio i wiele innych. Sprawny multi-klient.</string>
|
||||
|
||||
<string name="Intro5Headline">Darmowy</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> jest zawsze darmowy.<![CDATA[<br/>]]>O otwartym kodzie źródłowym. Bez reklam. Bez abonamentu. Bez ograniczeń dystrybucji.</string>
|
||||
|
||||
<string name="Intro6Headline">Bezpieczny</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Zaszyfrowany</b>]]> za pomocą wszystkich typowych algorytmów. Wiadomości pozostają na swoich serwerach.</string>
|
||||
|
||||
<string name="Intro7Headline">Godny zaufania</string>
|
||||
|
||||
<string name="IntroStartMessaging">Uruchom komunikator</string>
|
||||
<!--plural-->
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d członek</item>
|
||||
<item quantity="few">%d członków</item>
|
||||
<item quantity="other">%d członków</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%d kontakt</item>
|
||||
<item quantity="few">kontaktów - %d</item>
|
||||
<item quantity="other">kontaktów - %d</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Ja i %d członek</item>
|
||||
<item quantity="few">Ja i %d członków</item>
|
||||
<item quantity="other">ja i %d członków</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nowa wiadomość</item>
|
||||
<item quantity="few">%d nowe wiadomości</item>
|
||||
<item quantity="other">%d nowych wiadomości</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d wiadomość</item>
|
||||
<item quantity="few">%d wiadomości</item>
|
||||
<item quantity="other">%d wiadomości</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">Usunąć %d wiadomość? Wiadomość zostanie usunięta również z serwera.</item>
|
||||
<item quantity="few">Usunąć %d wiadomości? Wiadomości zostaną usunięte również z serwera.</item>
|
||||
<item quantity="other">Usunąć %d wiadomości? Wiadomości zostaną usunięte również z serwera.</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s w %2$d czacie</item>
|
||||
<item quantity="few">%1$s w %2$d czatach</item>
|
||||
<item quantity="other">%1$s w %2$d czatach</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d czat</item>
|
||||
<item quantity="few">%d czaty</item>
|
||||
<item quantity="other">czatów - %d</item>
|
||||
</plurals>
|
||||
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minuta</item>
|
||||
<item quantity="few">%d min.</item>
|
||||
<item quantity="other">%d min.</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d godz.</item>
|
||||
<item quantity="few">%d godz.</item>
|
||||
<item quantity="other">%d godz.</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d dzień</item>
|
||||
<item quantity="few">%d dni</item>
|
||||
<item quantity="other">%d dni</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d tydzień</item>
|
||||
<item quantity="few">%d tyg.</item>
|
||||
<item quantity="other">%d tyg.</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d miesiąc</item>
|
||||
<item quantity="few">%d mies.</item>
|
||||
<item quantity="other">%d mies.</item>
|
||||
</plurals>
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Najwyżej %1$d powiadomienie w ciągu %2$s</item>
|
||||
<item quantity="few">Najwyżej %1$d powiadomienia w ciągu %2$s</item>
|
||||
<item quantity="other">Najwyżej %1$d powiadomień w ciągu %2$s</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
<string name="formatterYear">dd.MM.yyyy</string>
|
||||
<string name="chatDate">EEE, d MMMM</string>
|
||||
<string name="chatFullDate">EEE, d MMMM yyyy</string>
|
||||
<string name="formatterWeek">EEE</string>
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
<string name="formatDateAtTime">%1$s o %2$s</string>
|
||||
<string name="AccountSettings">Ustawienia konta</string>
|
||||
<string name="MyAccount">Moje konto</string>
|
||||
<string name="Yes">Tak</string>
|
||||
<string name="No">Nie</string>
|
||||
<string name="MyName">Moja nazwa</string>
|
||||
<string name="MyNameExplain">Twoja nazwa, pokazywana odbiorcom.\\n\\nJeśli nie wprowadzisz nazwy, odbiorcy będą widzieć tylko twój adres e-mail z ustawień konta.</string>
|
||||
<string name="MyEmailAddress">Mój adres e-mail</string>
|
||||
<string name="Password">Hasło</string>
|
||||
<string name="SmtpPassword">SMTP hasło</string>
|
||||
<string name="FromAbove">jak wyżej</string>
|
||||
<string name="SmtpLoginname">SMTP nazwa użytkownika</string>
|
||||
<string name="SmtpPort">SMTP port</string>
|
||||
<string name="Automatic">atomatycznie</string>
|
||||
<string name="ImapServer">IMAP serwer</string>
|
||||
<string name="ImapLoginname">IMAP nazwa użytkownika</string>
|
||||
<string name="SmtpServer">SMTP serwer</string>
|
||||
<string name="ImapPort">IMAP port</string>
|
||||
<string name="InboxHeadline">Skrzynka odbiorcza</string>
|
||||
<string name="OutboxHeadline">Skrzynka nadawcza</string>
|
||||
<string name="BasicSettings">Ustawienia podstawowe</string>
|
||||
<string name="MyAccountExplain">Dla znanych dostawców usług poczty elektronicznej poniższe ustawienia są określane automatycznie.</string>
|
||||
<string name="MyAccountExplain2" >Czasami IMAP / SMTP musi być włączony w interfejsie www poczty internetowej.\\n\\nZ problemami należy zwrócić się do usługodawcy e-mail lub znajomych.</string>
|
||||
<string name="AccountNotConfigured">Konto nie jest skonfigurowane</string>
|
||||
<string name="AboutThisProgram">O Delta Chat</string>
|
||||
<string name="NotSet">Nie ustawiona</string>
|
||||
<string name="NewChat">Nowy czat</string>
|
||||
<string name="Deaddrop">Skrzynka pocztowa</string>
|
||||
<string name="Media">Multimedia</string>
|
||||
<string name="DeaddropInChatlist">Pokaż skrzynkę pocztową na liście czatów</string>
|
||||
<string name="MuteAlways">Zawsze wyłączone</string>
|
||||
<string name="AskStartChatWith">Rozpocząć czat z <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Aby rozpocząć czat, naciśnij strzałkę odpowiedzi.</string>
|
||||
<string name="NotYetImplemented">Ta funkcja jest niedostępna lub niekompletna.</string>
|
||||
<string name="DefaultStatusText">Wysłane z komunikatora Delta Chat</string>
|
||||
<string name="SubjectPrefix">Wiadomości błyskawiczne</string>
|
||||
<string name="SeachUser">Szukaj użytkownika</string>
|
||||
<string name="Name" >Nazwa</string>
|
||||
<string name="EmailAddress">Adres e-mail</string>
|
||||
<string name="CannotDeleteContact">Nie możesz usunąć użytkowników w użyciu, zamiast tego zablokuj użytkownika.</string>
|
||||
<string name="BadEmailAddress">Zły adres e-mail</string>
|
||||
<string name="ContactDeleted">Użytkownik usunięty.</string>
|
||||
<string name="ContactCreated">Użytkownik utworzony.</string>
|
||||
<string name="ViewProfile">Pokaż profil</string>
|
||||
<string name="OneMomentPlease">Jedną chwilę, proszę…</string>
|
||||
<string name="CannotDeleteChat">Nie można usunąć czatu.</string>
|
||||
<string name="NoChatsHelp">Zacznij przesyłanie wiadomości, naciskając przycisk nowej wiadomości w prawym dolnym rogu lub naciśnij przycisk menu, aby uzyskać więcej opcji.</string>
|
||||
<string name="ConfiguringAccount">Konfigurowanie konta…</string>
|
||||
<string name="CannotConnect">Nie można nawiązać połączenia, sprawdź konfigurację.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> jest bezpieczny dla zastosowań biznesowych, zgodny i oparty na standardach.</string>
|
||||
<string name="InviteMenuEntry">Wyślij zaproszenia</string>
|
||||
<string name="InviteText">Teraz używam komunikatora Delta Chat - %1$s - możesz pisać do mnie na %2$s</string>
|
||||
<string name="AdvancedSettings">Usywienia zaawansowane</string>
|
||||
<string name="AskResetNotifications" >Zresetować wszystkie ustawienia powiadomień i dźwięków na tej stronie oraz dla swoich kontaktów i grup?</string>
|
||||
<string name="AttachFiles">Załącz pliki</string>
|
||||
<string name="Chats">Czaty</string>
|
||||
<string name="ErrGroupNameEmpty">Podaj nazwę dla grupy</string>
|
||||
<string name="MsgNewGroupDraftHint">Napisz pierwszą wiadomość, by inni mogli odpowiedzieć w tej grupie.\\n\\n• Nie ma problemu, jeśli nie wszyscy członkowie korzystają z Delta Chat.\\n\\n• Dostarczenie pierwszej wiadomości może chwilę potrwać.</string>
|
||||
<string name="MsgNewGroupDraft">Witam, właśnie utworzyłem dla nas grupę \"%1$s\".</string>
|
||||
<string name="MsgGroupNameChanged">Zmieniono nazwę grupy z \"%1$s\" na \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">Zmieniono obraz grupy.</string>
|
||||
<string name="MsgMemberAddedToGroup">Dodano członka %1$s</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Usunięto członka %1$s</string>
|
||||
<string name="AskAddMemberToGroup">Dodać użytkownika <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> do grupy?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Usunąć użytkownika <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> z grupy?</string>
|
||||
<string name="ErrSelfNotInGroup">Musisz być członkiem grupy, aby wykonać tę czynność.</string>
|
||||
<string name="MsgGroupLeft">Grupa opuszczona.</string>
|
||||
<string name="NoMessagesHint">Wyślij wiadomość do <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\\n\\n• Nie ma problemu, jeśli <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> nie używa Delta Chat.\\n\\n• Dostarczenie pierwszej wiadomości może chwilę potrwać.</string>
|
||||
<string name="SendNRcvReadReceipts">Odbieraj i wysyłaj potwierdzenia odczytu</string>
|
||||
<string name="E2EEncryption">Pełne szyfrowanie</string>
|
||||
<string name="E2EManagePrivateKeys">Zarządzaj prywatnymi kluczami</string>
|
||||
<string name="E2ECompareKeys">Porównaj klucze</string>
|
||||
<string name="ResetUserKey">Resetuj klucz użytkownika</string>
|
||||
<string name="ForwardToTitle">Przekaż do…</string>
|
||||
</resources>
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--https://www.transifex.com/projects/p/telegram/language/pt_PT/members/-->
|
||||
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<resources>
|
||||
<string name="AppName">Delta Chat</string>
|
||||
<string name="LanguageName">Português</string>
|
||||
<string name="LanguageNameInEnglish">Portuguese</string>
|
||||
@@ -20,9 +20,7 @@
|
||||
<string name="SelectChat">Selecione um Chat …</string>
|
||||
<string name="Search">Busca</string>
|
||||
<string name="MuteNotifications">Silenciar notificações</string>
|
||||
<string name="MuteFor">Silenciar por %1$s</string>
|
||||
<string name="UnmuteNotifications">Restaurar Som</string>
|
||||
<string name="WillUnmuteIn">Em %1$s</string>
|
||||
<string name="Draft">Rascunho</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Por favor, adicione arquivos à biblioteca de música de seu dispositivo para vê-los aqui.</string>
|
||||
@@ -64,8 +62,6 @@
|
||||
<string name="OpenInBrowser">ABRIR EM…</string>
|
||||
<string name="SendItems">Enviar %1$s</string>
|
||||
<string name="OpenUrlAlert">Abrir URL em %1$s?</string>
|
||||
<string name="MoreInfo">Mais informações</string>
|
||||
<string name="ShareSendTo">Enviar para…</string>
|
||||
<string name="ClearRecentEmoji">Limpar emojis recentes?</string>
|
||||
<string name="AddShortcut">Adicionar atalho</string>
|
||||
<string name="ShortcutAdded">Atalho adicionado à tela de início</string>
|
||||
@@ -73,13 +69,10 @@
|
||||
<string name="Reply">Responder</string>
|
||||
<string name="ReplyToGroup">Responder para %1$s</string>
|
||||
<string name="ReplyToUser">Responder para %1$s</string>
|
||||
<string name="NotificationMessagesPeopleDisplayOrder">%1$s %2$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Ainda não há contatos</string>
|
||||
<string name="TodayAt">às</string>
|
||||
<string name="YesterdayAt">ontem às</string>
|
||||
<string name="LastSeen">visto</string>
|
||||
<string name="LastSeenDate">visto</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Enviar mensagem para…</string>
|
||||
<string name="EnterGroupNamePlaceholder">Digite o nome do grupo</string>
|
||||
@@ -128,7 +121,7 @@
|
||||
<string name="NotificationsAndSounds">Notificações e Sons</string>
|
||||
<string name="BlockedUsers">Usuários bloqueados</string>
|
||||
<string name="Default">Padrão</string>
|
||||
<string name="OnlyIfSilent">Somente no silencioso </string>
|
||||
<string name="OnlyIfSilent">Somente no silencioso</string>
|
||||
<string name="ChatBackground">Papel de Parede</string>
|
||||
<string name="SendByEnter">Enviar usando \'Enter\'</string>
|
||||
<string name="Language">Idioma</string>
|
||||
@@ -298,6 +291,7 @@
|
||||
<string name="NoHandleAppInstalled">Você não possui um aplicativo que suporte o tipo de arquivo \'%1$s\', por favor instale um para continuar</string>
|
||||
<string name="AddToTheGroupTitle">Adcione %1$s ao chat %2$s?</string>
|
||||
<string name="AskAddMemberToGroup">Adicionar <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> no grupo?</string>
|
||||
<string name="AddToTheGroup">Adicionar %1$s ao grupo?</string>
|
||||
<string name="UserAlreadyInGroup">Este usuário já está neste grupo</string>
|
||||
<string name="ForwardMessagesTo">Encaminhar mensagem para <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Enviar mensagens para <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
@@ -308,132 +302,75 @@
|
||||
<string name="ShareYouLocationUnableManually">Escolher manualmente</string>
|
||||
<string name="AreYouSureBlockContact">Você tem certeza que deseja bloquear este contato?</string>
|
||||
<string name="AreYouSureDeleteContact">Você tem certeza que deseja apagar este contato?</string>
|
||||
<string name="AreYouSureDeleteMessages">Você tem certeza que deseja apagar %1$s?</string>
|
||||
<string name="RaiseToSpeakAlert">Gostaria de habilitar o \"Levantar para Falar\" para mensagens de voz?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat precisa acessar seus contatos para que você possa se conectar aos seus amigos em todos os seus dispositivos.</string>
|
||||
<string name="PermissionStorage">Delta Chat precisa acessar seu armazenamento para que você possa enviar e salvar fotos, vídeos, músicas e outras mídias.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat precisa acessar seu microfone para que você possa enviar mensagens de voz.</string>
|
||||
<string name="PermissionNoLocation">Delta Chat precisa acessar sua localização para que você possa compartilhar com seus amigos.</string>
|
||||
<string name="PermissionNoLocationPosition">O Delta Chat precisa acessar sua localização</string>
|
||||
<string name="PermissionOpenSettings">Configurações</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">O aplicativo com o <![CDATA[<b>]]>maior número de usuários<![CDATA[</b>]]> do mundo.<br/><b>Grátis</b> e <b>seguro</b>.</string>
|
||||
|
||||
<string name="Intro2Headline">Independente</string>
|
||||
<string name="Intro2Message"><b>Independente</b> de serviços estrangeiros. Este aplicativo só precisa de um e-mail para funcionar.</string>
|
||||
|
||||
<string name="Intro3Headline">Rápido</string>
|
||||
<string name="Intro3Message"><b>Envie mensagens</b> num átimo.<br/> Interface leve.</string>
|
||||
|
||||
<string name="Intro4Headline">Poderoso</string>
|
||||
<string name="Intro4Message"><b>Sem limites</b> para chats, imagens, vídeos, áudio e mais. Multicliente.</string>
|
||||
|
||||
<string name="Intro5Headline">Grátis</string>
|
||||
<string name="Intro5Message"><b>Delta Chat</b> será sempre grátis, de Código livre e sem propagandas.</string>
|
||||
|
||||
<string name="Intro6Headline">Seguro</string>
|
||||
<string name="Intro6Message"><b>Criptografia</b> com as tecnologias mais usadas. Suas mensagens ficam no servidor de e-mail.</string>
|
||||
|
||||
<string name="Intro7Headline">Confiável</string>
|
||||
|
||||
<string name="IntroStartMessaging">Comece a conversar</string>
|
||||
<!--plural-->
|
||||
<string name="Members_zero">%1$d membros</string>
|
||||
<string name="Members_one">%1$d membro</string>
|
||||
<string name="Members_two">%1$d membros</string>
|
||||
<string name="Members_few">%1$d membros</string>
|
||||
<string name="Members_many">%1$d membros</string>
|
||||
<string name="Members_other">%1$d membros</string>
|
||||
<string name="NewMessages_zero">sem novas mensagens</string>
|
||||
<string name="NewMessages_one">%1$d nova mensagem</string>
|
||||
<string name="NewMessages_two">%1$d novas mensagens</string>
|
||||
<string name="NewMessages_few">%1$d novas mensagens</string>
|
||||
<string name="NewMessages_many">%1$d novas mensagens</string>
|
||||
<string name="NewMessages_other">%1$d novas mensagens</string>
|
||||
<string name="messages_zero">sem mensagens</string>
|
||||
<string name="messages_one">%1$d mensagem</string>
|
||||
<string name="messages_two">%1$d mensagens</string>
|
||||
<string name="messages_few">%1$d mensagens</string>
|
||||
<string name="messages_many">%1$d mensagens</string>
|
||||
<string name="messages_other">%1$d mensagens</string>
|
||||
<string name="items_zero">nenhum item</string>
|
||||
<string name="items_one">%1$d item</string>
|
||||
<string name="items_two">%1$d itens</string>
|
||||
<string name="items_few">%1$d itens</string>
|
||||
<string name="items_many">%1$d itens</string>
|
||||
<string name="items_other">%1$d itens</string>
|
||||
<string name="FromChats_zero">de nenhum chat</string>
|
||||
<string name="FromChats_one">de %1$d chat</string>
|
||||
<string name="FromChats_two">de %1$d chats</string>
|
||||
<string name="FromChats_few">de %1$d chats</string>
|
||||
<string name="FromChats_many">de %1$d chats</string>
|
||||
<string name="FromChats_other">de %1$d chats</string>
|
||||
<string name="Seconds_zero">%1$d segundos</string>
|
||||
<string name="Seconds_one">%1$d segundo</string>
|
||||
<string name="Seconds_two">%1$d segundos</string>
|
||||
<string name="Seconds_few">%1$d segundos</string>
|
||||
<string name="Seconds_many">%1$d segundos</string>
|
||||
<string name="Seconds_other">%1$d segundos</string>
|
||||
<string name="Minutes_zero">%1$d minutos</string>
|
||||
<string name="Minutes_one">%1$d minuto</string>
|
||||
<string name="Minutes_two">%1$d minutos</string>
|
||||
<string name="Minutes_few">%1$d minutos</string>
|
||||
<string name="Minutes_many">%1$d minutos</string>
|
||||
<string name="Minutes_other">%1$d minutos</string>
|
||||
<string name="Hours_zero">%1$d horas</string>
|
||||
<string name="Hours_one">%1$d hora</string>
|
||||
<string name="Hours_two">%1$d horas</string>
|
||||
<string name="Hours_few">%1$d horas</string>
|
||||
<string name="Hours_many">%1$d horas</string>
|
||||
<string name="Hours_other">%1$d horas</string>
|
||||
<string name="Days_zero">%1$d dias</string>
|
||||
<string name="Days_one">%1$d dia</string>
|
||||
<string name="Days_two">%1$d dias</string>
|
||||
<string name="Days_few">%1$d dias</string>
|
||||
<string name="Days_many">%1$d dias</string>
|
||||
<string name="Days_other">%1$d dias</string>
|
||||
<string name="Weeks_zero">%1$d semanas</string>
|
||||
<string name="Weeks_one">%1$d semana</string>
|
||||
<string name="Weeks_two">%1$d semanas</string>
|
||||
<string name="Weeks_few">%1$d semanas</string>
|
||||
<string name="Weeks_many">%1$d semanas</string>
|
||||
<string name="Weeks_other">%1$d semanas</string>
|
||||
<string name="Months_zero">%1$d meses</string>
|
||||
<string name="Months_one">%1$d mês</string>
|
||||
<string name="Months_two">%1$d meses</string>
|
||||
<string name="Months_few">%1$d meses</string>
|
||||
<string name="Months_many">%1$d meses</string>
|
||||
<string name="Months_other">%1$d meses</string>
|
||||
<string name="Years_zero">%1$d anos</string>
|
||||
<string name="Years_one">%1$d ano</string>
|
||||
<string name="Years_two">%1$d anos</string>
|
||||
<string name="Years_few">%1$d anos</string>
|
||||
<string name="Years_many">%1$d anos</string>
|
||||
<string name="Years_other">%1$d anos</string>
|
||||
<string name="Users_zero">%1$d usuários</string>
|
||||
<string name="Users_one">%1$d usuário</string>
|
||||
<string name="Users_two">%1$d usuários</string>
|
||||
<string name="Users_few">%1$d usuários</string>
|
||||
<string name="Users_many">%1$d usuários</string>
|
||||
<string name="Users_other">%1$d usuários</string>
|
||||
<string name="Times_zero">%1$d vezes</string>
|
||||
<string name="Times_one">%1$d vez</string>
|
||||
<string name="Times_two">%1$d vezes</string>
|
||||
<string name="Times_few">%1$d vezes</string>
|
||||
<string name="Times_many">%1$d vezes</string>
|
||||
<string name="Times_other">%1$d vezes</string>
|
||||
<string name="Meters_zero">%1$d metros</string>
|
||||
<string name="Meters_one">%1$d metro</string>
|
||||
<string name="Meters_two">%1$d metros</string>
|
||||
<string name="Meters_few">%1$d metros</string>
|
||||
<string name="Meters_many">%1$d metros</string>
|
||||
<string name="Meters_other">%1$d metros</string>
|
||||
<string name="Stickers_zero">%1$d stickers</string>
|
||||
<string name="Stickers_one">%1$d sticker</string>
|
||||
<string name="Stickers_two">%1$d stickers</string>
|
||||
<string name="Stickers_few">%1$d stickers</string>
|
||||
<string name="Stickers_many">%1$d stickers</string>
|
||||
<string name="Stickers_other">%1$d stickers</string>
|
||||
<string name="Photos_zero">%1$d fotos</string>
|
||||
<string name="Photos_one">%1$d foto</string>
|
||||
<string name="Photos_two">%1$d fotos</string>
|
||||
<string name="Photos_few">%1$d fotos</string>
|
||||
<string name="Photos_many">%1$d fotos</string>
|
||||
<string name="Photos_other">%1$d fotos</string>
|
||||
<string name="LastSeenMinutes_zero">visto há %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_one">visto há %1$d minuto</string>
|
||||
<string name="LastSeenMinutes_two">visto há %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_few">visto há %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_many">visto há %1$d minutos</string>
|
||||
<string name="LastSeenMinutes_other">visto há %1$d minutos</string>
|
||||
<string name="LastSeenHours_zero">visto há %1$d horas</string>
|
||||
<string name="LastSeenHours_one">visto há %1$d hora</string>
|
||||
<string name="LastSeenHours_two">visto há %1$d horas</string>
|
||||
<string name="LastSeenHours_few">visto há %1$d horas</string>
|
||||
<string name="LastSeenHours_many">visto há %1$d horas</string>
|
||||
<string name="LastSeenHours_other">visto há %1$d horas</string>
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d membro</item>
|
||||
<item quantity="other">%d membros</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%d contato</item>
|
||||
<item quantity="other">%d contatos</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Eu e %d membro</item>
|
||||
<item quantity="other">Eu e %d membros</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nova mensagem</item>
|
||||
<item quantity="other">%d novas mensagens</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d mensagem</item>
|
||||
<item quantity="other">%d mensagens</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minuto</item>
|
||||
<item quantity="other">%d minutos</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d hora</item>
|
||||
<item quantity="other">%d horas</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d dia</item>
|
||||
<item quantity="other">%d dias</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d semana</item>
|
||||
<item quantity="other">%d semanas</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d mês</item>
|
||||
<item quantity="other">%d meses</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
@@ -444,9 +381,76 @@
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
<string name="formatDateAtTime">%1$s às %2$s</string>
|
||||
<string name="AccountSettings">Configuração de conta</string>
|
||||
<string name="MyAccount">Minha conta</string>
|
||||
<string name="Yes">Sim</string>
|
||||
<string name="No">Não</string>
|
||||
<string name="MyName">Meu nome</string>
|
||||
<string name="MyNameExplain">Assim que seu nome será exibido aos destinatários.\n\nSe não for definido um nome será exibido o seu e-mail aos destinatários.</string>
|
||||
<string name="MyEmailAddress">Meu endereço de e-mail</string>
|
||||
<string name="Password">Senha</string>
|
||||
<string name="SmtpPassword">Senha SMPT</string>
|
||||
<string name="FromAbove">de acima</string>
|
||||
<string name="SmtpLoginname">Usuário SMTP</string>
|
||||
<string name="SmtpPort">Porta SMTP</string>
|
||||
<string name="Automatic">automático</string>
|
||||
<string name="ImapServer">Servidor IMAP</string>
|
||||
<string name="ImapLoginname">Usuário IMAP</string>
|
||||
<string name="SmtpServer">Servidor SMTP</string>
|
||||
<string name="ImapPort">Porta IMAP</string>
|
||||
<string name="InboxHeadline">Caixa de entrada</string>
|
||||
<string name="OutboxHeadline">Caixa de saída</string>
|
||||
<string name="BasicSettings">Configurações básicas</string>
|
||||
<string name="MyAccountExplain">Para provedores de e-mail mais populares as configurações a seguir são detectadas automaticamente.</string>
|
||||
<string name="MyAccountExplain2">Por vezes é necessário habilitar o IMAP/SMTP nas configurações do servidor de e-mail.\n\nSe tiver dificuldades peça ajuda ao servidor ou a algum amigo.</string>
|
||||
<string name="AccountNotConfigured">Conta não configurada</string>
|
||||
<string name="AboutThisProgram">Sobre Delta Chat</string>
|
||||
<string name="NotSet">Não configurado</string>
|
||||
<string name="NewChat">Novo Chat</string>
|
||||
<string name="Deaddrop">Caixa de entrada</string>
|
||||
<string name="Media">Mídias</string>
|
||||
<string name="DeaddropInChatlist">Exibir caixa de entrada na lista de conversas</string>
|
||||
<string name="MuteAlways">Sempre mudo</string>
|
||||
<string name="AskStartChatWith">Começar um chat com <b>%1$s</b>?</string>
|
||||
<string name="DeaddropHint">Para conversar clique na seta.</string>
|
||||
<string name="NotYetImplemented">Esta função ainda não está disponível ou ainda não está completamente desenvolvida.</string>
|
||||
<string name="DefaultStatusText">Enviado pelo Delta Chat Messenger</string>
|
||||
<string name="SubjectPrefix">Mensagem instantânea</string>
|
||||
<string name="SeachUser">Busca</string>
|
||||
<string name="Name" >Nome</string>
|
||||
<string name="EmailAddress">Endereço de e-mail</string>
|
||||
<string name="CannotDeleteContact">Impossível deletar um usuário em uso! Bloqueie-o.</string>
|
||||
<string name="BadEmailAddress">Endereço inválido</string>
|
||||
<string name="ContactDeleted">Usuário deletado.</string>
|
||||
<string name="ContactCreated">Usuário criado.</string>
|
||||
<string name="ViewProfile">Ver perfil</string>
|
||||
<string name="OneMomentPlease">Um momento, por favor…</string>
|
||||
<string name="CannotDeleteChat">Impossível deletar o chat.</string>
|
||||
<string name="NoChatsHelp">Comece uma conversa pressionando \"+\" do canto direito inferior. Pressione o menu para mais opções.</string>
|
||||
<string name="ConfiguringAccount">Configurando conta…</string>
|
||||
<string name="CannotConnect">Impossível conectar! Cheque a configuração.</string>
|
||||
<string name="Intro7Message"><b>Delta Chat</b> é seguro para uso comercial e compatível com os padrões de uso.</string>
|
||||
<string name="InviteMenuEntry">Convidar Amigos</string>
|
||||
<string name="InviteText">Estou usando o Delta Chat messenger - %1$s - meu contato neste app é: %2$s</string>
|
||||
<string name="AdvancedSettings">Configurações avançadas</string>
|
||||
<string name="AskResetNotifications" >Zerar todas as configurações e sons desta página, dos contatos e dos grupos?</string>
|
||||
<string name="AttachFiles">Anexar arquivos</string>
|
||||
<string name="ErrGroupNameEmpty">Por favor designar um nome ao grupo.</string>
|
||||
<string name="MsgNewGroupDraftHint">Escreva a primeira mensagem, possibilitando assim que os demais participem do grupo.\n\n• Tudo bem se nem todos usarem o Delta Chat.\n\n• A primeira mensagem pode demorar um pouco.</string>
|
||||
<string name="MsgNewGroupDraft">Olá! Acabei de criar o grupo \"%1$s\" para conversarmos!</string>
|
||||
<string name="MsgGroupNameChanged">O grupo mudou o nome \"%1$s\" para \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">Imagem do grupo alterada.</string>
|
||||
<string name="MsgMemberAddedToGroup">Adicionado %1$s como membro.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">%1$s removido.</string>
|
||||
<string name="AskRemoveMemberFromGroup">Remover usuário <b>%1$s</b> do grupo?</string>
|
||||
<string name="ErrSelfNotInGroup">É necessário ser um membro do grupo para fazer isso.</string>
|
||||
<string name="MsgGroupLeft">Deixou o grupo.</string>
|
||||
<string name="NoMessagesHint">Enviar mensagem para <b>%1$s</b>:\n\n• Tudo bem se <b>%2$s</b> não usa Delta Chat.\n\n• A primeira mensagem pode demorar um pouco.</string>
|
||||
<string name="SendNRcvReadReceipts">Receber e dar confirmações</string>
|
||||
<string name="E2EEncryption">Criptografia ponta-a-ponta</string>
|
||||
<string name="E2EManagePrivateKeys">Gerir chaves privadas</string>
|
||||
<string name="E2ECompareKeys">Comparar chaves</string>
|
||||
<string name="ResetUserKey">Apagar chave do usuário</string>
|
||||
<string name="ForwardToTitle">Selecione um Chat …</string>
|
||||
</resources>
|
||||
|
||||
|
||||
@@ -20,9 +20,10 @@
|
||||
<string name="SelectChat">Select chat …</string>
|
||||
<string name="Search">Search</string>
|
||||
<string name="MuteNotifications">Mute notifications</string>
|
||||
<string name="MuteFor">Mute for %1$s</string>
|
||||
<string name="MuteFor1Hour">Mute for 1 hour</string>
|
||||
<string name="MuteFor8Hours">Mute for 8 hours</string>
|
||||
<string name="MuteFor2Days">Mute for 2 days</string>
|
||||
<string name="UnmuteNotifications">Unmute</string>
|
||||
<string name="WillUnmuteIn">In %1$s</string>
|
||||
<string name="Draft">Draft</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Please add files to the music library on your device to see them here.</string>
|
||||
@@ -64,8 +65,6 @@
|
||||
<string name="OpenInBrowser">OPEN IN …</string>
|
||||
<string name="SendItems">Send %1$s</string>
|
||||
<string name="OpenUrlAlert">Open url %1$s?</string>
|
||||
<string name="MoreInfo">More info</string>
|
||||
<string name="ShareSendTo">Send to …</string>
|
||||
<string name="ClearRecentEmoji">Clear recent emoji?</string>
|
||||
<string name="AddShortcut">Add widget to home screen</string>
|
||||
<string name="ShortcutAdded">Widget added to home screen</string>
|
||||
@@ -73,13 +72,10 @@
|
||||
<string name="Reply">Reply</string>
|
||||
<string name="ReplyToGroup">Reply to %1$s</string>
|
||||
<string name="ReplyToUser">Reply to %1$s</string>
|
||||
<string name="NotificationMessagesPeopleDisplayOrder">%1$s %2$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">No users yet.</string>
|
||||
<string name="TodayAt">at</string>
|
||||
<string name="YesterdayAt">yesterday at</string>
|
||||
<string name="LastSeen">last seen</string>
|
||||
<string name="LastSeenDate">last seen</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Send message to …</string>
|
||||
<string name="EnterGroupNamePlaceholder">Enter group name</string>
|
||||
@@ -308,14 +304,11 @@
|
||||
<string name="ShareYouLocationUnableManually">Choose manually</string>
|
||||
<string name="AreYouSureBlockContact">Are you sure you want to block this user?</string>
|
||||
<string name="AreYouSureDeleteContact">Are you sure you want to delete this user?</string>
|
||||
<string name="AreYouSureDeleteMessages">Delete %1$s? The messages will also be deleted from the server.</string>
|
||||
<string name="RaiseToSpeakAlert">Would you like to enable "Raise to speak" for voice messages?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat needs access to your contacts so that you can connect with your friends across all your devices.</string>
|
||||
<string name="PermissionStorage">Delta Chat needs access to your storage so that you can send and save photos, videos, music and other media.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat needs access to your microphone so that you can send voice messages.</string>
|
||||
<string name="PermissionNoLocation">Delta Chat needs access to your location so that you can share it with your friends.</string>
|
||||
<string name="PermissionNoLocationPosition">Delta Chat needs access to your location.</string>
|
||||
<string name="PermissionOpenSettings">Settings</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
@@ -340,128 +333,68 @@
|
||||
|
||||
<string name="IntroStartMessaging">Start Messaging</string>
|
||||
<!--plural-->
|
||||
<string name="Members_zero">%1$d members</string>
|
||||
<string name="Members_one">%1$d member</string>
|
||||
<string name="Members_two">%1$d members</string>
|
||||
<string name="Members_few">%1$d members</string>
|
||||
<string name="Members_many">%1$d members</string>
|
||||
<string name="Members_other">%1$d members</string>
|
||||
<string name="NewMessages_zero">no new messages</string>
|
||||
<string name="NewMessages_one">%1$d new message</string>
|
||||
<string name="NewMessages_two">%1$d new messages</string>
|
||||
<string name="NewMessages_few">%1$d new messages</string>
|
||||
<string name="NewMessages_many">%1$d new messages</string>
|
||||
<string name="NewMessages_other">%1$d new messages</string>
|
||||
<string name="messages_zero">no messages</string>
|
||||
<string name="messages_one">%1$d message</string>
|
||||
<string name="messages_two">%1$d messages</string>
|
||||
<string name="messages_few">%1$d messages</string>
|
||||
<string name="messages_many">%1$d messages</string>
|
||||
<string name="messages_other">%1$d messages</string>
|
||||
<string name="items_zero">no items</string>
|
||||
<string name="items_one">%1$d item</string>
|
||||
<string name="items_two">%1$d items</string>
|
||||
<string name="items_few">%1$d items</string>
|
||||
<string name="items_many">%1$d items</string>
|
||||
<string name="items_other">%1$d items</string>
|
||||
<string name="FromChats_zero">from no chats</string>
|
||||
<string name="FromChats_one">from %1$d chat</string>
|
||||
<string name="FromChats_two">from %1$d chats</string>
|
||||
<string name="FromChats_few">from %1$d chats</string>
|
||||
<string name="FromChats_many">from %1$d chats</string>
|
||||
<string name="FromChats_other">from %1$d chats</string>
|
||||
|
||||
<string name="Chats_zero">No chats</string>
|
||||
<string name="Chats_one">%1$d chat</string>
|
||||
<string name="Chats_two">%1$d chats</string>
|
||||
<string name="Chats_few">%1$d chats</string>
|
||||
<string name="Chats_many">%1$d chats</string>
|
||||
<string name="Chats_other">%1$d chats</string>
|
||||
|
||||
<string name="Seconds_zero">%1$d seconds</string>
|
||||
<string name="Seconds_one">%1$d second</string>
|
||||
<string name="Seconds_two">%1$d seconds</string>
|
||||
<string name="Seconds_few">%1$d seconds</string>
|
||||
<string name="Seconds_many">%1$d seconds</string>
|
||||
<string name="Seconds_other">%1$d seconds</string>
|
||||
<string name="Minutes_zero">%1$d minutes</string>
|
||||
<string name="Minutes_one">%1$d minute</string>
|
||||
<string name="Minutes_two">%1$d minutes</string>
|
||||
<string name="Minutes_few">%1$d minutes</string>
|
||||
<string name="Minutes_many">%1$d minutes</string>
|
||||
<string name="Minutes_other">%1$d minutes</string>
|
||||
<string name="Hours_zero">%1$d hours</string>
|
||||
<string name="Hours_one">%1$d hour</string>
|
||||
<string name="Hours_two">%1$d hours</string>
|
||||
<string name="Hours_few">%1$d hours</string>
|
||||
<string name="Hours_many">%1$d hours</string>
|
||||
<string name="Hours_other">%1$d hours</string>
|
||||
<string name="Days_zero">%1$d days</string>
|
||||
<string name="Days_one">%1$d day</string>
|
||||
<string name="Days_two">%1$d days</string>
|
||||
<string name="Days_few">%1$d days</string>
|
||||
<string name="Days_many">%1$d days</string>
|
||||
<string name="Days_other">%1$d days</string>
|
||||
<string name="Weeks_zero">%1$d weeks</string>
|
||||
<string name="Weeks_one">%1$d week</string>
|
||||
<string name="Weeks_two">%1$d weeks</string>
|
||||
<string name="Weeks_few">%1$d weeks</string>
|
||||
<string name="Weeks_many">%1$d weeks</string>
|
||||
<string name="Weeks_other">%1$d weeks</string>
|
||||
<string name="Months_zero">%1$d months</string>
|
||||
<string name="Months_one">%1$d month</string>
|
||||
<string name="Months_two">%1$d months</string>
|
||||
<string name="Months_few">%1$d months</string>
|
||||
<string name="Months_many">%1$d months</string>
|
||||
<string name="Months_other">%1$d months</string>
|
||||
<string name="Years_zero">%1$d years</string>
|
||||
<string name="Years_one">%1$d year</string>
|
||||
<string name="Years_two">%1$d years</string>
|
||||
<string name="Years_few">%1$d years</string>
|
||||
<string name="Years_many">%1$d years</string>
|
||||
<string name="Years_other">%1$d years</string>
|
||||
<string name="Users_zero">%1$d users</string>
|
||||
<string name="Users_one">%1$d user</string>
|
||||
<string name="Users_two">%1$d users</string>
|
||||
<string name="Users_few">%1$d users</string>
|
||||
<string name="Users_many">%1$d users</string>
|
||||
<string name="Users_other">%1$d users</string>
|
||||
<string name="Times_zero">%1$d times</string>
|
||||
<string name="Times_one">%1$d time</string>
|
||||
<string name="Times_two">%1$d times</string>
|
||||
<string name="Times_few">%1$d times</string>
|
||||
<string name="Times_many">%1$d times</string>
|
||||
<string name="Times_other">%1$d times</string>
|
||||
<string name="Meters_zero">%1$d meters</string>
|
||||
<string name="Meters_one">%1$d meter</string>
|
||||
<string name="Meters_two">%1$d meters</string>
|
||||
<string name="Meters_few">%1$d meters</string>
|
||||
<string name="Meters_many">%1$d meters</string>
|
||||
<string name="Meters_other">%1$d meters</string>
|
||||
<string name="Stickers_zero">%1$d stickers</string>
|
||||
<string name="Stickers_one">%1$d sticker</string>
|
||||
<string name="Stickers_two">%1$d stickers</string>
|
||||
<string name="Stickers_few">%1$d stickers</string>
|
||||
<string name="Stickers_many">%1$d stickers</string>
|
||||
<string name="Stickers_other">%1$d stickers</string>
|
||||
<string name="Photos_zero">%1$d photos</string>
|
||||
<string name="Photos_one">%1$d photo</string>
|
||||
<string name="Photos_two">%1$d photos</string>
|
||||
<string name="Photos_few">%1$d photos</string>
|
||||
<string name="Photos_many">%1$d photos</string>
|
||||
<string name="Photos_other">%1$d photos</string>
|
||||
<string name="LastSeenMinutes_zero">last seen %1$d minutes ago</string>
|
||||
<string name="LastSeenMinutes_one">last seen %1$d minute ago</string>
|
||||
<string name="LastSeenMinutes_two">last seen %1$d minutes ago</string>
|
||||
<string name="LastSeenMinutes_few">last seen %1$d minutes ago</string>
|
||||
<string name="LastSeenMinutes_many">last seen %1$d minutes ago</string>
|
||||
<string name="LastSeenMinutes_other">last seen %1$d minutes ago</string>
|
||||
<string name="LastSeenHours_zero">last seen %1$d hours ago</string>
|
||||
<string name="LastSeenHours_one">last seen %1$d hour ago</string>
|
||||
<string name="LastSeenHours_two">last seen %1$d hours ago</string>
|
||||
<string name="LastSeenHours_few">last seen %1$d hours ago</string>
|
||||
<string name="LastSeenHours_many">last seen %1$d hours ago</string>
|
||||
<string name="LastSeenHours_other">last seen %1$d hours ago</string>
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d member</item>
|
||||
<item quantity="other">%d members</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%d contact</item>
|
||||
<item quantity="other">%d contacts</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Me and %d member</item>
|
||||
<item quantity="other">Me and %d members</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d new message</item>
|
||||
<item quantity="other">%d new messages</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d message</item>
|
||||
<item quantity="other">%d messages</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">Delete %d message? The message will also be deleted from the server.</item>
|
||||
<item quantity="other">Delete %d messages? The messages will also be deleted from the server.</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessagesInChats">
|
||||
<!-- Translators: the first string placeholder "%s" gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<item quantity="one">%1$s in %2$d chat</item>
|
||||
<item quantity="other">%1$s in %2$d chats</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d chat</item>
|
||||
<item quantity="other">%d chats</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minute</item>
|
||||
<item quantity="other">%d minutes</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d hour</item>
|
||||
<item quantity="other">%d hours</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d day</item>
|
||||
<item quantity="other">%d days</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d week</item>
|
||||
<item quantity="other">%d weeks</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d month</item>
|
||||
<item quantity="other">%d months</item>
|
||||
</plurals>
|
||||
<plurals name="MaxNotifications">
|
||||
<!-- Translators: the second string placeholder "%s" gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<item quantity="one">At most %1$d notification within %2$s</item>
|
||||
<item quantity="other">At most %1$d notifications within %2$s</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">MMM dd</string>
|
||||
@@ -498,10 +431,6 @@
|
||||
<string name="AboutThisProgram">About Delta Chat</string>
|
||||
<string name="NotSet">Not set</string>
|
||||
<string name="NewChat">New chat</string>
|
||||
<string name="MemberSg">## member</string>
|
||||
<string name="MemberPl">## members</string>
|
||||
<string name="ContactSg">## contact</string>
|
||||
<string name="ContactPl">## contacts</string>
|
||||
<string name="Deaddrop">Mailbox</string>
|
||||
<string name="Media">Media</string>
|
||||
<string name="DeaddropInChatlist">Show mailbox in chatlist</string>
|
||||
@@ -514,7 +443,6 @@
|
||||
<string name="SeachUser">Search user</string>
|
||||
<string name="Name" >Name</string>
|
||||
<string name="EmailAddress">E-mail address</string>
|
||||
<string name="MeAnd">Me and</string>
|
||||
<string name="CannotDeleteContact">Cannot delete users in use, block user instead.</string>
|
||||
<string name="BadEmailAddress">Bad e-mail address.</string>
|
||||
<string name="ContactDeleted">User deleted.</string>
|
||||
@@ -534,11 +462,11 @@
|
||||
<string name="Chats">Chats</string>
|
||||
<string name="ErrGroupNameEmpty">Please enter a name for the group.</string>
|
||||
<string name="MsgNewGroupDraftHint">Write a first message to allow others to reply in this group.\n\n• It is okay if not all members use Delta Chat.\n\n• Delivering the first message may take a moment.</string>
|
||||
<string name="MsgNewGroupDraft">Hello, I\'ve just created the group \"##\" for us.</string>
|
||||
<string name="MsgGroupNameChanged">Group name changed from \"##\" to \"##\".</string>
|
||||
<string name="MsgNewGroupDraft">Hello, I\'ve just created the group \"%1$s\" for us.</string>
|
||||
<string name="MsgGroupNameChanged">Group name changed from \"%1$s\" to \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">Group image changed.</string>
|
||||
<string name="MsgMemberAddedToGroup">Member ## added.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Member ## removed.</string>
|
||||
<string name="MsgMemberAddedToGroup">Member %1$s added.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Member %1$s removed.</string>
|
||||
<string name="AskAddMemberToGroup">Add user <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> to group?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Remove user <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> from group?</string>
|
||||
<string name="ErrSelfNotInGroup">You must be a member of the group to perform this action.</string>
|
||||
|
||||
@@ -2,7 +2,8 @@ Delta Chat Android Frontend
|
||||
================================================================================
|
||||
|
||||
This is the android frontend for Delta Chat. For the backend and other common
|
||||
information, please refer to https://github.com/r10s/messenger-backend .
|
||||
information, please refer to https://github.com/r10s/messenger-backend and to
|
||||
https://getdelta.org .
|
||||
|
||||
|
||||
Build
|
||||
@@ -14,9 +15,9 @@ Beside a build in Android Studio, you have to call `ndk-build` in the
|
||||
|
||||

|
||||
|
||||
You'll also need the backend (https://github.com/r10s/messenger-backend), that
|
||||
must be placed at `../messenger-backend`, however, there is not need to build
|
||||
the backend itself, the android frontend just references the needed files.
|
||||
The backend (https://github.com/r10s/messenger-backend), is checked out
|
||||
automatically; there is not need to build the backend itself, the android
|
||||
frontend just references the needed files.
|
||||
|
||||
The Delta Chat Android Frontend is based upon
|
||||
[Telegram FOSS](https://github.com/slp/Telegram-FOSS).
|
||||
|
||||
Reference in New Issue
Block a user