Compare commits

...

87 Commits

Author SHA1 Message Date
Moxie Marlinspike
028a1ab2b0 Bump version to 3.4.2
// FREEBIE
2015-11-16 11:57:02 -08:00
Moxie Marlinspike
058bcf1f4a More shortcode fixes for Germany
// FREEBIE
2015-11-16 11:35:11 -08:00
Jake McGinty
ae379cd3dd fix external gif sharing
fixes #4539
Closes #4556
// FREEBIE
2015-11-16 11:28:03 -08:00
Jake McGinty
f3a4634d30 fix keyboard/focus regressions
I don't know how it was working the first time.

fixes #4527
Closes #4555
// FREEBIE
2015-11-16 11:27:05 -08:00
Moxie Marlinspike
de3106344a Bump version to 3.4.1
// FREEBIE
2015-11-14 15:43:39 -08:00
Moxie Marlinspike
fecc5e63e8 Update language translations
// FREEBIE
2015-11-14 15:22:30 -08:00
Moxie Marlinspike
69f5aacd25 Consider everything <= len(4) a short code, except short countries
// FREEBIE
2015-11-14 15:17:05 -08:00
Moxie Marlinspike
2a753c7795 Uhh, switch from valid to possible short codes?
Fixes #4478
// FREEBIE
2015-11-13 17:07:43 -08:00
Moxie Marlinspike
c17e24250d Bump version to 3.4.0
// FREEBIE
2015-11-13 11:56:21 -08:00
Moxie Marlinspike
cb60e08da2 Update language translations
// FREEBIE
2015-11-13 11:42:19 -08:00
Moxie Marlinspike
21f04605c6 Don't E164 shortcodes
Fixes #4478
// FREEBIE
2015-11-13 11:23:37 -08:00
Jake McGinty
0c75e652eb bring back the ripple when clicking on preview
Closes #4506
// FREEBIE
2015-11-12 15:20:17 -08:00
Jake McGinty
d3000f384f adhere to android plural standards
// FREEBIE

Closes #4503
2015-11-12 15:20:17 -08:00
Jake McGinty
76b0183e0f move db query off main thread, fix group self-add
fixes #4168
Closes #4502
// FREEBIE
2015-11-12 15:20:17 -08:00
Jake McGinty
e51e5cdfd4 fail faster in FileNotFoundException case
Fixes #3053
Closes #4499
// FREEBIE
2015-11-12 15:20:17 -08:00
Jake McGinty
5b1e5b18f9 reset contact selection after batch invite
fixes #4452
Closes #4498
// FREEBIE
2015-11-12 15:20:16 -08:00
Moxie Marlinspike
fb9ba8cb8d Tint audio controls to be visible in dark theme
Fixes #4353
Closes #4466
// FREEBIE
2015-11-12 15:20:16 -08:00
Moxie Marlinspike
b136fed6f7 Update contact DB on incoming messages
When we receive a Signal message from a previously unregistered
user, reflect that in the contact DB.

Fixes #3949
Closes #4492
// FREEBIE
2015-11-12 15:20:16 -08:00
Jake McGinty
fb8d6cb538 contact selection reeemix
1) RecyclerView-based, with better long scroller
   and more material-inspired look.
2) Add badge for Signal users to contact selection
   list.

// FREEBIE
2015-11-12 15:20:16 -08:00
Moxie Marlinspike
7bec5efe1a Add 'Signal Call' option to contact card
Fixes #4392
Closes #4465
// FREEBIE
2015-11-12 15:20:16 -08:00
agrajaghh
5c59c3f423 make invite strings plural
fixes #4388
Closes #4389

// FREEBIE
2015-11-12 15:20:16 -08:00
Sebastian Morr
181c7dfd85 Add the option to mute notifications for one year.
Fixes #4448.
Closes #4454
2015-11-12 15:20:16 -08:00
Jake McGinty
d05097a6fd Refactor group logic (no visual changes)
Closes #4480
// FREEBIE
2015-11-12 15:20:16 -08:00
Moxie Marlinspike
75483299dc Upgrade libtextsecure 1.8.2
// FREEBIE
2015-11-12 15:20:16 -08:00
brumsel
5333647794 Always play "sonar" on call initialization
If "sonar" was the last sound played on the last call, it wasn't
 being played on the next calling attempt.

Closes #4473
2015-11-12 15:20:16 -08:00
RiseT
e1f9519235 Replace 'my' with 'your'
See
https://www.google.com/design/spec/style/writing.html#writing-language

// FREEBIE
2015-11-12 15:20:16 -08:00
RiseT
7f0b0803bc Change 'SD card' to 'storage' & cosmetic corrections
Fixes #3920
2015-11-12 15:20:16 -08:00
Moxie Marlinspike
c867316e6a Bump version to 3.3.2
// FREEBIE
2015-11-11 08:33:28 -08:00
Jake McGinty
b0137c08cb go back to old CameraView
Fixes #4415
Closes #4484
// FREEBIE
2015-11-10 15:48:50 -08:00
Simeon J Morgan
534421eb57 Update build instructions with new URLs.
Expand Android Studio steps.

Closes #4462
2015-11-10 14:14:25 -08:00
Moxie Marlinspike
b97363e407 Reintroduce telephony requirement
Fixes #4457
// FREEBIE
2015-11-09 09:58:24 -08:00
Moxie Marlinspike
aaf3f70ce5 Bump version to 3.3.1
// FREEBIE
2015-11-06 16:59:50 -08:00
Jake McGinty
5fd5b1e1ed Fix "twitchy fingers" bug in CameraView
better diagnostic information, too.

Fixes #4422
Closes #4427
// FREEBIE
2015-11-06 15:00:29 -08:00
Moxie Marlinspike
56a3c99289 Resolve service deadlock issue
Fixes #4409
// FREEBIE
2015-11-06 11:57:22 -08:00
Moxie Marlinspike
b5b564cfe1 Make sure the number we add canonicalizes to the number we know.
Fixes #4406
// FREEBIE
2015-11-06 10:50:47 -08:00
Moxie Marlinspike
0b7b37bf00 Bump version to 3.3.0
// FREEBIE
2015-11-05 13:04:20 -08:00
Moxie Marlinspike
5b08be8d01 We don't need jitter stats logging in production anyway
// FREEBIE
2015-11-05 12:52:31 -08:00
Moxie Marlinspike
8d4f3803df Switch SMS listener to using dotall
// FREEBIE
2015-11-05 11:44:03 -08:00
Moxie Marlinspike
56117237b6 Updated translations
// FREEBIE
2015-11-05 11:39:02 -08:00
Jake McGinty
796940bda5 fix ContactSelectionListItem NPE
Fixes #4394
Closes #4399
// FREEBIE
2015-11-05 11:12:22 -08:00
Jake McGinty
00a18f58a7 catch MMS NPE for time being
Fixes #4379
Closes #4401
// FREEBIE
2015-11-05 11:11:28 -08:00
agrajaghh
0ef56fb86d add custom color to MessageDetailsActivity
Fixes #3560
Closes #3580

// FREEBIE
2015-11-05 11:10:20 -08:00
Jake McGinty
381c8820b1 remove unused CircleIndicator
Fixes #4393
closes #4397
// FREEBIE
2015-11-05 11:02:56 -08:00
Jodson Leandro
a930ec5404 Flag secure in all activities that extends BaseActionBarActivity
Closes #4152
Fixes #3327
2015-11-05 11:00:31 -08:00
Stefan Seide
e808ae0ddc remove brackets from recipient numbers as not allowed for dialing
Closes #3450
2015-11-05 10:07:52 -08:00
rafael81
750e25388f Update regular expression pattern for sms verification
Closes #4375
2015-11-05 09:52:03 -08:00
Moxie Marlinspike
5757962f95 Don't require implicit features
// FREEBIE
2015-11-05 09:51:42 -08:00
Moxie Marlinspike
c15d8ebd2e Better locking on jitter buffer stats printing
// FREEBIE
2015-11-04 17:56:21 -08:00
Moxie Marlinspike
09c57f3f44 Add close button to attachment type selector
// FREEBIE
2015-11-04 17:56:21 -08:00
Moxie Marlinspike
be0ca330f5 Nicer looking attachment type selector
Closes #4367
// FREEBIE
2015-11-04 17:56:21 -08:00
Moxie Marlinspike
2941ac0e2c Update material-dialogs dependency
Closes #4103
// FREEBIE
2015-11-04 17:56:21 -08:00
Jake McGinty
d6a061d50f extra logging for activity lifecycle
to help debug #2971
Closes #4342
// FREEBIE
2015-11-04 17:56:21 -08:00
Jake McGinty
59f2446a2b unjankify incoming media sharing
Closes #4374
Fixes #3989
// FREEBIE
2015-11-04 17:56:21 -08:00
Moxie Marlinspike
60ab71099f Don't show group avatar icons in thread preview
Fixes #4383
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
3f6cdd4133 Add audio focus into the audio dance.
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
72b9c37ec8 Mark muted messages as read when in thread
Fixes #3562
Closes #3643
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
5704fad7cc Fix for broken build
// FREEBIE
2015-11-04 17:56:20 -08:00
Gil
849c346a21 Updates visibleThreadId after sending a message in a new thread
Fixes #3536
Closes #4146
2015-11-04 17:56:20 -08:00
Manuel Geier
328a3ff20e show total number of messages or threads to be deleted
in delete-confirm-dialogs

Closes #4284

// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
24bcea393f Removed backup file
Closes #4293
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
aade4c7af3 Correctly set audio mode
Fixes #4244
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
58406d6b37 Consider unregister successfull on 401 from RP server.
Fixes #4362
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
004a87eba9 Lower SMS retry count to 15
Closes #4296
// FREEBIE
2015-11-04 17:56:20 -08:00
Jake McGinty
3fa11d9931 show transfer progress when re-sending failed media
Closes #4341
fixes #4104
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
cad8ff766a Don't set media volume to zero.
Not sure what SOA was thinking with this one.

Fixes #4201
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
5b6f49c993 Switch RedPhone view<->service interaction to use event bus
Fixes #4234
// FREEBIE
2015-11-04 17:56:20 -08:00
Jake McGinty
3e798a9863 batch invitation
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
4371708fc4 Fix onNewIntent transport selection assertion
Fixes #4301
// FREEBIE
2015-11-04 17:56:20 -08:00
Jake McGinty
d4887e11be fix failed incoming MMS regression
Fixes #4308
Closes #4334
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
d0e852f19f Retry on network failures during media message sends.
Fixes #4332
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
8d82033855 Notify when contacts join Signal
Closes #4314
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
434ce4f9c9 Canonicalize entries in canonical address database.
Make all our queries E164, so eventually everything in there
will be E164.  Stops thrashing between formats.

Closes #4306

// FREEBIE
2015-11-04 17:56:20 -08:00
Jake McGinty
8fd0ea39aa Simplify excessively convoluted camera logic
1) QuickCamera logic moved into CameraView

2) The strategies for texture vs. surface view were too complex
   with no observed gain. Better to remove and have to re-add
   if necessary than assume it to be necessary.

3) Drop CWAC-Camera dependency - the device profiles weren't being
   used very much and even that is deprecated so we'd be left on
   our own with new hardware. Not worth it.

4) Selfies first.

5) Layout/orientation mathy logic from CWAC moved into CameraUtils,
   with the  hopes that most of it might be further simplified or
   rendered unnecessary in the future.

Closes #4326

// FREEBIE
2015-11-04 17:56:20 -08:00
RiseT
08be47c03e Adjust a couple of strings in order to include calls AND messages.
Closes #4311
2015-11-04 17:56:20 -08:00
RiseT
13bd3c773c Make some 'notification sound' strings consistent with the rest
Closes #4324
// FREEBIE
2015-11-04 17:56:20 -08:00
Moxie Marlinspike
751fa21f60 Ignore envelopes with unknown type
// FREEBIE
2015-11-04 17:56:19 -08:00
Moxie Marlinspike
339d352d6e Better support for revoked audio permissions.
// FREEBIE
2015-11-04 17:56:19 -08:00
Sam Lanning
79cb6166d5 Consolodate Base64 Classes
both org.thoughtcrime.redphone.util and
org.thoughtcrime.securesms.util have a Base64 util class,
however, other than whitespace changes, and the securesms
one having a couple of extra methods, they are the same.

This commit removes org.thoughtcrime.redphone.util.Base64 and
anything referencing it now uses
org.thoughtcrime.securesms.util.Base64

Closes #4294
2015-11-04 17:56:19 -08:00
Moxie Marlinspike
11a93fabe5 Synchronize with paired devices when a contact changes.
// FREEBIE
2015-11-04 17:56:19 -08:00
Moxie Marlinspike
05eba8c2f0 Remove travis badge
Closes #4381
// FREEBIE
2015-11-04 17:53:11 -08:00
Moxie Marlinspike
ac66c41aee Updated README to reflect name change
// FREEBIE
2015-11-03 16:47:03 -08:00
Moxie Marlinspike
c70904d7f7 Bump version to 3.1.1
// FREEBIE
2015-10-28 17:12:06 -07:00
Moxie Marlinspike
bd280ec895 Only prompt for importing system SMS db when we're the SMS app
// FREEBIE
2015-10-28 16:50:45 -07:00
Jake McGinty
02c781eb25 update reminders when dismissed
Closes #4325
// FREEBIE
2015-10-28 16:43:48 -07:00
Moxie Marlinspike
50794ba49d Updated language translations
// FREEBIE
2015-10-28 16:14:20 -07:00
Moxie Marlinspike
a086a2471c Fix crash when creating group with no avatar icon
Fixes #4320
// FREEBIE
2015-10-28 10:36:21 -07:00
Moxie Marlinspike
4271732b10 Be more rigorous about discerning media message thread.
Fixes #4312
// FREEBIE
2015-10-28 10:24:55 -07:00
257 changed files with 6521 additions and 5934 deletions

View File

@@ -2,8 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.thoughtcrime.securesms"
android:versionCode="161"
android:versionName="3.1.0">
android:versionCode="169"
android:versionName="3.4.2">
<uses-sdk tools:overrideLibrary="com.amulyakhare.textdrawable,com.astuetz.pagerslidingtabstrip,pl.tajchert.waitingdots,com.h6ah4i.android.multiselectlistpreferencecompat"/>
@@ -18,6 +18,8 @@
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-feature android:name="android.hardware.microphone" android:required="false"/>
<uses-feature android:name="android.hardware.wifi" android:required="false"/>
<uses-feature android:name="android.hardware.portrait" android:required="false"/>
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<uses-permission android:name="org.thoughtcrime.securesms.ACCESS_SECRETS"/>
<uses-permission android:name="android.permission.READ_PROFILE"/>
@@ -112,6 +114,16 @@
<activity android:name=".ImportExportActivity"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name=".InviteActivity"
android:theme="@style/TextSecure.HighlightTheme"
android:windowSoftInputMode="stateHidden"
android:parentActivityName=".ConversationListActivity"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.thoughtcrime.securesms.ConversationListActivity" />
</activity>
<activity android:name=".PromptMmsActivity"
android:label="Configure MMS Settings"
android:windowSoftInputMode="stateUnchanged"
@@ -221,6 +233,7 @@
<activity android:name=".NewConversationActivity"
android:theme="@style/TextSecure.LightNoActionBar"
android:windowSoftInputMode="stateAlwaysVisible"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name=".PushContactSelectionActivity"
@@ -305,6 +318,19 @@
</intent-filter>
</activity>
<activity android:name="org.thoughtcrime.redphone.RedPhoneShare"
android:theme="@style/NoAnimation.Theme.BlackScreen"
android:launchMode="singleTask"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/vnd.org.thoughtcrime.securesms.call" />
</intent-filter>
</activity>
<activity android:name=".RecipientPreferenceActivity"
android:theme="@style/TextSecure.LightNoActionBar"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>

View File

@@ -1,22 +1,22 @@
Building TextSecure
=====================
Building Signal
===============
Basics
------
TextSecure uses [Gradle](http://gradle.org) to build the project and to maintain
Signal uses [Gradle](http://gradle.org) to build the project and to maintain
dependencies.
Building TextSecure
-------------------
Building Signal
---------------
The following steps should help you (re)build TextSecure from the command line.
The following steps should help you (re)build Signal from the command line.
1. Checkout the source somewhere on your filesystem with
1. Checkout the Signal-Android project source with the command:
git clone https://github.com/WhisperSystems/TextSecure.git
git clone https://github.com/WhisperSystems/Signal-Android.git
2. Make sure you have the [Android SDK](https://developer.android.com/sdk/index.html) installed somewhere on your system.
2. Make sure you have the [Android SDK](https://developer.android.com/sdk/index.html) installed.
3. Ensure that the following packages are installed from the Android SDK manager:
* Android SDK Build Tools
* SDK Platform
@@ -38,8 +38,8 @@ Source assets tend to be large binary blobs, which are best stored outside of gi
Sample command for generating our audio placeholder image:
```bash
pngs_from_svg.py ic_audio.svg /path/to/TextSecure/res/ 150 --color #000 --opacity 0.54 --suffix _light
pngs_from_svg.py ic_audio.svg /path/to/TextSecure/res/ 150 --color #fff --opacity 1.00 --suffix _light
pngs_from_svg.py ic_audio.svg /path/to/Signal/res/ 150 --color #000 --opacity 0.54 --suffix _light
pngs_from_svg.py ic_audio.svg /path/to/Signal/res/ 150 --color #fff --opacity 1.00 --suffix _light
```
Setting up a development environment
@@ -48,13 +48,14 @@ Setting up a development environment
[Android Studio](https://developer.android.com/sdk/installing/studio.html) is the recommended development environment.
1. Install Android Studio.
2. Make sure the "Android Support Repository" is installed in the Android Studio SDK.
3. Make sure the latest "Android SDK build-tools" is installed in the Android Studio SDK.
4. Create a new Android Studio project. from the Quickstart pannel (use File > Close Project to see it), choose "Checkout from Version Control" then "git".
5. Paste the URL for the TextSecure project when prompted (https://github.com/WhisperSystems/TextSecure.git).
6. Android studio should detect the presence of a project file and ask you whether to open it. Click "yes".
7. Default config options should be good enough.
8. Project initialisation and build should proceed.
2. Open Android Studio. On a new installation, the Quickstart panel will appear. If you have open projects, close them using "File > Close Project" to see the Quickstart panel.
3. From the Quickstart panel, choose "Configure" then "SDK Manager".
4. In the SDK Tools tab of the SDK Manager, make sure that the "Android Support Repository" is installed, and that the latest "Android SDK build-tools" are installed. Click "OK" to return to the Quickstart panel.
5. From the Quickstart panel, choose "Checkout from Version Control" then "git".
6. Paste the URL for the Signal-Android project when prompted (https://github.com/WhisperSystems/Signal-Android.git).
7. Android studio should detect the presence of a project file and ask you whether to open it. Click "yes".
9. Default config options should be good enough.
9. Project initialisation and build should proceed.
Contributing code
-----------------
@@ -67,3 +68,4 @@ Mailing list
Development discussion happens on the whispersystems mailing list.
[To join](https://lists.riseup.net/www/info/whispersystems)
Send emails to whispersystems@lists.riseup.net

View File

@@ -1,8 +1,8 @@
# TextSecure [![Build Status](https://travis-ci.org/WhisperSystems/TextSecure.svg?branch=master)](https://travis-ci.org/WhisperSystems/TextSecure)
# Signal Android
TextSecure is a messaging app for simple private communication with friends.
Signal is a messaging app for simple private communication with friends.
TextSecure uses your phone's data connection (WiFi/3G/4G) to communicate securely, optionally supports plain SMS/MMS to function as a unified messenger, and can also encrypt the stored messages on your phone.
Signal uses your phone's data connection (WiFi/3G/4G) to communicate securely, optionally supports plain SMS/MMS to function as a unified messenger, and can also encrypt the stored messages on your phone.
Currently available on the Play store.
@@ -11,29 +11,29 @@ Currently available on the Play store.
## Contributing Bug reports
We use GitHub for bug tracking. Please search the existing issues for your bug and create a new one if the issue is not yet tracked!
https://github.com/WhisperSystems/TextSecure/issues
https://github.com/WhisperSystems/Signal-Android/issues
## Joining the Beta
Want to live life on the bleeding edge and help out with testing?
You can subscribe to TextSecure Beta releases here:
You can subscribe to Signal Android Beta releases here:
https://play.google.com/apps/testing/org.thoughtcrime.securesms
If you're interested in a life of peace and tranquility, stick with the standard releases.
## Contributing Translations
Interested in helping to translate TextSecure? Contribute here:
Interested in helping to translate Signal? Contribute here:
https://www.transifex.com/projects/p/textsecure-official/
## Contributing Code
Instructions on how to setup your development environment and build TextSecure can be found in [BUILDING.md](https://github.com/WhisperSystems/TextSecure/blob/master/BUILDING.md).
Instructions on how to setup your development environment and build Signal can be found in [BUILDING.md](https://github.com/WhisperSystems/Signal-Android/blob/master/BUILDING.md).
If you're new to the TextSecure codebase, we recommend going through our issues and picking out a simple bug to fix (check the "easy" label in our issues) in order to get yourself familiar.
If you're new to the Signal codebase, we recommend going through our issues and picking out a simple bug to fix (check the "easy" label in our issues) in order to get yourself familiar.
For larger changes and feature ideas, we ask that you propose it on the mailing list for a high-level discussion before implementation.
This repository is set up with [BitHub](https://whispersystems.org/blog/bithub/), so you can make money for committing to TextSecure. The current BitHub price for an accepted pull request is:
This repository is set up with [BitHub](https://whispersystems.org/blog/bithub/), so you can make money for committing to Signal. The current BitHub price for an accepted pull request is:
[![Current BitHub Price](https://bithub.herokuapp.com/v1/status/payment/commit/)](https://whispersystems.org/blog/bithub/)
@@ -59,7 +59,7 @@ http://support.whispersystems.org/
## Documentation
Looking for documentation? Check out the wiki!
https://github.com/WhisperSystems/TextSecure/wiki
https://github.com/WhisperSystems/Signal-Android/wiki
# Legal things
## Cryptography Notice

View File

@@ -29,8 +29,11 @@ repositories {
maven { // textdrawable
url 'https://dl.bintray.com/amulyakhare/maven'
}
maven { // material-dialogs
url "https://jitpack.io"
}
maven { // cwac-camera
url 'https://repo.commonsware.com.s3.amazonaws.com'
url 'https://repo.commonsware.com.s3.amazonaws.com'
}
jcenter()
mavenLocal()
@@ -56,8 +59,8 @@ dependencies {
compile 'pl.tajchert:waitingdots:0.1.0'
compile 'com.soundcloud.android:android-crop:0.9.10@aar'
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:21.0.3'
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.melnykov:floatingactionbutton:1.3.0'
compile 'com.google.zxing:android-integration:3.1.0'
compile ('com.android.support:support-v4-preferencefragment:1.0.0@aar'){
@@ -78,9 +81,8 @@ dependencies {
compile 'org.whispersystems:jobmanager:1.0.2'
compile 'org.whispersystems:libpastelog:1.0.6'
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
compile 'org.whispersystems:textsecure-android:1.8.1'
compile 'org.whispersystems:textsecure-android:1.8.2'
compile 'com.h6ah4i.android.compat:mulsellistprefcompat:1.0.0'
compile 'me.relex:circleindicator:1.0.0@aar'
testCompile 'junit:junit:4.12'
testCompile 'org.assertj:assertj-core:1.7.1'
@@ -114,11 +116,11 @@ dependencyVerification {
'com.makeramen:roundedimageview:1f5a1865796b308c6cdd114acc6e78408b110f0a62fc63553278fbeacd489cd1',
'com.pnikosis:materialish-progress:d71d80e00717a096784482aee21001a9d299fec3833e4ebd87739ed36cf77c54',
'de.greenrobot:eventbus:61d743a748156a372024d083de763b9e91ac2dcb3f6a1cbc74995c7ddab6e968',
'com.afollestad:material-dialogs:c17205f0d300baa307599c428a5473a6659684c94a5f68ae3c2b84b5e4741172',
'com.afollestad:material-dialogs:624dffff240533ca69414464f416c81c88c5c29689bb169093b9a333104f2471',
'pl.tajchert:waitingdots:2835d49e0787dbcb606c5a60021ced66578503b1e9fddcd7a5ef0cd5f095ba2c',
'com.soundcloud.android:android-crop:ffd4b973cf6e97f7d64118a0dc088df50e9066fd5634fe6911dd0c0c5d346177',
'com.android.support:appcompat-v7:9a2355537c2f01cf0b95523605c18606b8d824017e6e94a05c77b0cfc8f21c96',
'com.android.support:recyclerview-v7:e525ad3f33c84bb12b73d2dc975b55364a53f0f2d0697e043efba59ba73e22d2',
'com.android.support:appcompat-v7:4b5ccba8c4557ef04f99aa0a80f8aa7d50f05f926a709010a54afd5c878d3618',
'com.android.support:recyclerview-v7:b0f530a5b14334d56ce0de85527ffe93ac419bc928e2884287ce1dddfedfb505',
'com.melnykov:floatingactionbutton:15d58d4fac0f7a288d0e5301bbaf501a146f5b3f5921277811bf99bd3b397263',
'com.google.zxing:android-integration:89e56aadf1164bd71e57949163c53abf90af368b51669c0d4a47a163335f95c4',
'com.android.support:support-v4-preferencefragment:5470f5872514a6226fa1fc6f4e000991f38805691c534cf0bd2778911fc773ad',
@@ -130,15 +132,14 @@ dependencyVerification {
'org.whispersystems:jobmanager:506f679fc2fcf7bb6d10f00f41d6f6ea0abf75c70dc95b913398661ad538a181',
'org.whispersystems:libpastelog:550d33c565380d90f4c671e7b8ed5f3a6da55a9fda468373177106b2eb5220b2',
'com.amulyakhare:com.amulyakhare.textdrawable:54c92b5fba38cfd316a07e5a30528068f45ce8515a6890f1297df4c401af5dcb',
'org.whispersystems:textsecure-android:66ef91b93a08f0a290ef14c5e66af21113cd4b2c814c231855011ba4763f41cc',
'org.whispersystems:textsecure-android:83634e792157e41a6eb2aef2a4cf5db5a13f0a8ce4e9917334200fe2d37f2401',
'com.h6ah4i.android.compat:mulsellistprefcompat:47167c5cb796de1a854788e9ff318358e36c8fb88123baaa6e38fb78511dfabe',
'me.relex:circleindicator:996766d3dad51401331515e742948f2a10982d17c626edd976a246b9bf046aac',
'com.nineoldandroids:library:68025a14e3e7673d6ad2f95e4b46d78d7d068343aa99256b686fe59de1b3163a',
'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff',
'com.madgag.spongycastle:core:8d6240b974b0aca4d3da9c7dd44d42339d8a374358aca5fc98e50a995764511f',
'org.whispersystems:textsecure-java:728a549830266cc1472054f400391cd946b25ea03ad76ac4839dd1cab626a247',
'org.whispersystems:textsecure-java:16adc2803623febce408189cd8a05ee57e3641cdd73be3e741211e6161aaf045',
'org.whispersystems:axolotl-android:40d3db5004a84749a73f68d2f0d01b2ae35a73c54df96d8c6c6723b96efb6fc0',
'com.googlecode.libphonenumber:libphonenumber:eba17eae81dd622ea89a00a3a8c025b2f25d342e0d9644c5b62e16f15687c3ab',
'com.googlecode.libphonenumber:libphonenumber:9625de9d2270e9a280ff4e6d9ef3106573fb4828773fd32c9b7614f4e17d2811',
'com.google.protobuf:protobuf-java:e0c1c64575c005601725e7c6a02cebf9e1285e888f756b2a1d73ffa8d725cc74',
'com.squareup.okhttp:okhttp:89b7f63e2e5b6c410266abc14f50fe52ea8d2d8a57260829e499b1cd9f0e61af',
'com.fasterxml.jackson.core:jackson-databind:835097bcdd11f5bc8a08378c70d4c8054dfa4b911691cc2752063c75534d198d',
@@ -148,8 +149,8 @@ dependencyVerification {
'com.fasterxml.jackson.core:jackson-annotations:0ca408c24202a7626ec8b861e99d85eca5e38b73311dd6dd12e3e9deecc3fe94',
'com.fasterxml.jackson.core:jackson-core:cbf4604784b4de226262845447a1ad3bb38a6728cebe86562e2c5afada8be2c0',
'org.whispersystems:curve25519-java:9ccef8f5aba05d9942336f023c589d6278b4f9135bdc34a7bade1f4e7ad65fa3',
'com.android.support:support-v4:1e2e4d35ac7fd30db5ce3bc177b92e4d5af86acef2ef93e9221599d733346f56',
'com.android.support:support-annotations:7bc07519aa613b186001160403bcfd68260fa82c61cc7e83adeedc9b862b94ae',
'com.android.support:support-v4:c62f0d025dafa86f423f48df9185b0d89496adbc5f6a9be5a7c394d84cf91423',
'com.android.support:support-annotations:104f353b53d5dd8d64b2f77eece4b37f6b961de9732eb6b706395e91033ec70a',
]
}

View File

@@ -1,14 +0,0 @@
LOCAL_PATH := $(call my-dir)
# Enable to be able to use ALOG* with #include "cutils/log.h"
#log_c_includes += system/core/include
#log_shared_libraries := liblog
# These makefiles are here instead of being Android.mk files in the
# respective crypto, ssl, and apps directories so
# that import_openssl.sh import won't remove them.
include $(LOCAL_PATH)/build-config-64.mk
include $(LOCAL_PATH)/build-config-32.mk
include $(LOCAL_PATH)/Crypto.mk
include $(LOCAL_PATH)/Ssl.mk
include $(LOCAL_PATH)/Apps.mk

View File

@@ -50,9 +50,15 @@ CallAudioManager::~CallAudioManager() {
__android_log_print(ANDROID_LOG_WARN, TAG, "Shutting down...");
microphoneReader.stop();
__android_log_print(ANDROID_LOG_WARN, TAG, "Stopping audio player...");
audioPlayer.stop();
__android_log_print(ANDROID_LOG_WARN, TAG, "Stopping jitter buffer...");
webRtcJitterBuffer.stop();
__android_log_print(ANDROID_LOG_WARN, TAG, "Freeing resources...");
if (sockAddr != NULL) {
free(sockAddr);
}

View File

@@ -1,4 +1,5 @@
#include "WebRtcJitterBuffer.h"
//#include <time.h>
#define TAG "WebRtcJitterBuffer"
@@ -26,8 +27,8 @@ int WebRtcJitterBuffer::init() {
return -1;
}
pthread_t thread;
pthread_create(&thread, NULL, &WebRtcJitterBuffer::collectStats, this);
// pthread_t thread;
// pthread_create(&thread, NULL, &WebRtcJitterBuffer::collectStats, this);
return 0;
}
@@ -96,6 +97,22 @@ void WebRtcJitterBuffer::collectStats() {
stats.accelerate_rate,
stats.clockdrift_ppm,
stats.added_zero_samples);
// struct timespec timeToWait;
// struct timeval now;
// gettimeofday(&now, NULL);
//
// timeToWait.tv_sec = now.tv_sec;
// timeToWait.tv_nsec = now.tv_usec * 1000;
// timeToWait.tv_sec += 30;
//
// pthread_mutex_lock(&lock);
//
// if (running) {
// pthread_cond_timedwait(&condition, &lock, &timeToWait);
// }
//
// pthread_mutex_unlock(&lock);
sleep(30);
}
}

Binary file not shown.

Binary file not shown.

View File

@@ -2,4 +2,7 @@
-keepattributes SourceFile,LineNumberTable
-keep class org.whispersystems.** { *; }
-keep class org.thoughtcrime.securesms.** { *; }
-keepclassmembers class ** {
public void onEvent*(**);
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="350"
android:fromYDelta="100%"
android:toYDelta="0%" />
</set>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="350"
android:fromYDelta="0%"
android:toYDelta="100%" />
</set>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1009 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 483 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 683 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 875 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 900 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topLeftRadius="44dp"
android:topRightRadius="44dp"
android:bottomLeftRadius="44dp"
android:bottomRightRadius="0dp"/>
<solid android:color="#FF0288D1" />
<size android:height="88dp" android:width="88dp" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 614 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 548 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 833 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 717 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 374 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 670 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<bitmap android:src="@drawable/ic_badge_24dp"
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="bottom|right"
android:tileMode="disabled" />

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:topLeftRadius="44dp"
android:topRightRadius="44dp"
android:bottomLeftRadius="0dp"
android:bottomRightRadius="44dp"/>
<solid android:color="#FF0288D1" />
<size android:height="88dp" android:width="88dp" />
</shape>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="2dp"/>
<solid android:color="#FF0288D1"/>
<size android:height="32dp" android:width="4dp"/>
</shape>
</item>
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<corners android:radius="2dp"/>
<solid android:color="#FF737373"/>
<size android:height="32dp" android:width="4dp"/>
</shape>
</item>
</selector>

View File

@@ -0,0 +1,183 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attachment_type_selector_background"
android:elevation="4dp"
android:padding="16dp">
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="4">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<org.thoughtcrime.securesms.components.CircleColorImageView
android:id="@+id/gallery_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_image_white_36dp"
android:scaleType="center"
android:elevation="4dp"
app:circleColor="@color/purple_400"/>
<TextView android:layout_marginTop="10dp"
style="@style/AttachmentTypeLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/attachment_type_selector__image"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:orientation="vertical">
<org.thoughtcrime.securesms.components.CircleColorImageView
android:id="@+id/audio_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_headset_white_36dp"
android:scaleType="center"
android:elevation="4dp"
app:circleColor="@color/orange_400"/>
<TextView android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AttachmentTypeLabel"
android:text="@string/attachment_type_selector__audio"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_weight="1"
android:orientation="vertical">
<org.thoughtcrime.securesms.components.CircleColorImageView
android:id="@+id/video_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_local_movies_white_36dp"
android:scaleType="center"
android:elevation="4dp"
app:circleColor="@color/red_400"/>
<TextView android:layout_marginTop="10dp"
style="@style/AttachmentTypeLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/attachment_type_selector__video"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical"
android:layout_weight="1">
<org.thoughtcrime.securesms.components.CircleColorImageView
android:id="@+id/contact_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_person_white_36dp"
android:scaleType="center"
android:elevation="4dp"
app:circleColor="@color/blue_400"/>
<TextView android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AttachmentTypeLabel"
android:text="@string/attachment_type_selector__contact"/>
</LinearLayout>
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:weightSum="4">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<org.thoughtcrime.securesms.components.CircleColorImageView
android:id="@+id/camera_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_camera_white_36dp"
android:scaleType="center"
android:elevation="4dp"
app:circleColor="@color/green_400"/>
<TextView android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AttachmentTypeLabel"
android:text="@string/attachment_type_selector__camera"/>
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
</LinearLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:orientation="vertical">
<org.thoughtcrime.securesms.components.CircleColorImageView
android:id="@+id/close_button"
android:layout_width="60dp"
android:layout_height="60dp"
android:src="@drawable/ic_keyboard_arrow_down_white_36dp"
android:scaleType="center"
android:elevation="4dp"
app:circleColor="@color/gray50"/>
<TextView android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/AttachmentTypeLabel"
android:text=" "/>
</LinearLayout>
</LinearLayout>
</LinearLayout>

View File

@@ -0,0 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView android:id="@+id/action_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_search_white_24dp" />
<LinearLayout android:id="@+id/toggle_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText android:id="@+id/search_view"
android:layout_height="wrap_content"
android:layout_width="0px"
android:layout_weight="1"
android:layout_marginLeft="5dp"
android:hint="@string/contact_selection_activity__enter_name_or_number"
android:inputType="textPersonName"
style="@style/TextSecure.TitleTextStyle"
android:background="@android:color/transparent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"/>
<org.thoughtcrime.securesms.components.AnimatingToggle
android:id="@+id/button_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<ImageView android:id="@+id/search_dialpad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_dialpad_white_24dp" />
<ImageView android:id="@+id/search_keyboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:visibility="gone"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_keyboard_white_24dp" />
<ImageView android:id="@+id/search_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:visibility="gone"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_clear_white_24dp" />
</org.thoughtcrime.securesms.components.AnimatingToggle>
</LinearLayout>
</LinearLayout>
</merge>

View File

@@ -5,94 +5,17 @@
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.v7.widget.Toolbar
<org.thoughtcrime.securesms.components.ContactFilterToolbar
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/TextSecure.LightActionBar">
android:theme="@style/TextSecure.LightActionBar" />
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView android:id="@+id/action_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_search_white_24dp" />
<LinearLayout android:id="@+id/toggle_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<EditText android:id="@+id/search_view"
android:layout_height="wrap_content"
android:layout_width="0px"
android:layout_weight="1"
android:layout_marginLeft="5dp"
android:hint="@string/contact_selection_activity__enter_name_or_number"
android:inputType="textPersonName"
style="@style/TextSecure.TitleTextStyle"
android:background="@android:color/transparent"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"/>
<org.thoughtcrime.securesms.components.AnimatingToggle
android:id="@+id/button_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center">
<ImageView android:id="@+id/search_dialpad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_dialpad_white_24dp" />
<ImageView android:id="@+id/search_keyboard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:visibility="gone"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_keyboard_white_24dp" />
<ImageView android:id="@+id/search_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:clickable="true"
android:visibility="gone"
android:background="@drawable/circle_touch_highlight_background"
android:src="@drawable/ic_clear_white_24dp" />
</org.thoughtcrime.securesms.components.AnimatingToggle>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.Toolbar>
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/contact_selection_list_fragment"
android:name="org.thoughtcrime.securesms.ContactSelectionListFragment">
</fragment>
<fragment android:id="@+id/contact_selection_list_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="org.thoughtcrime.securesms.ContactSelectionListFragment" />
</LinearLayout>

View File

@@ -1,5 +1,5 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@@ -9,8 +9,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<se.emilsjolander.stickylistheaders.StickyListHeadersListView
android:id="@android:id/list"
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
@@ -23,4 +23,11 @@
android:textSize="20sp" />
</android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout>
<org.thoughtcrime.securesms.components.RecyclerViewFastScroller
android:id="@+id/fast_scroller"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="right"/>
</FrameLayout>

View File

@@ -1,20 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="32sp"
android:paddingLeft="10dp"
android:paddingRight="25dp">
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:textSize="15sp"
android:textColor="?contact_selection_header_text"
android:textStyle="bold" />
</RelativeLayout>
<TextView android:layout_width="match_parent"
android:layout_height="32sp"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:textSize="15sp"
android:paddingLeft="10dp"
android:paddingRight="25dp"
android:textStyle="bold"
xmlns:android="http://schemas.android.com/apk/res/android" />

View File

@@ -1,74 +1,79 @@
<?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.contacts.ContactSelectionListItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingRight="50dp">
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
android:gravity="center_vertical"
android:background="@drawable/conversation_list_item_background"
android:paddingLeft="48dp"
android:paddingRight="20dp">
<org.thoughtcrime.securesms.components.AvatarImageView
android:id="@+id/contact_photo_image"
android:layout_width="@dimen/contact_selection_photo_size"
android:layout_height="@dimen/contact_selection_photo_size"
android:layout_width="40dp"
android:layout_height="40dp"
android:foreground="@drawable/contact_photo_background"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:cropToPadding="true"
app:showBadge="true"
tools:src="@color/md_material_blue_600"
android:layout_marginRight="10dp"
android:contentDescription="@string/SingleContactSelectionActivity_contact_photo" />
<LinearLayout
android:id="@+id/number_container"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dip"
android:layout_marginLeft="14dip"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/contact_photo_image">
<TextView android:id="@+id/number"
android:layout_width="wrap_content"
<LinearLayout android:layout_width="0dp"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceSmall"
android:fontFamily="sans-serif-light" />
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/label"
android:layout_width="wrap_content"
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:ellipsize="end"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?contact_selection_label_text"
android:fontFamily="sans-serif-light"/>
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textSize="16sp"
tools:text="Frieeeeeeedrich Nieeeeeeeeeetzsche" />
<LinearLayout android:id="@+id/number_container"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="marquee"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textSize="14sp"
android:fontFamily="sans-serif-light"
tools:text="+1 (555) 555-5555" />
<TextView android:id="@+id/label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:ellipsize="end"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall"
android:fontFamily="sans-serif-light"
tools:text="Mobile" />
</LinearLayout>
</LinearLayout>
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/number_container"
android:layout_alignParentTop="true"
android:layout_marginBottom="1dip"
android:layout_marginLeft="14dip"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:singleLine="true"
android:ellipsize="marquee"
android:layout_toRightOf="@id/contact_photo_image"
android:gravity="center_vertical|left"
android:textAppearance="?android:attr/textAppearanceMedium" />
<CheckBox android:id="@+id/check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="13dp"
android:focusable="false"
android:clickable="false" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:focusable="false"
android:clickable="false" />
</org.thoughtcrime.securesms.contacts.ContactSelectionListItem>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="48dp"
android:layout_height="?android:attr/listPreferredItemHeight"
android:gravity="center"
android:textColor="#666"
android:textSize="22sp"
tools:text="H" />

View File

@@ -99,7 +99,9 @@
android:layout_weight="1"
android:nextFocusForward="@+id/send_button"
android:nextFocusRight="@+id/send_button"
tools:hint="Send TextSecure message" />
tools:hint="Send TextSecure message">
<requestFocus />
</org.thoughtcrime.securesms.components.ComposeText>
<org.thoughtcrime.securesms.components.camera.HidingImageButton
android:id="@+id/quick_attachment_toggle"

View File

@@ -83,7 +83,7 @@
app:backgroundColorHint="?conversation_background"
android:visibility="gone"
tools:src="@drawable/ic_video_light"
tools:visibility="visible" />
tools:visibility="visible" />
<TextView android:id="@id/date"
android:layout_marginLeft="3dip"

View File

@@ -19,15 +19,6 @@
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<me.relex.circleindicator.CircleIndicator
android:id="@+id/indicator"
android:layout_gravity="bottom|center_horizontal"
android:layout_width="fill_parent"
android:layout_marginBottom="25dp"
android:clickable="false"
android:focusable="false"
android:layout_height="40dp" />
<com.melnykov.fab.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"

View File

@@ -80,7 +80,7 @@
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Registration.Description"
android:text="@string/import_fragment__import_encrypted_backup"/>
android:text="@string/import_fragment__restore_encrypted_backup"/>
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -0,0 +1,118 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:clickable="false">
<LinearLayout android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="vertical"
android:padding="10dp"
android:background="@color/signal_primary">
<ImageView android:id="@+id/heart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:contentDescription="@string/InviteActivity_heart_content_description"
android:src="@drawable/love_heart" />
<TextView android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/white"
android:textSize="20sp"
android:text="@string/InviteActivity_friends_dont_let_friends_text_unencrypted"
android:gravity="center_horizontal"
android:layout_marginBottom="30dp"
android:layout_marginTop="18dp"
android:fontFamily="sans-serif-light"
android:paddingLeft="10dp"/>
<EditText android:id="@+id/invite_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minLines="2"
tools:text="Let's switch to Signal: http://sgnl.link/asdfdfsa"
android:background="@drawable/sent_bubble"
android:padding="10dp"
android:gravity="top"
android:inputType="textShortMessage|textMultiLine"
android:textColor="#ff333333"/>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button android:id="@+id/share_button"
android:drawablePadding="10dp"
android:drawableLeft="@drawable/ic_share_black_18dp"
android:text="@string/InviteActivity_share"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ButtonStyle" />
<Button android:id="@+id/sms_button"
android:drawableLeft="@drawable/ic_message_black_18dp"
android:drawablePadding="10dp"
android:text="@string/InviteActivity_send_sms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="ButtonStyle" />
</LinearLayout>
</LinearLayout>
</ScrollView>
<LinearLayout android:id="@+id/sms_send_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
android:visibility="gone">
<org.thoughtcrime.securesms.components.ContactFilterToolbar
android:id="@+id/contact_filter"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:theme="@style/TextSecure.LightActionBar" />
<fragment android:id="@+id/contact_selection_list_fragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:name="org.thoughtcrime.securesms.ContactSelectionListFragment"
tools:layout="@layout/contact_selection_list_fragment"/>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:padding="10dp"
android:orientation="horizontal">
<Button android:id="@+id/cancel_sms_button"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/InviteActivity_cancel" />
<Button android:id="@+id/send_sms_button"
style="@style/Widget.AppCompat.Button.Borderless"
android:textColor="@color/signal_primary"
android:enabled="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Send to 0 friends"/>
</LinearLayout>
</LinearLayout>
</FrameLayout>

View File

@@ -31,7 +31,7 @@
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:background="#00000000"
android:src="@drawable/quick_camera_front"
android:src="@drawable/quick_camera_rear"
android:padding="20dp"
android:visibility="invisible"
tools:visibility="visible" />

View File

@@ -31,7 +31,7 @@
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:background="#00000000"
android:src="@drawable/quick_camera_front"
android:src="@drawable/quick_camera_rear"
android:padding="20dp"
android:visibility="invisible"
tools:visibility="visible"/>

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<TextView android:id="@+id/fastscroller_bubble"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/recycler_view_fast_scroller_bubble"
android:gravity="center"
android:textColor="@color/white"
android:textSize="48sp"
android:visibility="gone"
tools:visibility="visible"
tools:text="A" />
<ImageView android:id="@+id/fastscroller_handle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:src="@drawable/recycler_view_fast_scroller_handle" />
</merge>

View File

@@ -1,9 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
xmlns:wheel="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone" />
<com.pnikosis.materialishprogress.ProgressWheel android:id="@+id/progress_wheel"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center"
wheel:matProg_progressIndeterminate="true" />
</FrameLayout>

View File

@@ -1,29 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="@string/text_secure_normal__menu_new_group"
android:id="@+id/menu_new_group"
android:icon="@android:drawable/ic_menu_add" />
android:id="@+id/menu_new_group" />
<item android:title="@string/text_secure_normal__menu_clear_passphrase"
android:id="@+id/menu_clear_passphrase"
android:icon="@android:drawable/ic_menu_close_clear_cancel" />
android:id="@+id/menu_clear_passphrase" />
<item android:title="@string/text_secure_normal__mark_all_as_read"
android:id="@+id/menu_mark_all_read"
android:icon="@android:drawable/ic_menu_set_as" />
android:id="@+id/menu_mark_all_read" />
<item android:title="@string/text_secure_normal__invite_friends"
android:id="@+id/menu_invite" />
<item android:title="@string/arrays__import_export"
android:id="@+id/menu_import_export"
android:icon="@android:drawable/ic_menu_upload" />
android:id="@+id/menu_import_export" />
<item android:title="@string/arrays__my_identity_key"
android:id="@+id/menu_my_identity"
android:icon="@android:drawable/ic_menu_view" />
<item android:title="@string/arrays__your_identity_key"
android:id="@+id/menu_my_identity" />
<item android:title="@string/text_secure_normal__menu_settings"
android:id="@+id/menu_settings"
android:icon="@android:drawable/ic_menu_preferences" />
android:id="@+id/menu_settings" />
</menu>

View File

@@ -17,10 +17,9 @@
إزالة قفل الشاشة للرسائل؟</string>
<string name="ApplicationPreferencesActivity_disable">تعطيل</string>
<string name="ApplicationPreferencesActivity_unregistering">جارٍ إلغاء التسجيل</string>
<string name="ApplicationPreferencesActivity_unregistering_from_signal_messages">جارٍ إلغاء التسجيل من رسائل سيجنال..</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages">تعطيل رسائل سيجنال؟</string>
<string name="ApplicationPreferencesActivity_this_will_disable_signal_messages">
سوف يتم تعطيل رسائل سيجنال بإلغاء تسجيلك من الخدمة. سوف يتعين عليك إعادة تسجيل رقم هاتفك لمعاودة استخدام رسائل سيجنال في المستقبل.</string>
<string name="ApplicationPreferencesActivity_unregistering_from_signal_messages_and_calls">جارٍ إلغاء التسجيل من رسائل ومكالمات سيجنال...</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages_and_calls">تعطيل رسائل ومكالمات سيجنال؟</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages_and_calls_by_unregistering">سوف يتم تعطيل رسائل ومكالمات سيجنال بإلغاء تسجيلك من الخدمة. سوف يتعين عليك إعادة تسجيل رقم هاتفك لمعاودة استخدام الخدمتين في المستقبل.</string>
<string name="ApplicationPreferencesActivity_error_connecting_to_server">خطأ في الاتصال بالخادم!</string>
<string name="ApplicationPreferencesActivity_sms_enabled">الرسائل النصية مفعلة</string>
<string name="ApplicationPreferencesActivity_touch_to_change_your_default_sms_app">المس لتغيير التطبيق الافتراضي للرسائل</string>
@@ -55,6 +54,7 @@
<string name="ConfirmIdentityDialog_accept">موافقة</string>
<!--ContactsDatabase-->
<string name="ContactsDatabase_message_s">رسالة %s</string>
<string name="ContactsDatabase_signal_call_s">مكالمة سيجنال %s</string>
<!--ConversationItem-->
<string name="ConversationItem_message_size_d_kb">حجم الرسالة: %d كيلوبايت</string>
<string name="ConversationItem_expires_s">تاريخ الانتهاء: %s</string>
@@ -98,8 +98,8 @@
<string name="ConversationActivity_transport_insecure_sms">رسالة نصية غير آمنة</string>
<string name="ConversationActivity_transport_insecure_mms">رسالة وسائط متعددة غير آمنة</string>
<string name="ConversationActivity_transport_signal">سيجنال</string>
<string name="ConversationActivity_get_with_it">احصل معها: %s</string>
<string name="ConversationActivity_lets_use_this_to_chat">دعنا نستخدم هذا للمحادثة: %s</string>
<string name="ConversationActivity_lets_switch_to_signal">هيا ننتقل إلى سيجنال %1$s</string>
<string name="ConversationActivity_lets_use_this_to_chat">دعنا نتواصل عبر هذا: %1$s</string>
<string name="ConversationActivity_error_leaving_group">خطأ أثناء ترك المجموعة...</string>
<string name="ConversationActivity_mms_not_supported_title">رسائل الوسائط المتعددة غير مدعمة</string>
<string name="ConversationActivity_mms_not_supported_message">لا يمكن الإرسال لأن شبكة الجوال التي تستخدمها لا تدعم رسائل الوسائط المتعددة.</string>
@@ -113,10 +113,16 @@
<string name="ConversationFragment_message_details">تفاصيل الرسالة</string>
<string name="ConversationFragment_transport_s_sent_received_s">نقل: %1$s\nSent/Received: %2$s</string>
<string name="ConversationFragment_sender_s_transport_s_sent_s_received_s">الراسل: %1$s\nنقل: %2$s\nمرسل: %3$s\nوارد: %4$s</string>
<string name="ConversationFragment_confirm_message_delete">تاكيد حذف الرسال</string>
<string name="ConversationFragment_are_you_sure_you_want_to_permanently_delete_all_selected_messages">هل أنت متأكد من حذف كل الرسائل المختارة بشكل دائم؟</string>
<plurals name="ConversationFragment_delete_selected_messages">
<item quantity="zero">حذف المختار؟</item>
<item quantity="one">حذف الرسالة المختارة؟</item>
<item quantity="two">حذف الرسائل المختارة؟</item>
<item quantity="few">حذف الرسائل المختارة؟</item>
<item quantity="many">حذف الرسائل المختارة؟</item>
<item quantity="other">حذف الرسائل المختارة؟</item>
</plurals>
<string name="ConversationFragment_save_to_sd_card">أحفظ في الذاكرة؟</string>
<string name="ConversationFragment_this_media_has_been_stored_in_an_encrypted_database_warning">حفظ الملف في الذاكرة يسمح ﻷي تطبيق آخر على الهاتف من النفاذ له. \n\nاستمر؟</string>
<string name="ConversationFragment_saving_this_media_to_storage_warning">حفظ الملف في الذاكرة يسمح ﻷي تطبيق آخر على الهاتف من النفاذ له. \n\nاستمر؟</string>
<string name="ConversationFragment_error_while_saving_attachment_to_sd_card">خطأ أثناء حفظ المرفق إلى الذاكرة!</string>
<string name="ConversationFragment_success_exclamation">تم بنجاح!</string>
<string name="ConversationFragment_unable_to_write_to_sd_card_exclamation">تعذر الإضافة إلى الذاكرة!</string>
@@ -131,8 +137,14 @@
<!--ConversationListActivity-->
<string name="ConversationListActivity_search">بحث...</string>
<!--ConversationListFragment-->
<string name="ConversationListFragment_delete_threads_question">حذف رسائل المحادثة؟</string>
<string name="ConversationListFragment_are_you_sure_you_wish_to_delete_all_selected_conversation_threads">هل تريد حذف كل المحادثات المختارة نهائياَ؟</string>
<plurals name="ConversationListFragment_delete_selected_conversations">
<item quantity="zero">حذف المحادثات المختارة؟</item>
<item quantity="one">حذف المحادثة المختارة؟</item>
<item quantity="two">حذف المحادثتان؟</item>
<item quantity="few">حذف المحادثات المختارة؟</item>
<item quantity="many">حذف كل المحادثات المختارة؟</item>
<item quantity="other">حذف المحادثات المختارة؟</item>
</plurals>
<string name="ConversationListFragment_deleting">حذف</string>
<string name="ConversationListFragment_deleting_selected_threads">حذف المحادثات المختارة</string>
<!--ConversationListItem-->
@@ -166,13 +178,14 @@
<string name="ExperienceUpgradeActivity_textsecure_is_now_signal_long">تم دمج تيكست سيكيور وريدفون في تطبيق واحد الآن: سيجنال</string>
<!--ExportFragment-->
<string name="ExportFragment_export">تصدير</string>
<string name="ExportFragment_export_plaintext_to_sd_card">تصدير نص غير مشفر إلي بطاقة الذاكرة الخارجية؟</string>
<string name="ExportFragment_warning_this_will_export_the_plaintext_contents">تحذير: سيتم تصدير محتوى رسائل سيجنال إلى بطاقة الذاكرة بدون تشفير.</string>
<string name="ExportFragment_export_plaintext_to_storage">تصدير نسخة احتياطية غير مشفرة إلى الذاكرة؟</string>
<string name="ExportFragment_warning_this_will_export_the_plaintext_contents">تحذير: سيتم تصدير محتوى رسائل سيجنال إلى بطاقة الذاكرة بدون تشفير</string>
<string name="ExportFragment_cancel">إلغاء</string>
<string name="ExportFragment_exporting">التصدير جارٍ...</string>
<string name="ExportFragment_exporting_plaintext_to_sd_card">جارٍ تصدير غير مشفر إلى بطاقة الذاكرة...</string>
<string name="ExportFragment_error_unable_to_write_to_sd_card">خطأ. تعذر الكتابة على بطاقة الذاكرة!</string>
<string name="ExportFragment_error_while_writing_to_sd_card">خطأ أثناء الكتابة على بطاقة الذاكرة.</string>
<string name="ExportFragment_exporting_plaintext_to_storage">جارٍ تصدير غير مشفر إلى بطاقة الذاكرة...</string>
<string name="ExportFragment_error_unable_to_write_to_storage">خطأ. تعذر الكتابة على بطاقة الذاكرة!</string>
<string name="ExportFragment_error_while_writing_to_storage">e
خطأ أثناء الكتابة على بطاقة الذاكرة.</string>
<string name="ExportFragment_success">تم بنجاح!</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_Signal_communication_failure">فشل دائما في اتصال سيجنال!</string>
@@ -191,8 +204,9 @@
<string name="GroupCreateActivity_menu_create_title">إنشاء مجموعة</string>
<string name="GroupCreateActivity_creating_group">الإنشاء جارٍ %1$s…</string>
<string name="GroupCreateActivity_updating_group">التحديث جارٍ %1$s...</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">لا يمكن إضافة غير المستخدمين لسيجنال إلي مجموعة سيجنال حالية.</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">لا يمكن إضافة %1$s بسبب عدم استخدام سيجنال.</string>
<string name="GroupCreateActivity_loading_group_details">تحميل بيانات المجموعة...</string>
<string name="GroupCreateActivity_youre_already_in_the_group">أنت في المجموعة بالفعل.</string>
<!--GroupMembersDialog-->
<string name="GroupMembersDialog_me">أنا</string>
<!--ImportExportActivity-->
@@ -205,7 +219,7 @@
<string name="ImportFragment_cancel">إلغاء</string>
<string name="ImportFragment_restore_encrypted_backup">استعادة نسخة احتياطية مشفرة؟</string>
<string name="ImportFragment_restoring_an_encrypted_backup_will_completely_replace_your_existing_keys">
استرجاع نسخة احتياطية مشفرة يقوم باستبدال المفاتيح حالية والإعدادات والرسائل. المعلومات الموجودة الآن في سيجنال وغير موجودة في النسخة الاحتياطية سوف تفقد.</string>
استرجاع نسخة احتياطية مشفرة يؤدي إلى استبدال المفاتيح حالية والإعدادات والرسائل. المعلومات الحالية في سيجنال والغير موجودة في النسخة الاحتياطية سوف تفقد.</string>
<string name="ImportFragment_restore">استعادة</string>
<string name="ImportFragment_import_plaintext_backup">استيراد نسخة احتياطية غير مشفرة؟</string>
<string name="ImportFragment_this_will_import_messages_from_a_plaintext_backup">سيتم استيراد رسائل غير مشفرة من نسخة احتياطية. إذا قمت سابقا باستيراد هذا الملف فسوف يؤدي الاستيراد مرة أخرى إلى تكرار الرسائل.</string>
@@ -218,6 +232,17 @@
<string name="ImportFragment_restoring_encrypted_backup">استعادة النسخ الاحتياطية المشفرة جارٍ..</string>
<string name="ImportFragment_no_encrypted_backup_found">لم يتم العثور على نسخة احتياطية مشفرة!</string>
<string name="ImportFragment_restore_complete">تمت الاستعادة!</string>
<!--InviteActivity-->
<string name="InviteActivity_share">شارك</string>
<string name="InviteActivity_send_sms">أرسل رسالة</string>
<string name="InviteActivity_cancel">إلغاء</string>
<string name="InviteActivity_sending">ارسال...</string>
<string name="InviteActivity_heart_content_description">قلب</string>
<string name="InviteActivity_invitations_sent">تم إرسال الدعوات!</string>
<string name="InviteActivity_invite_to_signal">الدعوة إلى سيجنال</string>
<string name="InviteActivity_lets_switch_to_signal">هيا ننتقل إلى سيجنال %1$s</string>
<string name="InviteActivity_no_app_to_share_to">يبدو عدم وجود أي تطبيقات لديك للمشاركة من خلالها.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">الأصدقاء لا يتركون بعضهم يجرون محادثات غير مشفرة.</string>
<!--KeyScanningActivity-->
<string name="KeyScanningActivity_no_scanned_key_found_exclamation">لم يتم العثور على مفتاح!</string>
<string name="KeyScanningActivity_install_barcode_Scanner">تثبيت ماسح Barcode؟</string>
@@ -242,6 +267,7 @@
<string name="MessageRecord_s_called_you">%s قام بالاتصال</string>
<string name="MessageRecord_called_s">%s قام بالاتصال</string>
<string name="MessageRecord_missed_call_from">مكالمة فائتة من %s</string>
<string name="MessageRecord_s_is_on_signal_say_hey">%s إنضم إلى سيجنال.. ألقي التحية!</string>
<!--PassphraseChangeActivity-->
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">العبارات السرية غير متطابقة!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">العبارة السرية القديمة غير صحيحة!</string>
@@ -277,6 +303,7 @@
<string name="RatingManager_later">فيما بعد</string>
<!--RecipientPreferencesActivity-->
<string name="RecipientPreferenceActivity_block_this_contact_question">حظر جهة الاتصال؟</string>
<string name="RecipientPreferenceActivity_you_will_no_longer_receive_messages_or_calls_from_this_user">لن تتلقى رسائل أو مكالمات مجددا من هذا المستخدم.</string>
<string name="RecipientPreferenceActivity_block">حظر</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">إلغاء حظر جهة الاتصال؟</string>
<string name="RecipientPreferenceActivity_are_you_sure_you_want_to_unblock_this_contact">تأكيد إلغاء حظر جهة الاتصال؟</string>
@@ -305,7 +332,7 @@
<string name="RedPhone_the_number_you_dialed_does_not_support_secure_voice">الرقم المطلوب لا يدعم مكالمات صوتية مشفرة!</string>
<string name="RedPhone_got_it">عُلم</string>
<!--RegistrationActivity-->
<string name="RegistrationActivity_connect_with_signal">سجل مع سيجنال</string>
<string name="RegistrationActivity_connect_with_signal">تواصل مع سيجنال</string>
<string name="RegistrationActivity_select_your_country">اختر بلدك</string>
<string name="RegistrationActivity_you_must_specify_your_country_code">يجب عليك تحديد رمز دولتك</string>
<string name="RegistrationActivity_you_must_specify_your_phone_number">يجب عليك تحديد
@@ -366,12 +393,14 @@
<string name="ThreadRecord_called">مكالمات صاردة</string>
<string name="ThreadRecord_called_you">مكالمات واردة</string>
<string name="ThreadRecord_missed_call">مكالمة فائتة</string>
<string name="ThreadRecord_media_message">رسالة وسائط متعددة</string>
<string name="ThreadRecord_s_is_on_signal_say_hey">%s إنضم إلى سيجنال.. ألقي التحية!</string>
<!--VerifyIdentityActivity-->
<string name="VerifyIdentityActivity_you_do_not_have_an_identity_key">لا يوجد لديك مفتاح تعريفي.</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key">لا يوجد لدى الطرف الاخر مفتاح تعريفي.</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key_exclamation">لا يوجد لدى الطرف الاخر مفتاح تعريفي!</string>
<string name="VerifyIdentityActivity_scan_their_key_to_compare">قم بالمسح الضوئي لمفتاحهم للمقارنة</string>
<string name="VerifyIdentityActivity_get_my_key_scanned">قم بالمسح الضوئي لمفتاحي</string>
<string name="VerifyIdentityActivity_get_your_key_scanned">قم بالمسح الضوئي لبصمة مفتاحي</string>
<string name="VerifyIdentityActivity_warning_the_scanned_key_does_not_match_please_check_the_fingerprint_text_carefully">تحذير: المفتاح الذي تم مسحه ضوئياً لا يتطابق! تأكد من بصمة المفتاح بحذر.</string>
<string name="VerifyIdentityActivity_not_verified_exclamation">لم يتم التحقق!</string>
<string name="VerifyIdentityActivity_their_key_is_correct_it_is_also_necessary_to_verify_your_key_with_them_as_well">مفتاحهم صحيح. يجب أيضاً أن تقوم بالتحقق من مفتاحك لديهم أيضاً.</string>
@@ -385,7 +414,7 @@
<string name="ViewIdentityActivity_not_verified_exclamation">لم يتم التحقق!</string>
<string name="ViewIdentityActivity_the_scanned_key_matches_exclamation">المفتاح الذي تم مسحه ضوئياً متطابق!</string>
<string name="ViewIdentityActivity_verified_exclamation">تم التحقق!</string>
<string name="ViewIdentityActivity_my_identity_fingerprint">بصمة هويتي</string>
<string name="ViewIdentityActivity_your_identity_fingerprint">بصمة المفتاح الخاصة بك</string>
<!--KeyExchangeInitiator-->
<string name="KeyExchangeInitiator_initiate_despite_existing_request_question">ابدأ على الرغم من الطلب الحالي؟</string>
<string name="KeyExchangeInitiator_send">أرسل</string>
@@ -437,6 +466,12 @@
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_signal_message">رسالة سيجنال جديدة.</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">المحتويات مخفية</string>
<!--attachment_type_selector-->
<string name="attachment_type_selector__image">صورة</string>
<string name="attachment_type_selector__audio">صوت</string>
<string name="attachment_type_selector__video">فيديو</string>
<string name="attachment_type_selector__contact">جهة اتصال</string>
<string name="attachment_type_selector__camera">كاميرا</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">العبارة السرية القديمة:</string>
<string name="change_passphrase_activity__new_passphrase">العبارة السرية الجديدة:</string>
@@ -506,18 +541,15 @@
<!--database_upgrade_activity-->
<string name="database_upgrade_activity__updating_database">تحديث قاعدة البيانات...</string>
<string name="export_fragment__export_plaintext_backup">تصدير نسخة احتياطية غير مشفرة</string>
<string name="export_fragment__export_a_plaintext_backup_compatible_with">
تصدير نسخة غير مشفرة لبطاقة الذاكرة الخارجية بصيغة متوافقة مع \"SMSBackup And Restore\".</string>
<string name="export_fragment__export_a_plaintext_backup_compatible_with"> تصدير نسخة غير مشفرة لمساحة التخزين بصيغة متوافقة مع \"SMSBackup And Restore\".</string>
<string name="import_fragment__import_system_sms_database">استيراد قاعدة بيانات الرسائل بالنظام</string>
<string name="import_fragment__import_the_database_from_the_default_system">استيراد قاعدة البيانات
من تطبيق الرسائل الافتراضي لنظام التشغيل</string>
<string name="import_fragment__import_encrypted_backup">استيراد نسخة احتياطية مشفرة</string>
<string name="import_fragment__restore_a_previously_exported_encrypted_signal_backup">
استعادة نسخة احتياطية مشفرة من سيجنال.</string>
<string name="import_fragment__import_the_database_from_the_default_system">استيراد قاعدة البيانات من تطبيق الرسائل الافتراضي لنظام التشغيل</string>
<string name="import_fragment__restore_encrypted_backup">استعادة نسخة احتياطية مشفرة</string>
<string name="import_fragment__restore_a_previously_exported_encrypted_signal_backup"> استعادة نسخة احتياطية مشفرة من سيجنال.</string>
<string name="import_fragment__import_plaintext_backup">استيراد نسخة احتياطية غير مشفرة</string>
<string name="import_fragment__import_a_plaintext_backup_file">
استيراد نسخة احتياطية غير مشفرة، متوافقة مع \"SMSBackup And Restore\".</string>
<string name="import_fragment__import_a_plaintext_backup_file"> استيراد نسخة احتياطية غير مشفرة، متوافقة مع \"SMSBackup And Restore\".</string>
<!--load_more_header-->
<string name="load_more_header__see_full_conversation">مطالعة المحادثة بالكامل</string>
<!--media_overview_activity-->
<string name="media_overview_activity__no_images">لا توجد صور</string>
<!--message_recipients_list_item-->
@@ -544,7 +576,7 @@
<!--recipient_preferences-->
<string name="recipient_preferences__mute_conversation">كتم المحادثة</string>
<string name="recipient_preferences__disable_notifications_for_this_conversation">تعطيل الإشعارات لهذه المحادثة</string>
<string name="recipient_preferences__notification_tone">صوت التنبيه</string>
<string name="recipient_preferences__notification_sound">صوت التنبيه</string>
<string name="recipient_preferences__vibrate">الاهتزاز</string>
<string name="recipient_preferences__block">حظر</string>
<string name="recipient_preferences__color">اللون</string>
@@ -589,10 +621,10 @@
<string name="registration_progress_activity__some_possible_problems_include">بعض المشاكل
المحتملة وتتضمن:</string>
<string name="registration_progress_activity__no_network_connectivity">لا يوجد شبكة اتصال.</string>
<string name="registration_progress_activity__your_device_needs_network_connectivity">الجهاز في حاجة إلى اتصال بالشبكة من أجل استخدام هذه الخاصية من سيجنال. تأكد من الاتصال ببيانات شبكة الجوال أو Wi-Fi. </string>
<string name="registration_progress_activity__your_device_needs_network_connectivity">الجهاز في حاجة إلى اتصال بالإترنت من أجل استخدام هذه الخاصية من سيجنال. تأكد من الاتصال ببيانات شبكة الجوال أو Wi-Fi. </string>
<string name="registration_progress_activity__restrictive_firewall">تقييد بواسطة جدار ناري.</string>
<string name="registration_progress_activity__if_you_are_connected_via_wifi_its_possible_that_there_is_a_firewall">
إذا كنت متصل ببواسطة Wi-Fi من المحتمل وجود جدار ناري يمنع النفاذ إلى خادم سيجنال. قم بتجربة شبكة أخرى أو بيانات شبكة الجوال.</string>
إذا كنت متصل عبر Wi-Fi فإنه من الوارد وجود جدار ناري يمنع النفاذ إلى خادم سيجنال. قم بتجربة شبكة أخرى أو بيانات شبكة الجوال.</string>
<string name="registration_progress_activity__signal_will_now_automatically_verify_your_number_with_a_confirmation_sms_message">
سيقوم سيجنال الآن بالتحقق من رقم هاتفك آليا بواسطة رسالة نصية.</string>
<string name="registration_progress_activity__connecting">الاتصال جارِ...</string>
@@ -634,15 +666,17 @@
<string name="AndroidManifest__media_overview_named">جميع الصور مع %1$s</string>
<string name="AndroidManifest__message_details">تفاصيل الرسالة</string>
<string name="AndroidManifest_manage_linked_devices">إدارة الأجهزة المقترنة</string>
<string name="AndroidManifest__invite_friends">دعوة الأصدقاء</string>
<!--arrays.xml-->
<string name="arrays__import_export">استيراد / تصدير</string>
<string name="arrays__my_identity_key">مفتاح هويتي</string>
<string name="arrays__your_identity_key">متفاح الهوية الخاص بك</string>
<string name="arrays__use_default">استخدم الافتراضي</string>
<string name="arrays__use_custom">تخصيص</string>
<string name="arrays__mute_for_one_hour">كتم لمدة ساعة</string>
<string name="arrays__mute_for_two_hours">كتم لمدة ساعتين</string>
<string name="arrays__mute_for_one_day">كتم لمدة يوم</string>
<string name="arrays__mute_for_seven_days">كتم لمدة سبعة أيام</string>
<string name="arrays__mute_for_one_year">كتم لمدة عام واحد</string>
<string name="arrays__settings_default">الإعدادات الافتراضية</string>
<string name="arrays__enabled">مفعل</string>
<string name="arrays__disabled">معطل</string>
@@ -677,7 +711,7 @@
<string name="preferences__choose_identity">اختيار الهوية</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">اختر جهة الاتصال من القائمة</string>
<string name="preferences__change_passphrase">غير العبارة السرية</string>
<string name="preferences__change_my_passphrase">غير عبارتي السرية</string>
<string name="preferences__change_your_passphrase">غير العبارة السرية</string>
<string name="preferences__enable_passphrase">تفعيل العبارة السرية</string>
<string name="preferences__passphrase_summary">عبارة سرية %s</string>
<string name="preferences__enable_lock_screen_for_messages">تفعيل قفل الشاشة للرسائل</string>
@@ -752,9 +786,8 @@
<string name="preferences__default">افتراضي</string>
<string name="preferences__language">اللغة</string>
<string name="preferences__language_summary">اللغة %s</string>
<string name="preferences__signal">سيجنال</string>
<string name="preferences__use_the_data_channel_for_communication_with_other_signal_users">
رسائل ومكالمات مجانية وآمنة مع مستخدمي سيجنال</string>
<string name="preferences__signal_messages_and_calls">رسائل ومكالمات سيجنال</string>
<string name="preferences__free_private_messages_and_calls"> رسائل ومكالمات مجانية وآمنة مع مستخدمي سيجنال</string>
<string name="preferences__submit_debug_log">إرسال سجل التصحيح</string>
<string name="preferences__support_wifi_calling">وضع التوافق مع \'مكالمات الواي فاي\'</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">يمكنك تفعيل الخاصية إذا كان هاتفك يدعم خاصية WiFi Calling لتسليم الرسائل النصية والوسائط المتعددة ( قم بالتفعيل فقط في حال تفعيل WiFi Calling بهاتفك)</string>
@@ -838,11 +871,26 @@
<string name="text_secure_normal__menu_settings">الإعدادات</string>
<string name="text_secure_normal__menu_clear_passphrase">أقفل</string>
<string name="text_secure_normal__mark_all_as_read">اعتبارها رسائل مقروءة</string>
<string name="text_secure_normal__invite_friends">دعوة الأصدقاء</string>
<!--reminder_header-->
<string name="reminder_header_expired_build">لقد انتهت صلاحية هذه النسخة من سيجنال!</string>
<string name="reminder_header_expired_build_details">رجاء التحديث لآخر إصداره من التطبيق. لن ترسل الرسائل بنجاح بعد الآن.</string>
<string name="reminder_header_expired_build_button">تحديث</string>
<string name="reminder_header_sms_default_title">اجعله تطبيق المراسلة الافتراضي</string>
<string name="reminder_header_sms_default_text">المس لجعل سيجنال التطبيق الافتراضي للرسائل.</string>
<string name="reminder_header_sms_default_button">تعيين</string>
<string name="reminder_header_sms_import_title">استيراد رسائل النظام</string>
<string name="reminder_header_sms_import_text">أضغط لنسخ الرسائل النصية القصيرة على الهاتف إلى قاعدة البيانات المشفرة.</string>
<string name="reminder_header_sms_import_button">استيراد</string>
<string name="reminder_header_push_title">تفعيل رسائل ومكالمات سيجنال</string>
<string name="reminder_header_push_text">ترقية تجربتك في التواصل.</string>
<string name="reminder_header_push_button">تفعيل</string>
<string name="reminder_header_invite_title">دعوة إلى سيجنال</string>
<string name="reminder_header_invite_button">دعوة</string>
<string name="reminder_header_share_title">قم بدعوة أصدقائك!</string>
<string name="reminder_header_share_text">زيادة الأصدقاء المستخدمي لسيجنال يجعله أفضل بكثير.</string>
<string name="reminder_header_share_button">شارك</string>
<string name="reminder_header_close_button">إغلاق</string>
<!--MediaPreviewActivity-->
<string name="MediaPreviewActivity_you">أنت</string>
<string name="MediaPreviewActivity_cant_display">خطأ في معاينة هذه الصورة</string>

Some files were not shown because too many files have changed in this diff Show More