Compare commits
74 commits
peter-dev-
...
peter-dev
Author | SHA1 | Date | |
---|---|---|---|
3096f859ac | |||
9945e4bf09 | |||
31c627135c | |||
3ee45952fc | |||
|
3e4799979e | ||
|
5ba4e0db44 | ||
|
48132e2dbb | ||
|
1ab4ee326e | ||
|
7671d5e42e | ||
|
af12ac91d0 | ||
|
abde1336e8 | ||
|
2f818afee8 | ||
|
e5a83b9697 | ||
|
617ceb2429 | ||
|
116dde9c65 | ||
|
ed216fe0d9 | ||
|
4af1fe39c7 | ||
|
5e8a492044 | ||
|
f3b32027c1 | ||
|
95e3a6769d | ||
|
eadb1e127b | ||
|
09cf5feefa | ||
|
7e762eb799 | ||
|
541c90c597 | ||
|
e0e088479c | ||
|
0ba3cbb99c | ||
|
93c5916346 | ||
|
de7eb2b5c7 | ||
|
36756fbd41 | ||
|
5943f1ad3e | ||
|
8834bc5084 | ||
|
fbf1cacae3 | ||
|
fcadbeee99 | ||
|
38450896d1 | ||
|
7c6ab7febc | ||
4d011016db | |||
|
865676e416 | ||
|
20b998f871 | ||
|
37232a2624 | ||
|
c30e83e097 | ||
|
7590e2a0ed | ||
|
699b198a62 | ||
|
d280327f16 | ||
|
ae671d0aef | ||
|
f62e9f1999 | ||
|
daa7b84e71 | ||
|
f00b31da14 | ||
|
74c0280080 | ||
|
66731f3f38 | ||
|
14ca6d54e6 | ||
|
afe257566b | ||
|
2db270cff4 | ||
|
7014e5e4f8 | ||
|
f1fcaeb3d8 | ||
|
23529c83e1 | ||
|
1b15f2c464 | ||
|
34abb2f06b | ||
|
536d92926a | ||
|
89428b0ad3 | ||
|
fbbd2edd94 | ||
|
ed98860506 | ||
437002d189 | |||
|
b418c4d896 | ||
|
ad48fe6cd9 | ||
|
7731a864fd | ||
|
1969a23726 | ||
|
f9acc3bf71 | ||
|
3c1550b208 | ||
|
99e4c3d2e0 | ||
|
78048bbd3d | ||
|
330980391c | ||
|
5c4eccec13 | ||
|
b1ec3a0e29 | ||
|
56f01c29b9 |
2
.github/workflows/android.yml
vendored
|
@ -19,7 +19,7 @@ jobs:
|
||||||
java-version: '11'
|
java-version: '11'
|
||||||
distribution: 'adopt'
|
distribution: 'adopt'
|
||||||
- name: Download WebRTC
|
- name: Download WebRTC
|
||||||
run: mkdir libs && wget -O libs/libwebrtc-m92.aar https://gultsch.de/files/libwebrtc-m92.aar
|
run: mkdir libs && wget -O libs/libwebrtc-m99.aar https://gultsch.de/files/libwebrtc-m99.aar
|
||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x gradlew
|
run: chmod +x gradlew
|
||||||
- name: Build Quicksy
|
- name: Build Quicksy
|
||||||
|
|
21
.tx/config
|
@ -1,21 +0,0 @@
|
||||||
[main]
|
|
||||||
host = https://www.transifex.com
|
|
||||||
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: fil-rPH, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA, no_NO: no-rNO, he_IL: iw-rIL, he: iw
|
|
||||||
|
|
||||||
[conversations.main-strings]
|
|
||||||
file_filter = src/main/res/values-<lang>/strings.xml
|
|
||||||
source_file = src/main/res/values/strings.xml
|
|
||||||
source_lang = en
|
|
||||||
|
|
||||||
[conversations.quicksy-strings]
|
|
||||||
file_filter = src/quicksy/res/values-<lang>/strings.xml
|
|
||||||
source_file = src/quicksy/res/values/strings.xml
|
|
||||||
source_lang = en
|
|
||||||
type = ANDROID
|
|
||||||
|
|
||||||
[conversations.conversations-strings]
|
|
||||||
file_filter = src/conversations/res/values-<lang>/strings.xml
|
|
||||||
source_file = src/conversations/res/values/strings.xml
|
|
||||||
source_lang = en
|
|
||||||
type = ANDROID
|
|
||||||
|
|
11
CHANGELOG.md
|
@ -1,9 +1,20 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### Version 2.10.5
|
||||||
|
|
||||||
|
* Security: Stop downloading files that exceed advertised file size
|
||||||
|
* Security: Limit POSH files to 10K
|
||||||
|
|
||||||
|
### Version 2.10.4
|
||||||
|
|
||||||
|
* Fix interaction with Google Maps Share Location Plugin
|
||||||
|
* Remove footnote with regards to server fee
|
||||||
|
|
||||||
### Version 2.10.3
|
### Version 2.10.3
|
||||||
|
|
||||||
* Store files in location appropriate for Android 11
|
* Store files in location appropriate for Android 11
|
||||||
* Attempt to reconnect call after network switch
|
* Attempt to reconnect call after network switch
|
||||||
|
* Show caller JID and account JID in incoming call screen
|
||||||
|
|
||||||
### Version 2.10.2
|
### Version 2.10.2
|
||||||
|
|
||||||
|
|
6
Gemfile
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "fastlane"
|
||||||
|
gem "screengrab"
|
221
Gemfile.lock
Normal file
|
@ -0,0 +1,221 @@
|
||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
CFPropertyList (3.0.5)
|
||||||
|
rexml
|
||||||
|
addressable (2.8.0)
|
||||||
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
|
artifactory (3.0.15)
|
||||||
|
atomos (0.1.3)
|
||||||
|
aws-eventstream (1.2.0)
|
||||||
|
aws-partitions (1.566.0)
|
||||||
|
aws-sdk-core (3.130.0)
|
||||||
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
|
aws-partitions (~> 1, >= 1.525.0)
|
||||||
|
aws-sigv4 (~> 1.1)
|
||||||
|
jmespath (~> 1.0)
|
||||||
|
aws-sdk-kms (1.55.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.127.0)
|
||||||
|
aws-sigv4 (~> 1.1)
|
||||||
|
aws-sdk-s3 (1.113.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.127.0)
|
||||||
|
aws-sdk-kms (~> 1)
|
||||||
|
aws-sigv4 (~> 1.4)
|
||||||
|
aws-sigv4 (1.4.0)
|
||||||
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
|
babosa (1.0.4)
|
||||||
|
claide (1.1.0)
|
||||||
|
colored (1.2)
|
||||||
|
colored2 (3.1.2)
|
||||||
|
commander (4.6.0)
|
||||||
|
highline (~> 2.0.0)
|
||||||
|
declarative (0.0.20)
|
||||||
|
digest-crc (0.6.4)
|
||||||
|
rake (>= 12.0.0, < 14.0.0)
|
||||||
|
domain_name (0.5.20190701)
|
||||||
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
|
dotenv (2.7.6)
|
||||||
|
emoji_regex (3.2.3)
|
||||||
|
excon (0.91.0)
|
||||||
|
faraday (1.10.0)
|
||||||
|
faraday-em_http (~> 1.0)
|
||||||
|
faraday-em_synchrony (~> 1.0)
|
||||||
|
faraday-excon (~> 1.1)
|
||||||
|
faraday-httpclient (~> 1.0)
|
||||||
|
faraday-multipart (~> 1.0)
|
||||||
|
faraday-net_http (~> 1.0)
|
||||||
|
faraday-net_http_persistent (~> 1.0)
|
||||||
|
faraday-patron (~> 1.0)
|
||||||
|
faraday-rack (~> 1.0)
|
||||||
|
faraday-retry (~> 1.0)
|
||||||
|
ruby2_keywords (>= 0.0.4)
|
||||||
|
faraday-cookie_jar (0.0.7)
|
||||||
|
faraday (>= 0.8.0)
|
||||||
|
http-cookie (~> 1.0.0)
|
||||||
|
faraday-em_http (1.0.0)
|
||||||
|
faraday-em_synchrony (1.0.0)
|
||||||
|
faraday-excon (1.1.0)
|
||||||
|
faraday-httpclient (1.0.1)
|
||||||
|
faraday-multipart (1.0.3)
|
||||||
|
multipart-post (>= 1.2, < 3)
|
||||||
|
faraday-net_http (1.0.1)
|
||||||
|
faraday-net_http_persistent (1.2.0)
|
||||||
|
faraday-patron (1.0.0)
|
||||||
|
faraday-rack (1.0.0)
|
||||||
|
faraday-retry (1.0.3)
|
||||||
|
faraday_middleware (1.2.0)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
fastimage (2.2.6)
|
||||||
|
fastlane (2.204.3)
|
||||||
|
CFPropertyList (>= 2.3, < 4.0.0)
|
||||||
|
addressable (>= 2.8, < 3.0.0)
|
||||||
|
artifactory (~> 3.0)
|
||||||
|
aws-sdk-s3 (~> 1.0)
|
||||||
|
babosa (>= 1.0.3, < 2.0.0)
|
||||||
|
bundler (>= 1.12.0, < 3.0.0)
|
||||||
|
colored
|
||||||
|
commander (~> 4.6)
|
||||||
|
dotenv (>= 2.1.1, < 3.0.0)
|
||||||
|
emoji_regex (>= 0.1, < 4.0)
|
||||||
|
excon (>= 0.71.0, < 1.0.0)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
faraday-cookie_jar (~> 0.0.6)
|
||||||
|
faraday_middleware (~> 1.0)
|
||||||
|
fastimage (>= 2.1.0, < 3.0.0)
|
||||||
|
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||||
|
google-apis-androidpublisher_v3 (~> 0.3)
|
||||||
|
google-apis-playcustomapp_v1 (~> 0.1)
|
||||||
|
google-cloud-storage (~> 1.31)
|
||||||
|
highline (~> 2.0)
|
||||||
|
json (< 3.0.0)
|
||||||
|
jwt (>= 2.1.0, < 3)
|
||||||
|
mini_magick (>= 4.9.4, < 5.0.0)
|
||||||
|
multipart-post (~> 2.0.0)
|
||||||
|
naturally (~> 2.2)
|
||||||
|
optparse (~> 0.1.1)
|
||||||
|
plist (>= 3.1.0, < 4.0.0)
|
||||||
|
rubyzip (>= 2.0.0, < 3.0.0)
|
||||||
|
security (= 0.1.3)
|
||||||
|
simctl (~> 1.6.3)
|
||||||
|
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||||
|
terminal-table (>= 1.4.5, < 2.0.0)
|
||||||
|
tty-screen (>= 0.6.3, < 1.0.0)
|
||||||
|
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||||
|
word_wrap (~> 1.0.0)
|
||||||
|
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||||
|
xcpretty (~> 0.3.0)
|
||||||
|
xcpretty-travis-formatter (>= 0.0.3)
|
||||||
|
gh_inspector (1.1.3)
|
||||||
|
google-apis-androidpublisher_v3 (0.16.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-apis-core (0.4.2)
|
||||||
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
representable (~> 3.0)
|
||||||
|
retriable (>= 2.0, < 4.a)
|
||||||
|
rexml
|
||||||
|
webrick
|
||||||
|
google-apis-iamcredentials_v1 (0.10.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-apis-playcustomapp_v1 (0.7.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-apis-storage_v1 (0.11.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-cloud-core (1.6.0)
|
||||||
|
google-cloud-env (~> 1.0)
|
||||||
|
google-cloud-errors (~> 1.0)
|
||||||
|
google-cloud-env (1.5.0)
|
||||||
|
faraday (>= 0.17.3, < 2.0)
|
||||||
|
google-cloud-errors (1.2.0)
|
||||||
|
google-cloud-storage (1.36.1)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
digest-crc (~> 0.4)
|
||||||
|
google-apis-iamcredentials_v1 (~> 0.1)
|
||||||
|
google-apis-storage_v1 (~> 0.1)
|
||||||
|
google-cloud-core (~> 1.6)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
googleauth (1.1.2)
|
||||||
|
faraday (>= 0.17.3, < 3.a)
|
||||||
|
jwt (>= 1.4, < 3.0)
|
||||||
|
memoist (~> 0.16)
|
||||||
|
multi_json (~> 1.11)
|
||||||
|
os (>= 0.9, < 2.0)
|
||||||
|
signet (>= 0.16, < 2.a)
|
||||||
|
highline (2.0.3)
|
||||||
|
http-cookie (1.0.4)
|
||||||
|
domain_name (~> 0.5)
|
||||||
|
httpclient (2.8.3)
|
||||||
|
jmespath (1.6.1)
|
||||||
|
json (2.6.1)
|
||||||
|
jwt (2.3.0)
|
||||||
|
memoist (0.16.2)
|
||||||
|
mini_magick (4.11.0)
|
||||||
|
mini_mime (1.1.2)
|
||||||
|
multi_json (1.15.0)
|
||||||
|
multipart-post (2.0.0)
|
||||||
|
nanaimo (0.3.0)
|
||||||
|
naturally (2.2.1)
|
||||||
|
optparse (0.1.1)
|
||||||
|
os (1.1.4)
|
||||||
|
plist (3.6.0)
|
||||||
|
public_suffix (4.0.6)
|
||||||
|
rake (13.0.6)
|
||||||
|
representable (3.1.1)
|
||||||
|
declarative (< 0.1.0)
|
||||||
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||||
|
uber (< 0.2.0)
|
||||||
|
retriable (3.1.2)
|
||||||
|
rexml (3.2.5)
|
||||||
|
rouge (2.0.7)
|
||||||
|
ruby2_keywords (0.0.5)
|
||||||
|
rubyzip (2.3.2)
|
||||||
|
screengrab (1.0.0)
|
||||||
|
fastlane (>= 2.0.0, < 3.0.0)
|
||||||
|
security (0.1.3)
|
||||||
|
signet (0.16.1)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
faraday (>= 0.17.5, < 3.0)
|
||||||
|
jwt (>= 1.5, < 3.0)
|
||||||
|
multi_json (~> 1.10)
|
||||||
|
simctl (1.6.8)
|
||||||
|
CFPropertyList
|
||||||
|
naturally
|
||||||
|
terminal-notifier (2.0.0)
|
||||||
|
terminal-table (1.8.0)
|
||||||
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
|
trailblazer-option (0.1.2)
|
||||||
|
tty-cursor (0.7.1)
|
||||||
|
tty-screen (0.8.1)
|
||||||
|
tty-spinner (0.9.3)
|
||||||
|
tty-cursor (~> 0.7)
|
||||||
|
uber (0.1.0)
|
||||||
|
unf (0.1.4)
|
||||||
|
unf_ext
|
||||||
|
unf_ext (0.0.8)
|
||||||
|
unicode-display_width (1.8.0)
|
||||||
|
webrick (1.7.0)
|
||||||
|
word_wrap (1.0.0)
|
||||||
|
xcodeproj (1.21.0)
|
||||||
|
CFPropertyList (>= 2.3.3, < 4.0)
|
||||||
|
atomos (~> 0.1.3)
|
||||||
|
claide (>= 1.0.2, < 2.0)
|
||||||
|
colored2 (~> 3.1)
|
||||||
|
nanaimo (~> 0.3.0)
|
||||||
|
rexml (~> 3.2.4)
|
||||||
|
xcpretty (0.3.0)
|
||||||
|
rouge (~> 2.0.7)
|
||||||
|
xcpretty-travis-formatter (1.0.1)
|
||||||
|
xcpretty (~> 0.2, >= 0.0.7)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
x86_64-linux
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
fastlane
|
||||||
|
screengrab
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.2.5
|
40
README.md
|
@ -1,3 +1,43 @@
|
||||||
# Cheogram Android
|
# Cheogram Android
|
||||||
|
|
||||||
This is a fork of [Conversations](https://conversations.im) to implement features of use to the [Sopranica](https://soprani.ca) project.
|
This is a fork of [Conversations](https://conversations.im) to implement features of use to the [Sopranica](https://soprani.ca) project.
|
||||||
|
|
||||||
|
The Cheogram Android app allows you to join a worldwide communication network. It especially focuses on features useful to users who want to contact those on other networks as well, such as SMS-enabled phone numbers.
|
||||||
|
|
||||||
|
Based on the app Conversations, but with unique features:
|
||||||
|
|
||||||
|
* Messages with both media and text, including animated media
|
||||||
|
* Unobtrusive display of subject lines, where present
|
||||||
|
* Links to known contacts are shown with their name
|
||||||
|
* Integrates with gateways' add contact flows
|
||||||
|
* When using a gateway to the phone network, integrate with the native Android Phone app
|
||||||
|
* Address book integration
|
||||||
|
|
||||||
|
Where to get service:
|
||||||
|
|
||||||
|
Cheogram Android requires you have an account with a Jabber service. You can run your own service, or use one provided by someone else, for example: https://snikket.org/hosting/
|
||||||
|
|
||||||
|
Art in screenshots is from https://www.peppercarrot.com by David Revoy, CC-BY. Artwork has been modified to crop out sections for avatars and photos, and in some cases add transparency. Use of this artwork does not imply endorsement of this project by the artist.
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
If you have any questions about this app, or wish to report a bug, please come by the chatroom at xmpp:discuss@conference.soprani.ca?join or [on the web](https://anonymous.cheogram.com/discuss@conference.soprani.ca).
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
If you have code or patches you wish to contribute, the maintainer's preferred mechanism is a git pull request. Push your changes to a git repository somewhere, for example:
|
||||||
|
|
||||||
|
git remote rename origin upstream
|
||||||
|
git remote add origin git@git.sr.ht:~yourname/cheogram-android
|
||||||
|
git push -u origin master
|
||||||
|
|
||||||
|
Then generate the pull request:
|
||||||
|
|
||||||
|
git fetch upstream master
|
||||||
|
git request-pull -p upstream/master origin
|
||||||
|
|
||||||
|
And copy-paste the result into a plain-text email to: dev@singpolyma.net
|
||||||
|
|
||||||
|
You may alternately use a patch-based approach as described on https://git-send-email.io
|
||||||
|
|
||||||
|
Contributions follow an inbound=outbound model -- you (or your employer) keep all copyright on your patches, but agree to license them according to this project's COPYING file.
|
||||||
|
|
|
@ -1,427 +1,25 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
<g clip-path="url(#clip0)">
|
||||||
|
<rect width="128" height="128" fill="url(#paint0_linear)"/>
|
||||||
<svg
|
<path d="M-19.9999 67.9171C61.5424 78.7397 69.0585 19.8547 77.8688 -15.4586L-1.83026 -23.5237L-19.9999 67.9171Z" fill="url(#paint1_linear)"/>
|
||||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
<path d="M82.2373 56.2911C82.9773 33.3423 115.296 18.7894 138.494 35.1324L176.266 69.2758C142.064 112.363 69.2602 194.01 51.6603 175.903C29.6604 153.27 27.0391 109.448 49.9311 102.362C72.8231 95.2766 81.6097 75.7553 82.2373 56.2911Z" fill="#8F00FF" fill-opacity="0.8"/>
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
<ellipse cx="50.5422" cy="63.3697" rx="5.40571" ry="5.47375" fill="white"/>
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
<ellipse cx="65.986" cy="63.3697" rx="5.40571" ry="5.47375" fill="white"/>
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
<ellipse cx="81.4301" cy="63.3697" rx="5.40571" ry="5.47375" fill="white"/>
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M66.1035 25.9225C55.9806 26.0082 46.1247 29.5353 38.5158 35.9277C30.8923 42.3325 26.02 51.2163 25.1526 60.8896C24.2835 70.5818 27.529 80.071 34.0565 87.4338C34.9439 88.4347 35.8821 89.3857 36.8663 90.2851C35.7675 94.2504 33.7217 96.8257 31.8959 98.329C31.1495 98.9436 31.3126 100.392 32.2709 100.519C36.3346 101.058 42.2646 100.706 46.6509 96.8488C50.7471 98.8033 55.2012 100.106 59.8222 100.687C69.8441 101.946 80.1116 99.7459 88.6006 94.4548C94.0726 91.0441 98.617 87.0601 101.798 81.8868C102.659 80.4859 102.047 78.693 100.579 77.9545L94.8672 75.0811C93.376 74.3309 91.5755 74.9609 90.6107 76.3245C88.5253 79.272 85.6411 81.6003 82.1148 83.7982C76.072 87.5647 68.6337 89.1887 61.3293 88.2709C54.0268 87.3534 47.601 83.9941 43.2464 79.0822C38.9157 74.1974 36.9124 68.1144 37.4575 62.0356C38.0043 55.9378 41.1047 50.0188 46.4118 45.5601C51.7337 41.0891 58.8097 38.4959 66.2215 38.4331C73.6329 38.3704 80.6187 40.8423 85.8081 45.1703C87.7808 46.8156 89.453 49.0733 90.7789 51.307C91.6296 52.7402 93.4314 53.3566 94.9208 52.6068L100.619 49.7385C102.09 48.9979 102.698 47.205 101.884 45.7741C99.7422 42.0075 96.9533 38.2665 93.6563 35.5169C86.0808 29.1989 76.2268 25.8368 66.1035 25.9225Z" fill="white"/>
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
</g>
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
<defs>
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
<linearGradient id="paint0_linear" x1="64" y1="0" x2="64" y2="128" gradientUnits="userSpaceOnUse">
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
<stop stop-color="#6F00C7"/>
|
||||||
width="57mm"
|
<stop offset="1" stop-color="#8F00FF"/>
|
||||||
height="57mm"
|
</linearGradient>
|
||||||
viewBox="0 0 201.96849 201.96849"
|
<linearGradient id="paint1_linear" x1="1.10839" y1="-9.30531" x2="124.827" y2="44.6382" gradientUnits="userSpaceOnUse">
|
||||||
id="svg4211"
|
<stop stop-color="#8F00FF"/>
|
||||||
version="1.1"
|
<stop offset="1" stop-color="#8F00FF" stop-opacity="0"/>
|
||||||
inkscape:version="0.91 r13725"
|
<stop offset="1" stop-color="#8A01F6"/>
|
||||||
sodipodi:docname="conversations_baloon.svg">
|
</linearGradient>
|
||||||
<sodipodi:namedview
|
<clipPath id="clip0">
|
||||||
id="base"
|
<rect width="128" height="128" fill="white"/>
|
||||||
pagecolor="#ffffff"
|
</clipPath>
|
||||||
bordercolor="#666666"
|
</defs>
|
||||||
borderopacity="1.0"
|
|
||||||
showgrid="false"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
showguides="false"
|
|
||||||
inkscape:zoom="2.2196812"
|
|
||||||
inkscape:cx="39.109276"
|
|
||||||
inkscape:cy="132.27753"
|
|
||||||
inkscape:window-width="1600"
|
|
||||||
inkscape:window-height="836"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="layer8" />
|
|
||||||
<defs
|
|
||||||
id="defs4213">
|
|
||||||
<linearGradient
|
|
||||||
osb:paint="solid"
|
|
||||||
id="linearGradient5393">
|
|
||||||
<stop
|
|
||||||
id="stop5395"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
|
||||||
</linearGradient>
|
|
||||||
<clipPath
|
|
||||||
id="clipPath4831"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<circle
|
|
||||||
style="display:inline;opacity:1;fill:#a00e00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle4833"
|
|
||||||
cx="883.16943"
|
|
||||||
cy="677.19611"
|
|
||||||
r="229.80969" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
id="clipPath4859"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<circle
|
|
||||||
style="display:inline;opacity:1;fill:#a00e00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle4861"
|
|
||||||
cx="883.16943"
|
|
||||||
cy="677.19611"
|
|
||||||
r="229.80969" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
id="clipPath5624"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
id="g5626"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-250.60108,-156.11014)">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="ccsssc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5628"
|
|
||||||
d="m 1120.8042,772.36056 -118.0025,103.66316 118.5792,46.01918 c 8.4859,3.29325 19.6524,7.94481 27.2622,0.71376 7.3868,-7.01907 5.6502,-14.13839 3.0935,-24.54095 z"
|
|
||||||
style="display:inline;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
|
||||||
<circle
|
|
||||||
transform="matrix(1.0878566,0,0,1.0878566,-57.401992,-79.686482)"
|
|
||||||
clip-path="url(#clipPath4859)"
|
|
||||||
r="229.80969"
|
|
||||||
cy="677.19611"
|
|
||||||
cx="883.16943"
|
|
||||||
id="circle5630"
|
|
||||||
style="display:inline;opacity:1;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath10653">
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
id="g10655"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-250.60108,-156.11015)"
|
|
||||||
inkscape:export-xdpi="100"
|
|
||||||
inkscape:export-ydpi="100">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="ccsssc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path10657"
|
|
||||||
d="m 1120.8042,772.36056 -118.0025,103.66316 118.5792,46.01918 c 8.4859,3.29325 19.6524,7.94481 27.2622,0.71376 7.3868,-7.01907 5.6502,-14.13839 3.0935,-24.54095 z"
|
|
||||||
style="display:inline;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
|
||||||
<circle
|
|
||||||
transform="matrix(1.0878566,0,0,1.0878566,-57.401992,-79.686482)"
|
|
||||||
clip-path="url(#clipPath4859)"
|
|
||||||
r="229.80969"
|
|
||||||
cy="677.19611"
|
|
||||||
cx="883.16943"
|
|
||||||
id="circle10659"
|
|
||||||
style="display:inline;opacity:1;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
</clipPath>
|
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient3913"
|
|
||||||
id="radialGradient3883"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.68662089,-0.30388739,0.24146012,0.54605188,-300.74233,-264.46964)"
|
|
||||||
cx="262.33273"
|
|
||||||
cy="945.23846"
|
|
||||||
fx="262.33273"
|
|
||||||
fy="945.23846"
|
|
||||||
r="185.49754" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient3913">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop3915" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop3917" />
|
|
||||||
</linearGradient>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath5315">
|
|
||||||
<g
|
|
||||||
inkscape:export-ydpi="100"
|
|
||||||
inkscape:export-xdpi="100"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-246.60108,-156.11013)"
|
|
||||||
id="g5317"
|
|
||||||
style="display:inline;fill:#00a000;fill-opacity:1">
|
|
||||||
<path
|
|
||||||
style="display:inline;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 1120.8042,772.36056 -118.0025,103.66316 118.5792,46.01918 c 8.4859,3.29325 19.6524,7.94481 27.2622,0.71376 7.3868,-7.01907 5.6502,-14.13839 3.0935,-24.54095 z"
|
|
||||||
id="path5319"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccsssc" />
|
|
||||||
<circle
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle5321"
|
|
||||||
cx="883.16943"
|
|
||||||
cy="677.19611"
|
|
||||||
r="229.80969"
|
|
||||||
clip-path="url(#clipPath4859)"
|
|
||||||
transform="matrix(1.0878566,0,0,1.0878566,-57.401992,-79.686482)" />
|
|
||||||
</g>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6882">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6884"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6886">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6888"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6890">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6892"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6894">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6896"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6898">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6900"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6902">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6904"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6906">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6908"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6910">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6912"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<filter
|
|
||||||
inkscape:collect="always"
|
|
||||||
style="color-interpolation-filters:sRGB"
|
|
||||||
id="filter5640"
|
|
||||||
x="-0.012227737"
|
|
||||||
width="1.0244555"
|
|
||||||
y="-0.011780591"
|
|
||||||
height="1.0235612">
|
|
||||||
<feGaussianBlur
|
|
||||||
inkscape:collect="always"
|
|
||||||
stdDeviation="0.9782166"
|
|
||||||
id="feGaussianBlur5642" />
|
|
||||||
</filter>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath5745">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5747"
|
|
||||||
d="M 99.908581,-2.3831968e-4 A 95.889392,95.889392 0 0 0 4.0199102,95.888436 95.889392,95.889392 0 0 0 99.908581,191.77906 95.889392,95.889392 0 0 0 142.61366,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 L 183.8285,142.24002 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.79921,95.888466 95.889392,95.889392 0 0 0 99.908581,-2.0831968e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
<metadata
|
|
||||||
id="metadata4216">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer9"
|
|
||||||
inkscape:label="shaddow"
|
|
||||||
transform="translate(-4,2.6816164)"
|
|
||||||
style="display:inline">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6914"
|
|
||||||
d="M 104.88867,0.06226191 A 95.889392,95.889392 0 0 0 8.9999996,95.950936 95.889392,95.889392 0 0 0 104.88867,191.84156 95.889392,95.889392 0 0 0 147.59375,181.76343 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 200.7793,95.950966 95.889392,95.889392 0 0 0 104.88867,0.06229191 Z"
|
|
||||||
style="display:inline;opacity:0.4;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter5640)" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
inkscape:label="bubble"
|
|
||||||
id="layer4"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
transform="translate(-4,2.6816348)">
|
|
||||||
<path
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="M 104.88867,-1.9377566 A 95.889392,95.889392 0 0 0 8.9999996,93.950918 95.889392,95.889392 0 0 0 104.88867,189.84154 95.889392,95.889392 0 0 0 147.59375,179.76341 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 L 188.80859,140.3025 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 200.7793,93.950948 95.889392,95.889392 0 0 0 104.88867,-1.9377266 Z"
|
|
||||||
id="circle6661"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:normal;font-weight:normal;font-size:125px;line-height:1000%;font-family:Sans;letter-spacing:-10.89000034px;word-spacing:5px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
x="85.862968"
|
|
||||||
y="-55.271603"
|
|
||||||
id="text6634"
|
|
||||||
sodipodi:linespacing="1000%"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan6636"
|
|
||||||
x="85.862968"
|
|
||||||
y="-55.271603" /></text>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer8"
|
|
||||||
inkscape:label="dotted line"
|
|
||||||
style="display:inline"
|
|
||||||
transform="translate(-4,2.6816164)">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6910)"
|
|
||||||
d="m 145.16406,11.183594 -5.13232,9.649402 c -0.77924,1.465076 -0.65974,2.41396 0.66876,3.18097 9.66686,5.488467 18.12303,12.874168 24.86104,21.711122 1.05534,1.616079 2.08054,1.713076 3.67763,0.571565 L 178.04883,40 C 169.45271,27.990203 158.19857,18.128379 145.16406,11.183594 Z"
|
|
||||||
id="path7364"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="csccscc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6906)"
|
|
||||||
d="m 193.80469,75.615234 -9.62713,2.062751 c -2.66266,0.570512 -3.40763,1.172953 -2.90593,3.917433 0.85823,4.714633 1.30424,9.497137 1.33189,14.293254 -0.028,5.578758 -0.62194,11.137108 -1.77093,16.589918 -0.86591,3.23162 0.13682,3.77092 3.16149,4.58138 l 8.98639,2.30136 c 1.98177,-7.66828 3.00584,-15.55255 3.04883,-23.472658 -0.0187,-6.817681 -0.76446,-13.613926 -2.22461,-20.273438 z"
|
|
||||||
id="path7366"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="csccccccc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6902)"
|
|
||||||
d="m 14.264281,102.76512 -10.2076406,0.87943 c 1.2093798,14.83154 5.8540346,29.17808 13.5664056,41.90429 l 8.544301,-5.23239 c 2.394983,-1.46665 1.895406,-3.37834 0.986202,-5.04513 -5.118253,-9.40257 -8.359018,-19.71635 -9.536202,-30.36553 0,-2.09418 -1.881577,-2.26744 -3.353066,-2.14067 z"
|
|
||||||
id="path7372"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="sccsccs"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6898)"
|
|
||||||
d="m 51.504371,166.60235 -5.82273,8.50898 c 12.710503,8.71282 27.333669,14.23394 42.630859,16.0957 l 1.220329,-9.90843 c 0.355066,-2.88295 -1.085712,-3.52946 -3.332252,-3.90256 -10.402329,-1.73697 -20.373956,-5.45322 -29.373754,-10.94516 -1.647505,-1.06744 -3.639993,-2.30718 -5.322452,0.15147 z"
|
|
||||||
id="path7370"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="sccsccs"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6894)"
|
|
||||||
d="M 32.208984,27.683594 C 21.779177,38.079001 13.883707,50.736882 9.1347656,64.675781 L 19.33617,68.090365 c 1.658147,0.55501 2.832564,-0.120955 3.374272,-1.591979 3.777598,-10.021698 9.470788,-19.210103 16.759132,-27.052307 1.561136,-1.561136 1.567283,-2.960058 0.447507,-4.076606 z"
|
|
||||||
id="path7374"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccsccsc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6890)"
|
|
||||||
d="M 99.888672,-0.25 C 87.701045,-0.2239408 75.630114,2.1252837 64.322266,6.671875 l 3.530435,8.74898 c 1.063314,2.635062 1.616754,3.526314 4.973913,2.352259 8.692057,-3.031338 17.839027,-4.588849 27.062058,-4.599286 5.555828,0 6.486278,0.350026 6.780788,-3.4460223 l 0.74851,-9.64772758 C 104.9135,-0.12857239 102.40179,-0.23868346 99.888672,-0.25 Z"
|
|
||||||
id="path7376"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccsccscc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6886)"
|
|
||||||
d="m 138.72416,168.48439 c -4.17634,2.25458 -8.55959,4.09055 -13.0504,5.63418 -1.00363,0.34498 -1.20742,1.18222 -0.8682,2.27372 l 3.44056,11.0706 c 4.92985,-1.53124 9.72799,-3.45808 14.34766,-5.76172 l 0.12695,0.0137 14.0293,5.44532 4.12174,-10.20577 c 0.7548,-1.86894 -0.0184,-2.7016 -1.59462,-3.31324 l -14.72114,-5.71251 c -1.86679,-0.7244 -3.68834,-0.60144 -5.83185,0.55572 z"
|
|
||||||
id="path5005"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cssccccsssc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6882)"
|
|
||||||
d="m 186.53125,152.80469 -10.6386,2.70888 c -0.78879,0.20085 -1.67397,1.02386 -1.35494,2.33801 l 9.75918,40.15428 c 8.56713,5.97538 15.30408,3.06731 11.01563,-9.47266 z"
|
|
||||||
id="path5071"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cssccc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
inkscape:label="dots"
|
|
||||||
id="layer2"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
transform="translate(-4,2.6816348)">
|
|
||||||
<g
|
|
||||||
inkscape:export-ydpi="100"
|
|
||||||
inkscape:export-xdpi="100"
|
|
||||||
style="fill:#f5f5f5;fill-opacity:1"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-248.17635,-138.86977)"
|
|
||||||
id="g5126">
|
|
||||||
<circle
|
|
||||||
r="27.299093"
|
|
||||||
style="opacity:1;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
|
||||||
id="path3047-4"
|
|
||||||
cx="799.11273"
|
|
||||||
cy="609.86285" />
|
|
||||||
<circle
|
|
||||||
r="27.299093"
|
|
||||||
style="opacity:1;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
|
||||||
id="path3047-1-2"
|
|
||||||
cx="918.91962"
|
|
||||||
cy="609.86285" />
|
|
||||||
<circle
|
|
||||||
r="27.299093"
|
|
||||||
style="opacity:1;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
|
||||||
id="path3047-1-8-6"
|
|
||||||
cx="1039.0352"
|
|
||||||
cy="609.86285" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
inkscape:label="light"
|
|
||||||
style="display:inline"
|
|
||||||
transform="translate(-4,2.6816164)">
|
|
||||||
<path
|
|
||||||
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
|
|
||||||
d="m 192.44891,47.715674 c -61.69765,0 -111.704333,49.103472 -111.704333,109.668976 0,12.77573 2.228815,25.0414 6.321575,36.4393 5.069139,0.70557 10.251828,1.06876 15.514978,1.06876 18.80489,0 30.91434,7.28449 47.46533,1.26909 l 54.00234,6.06606 c 5.24363,2.11897 11.63381,1.37954 10.27166,-4.11162 l -14.23663,-57.56735 c 9.15073,-16.06873 12.27539,-34.36633 12.27539,-53.240271 0,-13.72556 -2.63167,-26.842322 -7.42478,-38.909717 -4.09925,-0.447474 -8.2658,-0.683228 -12.48553,-0.683228 z"
|
|
||||||
id="path3878"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
clip-path="url(#clipPath5745)"
|
|
||||||
transform="translate(4.9800894,-1.9374999)"
|
|
||||||
sodipodi:nodetypes="sscsccccscs" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 2.6 KiB |
182
art/message_bubble_received_obsidian.svg
Normal file
|
@ -0,0 +1,182 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="36"
|
||||||
|
height="26"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||||
|
sodipodi:docname="message_bubble_received_obsidian.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<filter
|
||||||
|
x="-0.25"
|
||||||
|
y="-0.25"
|
||||||
|
width="1.5"
|
||||||
|
height="1.5"
|
||||||
|
inkscape:label="Drop Shadow"
|
||||||
|
id="filter3811"
|
||||||
|
color-interpolation-filters="sRGB">
|
||||||
|
<feFlood
|
||||||
|
flood-opacity="0.25"
|
||||||
|
flood-color="rgb(0,0,0)"
|
||||||
|
result="flood"
|
||||||
|
id="feFlood3813" />
|
||||||
|
<feComposite
|
||||||
|
in="flood"
|
||||||
|
in2="SourceGraphic"
|
||||||
|
operator="in"
|
||||||
|
result="composite1"
|
||||||
|
id="feComposite3815" />
|
||||||
|
<feGaussianBlur
|
||||||
|
stdDeviation="0.5"
|
||||||
|
result="blur"
|
||||||
|
id="feGaussianBlur3817" />
|
||||||
|
<feOffset
|
||||||
|
dx="0"
|
||||||
|
dy="1"
|
||||||
|
result="offset"
|
||||||
|
id="feOffset3819" />
|
||||||
|
<feComposite
|
||||||
|
in="SourceGraphic"
|
||||||
|
in2="offset"
|
||||||
|
operator="over"
|
||||||
|
result="composite2"
|
||||||
|
id="feComposite3821" />
|
||||||
|
</filter>
|
||||||
|
<linearGradient
|
||||||
|
id="paint0_linear"
|
||||||
|
x1="1260"
|
||||||
|
y1="1570.41"
|
||||||
|
x2="618.987"
|
||||||
|
y2="488.325"
|
||||||
|
gradientUnits="userSpaceOnUse">
|
||||||
|
<stop
|
||||||
|
stop-color="#7D01DD"
|
||||||
|
id="stop1226" />
|
||||||
|
<stop
|
||||||
|
offset="1"
|
||||||
|
stop-color="#8301E9"
|
||||||
|
id="stop1228" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="22.627417"
|
||||||
|
inkscape:cx="10.265754"
|
||||||
|
inkscape:cy="15.902718"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="2354"
|
||||||
|
inkscape:window-height="1060"
|
||||||
|
inkscape:window-x="1478"
|
||||||
|
inkscape:window-y="1092"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
showguides="true"
|
||||||
|
inkscape:guide-bbox="true"
|
||||||
|
guidecolor="#000000"
|
||||||
|
guideopacity="0.49803922"
|
||||||
|
inkscape:document-rotation="0"
|
||||||
|
inkscape:snap-global="true">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2985"
|
||||||
|
empspacing="4"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true"
|
||||||
|
spacingx="1"
|
||||||
|
spacingy="1"
|
||||||
|
originx="0"
|
||||||
|
originy="0"
|
||||||
|
color="#0000ff"
|
||||||
|
opacity="0.03137255" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="1,0"
|
||||||
|
position="20,26"
|
||||||
|
id="guide3060" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="1,0"
|
||||||
|
position="24,26"
|
||||||
|
id="guide3062" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="0,1"
|
||||||
|
position="36,22"
|
||||||
|
id="guide3064" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="0,1"
|
||||||
|
position="36,6"
|
||||||
|
id="guide3066" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="1,0"
|
||||||
|
position="26,0"
|
||||||
|
id="guide3068" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="1,0"
|
||||||
|
position="18,0"
|
||||||
|
id="guide3070" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="0,1"
|
||||||
|
position="0,10"
|
||||||
|
id="guide3074" />
|
||||||
|
<sodipodi:guide
|
||||||
|
orientation="0,1"
|
||||||
|
position="0,8"
|
||||||
|
id="guide3076" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer"
|
||||||
|
transform="translate(0,-2)">
|
||||||
|
<g
|
||||||
|
id="g3759"
|
||||||
|
style="fill:#1e0036;fill-opacity:1;stroke:none;fill-rule:nonzero;filter:url(#filter3811)">
|
||||||
|
<path
|
||||||
|
style="display:none;fill:#1e0036;fill-opacity:1"
|
||||||
|
d="m 8,6 c 2,2 4,6 4,10 L 16,6 z"
|
||||||
|
id="path3805"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
transform="translate(0,2)"
|
||||||
|
sodipodi:nodetypes="cccc" />
|
||||||
|
<path
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
id="path2989"
|
||||||
|
d="M 4,4 16,16 16,4 z"
|
||||||
|
sodipodi:nodetypes="cccc"
|
||||||
|
style="fill:#1e0036;fill-opacity:1" />
|
||||||
|
<rect
|
||||||
|
ry="2"
|
||||||
|
y="4"
|
||||||
|
x="12"
|
||||||
|
height="20"
|
||||||
|
width="20"
|
||||||
|
id="rect2987"
|
||||||
|
style="fill:#1e0036;fill-opacity:1" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.6 KiB |
30
build.gradle
|
@ -40,7 +40,7 @@ configurations {
|
||||||
playstoreImplementation
|
playstoreImplementation
|
||||||
freeImplementation
|
freeImplementation
|
||||||
conversationsFreeImplementation
|
conversationsFreeImplementation
|
||||||
conversationsPlaystorImplementation
|
cheogramPlaystoreImplementation
|
||||||
conversationsPlaystoreImplementation
|
conversationsPlaystoreImplementation
|
||||||
quicksyPlaystoreImplementation
|
quicksyPlaystoreImplementation
|
||||||
quicksyPlaystoreImplementation
|
quicksyPlaystoreImplementation
|
||||||
|
@ -49,13 +49,21 @@ configurations {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
androidTestImplementation 'tools.fastlane:screengrab:2.1.1'
|
||||||
|
androidTestImplementation 'junit:junit:4.13.2'
|
||||||
|
androidTestImplementation 'androidx.test:runner:1.3.0'
|
||||||
|
androidTestImplementation 'androidx.test:rules:1.3.0'
|
||||||
|
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
||||||
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||||
|
|
||||||
implementation 'androidx.viewpager:viewpager:1.0.0'
|
implementation 'androidx.viewpager:viewpager:1.0.0'
|
||||||
|
|
||||||
playstoreImplementation('com.google.firebase:firebase-messaging:23.0.0') {
|
playstoreImplementation('com.google.firebase:firebase-messaging:23.0.2') {
|
||||||
exclude group: 'com.google.firebase', module: 'firebase-core'
|
exclude group: 'com.google.firebase', module: 'firebase-core'
|
||||||
exclude group: 'com.google.firebase', module: 'firebase-analytics'
|
exclude group: 'com.google.firebase', module: 'firebase-analytics'
|
||||||
exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
|
exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
|
||||||
}
|
}
|
||||||
|
cheogramPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
|
||||||
conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
|
conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
|
||||||
quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1'
|
quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1'
|
||||||
implementation 'org.sufficientlysecure:openpgp-api:10.0'
|
implementation 'org.sufficientlysecure:openpgp-api:10.0'
|
||||||
|
@ -66,8 +74,8 @@ dependencies {
|
||||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||||
implementation 'com.google.android.material:material:1.4.0'
|
implementation 'com.google.android.material:material:1.4.0'
|
||||||
|
|
||||||
implementation "androidx.emoji2:emoji2:1.1.0-rc01"
|
implementation "androidx.emoji2:emoji2:1.1.0"
|
||||||
freeImplementation "androidx.emoji2:emoji2-bundled:1.1.0-rc01"
|
freeImplementation "androidx.emoji2:emoji2-bundled:1.1.0"
|
||||||
|
|
||||||
implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
|
implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
|
||||||
//zxing stopped supporting Java 7 so we have to stick with 3.3.3
|
//zxing stopped supporting Java 7 so we have to stick with 3.3.3
|
||||||
|
@ -80,8 +88,8 @@ dependencies {
|
||||||
implementation "com.wefika:flowlayout:0.4.1"
|
implementation "com.wefika:flowlayout:0.4.1"
|
||||||
implementation 'com.otaliastudios:transcoder:0.10.4'
|
implementation 'com.otaliastudios:transcoder:0.10.4'
|
||||||
|
|
||||||
implementation 'org.jxmpp:jxmpp-jid:1.0.2'
|
implementation 'org.jxmpp:jxmpp-jid:1.0.3'
|
||||||
implementation 'org.osmdroid:osmdroid-android:6.1.10'
|
implementation 'org.osmdroid:osmdroid-android:6.1.11'
|
||||||
implementation 'org.hsluv:hsluv:0.2'
|
implementation 'org.hsluv:hsluv:0.2'
|
||||||
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
||||||
implementation 'me.drakeet.support:toastcompat:1.1.0'
|
implementation 'me.drakeet.support:toastcompat:1.1.0'
|
||||||
|
@ -109,16 +117,16 @@ android {
|
||||||
compileSdkVersion 31
|
compileSdkVersion 31
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 24
|
minSdkVersion 21
|
||||||
targetSdkVersion 29
|
targetSdkVersion 30
|
||||||
versionCode 42024 + grgit.tag.list().size()
|
versionCode 42024 + grgit.tag.list().findAll { it.dateTime != null }.size()
|
||||||
versionName grgit.describe(tags: true, always: true)
|
versionName grgit.describe(always: true)
|
||||||
archivesBaseName += "-$versionName"
|
|
||||||
applicationId "eu.siacs.conversations"
|
applicationId "eu.siacs.conversations"
|
||||||
resValue "string", "applicationId", applicationId
|
resValue "string", "applicationId", applicationId
|
||||||
def appName = "Conversations"
|
def appName = "Conversations"
|
||||||
resValue "string", "app_name", appName
|
resValue "string", "app_name", appName
|
||||||
buildConfigField "String", "APP_NAME", "\"$appName\"";
|
buildConfigField "String", "APP_NAME", "\"$appName\"";
|
||||||
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
459
cheogram.doap
Normal file
|
@ -0,0 +1,459 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-stylesheet href="../style.xsl" type="text/xsl"?>
|
||||||
|
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
|
<Project xmlns="http://usefulinc.com/ns/doap#"
|
||||||
|
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||||
|
xmlns:xmpp="https://linkmauve.fr/ns/xmpp-doap#"
|
||||||
|
xmlns:schema="https://schema.org/">
|
||||||
|
<name>Cheogram Android</name>
|
||||||
|
|
||||||
|
<created>2021-06-12</created>
|
||||||
|
|
||||||
|
<shortdesc xml:lang="en">Android Jabber Client</shortdesc>
|
||||||
|
|
||||||
|
<description xml:lang="en">Cheogram is a freedomware client for the Jabber network (using the XMPP protocol) with a focus on features for gateway users.</description>
|
||||||
|
|
||||||
|
<homepage rdf:resource="https://cheogram.com/"/>
|
||||||
|
<bug-database rdf:resource="mailto:dev@singpolyma.net"/>
|
||||||
|
<!-- See https://github.com/ewilderj/doap/issues/53 -->
|
||||||
|
<developer-forum rdf:resource="xmpp:discuss@conference.soprani.ca?join"/>
|
||||||
|
<support-forum rdf:resource="xmpp:discuss@conference.soprani.ca?join"/>
|
||||||
|
|
||||||
|
<license rdf:resource="https://git.singpolyma.net/cheogram-android/tree/master/item/LICENSE"/>
|
||||||
|
|
||||||
|
<!-- See https://github.com/ewilderj/doap/issues/49 -->
|
||||||
|
<language>en</language>
|
||||||
|
|
||||||
|
<schema:logo rdf:resource="https://git.singpolyma.net/cheogram-android/blob/master/art/ic_launcher.svg"/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/conversation.png'/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/dialler.png'/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/startConversation.png'/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/startConversationOptions.png'/>
|
||||||
|
|
||||||
|
<programming-language>Java</programming-language>
|
||||||
|
|
||||||
|
<os>Android</os>
|
||||||
|
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/>
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-jabber"/>
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-client"/>
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-sms"/>
|
||||||
|
|
||||||
|
<maintainer>
|
||||||
|
<Project>
|
||||||
|
<name>Soprani.ca</name>
|
||||||
|
<homepage rdf:resource="https://soprani.ca/"/>
|
||||||
|
</Project>
|
||||||
|
</maintainer>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<GitRepository>
|
||||||
|
<browse rdf:resource="https://git.singpolyma.net/cheogram-android"/>
|
||||||
|
<location rdf:resource="https://git.singpolyma.net/cheogram-android"/>
|
||||||
|
</GitRepository>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc6120.html"/>
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc6121.html"/>
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc6122.html"/>
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc7590.html"/>
|
||||||
|
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0027.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.4</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.5rc3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0045.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.32.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0049.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/>
|
||||||
|
<xmpp:status>partial</xmpp:status>
|
||||||
|
<xmpp:version>1.2</xmpp:version>
|
||||||
|
<xmpp:note xml:lang='en'>Avatars only</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0084.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0092.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.5.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/>
|
||||||
|
<xmpp:status>partial</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
<xmpp:note xml:lang='en'>Read only. Publication via XEP-0398</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0163.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2.1</xmpp:version>
|
||||||
|
<xmpp:note>Avatar, Nick, OMEMO</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0166.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1.2</xmpp:version>
|
||||||
|
<xmpp:note>File transfer + A/V calls</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0167.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0172.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
<xmpp:note>read only</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0176.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.4.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.6</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.0.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.0.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0215.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.7</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0223.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0234.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.19.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0245.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0249.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0260.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0261.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.13.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0293.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0294.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0308.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0313.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.6.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0319.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.2</xmpp:version>
|
||||||
|
<xmpp:note>opt-in</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0320.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0333.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0338.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0339.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0353.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0357.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.4.0</xmpp:version>
|
||||||
|
<xmpp:note>Only available in the version distributed over Google Play</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0377.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.2</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0391.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1.2</xmpp:version>
|
||||||
|
<xmpp:since>2.5.8</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0392.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.6.0</xmpp:version>
|
||||||
|
<xmpp:since>2.3.1</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0393.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1.4</xmpp:version>
|
||||||
|
<xmpp:since>1.22.0</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0396.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1</xmpp:version>
|
||||||
|
<xmpp:since>2.5.8</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0398.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.2.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0410.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.1</xmpp:version>
|
||||||
|
<xmpp:since>2.5.4</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0411.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.2.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0454.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
</Project>
|
||||||
|
</rdf:RDF>
|
|
@ -1,472 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet href="../style.xsl" type="text/xsl"?>
|
|
||||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
||||||
<Project xmlns="http://usefulinc.com/ns/doap#"
|
|
||||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
|
||||||
xmlns:xmpp="https://linkmauve.fr/ns/xmpp-doap#"
|
|
||||||
xmlns:schema="https://schema.org/">
|
|
||||||
<name>Conversations</name>
|
|
||||||
|
|
||||||
<created>2014-01-14</created>
|
|
||||||
|
|
||||||
<shortdesc xml:lang="en">Android XMPP Client</shortdesc>
|
|
||||||
|
|
||||||
<description xml:lang="en">Conversations is an open source XMPP/Jabber client for the Android platform</description>
|
|
||||||
|
|
||||||
<homepage rdf:resource="https://conversations.im/"/>
|
|
||||||
<download-page rdf:resource="https://play.google.com/store/apps/details?id=eu.siacs.conversations"/>
|
|
||||||
<bug-database rdf:resource="https://github.com/iNPUTmice/Conversations/issues"/>
|
|
||||||
<!-- See https://github.com/ewilderj/doap/issues/53 -->
|
|
||||||
<developer-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
|
|
||||||
<support-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
|
|
||||||
|
|
||||||
<license rdf:resource="https://github.com/iNPUTmice/Conversations/blob/master/LICENSE"/>
|
|
||||||
|
|
||||||
<!-- See https://github.com/ewilderj/doap/issues/49 -->
|
|
||||||
<language>en</language>
|
|
||||||
|
|
||||||
<schema:logo rdf:resource="https://raw.githubusercontent.com/iNPUTmice/Conversations/master/art/ic_launcher.svg"/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png'/>
|
|
||||||
|
|
||||||
<programming-language>Java</programming-language>
|
|
||||||
|
|
||||||
<os>Android</os>
|
|
||||||
|
|
||||||
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/>
|
|
||||||
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-jabber"/>
|
|
||||||
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-client"/>
|
|
||||||
|
|
||||||
<maintainer>
|
|
||||||
<foaf:Person>
|
|
||||||
<foaf:name>Daniel Gultsch</foaf:name>
|
|
||||||
<foaf:homepage rdf:resource="https://gultsch.de/"/>
|
|
||||||
</foaf:Person>
|
|
||||||
</maintainer>
|
|
||||||
|
|
||||||
<repository>
|
|
||||||
<GitRepository>
|
|
||||||
<browse rdf:resource="https://github.com/iNPUTmice/Conversations"/>
|
|
||||||
<location rdf:resource="https://github.com/iNPUTmice/Conversations.git"/>
|
|
||||||
</GitRepository>
|
|
||||||
</repository>
|
|
||||||
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc6120.html"/>
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc6121.html"/>
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc6122.html"/>
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc7590.html"/>
|
|
||||||
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0027.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.4</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.5rc3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0045.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.32.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0049.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/>
|
|
||||||
<xmpp:status>partial</xmpp:status>
|
|
||||||
<xmpp:version>1.2</xmpp:version>
|
|
||||||
<xmpp:note xml:lang='en'>Avatars only</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0084.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0092.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.5.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/>
|
|
||||||
<xmpp:status>partial</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
<xmpp:note xml:lang='en'>Read only. Publication via XEP-0398</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0163.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2.1</xmpp:version>
|
|
||||||
<xmpp:note>Avatar, Nick, OMEMO</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0166.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1.2</xmpp:version>
|
|
||||||
<xmpp:note>File transfer + A/V calls</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0167.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0172.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
<xmpp:note>read only</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0176.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.4.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.6</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.0.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.0.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0215.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.7</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0223.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0234.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.19.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0245.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0249.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0260.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0261.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.13.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0293.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0294.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0308.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0313.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.6.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0319.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.2</xmpp:version>
|
|
||||||
<xmpp:note>opt-in</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0320.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0333.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0338.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0339.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0353.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0357.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.4.0</xmpp:version>
|
|
||||||
<xmpp:note>Only available in the version distributed over Google Play</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0377.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.2</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0391.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1.2</xmpp:version>
|
|
||||||
<xmpp:since>2.5.8</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0392.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.6.0</xmpp:version>
|
|
||||||
<xmpp:since>2.3.1</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0393.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1.4</xmpp:version>
|
|
||||||
<xmpp:since>1.22.0</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0396.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1</xmpp:version>
|
|
||||||
<xmpp:since>2.5.8</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0398.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.2.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0410.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.1</xmpp:version>
|
|
||||||
<xmpp:since>2.5.4</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0411.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.2.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0454.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
|
|
||||||
<release>
|
|
||||||
<Version>
|
|
||||||
<revision>2.9.13</revision>
|
|
||||||
<created>2021-05-03</created>
|
|
||||||
<file-release rdf:resource="https://github.com/iNPUTmice/Conversations/archive/2.9.13.tar.gz"/>
|
|
||||||
</Version>
|
|
||||||
</release>
|
|
||||||
</Project>
|
|
||||||
</rdf:RDF>
|
|
2
fastlane/Appfile
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
|
||||||
|
package_name("com.cheogram.android") # e.g. com.krausefx.app
|
38
fastlane/Fastfile
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
# This file contains the fastlane.tools configuration
|
||||||
|
# You can find the documentation at https://docs.fastlane.tools
|
||||||
|
#
|
||||||
|
# For a list of all available actions, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/actions
|
||||||
|
#
|
||||||
|
# For a list of all available plugins, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/plugins/available-plugins
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uncomment the line if you want fastlane to automatically update itself
|
||||||
|
# update_fastlane
|
||||||
|
|
||||||
|
default_platform(:android)
|
||||||
|
|
||||||
|
platform :android do
|
||||||
|
desc "Build debug and test APK for screenshots"
|
||||||
|
lane :build_for_screengrab do
|
||||||
|
build_android_app(
|
||||||
|
task: 'assemble',
|
||||||
|
flavor: 'CheogramFree',
|
||||||
|
build_type: 'Debug'
|
||||||
|
)
|
||||||
|
build_android_app(
|
||||||
|
task: 'assemble',
|
||||||
|
flavor: 'CheogramFree',
|
||||||
|
build_type: 'DebugAndroidTest'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build and take screenshots"
|
||||||
|
lane :build_and_screengrab do
|
||||||
|
build_for_screengrab
|
||||||
|
capture_android_screenshots
|
||||||
|
end
|
||||||
|
end
|
5
fastlane/Screengrabfile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
locales ['en-US']
|
||||||
|
clear_previous_screenshots true
|
||||||
|
tests_apk_path 'build/outputs/apk/androidTest/cheogramFree/debug/Conversations-cheogram-free-debug-androidTest.apk'
|
||||||
|
app_apk_path 'build/outputs/apk/cheogramFree/debug/Conversations-cheogram-free-debug.apk'
|
||||||
|
test_instrumentation_runner 'androidx.test.runner.AndroidJUnitRunner'
|
|
@ -1,4 +0,0 @@
|
||||||
* Introduce expert setting to perform channel discovery on local server instead of search.jabber.network
|
|
||||||
* Enable delivery check marks by default and remove setting
|
|
||||||
* Enable ‘Send button indicates status’ by default and remove setting
|
|
||||||
* Move Backup and Foreground Service settings to main screen
|
|
|
@ -1,3 +0,0 @@
|
||||||
* fixes for Jingle IBB file transfer
|
|
||||||
* fixes for repeated corrections filling up the database
|
|
||||||
* switched to Last Message Correction v1.1
|
|
|
@ -1,4 +0,0 @@
|
||||||
* let users set their own nick name
|
|
||||||
* resume download of OMEMO encrypted files
|
|
||||||
* Channels now use '#' as symbol in avatar
|
|
||||||
* Quicksy uses 'always' as OMEMO encryption default (hides lock icon)
|
|
|
@ -1 +0,0 @@
|
||||||
* Support for ?register and ?register;preauth XMPP uri parameters
|
|
|
@ -1 +0,0 @@
|
||||||
* Support automatic theme switching on Android 10
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Provide PDF preview on Android 5+
|
|
||||||
* Use 12 byte IVs for OMEMO
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fix avatar selection on some Android 10 devices
|
|
||||||
* Fix file transfer for larger files
|
|
|
@ -1 +0,0 @@
|
||||||
* Audio/Video calls (Requires server support in form of STUN and TURN servers discoverable via XEP-0215)
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Audible feedback (dialing, call started, call ended) for voice calls.
|
|
||||||
* Fixed issue with retrying failed video call
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Add button to switch camea during video call
|
|
||||||
* Fixed voice calls on tablets
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Move call icon to the left in order to keep other toolbar icons in a consistent place
|
|
||||||
* Show call duration during audio calls
|
|
||||||
* Tie breaking for A/V calls (the same two people calling each other at the same time)
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Rework Login with certificate UI
|
|
||||||
* Add ability to pin chats on top (add to favorites)
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Reduce echo during calls on some devices
|
|
||||||
* Fix login when passwords contains special characters
|
|
||||||
* Play dial and busy tones on speaker during video calls
|
|
|
@ -1 +0,0 @@
|
||||||
* Offer to record voice message when callee is busy
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Show help button if A/V call fails
|
|
||||||
* Fixed some annoying crashes
|
|
||||||
* Fixed Jingle connections (file transfer + calls) with bare JIDs
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fixed notifications not showing up under certain conditions
|
|
||||||
* Fixed compatibility issues and crashes related to A/V calls
|
|
|
@ -1,3 +0,0 @@
|
||||||
* add 'Return to chat' to audio call screen
|
|
||||||
* Improve keyboard shortcuts
|
|
||||||
* bug fixes
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Handle GPX files
|
|
||||||
* Improve performance for backup restore
|
|
||||||
* bug fixes
|
|
|
@ -1,4 +0,0 @@
|
||||||
* Search individual conversations
|
|
||||||
* Notify user if message delivery fails
|
|
||||||
* Remember display names (nicks) from Quicksy users across restarts
|
|
||||||
* Add button to start Orbot (Tor) from notification if necessary
|
|
|
@ -1,3 +0,0 @@
|
||||||
* fixed search on Android <= 5
|
|
||||||
* optimize memory consumption
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Offer Easy Invite generation on supporting servers
|
|
||||||
* Display GIFs send from Movim
|
|
||||||
* store avatars in cache
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Fixed connectivity issues when different accounts used different SCRAM mechanisms
|
|
||||||
* Add support for SCRAM-SHA-512
|
|
||||||
* Allow P2P (Jingle) file transfer with self contact
|
|
|
@ -1 +0,0 @@
|
||||||
* minor stability improvements for A/V calls
|
|
|
@ -1 +0,0 @@
|
||||||
* Quicksy: Automatically receive verification SMS
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Show call button for offline contacts if they previously announced support
|
|
||||||
* Back button no longer ends call when call is connected
|
|
||||||
* bug fixes
|
|
|
@ -1,4 +0,0 @@
|
||||||
* Ability to select incoming call ringtone
|
|
||||||
* Fix OpenPGP key id discovery for OpenKeychain 5.6+
|
|
||||||
* Properly verify punycode TLS certificates
|
|
||||||
* Improve stability of RTP session establishment (calling)
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Verify A/V calls with preexisting OMEMO sessions
|
|
||||||
* Improve compatibility with non libwebrtc WebRTC implementations
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Various bug fixes around Tor support
|
|
||||||
* Improve call compatibility with Dino
|
|
|
@ -1 +0,0 @@
|
||||||
* fix HTTP up/download for users that don’t trust system CAs
|
|
|
@ -1 +0,0 @@
|
||||||
* Fixed 'No Connectivity' issues on Android 7.1
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Always verify domain name. No user overwrite
|
|
||||||
* Support roster pre authentication
|
|
|
@ -1 +0,0 @@
|
||||||
* minor A/V improvements
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Show black bars when remote video does not match aspect ratio of screen
|
|
||||||
* Improve search performance
|
|
||||||
* Add setting to prevent screenshots
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fix issue with some videos not being compressed
|
|
||||||
* Fix rare crash when opening notification
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fix crash when rendering some quotes
|
|
||||||
* Fix crash in welcome screen
|
|
|
@ -1,39 +1,18 @@
|
||||||
Easy to use, reliable, battery friendly. With built-in support for images, group chats and e2e encryption.
|
The Cheogram Android app allows you to join a worldwide communication network. It especially focuses on features useful to users who want to contact those on other networks as well, such as SMS-enabled phone numbers.
|
||||||
|
|
||||||
Design principles:
|
Based on the app Conversations, but with unique features:
|
||||||
|
|
||||||
* Be as beautiful and easy to use as possible without sacrificing security or privacy
|
* Messages with both media and text, including animated media
|
||||||
* Rely on existing, well established protocols
|
* Unobtrusive display of subject lines, where present
|
||||||
* Do not require a Google Account or specifically Google Cloud Messaging (GCM)
|
* Links to known contacts are shown with their name
|
||||||
* Require as few permissions as possible
|
* Show timestamps for calls
|
||||||
|
* Missed call notifications
|
||||||
Features:
|
* Integrates with gateways' add contact flows
|
||||||
|
* When using a gateway to the phone network, integrate with the native Android Phone app
|
||||||
* End-to-end encryption with either <a href="http://conversations.im/omemo/">OMEMO</a> or <a href="http://openpgp.org/about/">OpenPGP</a>
|
|
||||||
* Sending and receiving images
|
|
||||||
* Encrypted audio and video calls (DTLS-SRTP)
|
|
||||||
* Intuitive UI that follows Android Design guidelines
|
|
||||||
* Pictures / Avatars for your Contacts
|
|
||||||
* Syncs with desktop client
|
|
||||||
* Conferences (with support for bookmarks)
|
|
||||||
* Address book integration
|
* Address book integration
|
||||||
* Multiple accounts / unified inbox
|
|
||||||
* Very low impact on battery life
|
|
||||||
|
|
||||||
Conversations makes it very easy to create an account on the conversations.im server. Using that server comes with an annual fee of 8 Euro after a 6 month trial period. However Conversations will work with any other XMPP server as well. A lot of XMPP servers are run by volunteers and are free of charge.
|
Where to get service:
|
||||||
|
|
||||||
XMPP Features:
|
Cheogram Android requires you have an account with a Jabber service. You can run your own service, or use one provided by someone else, for example: https://snikket.org/hosting/
|
||||||
|
|
||||||
Conversations works with every XMPP server out there. However XMPP is an extensible protocol. These extensions are standardized as well in so called XEP’s. Conversations supports a couple of those to make the overall user experience better. There is a chance that your current XMPP server does not support these extensions. Therefore to get the most out of Conversations you should consider either switching to an XMPP server that does or - even better - run your own XMPP server for you and your friends.
|
Art in screenshots is from https://www.peppercarrot.com by David Revoy, CC-BY. Artwork has been modified to crop out sections for avatars and photos, and in some cases add transparency. Use of this artwork does not imply endorsement of this project by the artist.
|
||||||
|
|
||||||
These XEPs are - as of now:
|
|
||||||
|
|
||||||
* XEP-0065: SOCKS5 Bytestreams (or mod_proxy65). Will be used to transfer files if both parties are behind a firewall (NAT).
|
|
||||||
* XEP-0163: Personal Eventing Protocol for avatars
|
|
||||||
* XEP-0191: Blocking command lets you blacklist spammers or block contacts without removing them from your roster.
|
|
||||||
* XEP-0198: Stream Management allows XMPP to survive small network outages and changes of the underlying TCP connection.
|
|
||||||
* XEP-0280: Message Carbons which automatically syncs the messages you send to your desktop client and thus allows you to switch seamlessly from your mobile client to your desktop client and back within one conversation.
|
|
||||||
* XEP-0237: Roster Versioning mainly to save bandwidth on poor mobile connections
|
|
||||||
* XEP-0313: Message Archive Management synchronize message history with the server. Catch up with messages that were sent while Conversations was offline.
|
|
||||||
* XEP-0352: Client State Indication lets the server know whether or not Conversations is in the background. Allows the server to save bandwidth by withholding unimportant packages.
|
|
||||||
* XEP-0363: HTTP File Upload allows you to share files in conferences and with offline contacts. Requires an additional component on your server.
|
|
||||||
|
|
BIN
fastlane/metadata/android/en-US/images/icon.png
Normal file
After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 525 KiB |
Before Width: | Height: | Size: 449 KiB |
Before Width: | Height: | Size: 612 KiB |
Before Width: | Height: | Size: 475 KiB |
Before Width: | Height: | Size: 339 KiB |
Before Width: | Height: | Size: 364 KiB |
Before Width: | Height: | Size: 284 KiB |
Before Width: | Height: | Size: 168 KiB |
Before Width: | Height: | Size: 418 KiB |
After Width: | Height: | Size: 654 KiB |
After Width: | Height: | Size: 246 KiB |
After Width: | Height: | Size: 185 KiB |
After Width: | Height: | Size: 252 KiB |
Before Width: | Height: | Size: 433 KiB |
Before Width: | Height: | Size: 424 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 462 KiB |
|
@ -1 +1 @@
|
||||||
An encrypted, user friendly XMPP instant messaging client optimized for mobile
|
Chat on the Jabber network (XMPP protocol); focus on features for gateway users
|
||||||
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,6 @@
|
||||||
#Sat Nov 14 09:59:55 CET 2020
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionSha256Sum=a8da5b02437a60819cad23e10fc7e9cf32bcb57029d9cb277e26eeff76ce014b
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
|
||||||
|
|
302
gradlew
vendored
|
@ -1,79 +1,129 @@
|
||||||
#!/usr/bin/env bash
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
#
|
||||||
|
# https://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.
|
||||||
|
#
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
#
|
||||||
## Gradle start up script for UN*X
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
##
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
# Attempt to set APP_HOME
|
||||||
DEFAULT_JVM_OPTS=""
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
APP_NAME="Gradle"
|
||||||
APP_BASE_NAME=`basename "$0"`
|
APP_BASE_NAME=${0##*/}
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD="maximum"
|
MAX_FD=maximum
|
||||||
|
|
||||||
warn ( ) {
|
warn () {
|
||||||
echo "$*"
|
echo "$*"
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
die ( ) {
|
die () {
|
||||||
echo
|
echo
|
||||||
echo "$*"
|
echo "$*"
|
||||||
echo
|
echo
|
||||||
exit 1
|
exit 1
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
# OS specific support (must be 'true' or 'false').
|
||||||
cygwin=false
|
cygwin=false
|
||||||
msys=false
|
msys=false
|
||||||
darwin=false
|
darwin=false
|
||||||
case "`uname`" in
|
nonstop=false
|
||||||
CYGWIN* )
|
case "$( uname )" in #(
|
||||||
cygwin=true
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
;;
|
Darwin* ) darwin=true ;; #(
|
||||||
Darwin* )
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
darwin=true
|
NONSTOP* ) nonstop=true ;;
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
|
||||||
if $cygwin ; then
|
|
||||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
|
||||||
# Resolve links: $0 may be a link
|
|
||||||
PRG="$0"
|
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
|
||||||
ls=`ls -ld "$PRG"`
|
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
|
||||||
PRG="$link"
|
|
||||||
else
|
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >&-
|
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >&-
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
else
|
else
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
fi
|
fi
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
@ -82,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
|
||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD="java"
|
JAVACMD=java
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
@ -90,75 +140,95 @@ location of your Java installation."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
case $MAX_FD in #(
|
||||||
if [ $? -eq 0 ] ; then
|
max*)
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
warn "Could not query maximum file descriptor limit"
|
||||||
fi
|
esac
|
||||||
ulimit -n $MAX_FD
|
case $MAX_FD in #(
|
||||||
if [ $? -ne 0 ] ; then
|
'' | soft) :;; #(
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
*)
|
||||||
fi
|
ulimit -n "$MAX_FD" ||
|
||||||
else
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Darwin, add options to specify how the application appears in the dock
|
|
||||||
if $darwin; then
|
|
||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Cygwin, switch paths to Windows format before running java
|
|
||||||
if $cygwin ; then
|
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
||||||
SEP=""
|
|
||||||
for dir in $ROOTDIRSRAW ; do
|
|
||||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
||||||
SEP="|"
|
|
||||||
done
|
|
||||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
||||||
# Add a user-defined pattern to the cygpath arguments
|
|
||||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
||||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
||||||
fi
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
i=0
|
|
||||||
for arg in "$@" ; do
|
|
||||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
||||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
||||||
else
|
|
||||||
eval `echo args$i`="\"$arg\""
|
|
||||||
fi
|
|
||||||
i=$((i+1))
|
|
||||||
done
|
|
||||||
case $i in
|
|
||||||
(0) set -- ;;
|
|
||||||
(1) set -- "$args0" ;;
|
|
||||||
(2) set -- "$args0" "$args1" ;;
|
|
||||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
|
||||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
||||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
||||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
||||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
||||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
||||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
function splitJvmOpts() {
|
# * args from the command line
|
||||||
JVM_OPTS=("$@")
|
# * the main class name
|
||||||
}
|
# * -classpath
|
||||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
# * -D...appname settings
|
||||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command;
|
||||||
|
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||||
|
# shell script including quotes and variable substitutions, so put them in
|
||||||
|
# double quotes to make sure that they get re-expanded; and
|
||||||
|
# * put everything else in single quotes, so that it's not re-expanded.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
|
|
53
gradlew.bat
vendored
|
@ -1,3 +1,19 @@
|
||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
@if "%DEBUG%" == "" @echo off
|
@if "%DEBUG%" == "" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
|
@ -8,20 +24,23 @@
|
||||||
@rem Set local scope for the variables with windows NT shell
|
@rem Set local scope for the variables with windows NT shell
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS=
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
@ -35,7 +54,7 @@ goto fail
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
|
@ -45,34 +64,14 @@ echo location of your Java installation.
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windowz variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
goto execute
|
|
||||||
|
|
||||||
:4NT_args
|
|
||||||
@rem Get arguments from the 4NT Shell from JP Software
|
|
||||||
set CMD_LINE_ARGS=%$
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
|
|
@ -0,0 +1,169 @@
|
||||||
|
package com.cheogram.android.test;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
|
import java.lang.Thread;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.ClassRule;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.JUnit4;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.test.InstrumentationRegistry;
|
||||||
|
import androidx.test.core.app.ActivityScenario;
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.rules.ActivityScenarioRule;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import androidx.test.rule.ServiceTestRule;
|
||||||
|
import static androidx.test.espresso.Espresso.onView;
|
||||||
|
import static androidx.test.espresso.action.ViewActions.click;
|
||||||
|
import static androidx.test.espresso.matcher.ViewMatchers.withId;
|
||||||
|
|
||||||
|
import tools.fastlane.screengrab.Screengrab;
|
||||||
|
import tools.fastlane.screengrab.cleanstatusbar.CleanStatusBar;
|
||||||
|
import tools.fastlane.screengrab.locale.LocaleTestRule;
|
||||||
|
|
||||||
|
import eu.siacs.conversations.entities.Account;
|
||||||
|
import eu.siacs.conversations.entities.Contact;
|
||||||
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
|
import eu.siacs.conversations.entities.Message;
|
||||||
|
import eu.siacs.conversations.entities.Presence;
|
||||||
|
import eu.siacs.conversations.entities.ServiceDiscoveryResult;
|
||||||
|
import eu.siacs.conversations.entities.TransferablePlaceholder;
|
||||||
|
import eu.siacs.conversations.persistance.FileBackend;
|
||||||
|
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
|
||||||
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
|
import eu.siacs.conversations.test.R;
|
||||||
|
import eu.siacs.conversations.ui.ConversationsActivity;
|
||||||
|
import eu.siacs.conversations.ui.StartConversationActivity;
|
||||||
|
import eu.siacs.conversations.xml.Element;
|
||||||
|
import eu.siacs.conversations.xmpp.Jid;
|
||||||
|
import eu.siacs.conversations.xmpp.pep.Avatar;
|
||||||
|
import eu.siacs.conversations.xmpp.stanzas.IqPacket;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class ScreenshotTest {
|
||||||
|
|
||||||
|
static String pkg = InstrumentationRegistry.getInstrumentation().getContext().getPackageName();
|
||||||
|
static XmppConnectionService xmppConnectionService;
|
||||||
|
static Account account;
|
||||||
|
|
||||||
|
@ClassRule
|
||||||
|
public static final LocaleTestRule localeTestRule = new LocaleTestRule();
|
||||||
|
|
||||||
|
@ClassRule
|
||||||
|
public static final ServiceTestRule xmppServiceRule = new ServiceTestRule();
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setup() throws TimeoutException {
|
||||||
|
CleanStatusBar.enableWithDefaults();
|
||||||
|
|
||||||
|
Intent intent = new Intent(ApplicationProvider.getApplicationContext(), XmppConnectionService.class);
|
||||||
|
intent.setAction("ui");
|
||||||
|
xmppConnectionService = ((XmppConnectionBinder) xmppServiceRule.bindService(intent)).getService();
|
||||||
|
account = xmppConnectionService.findAccountByJid(Jid.of("carrot@chaosah.hereva"));
|
||||||
|
if (account == null) {
|
||||||
|
account = new Account(
|
||||||
|
Jid.of("carrot@chaosah.hereva"),
|
||||||
|
"orangeandfurry"
|
||||||
|
);
|
||||||
|
xmppConnectionService.createAccount(account);
|
||||||
|
}
|
||||||
|
|
||||||
|
Uri avatarUri = Uri.parse("android.resource://" + pkg + "/" + String.valueOf(R.drawable.carrot));
|
||||||
|
final Avatar avatar = xmppConnectionService.getFileBackend().getPepAvatar(avatarUri, 192, Bitmap.CompressFormat.WEBP);
|
||||||
|
xmppConnectionService.getFileBackend().save(avatar);
|
||||||
|
account.setAvatar(avatar.getFilename());
|
||||||
|
|
||||||
|
Contact cheogram = account.getRoster().getContact(Jid.of("cheogram.com"));
|
||||||
|
cheogram.setOption(Contact.Options.IN_ROSTER);
|
||||||
|
cheogram.setPhotoUri("android.resource://" + pkg + "/" + String.valueOf(R.drawable.cheogram));
|
||||||
|
Presence cheogramPresence = Presence.parse(null, null, "");
|
||||||
|
IqPacket discoPacket = new IqPacket(IqPacket.TYPE.RESULT);
|
||||||
|
Element query = discoPacket.addChild("query", "http://jabber.org/protocol/disco#info");
|
||||||
|
Element identity = query.addChild("identity");
|
||||||
|
identity.setAttribute("category", "gateway");
|
||||||
|
identity.setAttribute("type", "pstn");
|
||||||
|
cheogramPresence.setServiceDiscoveryResult(new ServiceDiscoveryResult(discoPacket));
|
||||||
|
cheogram.updatePresence("gw", cheogramPresence);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void teardown() {
|
||||||
|
CleanStatusBar.disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConversation() throws FileBackend.FileCopyException, InterruptedException {
|
||||||
|
Conversation conversation = xmppConnectionService.findOrCreateConversation(account, Jid.of("+15550737737@cheogram.com"), false, false);
|
||||||
|
conversation.getContact().setOption(Contact.Options.IN_ROSTER);
|
||||||
|
conversation.getContact().setSystemName("Pepper");
|
||||||
|
conversation.getContact().setPhotoUri("android.resource://" + pkg + "/" + String.valueOf(R.drawable.pepper));
|
||||||
|
|
||||||
|
Message voicemail = new Message(conversation, "", 0, Message.STATUS_RECEIVED);
|
||||||
|
voicemail.setOob("https://example.com/thing.mp3");
|
||||||
|
voicemail.setFileParams(new Message.FileParams("https://example.com/thing.mp3|5000|0|0|10000"));
|
||||||
|
voicemail.setType(Message.TYPE_FILE);
|
||||||
|
voicemail.setSubject("Voicemail Recording");
|
||||||
|
|
||||||
|
Message transcript = new Message(conversation, "Where are you?", 0, Message.STATUS_RECEIVED);
|
||||||
|
transcript.setSubject("Voicemail Transcription");
|
||||||
|
|
||||||
|
Message picture = new Message(conversation, "", 0, Message.STATUS_SEND_RECEIVED);
|
||||||
|
picture.setOob("https://example.com/thing.webp");
|
||||||
|
picture.setType(Message.TYPE_FILE);
|
||||||
|
xmppConnectionService.getFileBackend().copyFileToPrivateStorage(
|
||||||
|
picture,
|
||||||
|
Uri.parse("android.resource://" + pkg + "/" + String.valueOf(R.drawable.komona)),
|
||||||
|
"image/webp"
|
||||||
|
);
|
||||||
|
xmppConnectionService.getFileBackend().updateFileParams(picture);
|
||||||
|
|
||||||
|
conversation.addAll(0, Arrays.asList(
|
||||||
|
voicemail,
|
||||||
|
transcript,
|
||||||
|
new Message(conversation, "Meow", 0, Message.STATUS_SEND_RECEIVED),
|
||||||
|
picture,
|
||||||
|
new Message(conversation, "👍", 0, Message.STATUS_RECEIVED)
|
||||||
|
));
|
||||||
|
|
||||||
|
ActivityScenario scenario = ActivityScenario.launch(ConversationsActivity.class);
|
||||||
|
scenario.onActivity((Activity activity) -> {
|
||||||
|
((ConversationsActivity) activity).switchToConversation(conversation);
|
||||||
|
});
|
||||||
|
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||||
|
Thread.sleep(100); // ImageView not paited yet after waitForIdleSync
|
||||||
|
Screengrab.screenshot("conversation");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStartConversation() throws InterruptedException {
|
||||||
|
ActivityScenario scenario = ActivityScenario.launch(StartConversationActivity.class);
|
||||||
|
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||||
|
Thread.sleep(100); // ImageView not paited yet after waitForIdleSync
|
||||||
|
Screengrab.screenshot("startConversation");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAddContact() throws InterruptedException {
|
||||||
|
ActivityScenario scenario = ActivityScenario.launch(StartConversationActivity.class);
|
||||||
|
onView(withId(eu.siacs.conversations.R.id.speed_dial)).perform(click());
|
||||||
|
Screengrab.screenshot("startConversationOptions");
|
||||||
|
|
||||||
|
// Not actually online, so can't screenshot the gateway selector yet
|
||||||
|
/*onView(withId(eu.siacs.conversations.R.id.create_contact)).perform(click());
|
||||||
|
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||||
|
Thread.sleep(10000); // ImageView not paited yet after waitForIdleSync
|
||||||
|
Screengrab.screenshot("addContact");*/
|
||||||
|
}
|
||||||
|
}
|
BIN
src/androidTest/res/drawable/carrot.webp
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
src/androidTest/res/drawable/cheogram.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/androidTest/res/drawable/komona.webp
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
src/androidTest/res/drawable/pepper.webp
Normal file
After Width: | Height: | Size: 20 KiB |
|
@ -22,6 +22,8 @@ import android.telecom.TelecomManager;
|
||||||
import android.telephony.PhoneNumberUtils;
|
import android.telephony.PhoneNumberUtils;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
|
|
||||||
|
import androidx.annotation.RequiresApi;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
@ -53,6 +55,7 @@ import eu.siacs.conversations.xmpp.jingle.JingleRtpConnection;
|
||||||
import eu.siacs.conversations.xmpp.jingle.Media;
|
import eu.siacs.conversations.xmpp.jingle.Media;
|
||||||
import eu.siacs.conversations.xmpp.jingle.RtpEndUserState;
|
import eu.siacs.conversations.xmpp.jingle.RtpEndUserState;
|
||||||
|
|
||||||
|
@RequiresApi(Build.VERSION_CODES.M)
|
||||||
public class ConnectionService extends android.telecom.ConnectionService {
|
public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
public XmppConnectionService xmppConnectionService = null;
|
public XmppConnectionService xmppConnectionService = null;
|
||||||
protected ServiceConnection mConnection = new ServiceConnection() {
|
protected ServiceConnection mConnection = new ServiceConnection() {
|
||||||
|
@ -99,7 +102,13 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
String tel = PhoneNumberUtils.extractNetworkPortion(rawTel);
|
String tel = PhoneNumberUtils.extractNetworkPortion(rawTel);
|
||||||
try {
|
try {
|
||||||
tel = PhoneNumberUtilWrapper.normalize(this, tel);
|
tel = PhoneNumberUtilWrapper.normalize(this, tel);
|
||||||
} catch (NumberParseException e) {
|
} catch (IllegalArgumentException | NumberParseException e) {
|
||||||
|
return Connection.createFailedConnection(
|
||||||
|
new DisconnectCause(DisconnectCause.ERROR)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (xmppConnectionService == null) {
|
||||||
return Connection.createFailedConnection(
|
return Connection.createFailedConnection(
|
||||||
new DisconnectCause(DisconnectCause.ERROR)
|
new DisconnectCause(DisconnectCause.ERROR)
|
||||||
);
|
);
|
||||||
|
@ -112,6 +121,12 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
}
|
}
|
||||||
|
|
||||||
Account account = xmppConnectionService.findAccountByJid(Jid.of(gateway[0]));
|
Account account = xmppConnectionService.findAccountByJid(Jid.of(gateway[0]));
|
||||||
|
if (account == null) {
|
||||||
|
return Connection.createFailedConnection(
|
||||||
|
new DisconnectCause(DisconnectCause.ERROR)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Jid with = Jid.ofLocalAndDomain(tel, gateway[1]);
|
Jid with = Jid.ofLocalAndDomain(tel, gateway[1]);
|
||||||
CheogramConnection connection = new CheogramConnection(account, with, postDial);
|
CheogramConnection connection = new CheogramConnection(account, with, postDial);
|
||||||
|
|
||||||
|
@ -136,7 +151,7 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPermissionDenied(DeniedPermissions deniedPermissions) {
|
public void onPermissionDenied(DeniedPermissions deniedPermissions) {
|
||||||
connection.setDisconnected(new DisconnectCause(DisconnectCause.ERROR));
|
connection.close(new DisconnectCause(DisconnectCause.ERROR));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -220,10 +235,10 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
if (sessionId == null || !sessionId.equals(this.sessionId)) return;
|
if (sessionId == null || !sessionId.equals(this.sessionId)) return;
|
||||||
if (rtpConnection == null) {
|
if (rtpConnection == null) {
|
||||||
this.with = with; // Store full JID of connection
|
this.with = with; // Store full JID of connection
|
||||||
rtpConnection = xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId);
|
findRtpConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
setStatusHints(new StatusHints(null, gatewayIcon, null));
|
String statusLabel = null;
|
||||||
|
|
||||||
if (state == RtpEndUserState.FINDING_DEVICE) {
|
if (state == RtpEndUserState.FINDING_DEVICE) {
|
||||||
setInitialized();
|
setInitialized();
|
||||||
|
@ -231,25 +246,30 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
setDialing();
|
setDialing();
|
||||||
} else if (state == RtpEndUserState.INCOMING_CALL) {
|
} else if (state == RtpEndUserState.INCOMING_CALL) {
|
||||||
setRinging();
|
setRinging();
|
||||||
|
} else if (state == RtpEndUserState.CONNECTING) {
|
||||||
|
xmppConnectionService.setDiallerIntegrationActive(true);
|
||||||
|
setActive();
|
||||||
|
statusLabel = getString(R.string.rtp_state_connecting);
|
||||||
} else if (state == RtpEndUserState.CONNECTED) {
|
} else if (state == RtpEndUserState.CONNECTED) {
|
||||||
xmppConnectionService.setDiallerIntegrationActive(true);
|
xmppConnectionService.setDiallerIntegrationActive(true);
|
||||||
setActive();
|
setActive();
|
||||||
|
|
||||||
postDial();
|
postDial();
|
||||||
} else if (state == RtpEndUserState.DECLINED_OR_BUSY) {
|
} else if (state == RtpEndUserState.DECLINED_OR_BUSY) {
|
||||||
setDisconnected(new DisconnectCause(DisconnectCause.BUSY));
|
close(new DisconnectCause(DisconnectCause.BUSY));
|
||||||
} else if (state == RtpEndUserState.ENDED) {
|
} else if (state == RtpEndUserState.ENDED) {
|
||||||
setDisconnected(new DisconnectCause(DisconnectCause.LOCAL));
|
close(new DisconnectCause(DisconnectCause.LOCAL));
|
||||||
} else if (state == RtpEndUserState.RETRACTED) {
|
} else if (state == RtpEndUserState.RETRACTED) {
|
||||||
setDisconnected(new DisconnectCause(DisconnectCause.CANCELED));
|
close(new DisconnectCause(DisconnectCause.CANCELED));
|
||||||
} else if (RtpSessionActivity.END_CARD.contains(state)) {
|
} else if (RtpSessionActivity.END_CARD.contains(state)) {
|
||||||
setDisconnected(new DisconnectCause(DisconnectCause.ERROR));
|
close(new DisconnectCause(DisconnectCause.ERROR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setStatusHints(new StatusHints(statusLabel, gatewayIcon, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAudioDeviceChanged(AppRTCAudioManager.AudioDevice selectedAudioDevice, Set<AppRTCAudioManager.AudioDevice> availableAudioDevices) {
|
public void onAudioDeviceChanged(AppRTCAudioManager.AudioDevice selectedAudioDevice, Set<AppRTCAudioManager.AudioDevice> availableAudioDevices) {
|
||||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) return;
|
if (Build.VERSION.SDK_INT < 26) return;
|
||||||
|
|
||||||
switch(selectedAudioDevice) {
|
switch(selectedAudioDevice) {
|
||||||
case SPEAKER_PHONE:
|
case SPEAKER_PHONE:
|
||||||
|
@ -269,30 +289,41 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
public void onAnswer() {
|
public void onAnswer() {
|
||||||
// For incoming calls, a connection update may not have been triggered before answering
|
// For incoming calls, a connection update may not have been triggered before answering
|
||||||
// so we have to acquire the rtp connection object here
|
// so we have to acquire the rtp connection object here
|
||||||
this.rtpConnection = xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId);
|
findRtpConnection();
|
||||||
|
if (rtpConnection == null || rtpConnection.get() == null) {
|
||||||
|
close(new DisconnectCause(DisconnectCause.CANCELED));
|
||||||
|
} else {
|
||||||
rtpConnection.get().acceptCall();
|
rtpConnection.get().acceptCall();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReject() {
|
public void onReject() {
|
||||||
this.rtpConnection = xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId);
|
findRtpConnection();
|
||||||
|
if (rtpConnection != null && rtpConnection.get() != null) {
|
||||||
rtpConnection.get().rejectCall();
|
rtpConnection.get().rejectCall();
|
||||||
setDisconnected(new DisconnectCause(DisconnectCause.LOCAL));
|
}
|
||||||
|
close(new DisconnectCause(DisconnectCause.LOCAL));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set the connection to the disconnected state and clean up the resources
|
||||||
|
// Note that we cannot do this from onStateChanged() because calling destroy
|
||||||
|
// there seems to trigger a deadlock somewhere in the telephony stack.
|
||||||
|
public void close(DisconnectCause reason) {
|
||||||
|
setDisconnected(reason);
|
||||||
|
destroy();
|
||||||
|
xmppConnectionService.setDiallerIntegrationActive(false);
|
||||||
|
xmppConnectionService.removeRtpConnectionUpdateListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDisconnect() {
|
public void onDisconnect() {
|
||||||
if (rtpConnection == null || rtpConnection.get() == null) {
|
if (rtpConnection == null || rtpConnection.get() == null) {
|
||||||
xmppConnectionService.getJingleConnectionManager().retractSessionProposal(account, with.asBareJid());
|
xmppConnectionService.getJingleConnectionManager().retractSessionProposal(account, with.asBareJid());
|
||||||
|
close(new DisconnectCause(DisconnectCause.LOCAL));
|
||||||
} else {
|
} else {
|
||||||
rtpConnection.get().endCall();
|
rtpConnection.get().endCall();
|
||||||
}
|
}
|
||||||
destroy();
|
|
||||||
xmppConnectionService.setDiallerIntegrationActive(false);
|
|
||||||
xmppConnectionService.removeRtpConnectionUpdateListener(
|
|
||||||
(XmppConnectionService.OnJingleRtpConnectionUpdate) this
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -310,6 +341,12 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
if (c) postDial();
|
if (c) postDial();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void findRtpConnection() {
|
||||||
|
if (rtpConnection != null) return;
|
||||||
|
|
||||||
|
rtpConnection = xmppConnectionService.getJingleConnectionManager().findJingleRtpConnection(account, with, sessionId);
|
||||||
|
}
|
||||||
|
|
||||||
protected void sleep(int ms) {
|
protected void sleep(int ms) {
|
||||||
try {
|
try {
|
||||||
Thread.sleep(ms);
|
Thread.sleep(ms);
|
||||||
|
|
|
@ -66,13 +66,11 @@ public class MagicCreateActivity extends XmppActivity implements TextWatcher {
|
||||||
if (username != null && domain != null) {
|
if (username != null && domain != null) {
|
||||||
binding.title.setText(R.string.your_server_invitation);
|
binding.title.setText(R.string.your_server_invitation);
|
||||||
binding.instructions.setText(getString(R.string.magic_create_text_fixed, domain));
|
binding.instructions.setText(getString(R.string.magic_create_text_fixed, domain));
|
||||||
binding.finePrint.setVisibility(View.INVISIBLE);
|
|
||||||
binding.username.setEnabled(false);
|
binding.username.setEnabled(false);
|
||||||
binding.username.setText(this.username);
|
binding.username.setText(this.username);
|
||||||
updateFullJidInformation(this.username);
|
updateFullJidInformation(this.username);
|
||||||
} else if (domain != null) {
|
} else if (domain != null) {
|
||||||
binding.instructions.setText(getString(R.string.magic_create_text_on_x, domain));
|
binding.instructions.setText(getString(R.string.magic_create_text_on_x, domain));
|
||||||
binding.finePrint.setVisibility(View.INVISIBLE);
|
|
||||||
}
|
}
|
||||||
binding.createAccount.setOnClickListener(v -> {
|
binding.createAccount.setOnClickListener(v -> {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -3,6 +3,7 @@ package eu.siacs.conversations.ui;
|
||||||
import android.content.ActivityNotFoundException;
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.security.KeyChain;
|
import android.security.KeyChain;
|
||||||
import android.security.KeyChainAliasCallback;
|
import android.security.KeyChainAliasCallback;
|
||||||
|
@ -86,6 +87,8 @@ public class ManageAccountActivity extends XmppActivity implements OnAccountUpda
|
||||||
startActivity(new Intent(android.telecom.TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS));
|
startActivity(new Intent(android.telecom.TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT < 23) return;
|
||||||
|
|
||||||
outer:
|
outer:
|
||||||
for (Account account : xmppConnectionService.getAccounts()) {
|
for (Account account : xmppConnectionService.getAccounts()) {
|
||||||
for (Contact contact : account.getRoster().getContacts()) {
|
for (Contact contact : account.getRoster().getContacts()) {
|
||||||
|
|
|
@ -84,18 +84,6 @@
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:src="@drawable/main_logo" />
|
android:src="@drawable/main_logo" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:paddingLeft="8dp"
|
|
||||||
android:paddingRight="8dp"
|
|
||||||
android:text="@string/free_for_six_month"
|
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
android:textSize="@dimen/fineprint_size" />
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -95,19 +95,6 @@
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:src="@drawable/main_logo" />
|
android:src="@drawable/main_logo" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/fine_print"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:paddingLeft="8dp"
|
|
||||||
android:paddingRight="8dp"
|
|
||||||
android:text="@string/free_for_six_month"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
|
||||||
android:textSize="@dimen/fineprint_size" />
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -304,6 +304,22 @@
|
||||||
</item>
|
</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="ConversationsTheme.Obsidian" parent="ConversationsTheme.Dark">
|
||||||
|
<item name="colorPrimary">#1E0036</item>
|
||||||
|
<item name="colorPrimaryDark">#1E0036</item>
|
||||||
|
<item name="colorAccent">@color/yeller</item>
|
||||||
|
|
||||||
|
<item name="message_bubble_received_monochrome" type="reference">
|
||||||
|
@drawable/message_bubble_received_grey
|
||||||
|
</item>
|
||||||
|
<item name="message_bubble_sent" type="reference">@drawable/message_bubble_sent_grey</item>
|
||||||
|
<item name="message_bubble_received_green" type="reference">
|
||||||
|
@drawable/message_bubble_received_obsidian
|
||||||
|
</item>
|
||||||
|
|
||||||
|
<item name="unread_count">#1E0036</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="ConversationsTheme.Medium" parent="ConversationsTheme">
|
<style name="ConversationsTheme.Medium" parent="ConversationsTheme">
|
||||||
<item name="TextSizeCaption">14sp</item>
|
<item name="TextSizeCaption">14sp</item>
|
||||||
<item name="TextSizeBody1">16sp</item>
|
<item name="TextSizeBody1">16sp</item>
|
||||||
|
@ -328,6 +344,18 @@
|
||||||
<item name="IconSize">20sp</item>
|
<item name="IconSize">20sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="ConversationsTheme.Obsidian.Medium" parent="ConversationsTheme.Obsidian">
|
||||||
|
<item name="TextSizeCaption">14sp</item>
|
||||||
|
<item name="TextSizeBody1">16sp</item>
|
||||||
|
<item name="TextSizeBody2">16sp</item>
|
||||||
|
<item name="TextSizeSubhead">18sp</item>
|
||||||
|
<item name="TextSizeTitle">22sp</item>
|
||||||
|
<item name="TextSizeDisplay2">47sp</item>
|
||||||
|
<item name="TextSizeInput">18sp</item>
|
||||||
|
<item name="TextSeparation">6sp</item>
|
||||||
|
<item name="IconSize">20sp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="ConversationsTheme.Dark.Large" parent="ConversationsTheme.Dark">
|
<style name="ConversationsTheme.Dark.Large" parent="ConversationsTheme.Dark">
|
||||||
<item name="TextSizeCaption">16sp</item>
|
<item name="TextSizeCaption">16sp</item>
|
||||||
<item name="TextSizeBody1">18sp</item>
|
<item name="TextSizeBody1">18sp</item>
|
||||||
|
@ -340,6 +368,18 @@
|
||||||
<item name="IconSize">22sp</item>
|
<item name="IconSize">22sp</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="ConversationsTheme.Obsidian.Large" parent="ConversationsTheme.Obsidian">
|
||||||
|
<item name="TextSizeCaption">16sp</item>
|
||||||
|
<item name="TextSizeBody1">18sp</item>
|
||||||
|
<item name="TextSizeBody2">18sp</item>
|
||||||
|
<item name="TextSizeSubhead">20sp</item>
|
||||||
|
<item name="TextSizeTitle">24sp</item>
|
||||||
|
<item name="TextSizeDisplay2">48sp</item>
|
||||||
|
<item name="TextSizeInput">20sp</item>
|
||||||
|
<item name="TextSeparation">7sp</item>
|
||||||
|
<item name="IconSize">22sp</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
<style name="ConversationsTheme.Large" parent="ConversationsTheme">
|
<style name="ConversationsTheme.Large" parent="ConversationsTheme">
|
||||||
<item name="TextSizeCaption">16sp</item>
|
<item name="TextSizeCaption">16sp</item>
|
||||||
<item name="TextSizeBody1">18sp</item>
|
<item name="TextSizeBody1">18sp</item>
|
||||||
|
|
1
src/cheogramPlaystore
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
conversationsPlaystore/
|
|
@ -134,6 +134,8 @@ public class ImportBackupActivity extends ActionBarActivity implements ServiceCo
|
||||||
} catch (final IOException | IllegalArgumentException e) {
|
} catch (final IOException | IllegalArgumentException e) {
|
||||||
Log.d(Config.LOGTAG, "unable to open backup file " + uri, e);
|
Log.d(Config.LOGTAG, "unable to open backup file " + uri, e);
|
||||||
Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show();
|
Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show();
|
||||||
|
} catch (final SecurityException e) {
|
||||||
|
Snackbar.make(binding.coordinator, R.string.sharing_application_not_grant_permission, Snackbar.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,13 +66,11 @@ public class MagicCreateActivity extends XmppActivity implements TextWatcher {
|
||||||
if (username != null && domain != null) {
|
if (username != null && domain != null) {
|
||||||
binding.title.setText(R.string.your_server_invitation);
|
binding.title.setText(R.string.your_server_invitation);
|
||||||
binding.instructions.setText(getString(R.string.magic_create_text_fixed, domain));
|
binding.instructions.setText(getString(R.string.magic_create_text_fixed, domain));
|
||||||
binding.finePrint.setVisibility(View.INVISIBLE);
|
|
||||||
binding.username.setEnabled(false);
|
binding.username.setEnabled(false);
|
||||||
binding.username.setText(this.username);
|
binding.username.setText(this.username);
|
||||||
updateFullJidInformation(this.username);
|
updateFullJidInformation(this.username);
|
||||||
} else if (domain != null) {
|
} else if (domain != null) {
|
||||||
binding.instructions.setText(getString(R.string.magic_create_text_on_x, domain));
|
binding.instructions.setText(getString(R.string.magic_create_text_on_x, domain));
|
||||||
binding.finePrint.setVisibility(View.INVISIBLE);
|
|
||||||
}
|
}
|
||||||
binding.createAccount.setOnClickListener(v -> {
|
binding.createAccount.setOnClickListener(v -> {
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -84,18 +84,6 @@
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:src="@drawable/main_logo" />
|
android:src="@drawable/main_logo" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:paddingLeft="8dp"
|
|
||||||
android:paddingRight="8dp"
|
|
||||||
android:text="@string/free_for_six_month"
|
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
|
||||||
android:textSize="@dimen/fineprint_size" />
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -95,19 +95,6 @@
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:src="@drawable/main_logo" />
|
android:src="@drawable/main_logo" />
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/fine_print"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_alignParentBottom="true"
|
|
||||||
android:layout_centerHorizontal="true"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:paddingLeft="8dp"
|
|
||||||
android:paddingRight="8dp"
|
|
||||||
android:text="@string/free_for_six_month"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
|
||||||
android:textSize="@dimen/fineprint_size" />
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<string name="create_new_account">Създаване не нов профил</string>
|
<string name="create_new_account">Създаване не нов профил</string>
|
||||||
<string name="do_you_have_an_account">Имате ли вече XMPP профил? Може да имате, ако вече използвате друг клиент на XMPP или сте използвали Conversations и преди. Ако не, можете да създадете нов XMPP профил сега.\nСъвет: някои доставчици на е-поща също предоставят XMPP профили.
|
<string name="do_you_have_an_account">Имате ли вече XMPP профил? Може да имате, ако вече използвате друг клиент на XMPP или сте използвали Conversations и преди. Ако не, можете да създадете нов XMPP профил сега.\nСъвет: някои доставчици на е-поща също предоставят XMPP профили.
|
||||||
</string>
|
</string>
|
||||||
<string name="server_select_text">XMPP е мрежа за общуване чрез мигновени съобщения, която не е обвързана с конкретен доставчик. Можете да използвате клиента с всеки сървър, който работи с XMPP.\nЗа Ваше удобство, обаче, ние предоставяме лесен начин да си създадете профил в conversations.im¹ — сървър, пригоден да работи най-добре с Conversations.</string>
|
<string name="server_select_text">XMPP е мрежа за общуване чрез мигновени съобщения, която не е обвързана с конкретен доставчик. Можете да използвате клиента с всеки сървър, който работи с XMPP.\nЗа Ваше удобство, обаче, ние предоставяме лесен начин да си създадете профил в conversations.im — сървър, пригоден да работи най-добре с Conversations.</string>
|
||||||
<string name="magic_create_text_on_x">Получихте покана за %1$s. Ще Ви преведем през процеса на създаване на профил.\nИзбирайки %1$s за доставчик, Вие ще можете да общувате и с потребители на други доставчици, като им предоставите своя пълен XMPP адрес.</string>
|
<string name="magic_create_text_on_x">Получихте покана за %1$s. Ще Ви преведем през процеса на създаване на профил.\nИзбирайки %1$s за доставчик, Вие ще можете да общувате и с потребители на други доставчици, като им предоставите своя пълен XMPP адрес.</string>
|
||||||
<string name="magic_create_text_fixed">Получихте покана за %1$s. Вече Ви избрахме потребителско име. Ще Ви преведем през процеса на създаване на профил.\nЩе можете да общувате и с потребители на други доставчици, като им предоставите своя пълен XMPP адрес.</string>
|
<string name="magic_create_text_fixed">Получихте покана за %1$s. Вече Ви избрахме потребителско име. Ще Ви преведем през процеса на създаване на профил.\nЩе можете да общувате и с потребители на други доставчици, като им предоставите своя пълен XMPP адрес.</string>
|
||||||
<string name="your_server_invitation">Вашата покана за сървъра</string>
|
<string name="your_server_invitation">Вашата покана за сървъра</string>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">conversations.im-ই ব্যবহার করা যাক</string>
|
<string name="use_conversations.im">conversations.im-ই ব্যবহার করা যাক</string>
|
||||||
<string name="create_new_account">নতুন অ্যকাউন্ট তৈরী করা যাক</string>
|
<string name="create_new_account">নতুন অ্যকাউন্ট তৈরী করা যাক</string>
|
||||||
<string name="do_you_have_an_account">আপনার কি একটা XMPP অ্যকাউন্ট ইতিমধ্যে করা আছে? সেরকমটা হতেই পারে যদি এর আগে আপনি কোনো অন্য XMPP প্রোগ্রাম বা অ্যাপ ব্যবহার করে থাকেন। এই মুহুর্তে আরেকটা অ্যকাউন্ট তৈরী করা সম্ভব না।\nHint: মাঝে মাঝে ইমেল অ্যকাউন্ট খুললেও এরকম অ্যকাউন্ট নিজে থেকেই তৈরী হয়ে যায়।</string>
|
<string name="do_you_have_an_account">আপনার কি একটা XMPP অ্যকাউন্ট ইতিমধ্যে করা আছে? সেরকমটা হতেই পারে যদি এর আগে আপনি কোনো অন্য XMPP প্রোগ্রাম বা অ্যাপ ব্যবহার করে থাকেন। এই মুহুর্তে আরেকটা অ্যকাউন্ট তৈরী করা সম্ভব না।\nHint: মাঝে মাঝে ইমেল অ্যকাউন্ট খুললেও এরকম অ্যকাউন্ট নিজে থেকেই তৈরী হয়ে যায়।</string>
|
||||||
<string name="server_select_text">XMPP কোনো একটি নির্দিষ্ট সংস্থার উপরে নির্ভরশীল নয়। এই অ্যপটি আপনি যেকোনো সংস্থার XMPP সার্ভারের সাথে ব্যবহার করতে পারেন।\nমনে রাখবেন, সুধুমাত্র আপনার সুবিধার্থেই conversations.im¹ -এ আপনার জন্যে একটি অ্যকাউন্ট তৈরী করে দেওয়া হয়েছে। Conversations অ্যপটি এই সার্ভারের সাথে সবথেকে বেশী কার্যকারী।</string>
|
<string name="server_select_text">XMPP কোনো একটি নির্দিষ্ট সংস্থার উপরে নির্ভরশীল নয়। এই অ্যপটি আপনি যেকোনো সংস্থার XMPP সার্ভারের সাথে ব্যবহার করতে পারেন।\nমনে রাখবেন, সুধুমাত্র আপনার সুবিধার্থেই conversations.im -এ আপনার জন্যে একটি অ্যকাউন্ট তৈরী করে দেওয়া হয়েছে। Conversations অ্যপটি এই সার্ভারের সাথে সবথেকে বেশী কার্যকারী।</string>
|
||||||
<string name="magic_create_text_on_x">আপনাকে %1$s-এ আমন্ত্রিত করা হয়েছে। অ্যকাউন্ট তৈরী করার সময় আপনাকে সাহায্য করা হবে।\n%1$s ব্যবহার করলেও, অন্য সেবা-প্রদানকারী সংস্থার ব্যবহারকারীদের সাথে আপনি কথা বলতে পারবেন, আপনার সম্পূর্ণ XMPP অ্যড্রেস তাদেরকে বলে দিয়ে।</string>
|
<string name="magic_create_text_on_x">আপনাকে %1$s-এ আমন্ত্রিত করা হয়েছে। অ্যকাউন্ট তৈরী করার সময় আপনাকে সাহায্য করা হবে।\n%1$s ব্যবহার করলেও, অন্য সেবা-প্রদানকারী সংস্থার ব্যবহারকারীদের সাথে আপনি কথা বলতে পারবেন, আপনার সম্পূর্ণ XMPP অ্যড্রেস তাদেরকে বলে দিয়ে।</string>
|
||||||
<string name="magic_create_text_fixed">আপনাকে %1$s-এ নিমন্ত্রণ করা হয়েছে। একটি username-ও আপনার জন্যে নির্দিষ্ট করে রাখা হয়েছে। অ্যকাউন্ট তৈরী করার সময় আপনাকে সাহায্য করা হবে।\nঅন্য XMPP সেবা প্রদানকারী সংস্থার ব্যবহারকারীদের সাথে আপনিও কথা বলতে পারবেন, আপনার সম্পূর্ণ XMPP অ্যড্রেস তাদেরকে বলে দিয়ে।</string>
|
<string name="magic_create_text_fixed">আপনাকে %1$s-এ নিমন্ত্রণ করা হয়েছে। একটি username-ও আপনার জন্যে নির্দিষ্ট করে রাখা হয়েছে। অ্যকাউন্ট তৈরী করার সময় আপনাকে সাহায্য করা হবে।\nঅন্য XMPP সেবা প্রদানকারী সংস্থার ব্যবহারকারীদের সাথে আপনিও কথা বলতে পারবেন, আপনার সম্পূর্ণ XMPP অ্যড্রেস তাদেরকে বলে দিয়ে।</string>
|
||||||
<string name="your_server_invitation">আপনার নিমন্ত্রণপত্র, সার্ভার থেকে</string>
|
<string name="your_server_invitation">আপনার নিমন্ত্রণপত্র, সার্ভার থেকে</string>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
<string name="use_conversations.im">Fer servir conversations.im</string>
|
<string name="use_conversations.im">Fer servir conversations.im</string>
|
||||||
<string name="create_new_account">Crear un compte nou</string>
|
<string name="create_new_account">Crear un compte nou</string>
|
||||||
<string name="do_you_have_an_account">Ja tens un compte XMPP? Aquest podria ser el cas si ja estàs usant un client XMPP diferent o has usat Converses abans. Si no, pots crear un nou compte XMPP ara mateix.\nPista: Alguns proveïdors de correu electrònic també proporcionen comptes XMPP.</string>
|
<string name="do_you_have_an_account">Ja tens un compte XMPP? Aquest podria ser el cas si ja estàs usant un client XMPP diferent o has usat Converses abans. Si no, pots crear un nou compte XMPP ara mateix.\nPista: Alguns proveïdors de correu electrònic també proporcionen comptes XMPP.</string>
|
||||||
<string name="server_select_text">XMPP és una xarxa de missatgeria instantània independent del proveïdor. Pots usar aquest client amb qualsevol servidor XMPP que triïs. No obstant això, per a la teva conveniència, hem fet fàcil la creació d\'un compte en Conversaciones.im¹; un proveïdor especialment adequat per a l\'ús amb Conversations.</string>
|
<string name="server_select_text">XMPP és una xarxa de missatgeria instantània independent del proveïdor. Pots usar aquest client amb qualsevol servidor XMPP que triïs. No obstant això, per a la teva conveniència, hem fet fàcil la creació d\'un compte en Conversaciones.im; un proveïdor especialment adequat per a l\'ús amb Conversations.</string>
|
||||||
<string name="magic_create_text_on_x">Has estat convidat a %1$s. Et guiarem a través del procés de creació d\'un compte.\nEn triar%1$s com a proveïdor podràs comunicar-se amb els usuaris d\'altres proveïdors donant-los la seva adreça XMPP completa.</string>
|
<string name="magic_create_text_on_x">Has estat convidat a %1$s. Et guiarem a través del procés de creació d\'un compte.\nEn triar%1$s com a proveïdor podràs comunicar-se amb els usuaris d\'altres proveïdors donant-los la seva adreça XMPP completa.</string>
|
||||||
<string name="magic_create_text_fixed">Has estat convidat a %1$s . Ja s\'ha triat un nom d\'usuari per a tu. Et guiarem en el procés de creació d\'un compte. Podràs comunicar-te amb usuaris d\'altres proveïdors donant-los la teva adreça XMPP completa.</string>
|
<string name="magic_create_text_fixed">Has estat convidat a %1$s . Ja s\'ha triat un nom d\'usuari per a tu. Et guiarem en el procés de creació d\'un compte. Podràs comunicar-te amb usuaris d\'altres proveïdors donant-los la teva adreça XMPP completa.</string>
|
||||||
<string name="your_server_invitation">La teva invitació al servidor</string>
|
<string name="your_server_invitation">La teva invitació al servidor</string>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">Brug conversations.im</string>
|
<string name="use_conversations.im">Brug conversations.im</string>
|
||||||
<string name="create_new_account">Opret ny konto</string>
|
<string name="create_new_account">Opret ny konto</string>
|
||||||
<string name="do_you_have_an_account">Har du allerede en XMPP-konto? Dette kan være tilfældet, hvis du allerede bruger en anden XMPP-klient eller har brugt Conversations før. Hvis ikke, kan du lige nu oprette en ny XMPP-konto.\nTip: Nogle e-mail-udbydere leverer også XMPP-konti.</string>
|
<string name="do_you_have_an_account">Har du allerede en XMPP-konto? Dette kan være tilfældet, hvis du allerede bruger en anden XMPP-klient eller har brugt Conversations før. Hvis ikke, kan du lige nu oprette en ny XMPP-konto.\nTip: Nogle e-mail-udbydere leverer også XMPP-konti.</string>
|
||||||
<string name="server_select_text">XMPP er et udbyderuafhængigt onlinemeddelelsesnetværk. Du kan bruge denne klient med hvilken XMPP-server du end vælger.\nMen for din nemhedsskyld har vi gjort vi det let at oprette en konto på conversations.im¹; en udbyder, der er specielt velegnet til brug med Conversations.</string>
|
<string name="server_select_text">XMPP er et udbyderuafhængigt onlinemeddelelsesnetværk. Du kan bruge denne klient med hvilken XMPP-server du end vælger.\nMen for din nemhedsskyld har vi gjort vi det let at oprette en konto på conversations.im; en udbyder, der er specielt velegnet til brug med Conversations.</string>
|
||||||
<string name="magic_create_text_on_x">Du er blevet inviteret til %1$s. Vi guider dig gennem processen med at oprette en konto.\nNår du vælger %1$s som udbyder, kan du kommunikere med brugere fra andre udbydere ved at give dem din fulde XMPP-adresse.</string>
|
<string name="magic_create_text_on_x">Du er blevet inviteret til %1$s. Vi guider dig gennem processen med at oprette en konto.\nNår du vælger %1$s som udbyder, kan du kommunikere med brugere fra andre udbydere ved at give dem din fulde XMPP-adresse.</string>
|
||||||
<string name="magic_create_text_fixed">Du er blevet inviteret til %1$s. Der er allerede valgt et brugernavn til dig. Vi guider dig gennem processen med at oprette en konto.\nDu vil være i stand til at kommunikere med brugere fra andre udbydere ved at give dem din fulde XMPP-adresse.</string>
|
<string name="magic_create_text_fixed">Du er blevet inviteret til %1$s. Der er allerede valgt et brugernavn til dig. Vi guider dig gennem processen med at oprette en konto.\nDu vil være i stand til at kommunikere med brugere fra andre udbydere ved at give dem din fulde XMPP-adresse.</string>
|
||||||
<string name="your_server_invitation">Din server invitation</string>
|
<string name="your_server_invitation">Din server invitation</string>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">Benutze conversations.im</string>
|
<string name="use_conversations.im">Benutze conversations.im</string>
|
||||||
<string name="create_new_account">Neues Konto erstellen</string>
|
<string name="create_new_account">Neues Konto erstellen</string>
|
||||||
<string name="do_you_have_an_account">Hast du bereits ein XMPP-Konto? Dies kann der Fall sein, wenn du bereits einen anderen XMPP-Client verwendest oder bereits Conversations verwendet hast. Wenn nicht, kannst du jetzt ein neues XMPP-Konto erstellen.\nTipp: Einige E-Mail-Anbieter bieten auch XMPP-Konten an.</string>
|
<string name="do_you_have_an_account">Hast du bereits ein XMPP-Konto? Dies kann der Fall sein, wenn du bereits einen anderen XMPP-Client verwendest oder bereits Conversations verwendet hast. Wenn nicht, kannst du jetzt ein neues XMPP-Konto erstellen.\nTipp: Einige E-Mail-Anbieter bieten auch XMPP-Konten an.</string>
|
||||||
<string name="server_select_text">XMPP ist ein anbieterunabhängiges Instant Messaging Netzwerk. Du kannst diesen Client mit jedem beliebigen XMPP-Server nutzen.\nUm es dir leicht zu machen, haben wir die Möglichkeit geschaffen, ein Konto auf conversations.im¹ anzulegen; ein Anbieter, der speziell für die Verwendung mit Conversations geeignet ist.</string>
|
<string name="server_select_text">XMPP ist ein anbieterunabhängiges Instant Messaging Netzwerk. Du kannst diesen Client mit jedem beliebigen XMPP-Server nutzen.\nUm es dir leicht zu machen, haben wir die Möglichkeit geschaffen, ein Konto auf conversations.im anzulegen; ein Anbieter, der speziell für die Verwendung mit Conversations geeignet ist.</string>
|
||||||
<string name="magic_create_text_on_x">Du wurdest zu %1$s eingeladen. Wir führen dich durch den Prozess der Kontoerstellung.\nWenn du %1$s als Provider wählst, kannst du mit Nutzern anderer Anbieter kommunizieren, indem du ihnen deine vollständige XMPP-Adresse gibst.</string>
|
<string name="magic_create_text_on_x">Du wurdest zu %1$s eingeladen. Wir führen dich durch den Prozess der Kontoerstellung.\nWenn du %1$s als Provider wählst, kannst du mit Nutzern anderer Anbieter kommunizieren, indem du ihnen deine vollständige XMPP-Adresse gibst.</string>
|
||||||
<string name="magic_create_text_fixed">Du wurdest zu %1$seingeladen. Ein Benutzername ist bereits für dich ausgewählt worden. Wir führen dich durch den Prozess der Kontoerstellung.\nDu kannst mit Nutzern anderer Anbieter kommunizieren, indem du ihnen deine vollständige XMPP-Adresse gibst.</string>
|
<string name="magic_create_text_fixed">Du wurdest zu %1$seingeladen. Ein Benutzername ist bereits für dich ausgewählt worden. Wir führen dich durch den Prozess der Kontoerstellung.\nDu kannst mit Nutzern anderer Anbieter kommunizieren, indem du ihnen deine vollständige XMPP-Adresse gibst.</string>
|
||||||
<string name="your_server_invitation">Deine Einladung für den Server</string>
|
<string name="your_server_invitation">Deine Einladung für den Server</string>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">Χρήση του conversations.im</string>
|
<string name="use_conversations.im">Χρήση του conversations.im</string>
|
||||||
<string name="create_new_account">Δημιουργία νέου λογαριασμού</string>
|
<string name="create_new_account">Δημιουργία νέου λογαριασμού</string>
|
||||||
<string name="do_you_have_an_account">Έχετε ήδη λογαριασμό XMPP; Αυτό μπορεί να συμβαίνει αν ήδη χρησιμοποιείτε ένα άλλο πρόγραμμα XMPP ή έχετε χρησιμοποιήσει το Conversations παλιότερα. Αν όχι, μπορείτε να δημιουργήσετε ένα νέο λογαριασμό XMPP τώρα.\nΧρήσιμη πληροφορία: Κάποιοι πάροχοι e-mail παρέχουν επίσης και λογαριασμούς XMPP.</string>
|
<string name="do_you_have_an_account">Έχετε ήδη λογαριασμό XMPP; Αυτό μπορεί να συμβαίνει αν ήδη χρησιμοποιείτε ένα άλλο πρόγραμμα XMPP ή έχετε χρησιμοποιήσει το Conversations παλιότερα. Αν όχι, μπορείτε να δημιουργήσετε ένα νέο λογαριασμό XMPP τώρα.\nΧρήσιμη πληροφορία: Κάποιοι πάροχοι e-mail παρέχουν επίσης και λογαριασμούς XMPP.</string>
|
||||||
<string name="server_select_text">Το XMPP είναι ένα δίκτυο άμεσης ανταλλαγής μηνυμάτων ανεξάρτητο παρόχου. Μπορείτε να χρησιμοποιήσετε αυτό το πρόγραμμα με όποιον διακομιστή XMPP επιθυμείτε.\nΓια διευκόλυνση πάντως μπορείτε να δημιουργήσετε έναν λογαριασμό στο conversations.im¹, έναν πάροχο ειδικά σχεδιασμένο για χρήση με το Conversations.</string>
|
<string name="server_select_text">Το XMPP είναι ένα δίκτυο άμεσης ανταλλαγής μηνυμάτων ανεξάρτητο παρόχου. Μπορείτε να χρησιμοποιήσετε αυτό το πρόγραμμα με όποιον διακομιστή XMPP επιθυμείτε.\nΓια διευκόλυνση πάντως μπορείτε να δημιουργήσετε έναν λογαριασμό στο conversations.im, έναν πάροχο ειδικά σχεδιασμένο για χρήση με το Conversations.</string>
|
||||||
<string name="magic_create_text_on_x">Έχετε προσκληθεί στο %1$s. Θα σας καθοδηγήσουμε στη διαδικασία δημιουργίας λογαριασμού.\nΕπιλέγοντας τον %1$s ως πάροχο θα μπορείτε να επικοινωνείτε με χρήστες άλλων παρόχων δίνοντάς τους την πλήρη διεύθυνση XMPP σας.</string>
|
<string name="magic_create_text_on_x">Έχετε προσκληθεί στο %1$s. Θα σας καθοδηγήσουμε στη διαδικασία δημιουργίας λογαριασμού.\nΕπιλέγοντας τον %1$s ως πάροχο θα μπορείτε να επικοινωνείτε με χρήστες άλλων παρόχων δίνοντάς τους την πλήρη διεύθυνση XMPP σας.</string>
|
||||||
<string name="magic_create_text_fixed">Έχετε προσκληθεί στο %1$s. Ένα όνομα χρήστη έχει ήδη επιλεγεί για εσάς. Θα σας καθοδηγήσουμε στη διαδικασία δημιουργίας λογαριασμού.\nΘα μπορείτε να επικοινωνείτε με χρήστες άλλων παρόχων δίνοντάς τους την πλήρη διεύθυνση XMPP σας.</string>
|
<string name="magic_create_text_fixed">Έχετε προσκληθεί στο %1$s. Ένα όνομα χρήστη έχει ήδη επιλεγεί για εσάς. Θα σας καθοδηγήσουμε στη διαδικασία δημιουργίας λογαριασμού.\nΘα μπορείτε να επικοινωνείτε με χρήστες άλλων παρόχων δίνοντάς τους την πλήρη διεύθυνση XMPP σας.</string>
|
||||||
<string name="your_server_invitation">Η πρόσκλησή σας στον διακομιστή</string>
|
<string name="your_server_invitation">Η πρόσκλησή σας στον διακομιστή</string>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">Usa conversations.im</string>
|
<string name="use_conversations.im">Usa conversations.im</string>
|
||||||
<string name="create_new_account">Crear nueva cuenta</string>
|
<string name="create_new_account">Crear nueva cuenta</string>
|
||||||
<string name="do_you_have_an_account">¿Ya tienes una cuenta XMPP? Este puede ser el caso si ya estás usando un cliente XMPP diferente o has usado Conversations anteriormente. Si no es así, puedes crear una nueva cuenta XMPP ahora mismo.\nConsejo: Algunos proveedores de email también ofrecen una cuenta XMPP.</string>
|
<string name="do_you_have_an_account">¿Ya tienes una cuenta XMPP? Este puede ser el caso si ya estás usando un cliente XMPP diferente o has usado Conversations anteriormente. Si no es así, puedes crear una nueva cuenta XMPP ahora mismo.\nConsejo: Algunos proveedores de email también ofrecen una cuenta XMPP.</string>
|
||||||
<string name="server_select_text">XMPP es una red de mensajería instantánea independiente del proveedor. Puedes usar este cliente con cualquier servidor XMPP que elijas.\nSin embargo, para tu conveniencia, hacemos de forma sencilla la creación de una cuenta en conversations.im¹; un proveedor especializado para el uso con Conversations </string>
|
<string name="server_select_text">XMPP es una red de mensajería instantánea independiente del proveedor. Puedes usar este cliente con cualquier servidor XMPP que elijas.\nSin embargo, para tu conveniencia, hacemos de forma sencilla la creación de una cuenta en conversations.im; un proveedor especializado para el uso con Conversations </string>
|
||||||
<string name="magic_create_text_on_x">Has sido invitado a %1$s. Te guiaremos durante el proceso de creación de la cuenta.\nCuando selecciones %1$s como proveedor podrás comunicarte con usuarios de otros servidores proporcionándoles tu dirección XMPP completa. </string>
|
<string name="magic_create_text_on_x">Has sido invitado a %1$s. Te guiaremos durante el proceso de creación de la cuenta.\nCuando selecciones %1$s como proveedor podrás comunicarte con usuarios de otros servidores proporcionándoles tu dirección XMPP completa. </string>
|
||||||
<string name="magic_create_text_fixed">Has sido invitado a %1$s. Un nombre de usuario ya ha sido escogido para ti. Te guiaremos durante el proceso de creación de la cuenta.\nPodrás comunicarte con otros usuarios de otros servidores proporcionándoles tu dirección XMPP completa. </string>
|
<string name="magic_create_text_fixed">Has sido invitado a %1$s. Un nombre de usuario ya ha sido escogido para ti. Te guiaremos durante el proceso de creación de la cuenta.\nPodrás comunicarte con otros usuarios de otros servidores proporcionándoles tu dirección XMPP completa. </string>
|
||||||
<string name="your_server_invitation">Tu invitación al servidor</string>
|
<string name="your_server_invitation">Tu invitación al servidor</string>
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
<string name="use_conversations.im">Erabili conversations.im</string>
|
<string name="use_conversations.im">Erabili conversations.im</string>
|
||||||
<string name="create_new_account">Kontu berria sortu</string>
|
<string name="create_new_account">Kontu berria sortu</string>
|
||||||
<string name="do_you_have_an_account">XMPP kontu bat badaukazu dagoeneko? Horrela izan daiteke beste XMPP aplikazio bat erabiltzen baduzu edo Conversations lehenago erabili baduzu. Bestela XMPP kontu berri bat sortu dezakezu oraintxe bertan.\nIradokizuna: email hornitzaile batzuek XMPP kontuak hornitzen dituzte ere.</string>
|
<string name="do_you_have_an_account">XMPP kontu bat badaukazu dagoeneko? Horrela izan daiteke beste XMPP aplikazio bat erabiltzen baduzu edo Conversations lehenago erabili baduzu. Bestela XMPP kontu berri bat sortu dezakezu oraintxe bertan.\nIradokizuna: email hornitzaile batzuek XMPP kontuak hornitzen dituzte ere.</string>
|
||||||
<string name="server_select_text">XMPP hornitzailez independientea den bat-bateko mezularitza sare bat da. Aplikazio hau nahi duzun XMPP zerbitzariarekin erabili dezakezu.\nHala ere zure erosotasunerako conversations.im¹-en, Conversationsekin bereziki erabiltzeko egokia den hornitzaile batean, kontu bat sortzea erraz egin dugu.</string>
|
<string name="server_select_text">XMPP hornitzailez independientea den bat-bateko mezularitza sare bat da. Aplikazio hau nahi duzun XMPP zerbitzariarekin erabili dezakezu.\nHala ere zure erosotasunerako conversations.im-en, Conversationsekin bereziki erabiltzeko egokia den hornitzaile batean, kontu bat sortzea erraz egin dugu.</string>
|
||||||
</resources>
|
</resources>
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">Utiliser conversations.im</string>
|
<string name="use_conversations.im">Utiliser conversations.im</string>
|
||||||
<string name="create_new_account">Créer un nouveau compte</string>
|
<string name="create_new_account">Créer un nouveau compte</string>
|
||||||
<string name="do_you_have_an_account">Avez-vous déjà un compte XMPP ? Cela peut être le cas si vous utilisez déjà un autre client XMPP ou si vous avez déjà utilisé Conversations auparavant. Sinon, vous pouvez créer un nouveau compte XMPP dès maintenant.\nRemarque : Certains fournisseurs de messagerie proposent également des comptes XMPP.</string>
|
<string name="do_you_have_an_account">Avez-vous déjà un compte XMPP ? Cela peut être le cas si vous utilisez déjà un autre client XMPP ou si vous avez déjà utilisé Conversations auparavant. Sinon, vous pouvez créer un nouveau compte XMPP dès maintenant.\nRemarque : Certains fournisseurs de messagerie proposent également des comptes XMPP.</string>
|
||||||
<string name="server_select_text">XMPP est un réseau de messagerie instantanée indépendant du fournisseur. Vous pouvez utiliser ce client avec n’importe quel serveur XMPP de votre choix.\nToutefois, pour votre commodité, nous avons facilité la création d’un compte sur conversations.im¹ ; un fournisseur spécialement conçu pour Conversations.</string>
|
<string name="server_select_text">XMPP est un réseau de messagerie instantanée indépendant du fournisseur. Vous pouvez utiliser ce client avec n’importe quel serveur XMPP de votre choix.\nToutefois, pour votre commodité, nous avons facilité la création d’un compte sur conversations.im ; un fournisseur spécialement conçu pour Conversations.</string>
|
||||||
<string name="magic_create_text_on_x">Vous avez été invité à %1$s. Nous allons vous guider à travers le processus de création d’un compte.\nEn choisissant %1$s comme fournisseur, vous pourrez communiquer avec les utilisateurs des autres fournisseurs en leur donnant votre adresse XMPP complète.</string>
|
<string name="magic_create_text_on_x">Vous avez été invité à %1$s. Nous allons vous guider à travers le processus de création d’un compte.\nEn choisissant %1$s comme fournisseur, vous pourrez communiquer avec les utilisateurs des autres fournisseurs en leur donnant votre adresse XMPP complète.</string>
|
||||||
<string name="magic_create_text_fixed">Vous avez été invité à %1$s. Un nom d’utilisateur a déjà été choisi pour vous. Nous allons vous guider à travers le processus de création d’un compte.\nVous pourrez communiquer avec les utilisateurs des autres fournisseurs en leur donnant votre adresse XMPP complète.</string>
|
<string name="magic_create_text_fixed">Vous avez été invité à %1$s. Un nom d’utilisateur a déjà été choisi pour vous. Nous allons vous guider à travers le processus de création d’un compte.\nVous pourrez communiquer avec les utilisateurs des autres fournisseurs en leur donnant votre adresse XMPP complète.</string>
|
||||||
<string name="your_server_invitation">Votre invitation au serveur</string>
|
<string name="your_server_invitation">Votre invitation au serveur</string>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">Utilizar conversations.im</string>
|
<string name="use_conversations.im">Utilizar conversations.im</string>
|
||||||
<string name="create_new_account">Crear nova conta</string>
|
<string name="create_new_account">Crear nova conta</string>
|
||||||
<string name="do_you_have_an_account">Xa posúes unha conta XMPP? Este pode ser o caso se xa estás a utilizar outro cliente XMPP ou utilizaches Conversations previamente. Se non é así podes crear unha nova conta agora mesmo.\nTruco: Algúns provedores de correo tamén proporcionan contas XMPP.</string>
|
<string name="do_you_have_an_account">Xa posúes unha conta XMPP? Este pode ser o caso se xa estás a utilizar outro cliente XMPP ou utilizaches Conversations previamente. Se non é así podes crear unha nova conta agora mesmo.\nTruco: Algúns provedores de correo tamén proporcionan contas XMPP.</string>
|
||||||
<string name="server_select_text">XMPP é unha rede de mensaxería independente do provedor. Podes utilizar este cliente con calquera provedor XMPP da túa elección.\nMais para a tua conveniencia fixemos que fose doado crear unha conta en conversations.im¹; un provedor especialmente axeitado para utilizar con Conversations.</string>
|
<string name="server_select_text">XMPP é unha rede de mensaxería independente do provedor. Podes utilizar este cliente con calquera provedor XMPP da túa elección.\nMais para a tua conveniencia fixemos que fose doado crear unha conta en conversations.im; un provedor especialmente axeitado para utilizar con Conversations.</string>
|
||||||
<string name="magic_create_text_on_x">Convidáronte a %1$s. Guiarémoste no proceso para crear unha conta.\nAo elexir %1$s como provedor poderás comunicarte con usuarias doutros provedores cando lles deas o teu enderezo XMPP completo.</string>
|
<string name="magic_create_text_on_x">Convidáronte a %1$s. Guiarémoste no proceso para crear unha conta.\nAo elexir %1$s como provedor poderás comunicarte con usuarias doutros provedores cando lles deas o teu enderezo XMPP completo.</string>
|
||||||
<string name="magic_create_text_fixed">Convidáronte a %1$s. Xa eleximos un nome de usuaria para ti. Guiarémoste no proceso de crear unha conta.\nPoderás comunicarte con usuarias doutros provedores cando lles digas o teu enderezo XMPP completo.</string>
|
<string name="magic_create_text_fixed">Convidáronte a %1$s. Xa eleximos un nome de usuaria para ti. Guiarémoste no proceso de crear unha conta.\nPoderás comunicarte con usuarias doutros provedores cando lles digas o teu enderezo XMPP completo.</string>
|
||||||
<string name="your_server_invitation">O convite do teu servidor</string>
|
<string name="your_server_invitation">O convite do teu servidor</string>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<string name="use_conversations.im">A conversations.im használata</string>
|
<string name="use_conversations.im">A conversations.im használata</string>
|
||||||
<string name="create_new_account">Új fiók létrehozása</string>
|
<string name="create_new_account">Új fiók létrehozása</string>
|
||||||
<string name="do_you_have_an_account">Már rendelkezik XMPP-fiókkal? Ez az eset állhat fenn, ha már egy másik XMPP-klienst használ, vagy ha már korábban használta a Conversations alkalmazást. Ha nem, akkor most létrehozhat egy új XMPP-fiókot.\nTipp: egyes e-mail szolgáltatók is biztosítanak XMPP-fiókokat.</string>
|
<string name="do_you_have_an_account">Már rendelkezik XMPP-fiókkal? Ez az eset állhat fenn, ha már egy másik XMPP-klienst használ, vagy ha már korábban használta a Conversations alkalmazást. Ha nem, akkor most létrehozhat egy új XMPP-fiókot.\nTipp: egyes e-mail szolgáltatók is biztosítanak XMPP-fiókokat.</string>
|
||||||
<string name="server_select_text">Az XMPP egy szolgáltatófüggetlen, azonnali üzenetküldő hálózat. Ezt a kliensprogramot bármely XMPP-kiszolgálóhoz használhatja.\nAzonban a kényelem érdekében megkönnyítettük a conversations.im¹ szolgáltatón való fióklétrehozást, ami kifejezetten a Conversations alkalmazással történő használatra lett tervezve.</string>
|
<string name="server_select_text">Az XMPP egy szolgáltatófüggetlen, azonnali üzenetküldő hálózat. Ezt a kliensprogramot bármely XMPP-kiszolgálóhoz használhatja.\nAzonban a kényelem érdekében megkönnyítettük a conversations.im szolgáltatón való fióklétrehozást, ami kifejezetten a Conversations alkalmazással történő használatra lett tervezve.</string>
|
||||||
<string name="magic_create_text_on_x">Meghívást kapott a(z) %1$s kiszolgálóra. Végig fogjuk vezetni egy fiók létrehozásának folyamatán.\nHa a(z) %1$s kiszolgálót választja szolgáltatóként, akkor képes lesz más szolgáltatók felhasználóival is kommunikálni, ha megadja nekik a teljes XMPP-címét.</string>
|
<string name="magic_create_text_on_x">Meghívást kapott a(z) %1$s kiszolgálóra. Végig fogjuk vezetni egy fiók létrehozásának folyamatán.\nHa a(z) %1$s kiszolgálót választja szolgáltatóként, akkor képes lesz más szolgáltatók felhasználóival is kommunikálni, ha megadja nekik a teljes XMPP-címét.</string>
|
||||||
<string name="magic_create_text_fixed">Meghívást kapott a(z) %1$s kiszolgálóra. Már kiválasztottak Önnek egy felhasználónevet. Végig fogjuk vezetni egy fiók létrehozásának folyamatán.\nKépes lesz más szolgáltatók felhasználóival is kommunikálni, ha megadja nekik a teljes XMPP-címét.</string>
|
<string name="magic_create_text_fixed">Meghívást kapott a(z) %1$s kiszolgálóra. Már kiválasztottak Önnek egy felhasználónevet. Végig fogjuk vezetni egy fiók létrehozásának folyamatán.\nKépes lesz más szolgáltatók felhasználóival is kommunikálni, ha megadja nekik a teljes XMPP-címét.</string>
|
||||||
<string name="your_server_invitation">Az Ön kiszolgálómeghívása</string>
|
<string name="your_server_invitation">Az Ön kiszolgálómeghívása</string>
|
||||||
|
|