From bf9b0b18f92a9fd0c26da3ca6e0cdc1f19bc58c2 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Fri, 17 Feb 2023 14:14:31 +0100 Subject: [PATCH] restructure build setup --- annotation-processor/build.gradle | 14 + .../processor/XmlElementProcessor.java | 0 annotation/build.gradle | 6 + .../android/annotation/XmlElement.java | 0 .../android/annotation/XmlPackage.java | 0 app/build.gradle | 127 + app/proguard-rules.pro | 21 + .../1.json | 0 .../android/xmpp/TransformationTest.java | 0 .../res/drawable/ic_launcher_foreground.xml | 0 .../res/mipmap-anydpi-v26/new_launcher.xml | 0 .../mipmap-anydpi-v26/new_launcher_round.xml | 0 .../mipmap-hdpi/ic_launcher_background.png | Bin .../res/mipmap-hdpi/new_launcher.png | Bin .../res/mipmap-hdpi/new_launcher_round.png | Bin .../mipmap-mdpi/ic_launcher_background.png | Bin .../res/mipmap-mdpi/new_launcher.png | Bin .../res/mipmap-mdpi/new_launcher_round.png | Bin .../mipmap-xhdpi/ic_launcher_background.png | Bin .../res/mipmap-xhdpi/new_launcher.png | Bin .../res/mipmap-xhdpi/new_launcher_round.png | Bin .../mipmap-xxhdpi/ic_launcher_background.png | Bin .../res/mipmap-xxhdpi/new_launcher.png | Bin .../res/mipmap-xxhdpi/new_launcher_round.png | Bin .../mipmap-xxxhdpi/ic_launcher_background.png | Bin .../res/mipmap-xxxhdpi/new_launcher.png | Bin .../res/mipmap-xxxhdpi/new_launcher_round.png | Bin .../conversations/res/values-ar/strings.xml | 0 .../conversations/res/values-bg/strings.xml | 0 .../res/values-bn-rIN/strings.xml | 0 .../conversations/res/values-ca/strings.xml | 0 .../res/values-da-rDK/strings.xml | 0 .../conversations/res/values-de/strings.xml | 0 .../conversations/res/values-el/strings.xml | 0 .../conversations/res/values-es/strings.xml | 0 .../conversations/res/values-eu/strings.xml | 0 .../res/values-fa-rIR/strings.xml | 0 .../conversations/res/values-fi/strings.xml | 0 .../conversations/res/values-fr/strings.xml | 0 .../conversations/res/values-gl/strings.xml | 0 .../conversations/res/values-hr/strings.xml | 0 .../conversations/res/values-hu/strings.xml | 0 .../conversations/res/values-id/strings.xml | 0 .../conversations/res/values-it/strings.xml | 0 .../conversations/res/values-ja/strings.xml | 0 .../conversations/res/values-nl/strings.xml | 0 .../conversations/res/values-pl/strings.xml | 0 .../res/values-pt-rBR/strings.xml | 0 .../conversations/res/values-pt/strings.xml | 0 .../res/values-ro-rRO/strings.xml | 0 .../conversations/res/values-ru/strings.xml | 0 .../conversations/res/values-sk/strings.xml | 0 .../conversations/res/values-sq/strings.xml | 0 .../conversations/res/values-sr/strings.xml | 0 .../conversations/res/values-sv/strings.xml | 0 .../conversations/res/values-szl/strings.xml | 0 .../res/values-tr-rTR/strings.xml | 0 .../conversations/res/values-uk/strings.xml | 0 .../conversations/res/values-vi/strings.xml | 0 .../res/values-zh-rCN/strings.xml | 0 .../res/values-zh-rTW/strings.xml | 0 .../src}/conversations/res/values/strings.xml | 0 app/src/main/AndroidManifest.xml | 92 + {src => app/src}/main/assets/logback.xml | 0 .../conversations/android/Conversations.java | 6 + .../java/im/conversations/android/IDs.java | 0 .../database/AxolotlDatabaseStore.java | 0 .../database/ConversationsDatabase.java | 0 .../android/database/Converters.java | 0 .../android/database/CredentialStore.java | 0 .../android/database/dao/AccountDao.java | 0 .../android/database/dao/AvatarDao.java | 0 .../android/database/dao/AxolotlDao.java | 0 .../android/database/dao/BlockingDao.java | 0 .../android/database/dao/BookmarkDao.java | 0 .../android/database/dao/ChatDao.java | 0 .../android/database/dao/DiscoDao.java | 0 .../android/database/dao/MessageDao.java | 0 .../android/database/dao/NickDao.java | 0 .../android/database/dao/PresenceDao.java | 0 .../android/database/dao/RosterDao.java | 0 .../database/entity/AccountEntity.java | 0 .../entity/AvatarAdditionalEntity.java | 0 .../android/database/entity/AvatarEntity.java | 0 .../entity/AxolotlDeviceListEntity.java | 0 .../entity/AxolotlDeviceListItemEntity.java | 0 .../entity/AxolotlIdentityEntity.java | 0 .../entity/AxolotlIdentityKeyPairEntity.java | 0 .../database/entity/AxolotlPreKeyEntity.java | 0 .../database/entity/AxolotlSessionEntity.java | 0 .../entity/AxolotlSignedPreKeyEntity.java | 0 .../database/entity/BlockedItemEntity.java | 0 .../database/entity/BookmarkEntity.java | 0 .../android/database/entity/ChatEntity.java | 0 .../android/database/entity/DiscoEntity.java | 0 .../database/entity/DiscoExtensionEntity.java | 0 .../entity/DiscoExtensionFieldEntity.java | 0 .../DiscoExtensionFieldValueEntity.java | 0 .../database/entity/DiscoFeatureEntity.java | 0 .../database/entity/DiscoIdentityEntity.java | 0 .../database/entity/DiscoItemEntity.java | 0 .../database/entity/MessageContentEntity.java | 0 .../database/entity/MessageEntity.java | 0 .../entity/MessageReactionEntity.java | 0 .../database/entity/MessageStateEntity.java | 0 .../database/entity/MessageVersionEntity.java | 0 .../android/database/entity/NickEntity.java | 0 .../database/entity/PresenceEntity.java | 0 .../database/entity/RosterItemEntity.java | 0 .../entity/RosterItemGroupEntity.java | 0 .../android/database/model/Account.java | 0 .../android/database/model/AvatarBase.java | 0 .../database/model/AvatarExternal.java | 0 .../database/model/AvatarThumbnail.java | 0 .../database/model/ChatIdentifier.java | 0 .../android/database/model/ChatType.java | 0 .../android/database/model/Connection.java | 0 .../android/database/model/Credential.java | 0 .../database/model/MessageContent.java | 0 .../database/model/MessageEmbedded.java | 0 .../database/model/MessageIdentifier.java | 0 .../database/model/MessageReaction.java | 0 .../android/database/model/MessageState.java | 0 .../model/MessageWithContentReactions.java | 0 .../android/database/model/Modification.java | 0 .../android/database/model/PartType.java | 0 .../android/database/model/PresenceShow.java | 0 .../android/database/model/PresenceType.java | 0 .../android/database/model/Proxy.java | 0 .../android/database/model/StateType.java | 0 .../dns/AndroidUsingExecLowPriority.java | 88 + .../dns}/AndroidUsingLinkProperties.java | 41 +- .../java/im/conversations/android/dns/IP.java | 39 + .../conversations/android/dns}/Resolver.java | 238 +- .../repository/AbstractRepository.java | 0 .../android/repository/AccountRepository.java | 0 .../android/socks}/SocksSocketFactory.java | 39 +- .../conversations/android/tls/SSLSockets.java | 0 .../android/tls/TrustManagers.java | 29 + .../android/tls/XmppDomainVerifier.java | 0 .../android/transformer/Transformation.java | 0 .../transformer/TransformationFactory.java | 0 .../android/transformer/Transformer.java | 0 .../conversations/android/ui/Activities.java | 0 .../android/ui/BindingAdapters.java | 0 .../im/conversations/android/ui/Event.java | 0 .../android/ui/NavControllers.java | 0 .../android/ui/activity/SetupActivity.java | 7 +- .../fragment/setup/AbstractSetupFragment.java | 0 .../ui/fragment/setup/HostnameFragment.java | 0 .../ui/fragment/setup/PasswordFragment.java | 4 +- .../ui/fragment/setup/SignInFragment.java | 4 +- .../android/ui/model/SetupViewModel.java | 0 .../android}/util/PendingItem.java | 2 +- .../im/conversations/android/xml/Element.java | 0 .../conversations/android/xml/Entities.java | 0 .../conversations/android/xml/Namespace.java | 0 .../im/conversations/android/xml/Tag.java | 0 .../conversations/android/xml/TagWriter.java | 0 .../android/xml/XmlElementReader.java | 0 .../conversations/android/xml/XmlReader.java | 0 .../conversations/android/xmpp/Closables.java | 0 .../android/xmpp/ConnectionException.java | 0 .../android/xmpp/ConnectionPool.java | 1 + .../android/xmpp/ConnectionState.java | 0 .../im/conversations/android/xmpp/Entity.java | 0 .../android/xmpp/EntityCapabilities.java | 0 .../android/xmpp/EntityCapabilities2.java | 0 .../android/xmpp/ExtensionFactory.java | 0 .../android/xmpp/IqErrorException.java | 0 .../conversations/android/xmpp/Managers.java | 0 .../android/xmpp/NodeConfiguration.java | 0 .../xmpp/PreconditionNotMetException.java | 0 .../android/xmpp/PubSubErrorException.java | 0 .../android/xmpp/ServiceDescription.java | 0 .../android/xmpp/Timestamps.java | 0 .../android/xmpp/XmppConnection.java | 333 +- .../android/xmpp/axolotl/AxolotlAddress.java | 0 .../android/xmpp/manager/AbstractManager.java | 0 .../android/xmpp/manager/ArchiveManager.java | 0 .../android/xmpp/manager/AvatarManager.java | 0 .../android/xmpp/manager/AxolotlManager.java | 0 .../android/xmpp/manager/BlockingManager.java | 0 .../android/xmpp/manager/BookmarkManager.java | 0 .../android/xmpp/manager/CarbonsManager.java | 0 .../xmpp/manager/ChatStateManager.java | 0 .../android/xmpp/manager/DiscoManager.java | 4 +- .../android/xmpp/manager/NickManager.java | 0 .../android/xmpp/manager/PepManager.java | 0 .../android/xmpp/manager/PresenceManager.java | 0 .../android/xmpp/manager/PubSubManager.java | 0 .../android/xmpp/manager/ReceiptManager.java | 0 .../xmpp/manager/RegistrationManager.java | 0 .../android/xmpp/manager/RosterManager.java | 0 .../android/xmpp/manager/StanzaIdManager.java | 0 .../android/xmpp/model/ByteContent.java | 0 .../android/xmpp/model/DeliveryReceipt.java | 0 .../xmpp/model/DeliveryReceiptRequest.java | 0 .../android/xmpp/model/Extension.java | 0 .../android/xmpp/model/Hash.java | 0 .../android/xmpp/model/StreamElement.java | 0 .../android/xmpp/model/avatar/Data.java | 0 .../android/xmpp/model/avatar/Info.java | 0 .../android/xmpp/model/avatar/Metadata.java | 0 .../android/xmpp/model/axolotl/Bundle.java | 0 .../android/xmpp/model/axolotl/Device.java | 0 .../xmpp/model/axolotl/DeviceList.java | 0 .../model/axolotl/ECPublicKeyContent.java | 0 .../android/xmpp/model/axolotl/Encrypted.java | 0 .../android/xmpp/model/axolotl/Header.java | 0 .../xmpp/model/axolotl/IdentityKey.java | 0 .../android/xmpp/model/axolotl/Payload.java | 0 .../android/xmpp/model/axolotl/PreKey.java | 0 .../android/xmpp/model/axolotl/PreKeys.java | 0 .../xmpp/model/axolotl/SignedPreKey.java | 0 .../model/axolotl/SignedPreKeySignature.java | 0 .../xmpp/model/axolotl/package-info.java | 0 .../xmpp/model/bind2/BindInlineFeatures.java | 19 +- .../android/xmpp/model/blocking/Block.java | 0 .../xmpp/model/blocking/Blocklist.java | 0 .../android/xmpp/model/blocking/Item.java | 0 .../android/xmpp/model/blocking/Unblock.java | 0 .../xmpp/model/blocking/package-info.java | 0 .../xmpp/model/bookmark/Conference.java | 0 .../xmpp/model/bookmark/package-info.java | 0 .../xmpp/model/capabilties/Capabilities.java | 0 .../model/capabilties/EntityCapabilities.java | 0 .../model/capabilties/LegacyCapabilities.java | 0 .../android/xmpp/model/carbons/Enable.java | 0 .../android/xmpp/model/carbons/Received.java | 0 .../android/xmpp/model/carbons/Sent.java | 0 .../xmpp/model/carbons/package-info.java | 0 .../xmpp/model/correction/Replace.java | 0 .../android/xmpp/model/csi/Active.java | 0 .../android/xmpp/model/csi/Inactive.java | 0 .../android/xmpp/model/csi/package-info.java | 0 .../android/xmpp/model/data/Data.java | 0 .../android/xmpp/model/data/Field.java | 0 .../android/xmpp/model/data/Value.java | 0 .../android/xmpp/model/data/package-info.java | 0 .../android/xmpp/model/delay/Delay.java | 0 .../xmpp/model/disco/info/Feature.java | 0 .../xmpp/model/disco/info/Identity.java | 0 .../xmpp/model/disco/info/InfoQuery.java | 0 .../xmpp/model/disco/info/package-info.java | 0 .../android/xmpp/model/disco/items/Item.java | 0 .../xmpp/model/disco/items/ItemsQuery.java | 0 .../xmpp/model/disco/items/package-info.java | 0 .../android/xmpp/model/error/Condition.java | 0 .../android/xmpp/model/error/Error.java | 0 .../android/xmpp/model/error/Text.java | 0 .../android/xmpp/model/forward/Forwarded.java | 0 .../android/xmpp/model/jabber/Body.java | 0 .../android/xmpp/model/jabber/Thread.java | 0 .../xmpp/model/jabber/package-info.java | 0 .../android/xmpp/model/mam/Result.java | 0 .../android/xmpp/model/mam/package-info.java | 0 .../android/xmpp/model/markers/Displayed.java | 0 .../android/xmpp/model/markers/Markable.java | 0 .../android/xmpp/model/markers/Received.java | 0 .../xmpp/model/markers/package-info.java | 0 .../android/xmpp/model/muc/Affiliation.java | 0 .../android/xmpp/model/muc/Role.java | 0 .../xmpp/model/muc/user/MultiUserChat.java | 0 .../xmpp/model/muc/user/package-info.java | 0 .../android/xmpp/model/nick/Nick.java | 0 .../xmpp/model/occupant/OccupantId.java | 0 .../android/xmpp/model/oob/OutOfBandData.java | 0 .../android/xmpp/model/oob/URL.java | 0 .../android/xmpp/model/oob/package-info.java | 0 .../android/xmpp/model/pars/PreAuth.java | 0 .../android/xmpp/model/ping/Ping.java | 0 .../android/xmpp/model/pubsub/Item.java | 0 .../android/xmpp/model/pubsub/Items.java | 0 .../android/xmpp/model/pubsub/PubSub.java | 0 .../android/xmpp/model/pubsub/Publish.java | 0 .../xmpp/model/pubsub/PublishOptions.java | 0 .../android/xmpp/model/pubsub/Retract.java | 0 .../xmpp/model/pubsub/error/PubSubError.java | 0 .../xmpp/model/pubsub/error/package-info.java | 0 .../xmpp/model/pubsub/event/Event.java | 0 .../xmpp/model/pubsub/event/Purge.java | 0 .../xmpp/model/pubsub/event/Retract.java | 0 .../xmpp/model/pubsub/event/package-info.java | 0 .../xmpp/model/pubsub/owner/Configure.java | 0 .../xmpp/model/pubsub/owner/PubSubOwner.java | 0 .../xmpp/model/pubsub/owner/package-info.java | 0 .../xmpp/model/pubsub/package-info.java | 0 .../xmpp/model/reactions/Reaction.java | 0 .../xmpp/model/reactions/Reactions.java | 0 .../xmpp/model/reactions/package-info.java | 0 .../android/xmpp/model/receipts/Received.java | 0 .../android/xmpp/model/receipts/Request.java | 0 .../xmpp/model/receipts/package-info.java | 0 .../xmpp/model/register/Instructions.java | 0 .../android/xmpp/model/register/Password.java | 0 .../android/xmpp/model/register/Register.java | 0 .../android/xmpp/model/register/Remove.java | 0 .../android/xmpp/model/register/Username.java | 0 .../xmpp/model/register/package-info.java | 0 .../android/xmpp/model/reply/Reply.java | 0 .../android/xmpp/model/retract/Retract.java | 0 .../android/xmpp/model/retract/Retracted.java | 0 .../xmpp/model/retract/package-info.java | 0 .../android/xmpp/model/roster/Group.java | 0 .../android/xmpp/model/roster/Item.java | 0 .../android/xmpp/model/roster/Query.java | 0 .../xmpp/model/roster/package-info.java | 0 .../android/xmpp/model/sasl2/Inline.java | 12 + .../xmpp/model/sasl2/package-info.java | 5 + .../android/xmpp/model/sm/Ack.java | 0 .../android/xmpp/model/sm/Enable.java | 0 .../android/xmpp/model/sm/Request.java | 0 .../android/xmpp/model/sm/Resume.java | 0 .../android/xmpp/model/sm/package-info.java | 0 .../android/xmpp/model/stanza/Iq.java | 0 .../android/xmpp/model/stanza/Message.java | 0 .../android/xmpp/model/stanza/Presence.java | 0 .../android/xmpp/model/stanza/Stanza.java | 0 .../xmpp/model/stanza/package-info.java | 0 .../android/xmpp/model/state/Active.java | 0 .../model/state/ChatStateNotification.java | 0 .../android/xmpp/model/state/Composing.java | 0 .../android/xmpp/model/state/Gone.java | 0 .../android/xmpp/model/state/Inactive.java | 0 .../android/xmpp/model/state/Paused.java | 0 .../xmpp/model/state/package-info.java | 0 .../android/xmpp/model/streams/Features.java | 0 .../xmpp/model/streams/package-info.java | 0 .../android/xmpp/model/unique/OriginId.java | 0 .../android/xmpp/model/unique/StanzaId.java | 0 .../xmpp/model/unique/package-info.java | 0 .../android/xmpp/model/version/Version.java | 0 .../android/xmpp/processor/BindProcessor.java | 0 .../android/xmpp/processor/IqProcessor.java | 0 .../MessageAcknowledgeProcessor.java | 0 .../xmpp/processor/MessageProcessor.java | 0 .../xmpp/processor/PresenceProcessor.java | 0 .../android/xmpp/sasl/Anonymous.java | 0 .../android/xmpp/sasl/ChannelBinding.java | 0 .../xmpp/sasl/ChannelBindingMechanism.java | 0 .../android/xmpp/sasl/DigestMd5.java | 0 .../android/xmpp/sasl/External.java | 0 .../android/xmpp/sasl/HashedToken.java | 0 .../android/xmpp/sasl/HashedTokenSha256.java | 0 .../android/xmpp/sasl/HashedTokenSha512.java | 0 .../android/xmpp/sasl/Plain.java | 0 .../android/xmpp/sasl/SaslMechanism.java | 0 .../android/xmpp/sasl/ScramMechanism.java | 0 .../android/xmpp/sasl/ScramPlusMechanism.java | 0 .../android/xmpp/sasl/ScramSha1.java | 0 .../android/xmpp/sasl/ScramSha1Plus.java | 0 .../android/xmpp/sasl/ScramSha256.java | 0 .../android/xmpp/sasl/ScramSha256Plus.java | 0 .../android/xmpp/sasl/ScramSha512.java | 0 .../android/xmpp/sasl/ScramSha512Plus.java | 0 .../android/xmpp/sasl/Tokenizer.java | 0 .../src}/main/res/anim/slide_from_left.xml | 0 .../src}/main/res/anim/slide_from_right.xml | 0 .../src}/main/res/anim/slide_to_left.xml | 0 .../src}/main/res/anim/slide_to_right.xml | 0 .../res/drawable/ic_account_circle_24dp.xml | 0 .../main/res/drawable/ic_settings_24dp.xml | 0 .../src}/main/res/layout/activity_setup.xml | 0 .../main/res/layout/fragment_password.xml | 2 +- .../src}/main/res/layout/fragment_sign_in.xml | 3 +- .../src/main/res/menu/activity_setup.xml | 0 .../main/res/navigation/setup_navigation.xml | 0 .../src}/main/res/values-ar/strings.xml | 0 .../src}/main/res/values-bg/strings.xml | 0 .../src}/main/res/values-bn-rIN/strings.xml | 0 .../src}/main/res/values-ca/strings.xml | 0 .../src}/main/res/values-cs/strings.xml | 0 .../src}/main/res/values-da-rDK/strings.xml | 0 .../src}/main/res/values-de/strings.xml | 0 .../src}/main/res/values-el/strings.xml | 0 .../src}/main/res/values-es/strings.xml | 0 .../src}/main/res/values-eu/strings.xml | 0 .../src}/main/res/values-fa-rIR/strings.xml | 0 .../src}/main/res/values-fi/strings.xml | 0 .../src}/main/res/values-fr/strings.xml | 0 .../src}/main/res/values-gl/strings.xml | 0 .../src}/main/res/values-hi-rIN/strings.xml | 0 .../src}/main/res/values-hr/strings.xml | 0 .../src}/main/res/values-hu/strings.xml | 0 .../src}/main/res/values-id/strings.xml | 0 .../src}/main/res/values-it/strings.xml | 0 .../src}/main/res/values-iw/strings.xml | 0 .../src}/main/res/values-ja/strings.xml | 0 .../src}/main/res/values-ko/strings.xml | 0 .../src}/main/res/values-land/bools.xml | 0 app/src/main/res/values-land/dimens.xml | 5 + .../src}/main/res/values-ml/strings.xml | 0 .../src}/main/res/values-nb-rNO/strings.xml | 0 app/src/main/res/values-night/themes.xml | 31 + .../src}/main/res/values-nl/strings.xml | 0 .../src}/main/res/values-pl/strings.xml | 0 .../src}/main/res/values-pt-rBR/strings.xml | 0 .../src}/main/res/values-pt/strings.xml | 0 .../src}/main/res/values-ro-rRO/strings.xml | 0 .../src}/main/res/values-ru/strings.xml | 0 .../src}/main/res/values-sk/strings.xml | 0 .../src}/main/res/values-sq-rAL/strings.xml | 0 .../src}/main/res/values-sr/strings.xml | 0 .../src}/main/res/values-sv/strings.xml | 0 .../src/main/res/values-sw600dp/device.xml | 2 +- .../src}/main/res/values-szl/strings.xml | 0 .../src}/main/res/values-tr-rTR/strings.xml | 0 .../src}/main/res/values-uk/strings.xml | 0 .../src}/main/res/values-vi/strings.xml | 0 .../src}/main/res/values-zh-rCN/strings.xml | 0 .../src}/main/res/values-zh-rTW/strings.xml | 0 app/src/main/res/values/colors.xml | 64 + app/src/main/res/values/device.xml | 4 + app/src/main/res/values/dimens.xml | 5 + {src => app/src}/main/res/values/integers.xml | 0 {src => app/src}/main/res/values/strings.xml | 0 app/src/main/res/values/themes.xml | 31 + app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + .../res/drawable/ic_launcher_foreground.xml | 0 .../res/mipmap-anydpi-v26/new_launcher.xml | 0 .../mipmap-anydpi-v26/new_launcher_round.xml | 0 .../mipmap-hdpi/ic_launcher_background.png | Bin 0 -> 1752 bytes .../quicksy/res/mipmap-hdpi/new_launcher.png | Bin .../res/mipmap-hdpi/new_launcher_round.png | Bin .../mipmap-mdpi/ic_launcher_background.png | Bin 0 -> 1162 bytes .../quicksy/res/mipmap-mdpi/new_launcher.png | Bin .../res/mipmap-mdpi/new_launcher_round.png | Bin .../mipmap-xhdpi/ic_launcher_background.png | Bin 0 -> 2499 bytes .../quicksy/res/mipmap-xhdpi/new_launcher.png | Bin .../res/mipmap-xhdpi/new_launcher_round.png | Bin .../mipmap-xxhdpi/ic_launcher_background.png | Bin 0 -> 3882 bytes .../res/mipmap-xxhdpi/new_launcher.png | Bin .../res/mipmap-xxhdpi/new_launcher_round.png | Bin .../mipmap-xxxhdpi/ic_launcher_background.png | Bin 0 -> 5359 bytes .../res/mipmap-xxxhdpi/new_launcher.png | Bin .../res/mipmap-xxxhdpi/new_launcher_round.png | Bin .../src}/quicksy/res/values-ar/strings.xml | 0 .../src}/quicksy/res/values-bg/strings.xml | 0 .../src}/quicksy/res/values-ca/strings.xml | 0 .../quicksy/res/values-da-rDK/strings.xml | 0 .../src}/quicksy/res/values-de/strings.xml | 0 .../src}/quicksy/res/values-el/strings.xml | 0 .../src}/quicksy/res/values-es/strings.xml | 0 .../src}/quicksy/res/values-fi/strings.xml | 0 .../src}/quicksy/res/values-fr/strings.xml | 0 .../src}/quicksy/res/values-gl/strings.xml | 0 .../src}/quicksy/res/values-hr/strings.xml | 0 .../src}/quicksy/res/values-hu/strings.xml | 0 .../src}/quicksy/res/values-id/strings.xml | 0 .../src}/quicksy/res/values-it/strings.xml | 0 .../src}/quicksy/res/values-ja/strings.xml | 0 .../src}/quicksy/res/values-nl/strings.xml | 0 .../src}/quicksy/res/values-pl/strings.xml | 0 .../quicksy/res/values-pt-rBR/strings.xml | 0 .../quicksy/res/values-ro-rRO/strings.xml | 0 .../src}/quicksy/res/values-ru/strings.xml | 0 .../src}/quicksy/res/values-sk/strings.xml | 0 .../src}/quicksy/res/values-sq/strings.xml | 0 .../src}/quicksy/res/values-sv/strings.xml | 0 .../src}/quicksy/res/values-szl/strings.xml | 0 .../quicksy/res/values-tr-rTR/strings.xml | 0 .../src}/quicksy/res/values-uk/strings.xml | 0 .../src}/quicksy/res/values-vi/strings.xml | 0 .../quicksy/res/values-zh-rCN/strings.xml | 0 .../quicksy/res/values-zh-rTW/strings.xml | 0 .../src}/quicksy/res/values/strings.xml | 0 .../android/xmpp/EntityCapabilitiesTest.java | 0 .../android/xmpp/PubSubTest.java | 0 .../android/xmpp/TimestampTest.java | 0 .../android/xmpp/XmlElementReaderTest.java | 0 build.gradle | 314 +- gradle.properties | 22 +- libs/annotation-processor/build.gradle | 21 - libs/annotation/build.gradle | 8 - proguard-rules.pro | 74 - settings.gradle | 7 +- src/conversations/AndroidManifest.xml | 80 - .../entities/AccountConfiguration.java | 50 - .../services/ImportBackupService.java | 394 -- .../services/QuickConversationsService.java | 38 - .../ui/EasyOnboardingInviteActivity.java | 151 - .../ui/ImportBackupActivity.java | 251 - .../conversations/ui/MagicCreateActivity.java | 162 - .../ui/ManageAccountActivity.java | 429 -- .../conversations/ui/PickServerActivity.java | 104 - .../ui/ShareViaAccountActivity.java | 90 - .../conversations/ui/WelcomeActivity.java | 236 - .../ui/adapter/BackupFileAdapter.java | 170 - .../utils/PhoneNumberUtilWrapper.java | 11 - .../utils/ProvisioningUtils.java | 43 - .../conversations/utils/SignupUtils.java | 77 - src/conversations/new_launcher-web.png | Bin 19483 -> 0 bytes .../res/drawable-hdpi/ic_notification.png | Bin 798 -> 0 bytes .../drawable-hdpi/ic_unarchive_white_24dp.png | Bin 258 -> 0 bytes .../res/drawable-hdpi/main_logo.png | Bin 23948 -> 0 bytes .../res/drawable-hdpi/splash_logo.png | Bin 16643 -> 0 bytes .../res/drawable-mdpi/ic_notification.png | Bin 554 -> 0 bytes .../drawable-mdpi/ic_unarchive_white_24dp.png | Bin 181 -> 0 bytes .../res/drawable-mdpi/main_logo.png | Bin 15309 -> 0 bytes .../res/drawable-mdpi/splash_logo.png | Bin 10492 -> 0 bytes .../res/drawable-xhdpi/ic_notification.png | Bin 1075 -> 0 bytes .../ic_unarchive_white_24dp.png | Bin 273 -> 0 bytes .../res/drawable-xhdpi/main_logo.png | Bin 33496 -> 0 bytes .../res/drawable-xhdpi/splash_logo.png | Bin 23030 -> 0 bytes .../res/drawable-xxhdpi/ic_notification.png | Bin 1619 -> 0 bytes .../ic_unarchive_white_24dp.png | Bin 391 -> 0 bytes .../res/drawable-xxhdpi/main_logo.png | Bin 52900 -> 0 bytes .../res/drawable-xxhdpi/splash_logo.png | Bin 36548 -> 0 bytes .../res/drawable-xxxhdpi/ic_notification.png | Bin 2117 -> 0 bytes .../ic_unarchive_white_24dp.png | Bin 503 -> 0 bytes .../res/drawable-xxxhdpi/main_logo.png | Bin 74056 -> 0 bytes .../res/drawable-xxxhdpi/splash_logo.png | Bin 50538 -> 0 bytes .../res/layout/activity_easy_invite.xml | 83 - .../res/layout/activity_import_backup.xml | 45 - .../res/layout/activity_pick_server.xml | 90 - .../res/layout/activity_welcome.xml | 91 - .../res/layout/dialog_enter_password.xml | 47 - src/conversations/res/layout/magic_create.xml | 101 - .../res/menu/easy_onboarding_invite.xml | 10 - src/conversations/res/menu/manageaccounts.xml | 32 - src/conversations/res/menu/welcome_menu.xml | 22 - .../utils/InstallReferrerUtils.java | 15 - .../utils/InstallReferrerUtils.java | 70 - .../services/EmojiInitializationService.java | 14 - .../services/PushManagementService.java | 33 - src/main/AndroidManifest.xml | 361 -- .../java/eu/siacs/conversations/Config.java | 214 - .../android/AbstractPhoneContact.java | 39 - .../android/JabberIdContact.java | 76 - .../crypto/DomainHostnameVerifier.java | 11 - .../conversations/crypto/OmemoSetting.java | 84 - .../crypto/PgpDecryptionService.java | 274 - .../siacs/conversations/crypto/PgpEngine.java | 291 - .../crypto/XmppDomainVerifier.java | 196 - .../crypto/axolotl/AxolotlService.java | 1775 ------ .../axolotl/BrokenSessionException.java | 18 - .../crypto/axolotl/CryptoFailedException.java | 16 - .../crypto/axolotl/FingerprintStatus.java | 184 - .../axolotl/NoSessionsCreatedException.java | 4 - .../NotEncryptedForThisDeviceException.java | 37 - .../axolotl/OnMessageCreatedCallback.java | 5 - .../axolotl/OutdatedSenderException.java | 8 - .../crypto/axolotl/SQLiteAxolotlStore.java | 477 -- .../crypto/axolotl/XmppAxolotlMessage.java | 317 -- .../crypto/axolotl/XmppAxolotlSession.java | 186 - .../conversations/crypto/sasl/Anonymous.java | 29 - .../crypto/sasl/ChannelBinding.java | 120 - .../crypto/sasl/ChannelBindingMechanism.java | 100 - .../conversations/crypto/sasl/DigestMd5.java | 114 - .../conversations/crypto/sasl/External.java | 32 - .../crypto/sasl/HashedToken.java | 190 - .../crypto/sasl/HashedTokenSha256.java | 23 - .../crypto/sasl/HashedTokenSha512.java | 23 - .../conversations/crypto/sasl/Plain.java | 38 - .../crypto/sasl/SaslMechanism.java | 196 - .../crypto/sasl/ScramMechanism.java | 317 -- .../crypto/sasl/ScramPlusMechanism.java | 23 - .../conversations/crypto/sasl/ScramSha1.java | 37 - .../crypto/sasl/ScramSha1Plus.java | 37 - .../crypto/sasl/ScramSha256.java | 40 - .../crypto/sasl/ScramSha256Plus.java | 37 - .../crypto/sasl/ScramSha512.java | 41 - .../crypto/sasl/ScramSha512Plus.java | 37 - .../conversations/crypto/sasl/Tokenizer.java | 77 - .../entities/AbstractEntity.java | 20 - .../siacs/conversations/entities/Account.java | 886 --- .../conversations/entities/Blockable.java | 11 - .../conversations/entities/Bookmark.java | 257 - .../siacs/conversations/entities/Contact.java | 606 -- .../conversations/entities/Conversation.java | 1133 ---- .../entities/Conversational.java | 48 - .../entities/DownloadableFile.java | 94 - .../eu/siacs/conversations/entities/Edit.java | 97 - .../entities/IndividualMessage.java | 123 - .../conversations/entities/ListItem.java | 37 - .../conversations/entities/MTMDecision.java | 33 - .../siacs/conversations/entities/Message.java | 1019 ---- .../conversations/entities/MucOptions.java | 917 --- .../conversations/entities/Presence.java | 101 - .../entities/PresenceTemplate.java | 81 - .../conversations/entities/Presences.java | 175 - .../conversations/entities/RawBlockable.java | 92 - .../conversations/entities/ReadByMarker.java | 171 - .../entities/ReceiptRequest.java | 75 - .../eu/siacs/conversations/entities/Room.java | 93 - .../siacs/conversations/entities/Roster.java | 98 - .../entities/RtpSessionStatus.java | 59 - .../entities/ServiceDiscoveryResult.java | 355 -- .../entities/StubConversation.java | 73 - .../conversations/entities/Transferable.java | 30 - .../entities/TransferablePlaceholder.java | 34 - .../generator/AbstractGenerator.java | 140 - .../conversations/generator/IqGenerator.java | 572 -- .../generator/MessageGenerator.java | 268 - .../generator/PresenceGenerator.java | 100 - .../siacs/conversations/http/AesGcmURL.java | 41 - .../http/HttpConnectionManager.java | 176 - .../http/HttpDownloadConnection.java | 484 -- .../http/HttpUploadConnection.java | 214 - .../eu/siacs/conversations/http/Method.java | 51 - .../conversations/http/SlotRequester.java | 154 - .../java/eu/siacs/conversations/http/URL.java | 32 - .../http/services/MuclumbusService.java | 50 - .../conversations/parser/AbstractParser.java | 210 - .../siacs/conversations/parser/IqParser.java | 484 -- .../conversations/parser/MessageParser.java | 1104 ---- .../conversations/parser/PresenceParser.java | 394 -- .../persistance/DatabaseBackend.java | 1685 ------ .../persistance/FileBackend.java | 1698 ------ .../persistance/OnPhoneContactsMerged.java | 5 - .../persistance/UnifiedPushDatabase.java | 262 - .../services/AbstractConnectionManager.java | 172 - .../AbstractQuickConversationsService.java | 35 - .../services/AppRTCAudioManager.java | 642 --- .../services/AppRTCBluetoothManager.java | 575 -- .../services/AppRTCProximitySensor.java | 171 - .../AttachFileToConversationRunnable.java | 189 - .../conversations/services/AvatarService.java | 678 --- .../services/BarcodeProvider.java | 210 - .../services/ChannelDiscoveryService.java | 298 - .../services/ContactChooserTargetService.java | 116 - .../conversations/services/EventReceiver.java | 40 - .../services/ExportBackupService.java | 408 -- .../conversations/services/MediaPlayer.java | 16 - .../services/MemorizingTrustManager.java | 746 --- .../services/MessageArchiveService.java | 676 --- .../services/MessageSearchTask.java | 156 - .../services/NotificationService.java | 1948 ------- .../services/ShortcutService.java | 166 - .../services/UnifiedPushBroker.java | 333 -- .../services/UnifiedPushDistributor.java | 152 - .../services/XmppConnectionService.java | 5016 ----------------- .../siacs/conversations/ui/AboutActivity.java | 32 - .../conversations/ui/AboutPreference.java | 35 - .../AbstractSearchableListItemActivity.java | 135 - .../conversations/ui/ActionBarActivity.java | 36 - .../conversations/ui/BlockContactDialog.java | 62 - .../conversations/ui/BlocklistActivity.java | 113 - .../ui/ChangePasswordActivity.java | 122 - .../ui/ChannelDiscoveryActivity.java | 288 - ...hooseAccountForProfilePictureActivity.java | 88 - .../ui/ChooseContactActivity.java | 415 -- .../ui/ConferenceDetailsActivity.java | 656 --- .../ui/ContactDetailsActivity.java | 581 -- .../ui/ConversationActivity.java | 25 - .../ui/ConversationFragment.java | 3611 ------------ .../ui/ConversationsActivity.java | 721 --- .../ui/ConversationsOverviewFragment.java | 425 -- .../ui/CreatePrivateGroupChatDialog.java | 82 - .../ui/CreatePublicChannelDialog.java | 295 - .../conversations/ui/EditAccountActivity.java | 1376 ----- .../conversations/ui/EnterJidDialog.java | 279 - .../ui/JoinConferenceDialog.java | 122 - .../conversations/ui/LocationActivity.java | 292 - .../ui/MediaBrowserActivity.java | 76 - .../conversations/ui/MemorizingActivity.java | 115 - .../conversations/ui/MucUsersActivity.java | 164 - .../siacs/conversations/ui/OmemoActivity.java | 210 - ...ublishGroupChatProfilePictureActivity.java | 153 - .../ui/PublishProfilePictureActivity.java | 308 - .../conversations/ui/RecordingActivity.java | 238 - .../conversations/ui/RtpSessionActivity.java | 1494 ----- .../siacs/conversations/ui/ScanActivity.java | 322 -- .../conversations/ui/SearchActivity.java | 296 - .../conversations/ui/SettingsActivity.java | 563 -- .../conversations/ui/SettingsFragment.java | 77 - .../ui/ShareLocationActivity.java | 243 - .../conversations/ui/ShareWithActivity.java | 221 - .../conversations/ui/ShortcutActivity.java | 76 - .../ui/ShowLocationActivity.java | 246 - .../ui/StartConversationActivity.java | 1360 ----- .../conversations/ui/TimePreference.java | 98 - .../conversations/ui/TrustKeysActivity.java | 457 -- .../eu/siacs/conversations/ui/UiCallback.java | 11 - .../ui/UiInformableCallback.java | 5 - .../conversations/ui/UriHandlerActivity.java | 333 -- .../siacs/conversations/ui/XmppActivity.java | 1010 ---- .../siacs/conversations/ui/XmppFragment.java | 47 - .../ui/adapter/AccountAdapter.java | 99 - .../adapter/ChannelSearchResultAdapter.java | 109 - .../ui/adapter/ConversationAdapter.java | 317 -- .../ui/adapter/KnownHostsAdapter.java | 90 - .../ui/adapter/ListItemAdapter.java | 122 - .../ui/adapter/MediaAdapter.java | 246 - .../ui/adapter/MediaPreviewAdapter.java | 206 - .../ui/adapter/MessageAdapter.java | 929 --- .../ui/adapter/PresenceTemplateAdapter.java | 93 - .../conversations/ui/adapter/UserAdapter.java | 140 - .../ui/adapter/UserPreviewAdapter.java | 70 - .../ui/forms/FormBooleanFieldWrapper.java | 80 - .../ui/forms/FormFieldFactory.java | 30 - .../ui/forms/FormFieldWrapper.java | 94 - .../ui/forms/FormJidSingleFieldWrapper.java | 43 - .../ui/forms/FormTextFieldWrapper.java | 97 - .../conversations/ui/forms/FormWrapper.java | 72 - .../ui/interfaces/OnAvatarPublication.java | 39 - .../ui/interfaces/OnBackendConnected.java | 36 - .../ui/interfaces/OnConversationArchived.java | 37 - .../ui/interfaces/OnConversationRead.java | 36 - .../ui/interfaces/OnConversationSelected.java | 37 - .../OnConversationsListItemUpdated.java | 34 - .../ui/interfaces/OnMediaLoaded.java | 10 - .../interfaces/OnSearchResultsAvailable.java | 40 - .../conversations/ui/service/AudioPlayer.java | 456 -- .../ui/service/CameraManager.java | 322 -- .../conversations/ui/text/DividerSpan.java | 29 - .../conversations/ui/text/FixedURLSpan.java | 89 - .../conversations/ui/text/QuoteSpan.java | 59 - .../conversations/ui/util/ActionBarUtil.java | 88 - .../conversations/ui/util/ActivityResult.java | 50 - .../conversations/ui/util/Attachment.java | 202 - .../ui/util/AvatarWorkerTask.java | 125 - .../conversations/ui/util/ChangeWatcher.java | 50 - .../ui/util/ConversationMenuConfigurator.java | 127 - .../conversations/ui/util/DateSeparator.java | 49 - .../ui/util/DelayedHintHelper.java | 49 - .../util/EditMessageActionModeCallback.java | 98 - .../conversations/ui/util/GridManager.java | 78 - .../conversations/ui/util/JidDialog.java | 24 - .../conversations/ui/util/ListViewUtils.java | 57 - .../conversations/ui/util/LocationHelper.java | 69 - .../ui/util/MainThreadExecutor.java | 37 - .../ui/util/MenuDoubleTabUtil.java | 54 - .../ui/util/MucConfiguration.java | 133 - .../ui/util/MucDetailsContextMenuHelper.java | 229 - .../conversations/ui/util/MyLinkify.java | 159 - .../ui/util/PendingActionHelper.java | 29 - .../ui/util/PresenceSelector.java | 166 - .../conversations/ui/util/QuoteHelper.java | 106 - .../conversations/ui/util/Rationals.java | 26 - .../conversations/ui/util/ScrollState.java | 72 - .../ui/util/SendButtonAction.java | 85 - .../conversations/ui/util/SendButtonTool.java | 190 - .../conversations/ui/util/SettingsUtils.java | 20 - .../conversations/ui/util/ShareUtil.java | 148 - .../ui/util/SoftKeyboardUtils.java | 71 - .../ui/util/StyledAttributes.java | 59 - .../conversations/ui/util/UriHelper.java | 30 - .../siacs/conversations/ui/util/ViewUtil.java | 60 - .../ui/widget/ClickableMovementMethod.java | 42 - .../ui/widget/DisabledActionModeCallback.java | 56 - .../conversations/ui/widget/EditMessage.java | 216 - .../widget/ImmediateAutoCompleteTextView.java | 49 - .../siacs/conversations/ui/widget/Marker.java | 52 - .../conversations/ui/widget/MyLocation.java | 53 - .../conversations/ui/widget/ScannerView.java | 157 - .../ui/widget/SquareFrameLayout.java | 25 - .../ui/widget/SurfaceViewRenderer.java | 48 - .../ui/widget/SwipeRefreshListFragment.java | 148 - .../ui/widget/TextInputEditText.java | 49 - .../ui/widget/UnreadCountCustomView.java | 77 - .../conversations/utils/AccountUtils.java | 130 - .../utils/AndroidUsingExecLowPriority.java | 92 - .../conversations/utils/AppRTCUtils.java | 55 - .../siacs/conversations/utils/AsciiArmor.java | 34 - .../conversations/utils/BackupFileHeader.java | 84 - .../conversations/utils/Cancellable.java | 34 - .../utils/CharSequenceUtils.java | 86 - .../siacs/conversations/utils/Checksum.java | 60 - .../conversations/utils/Compatibility.java | 180 - .../utils/ConversationsFileObserver.java | 138 - .../conversations/utils/CryptoHelper.java | 287 - .../conversations/utils/CursorUtils.java | 22 - .../utils/EasyOnboardingInvite.java | 93 - .../siacs/conversations/utils/Emoticons.java | 310 - .../conversations/utils/ExceptionHandler.java | 36 - .../conversations/utils/ExceptionHelper.java | 113 - .../siacs/conversations/utils/FileUtils.java | 171 - .../utils/FileWriterException.java | 14 - .../siacs/conversations/utils/FtsUtils.java | 122 - .../siacs/conversations/utils/GeoHelper.java | 148 - .../java/eu/siacs/conversations/utils/IP.java | 30 - .../conversations/utils/ImStyleParser.java | 159 - .../utils/IrregularUnicodeDetector.java | 276 - .../siacs/conversations/utils/JidHelper.java | 67 - .../conversations/utils/LanguageUtils.java | 28 - .../conversations/utils/LocationProvider.java | 75 - .../conversations/utils/MessageUtils.java | 116 - .../siacs/conversations/utils/MimeUtils.java | 637 --- .../utils/NickValidityChecker.java | 32 - .../utils/OnPhoneContactsLoadedListener.java | 9 - .../siacs/conversations/utils/Patterns.java | 513 -- .../conversations/utils/PermissionUtils.java | 94 - .../conversations/utils/PhoneHelper.java | 62 - .../conversations/utils/QuickLoader.java | 62 - .../eu/siacs/conversations/utils/Random.java | 13 - .../ReplacingSerialSingleThreadExecutor.java | 24 - .../utils/ReplacingTaskManager.java | 57 - .../siacs/conversations/utils/SSLSockets.java | 148 - .../utils/SerialSingleThreadExecutor.java | 64 - .../conversations/utils/StringUtils.java | 50 - .../conversations/utils/StylingHelper.java | 255 - .../conversations/utils/TLSSocketFactory.java | 66 - .../conversations/utils/ThemeHelper.java | 117 - .../conversations/utils/TimeFrameUtils.java | 102 - .../conversations/utils/TorServiceUtils.java | 52 - .../utils/TranscoderStrategies.java | 41 - .../siacs/conversations/utils/UIHelper.java | 614 -- .../conversations/utils/WakeLockHelper.java | 59 - .../conversations/utils/WeakReferenceSet.java | 26 - .../conversations/utils/XEP0392Helper.java | 31 - .../siacs/conversations/utils/XmlHelper.java | 31 - .../eu/siacs/conversations/utils/XmppUri.java | 264 - .../eu/siacs/conversations/xml/Element.java | 234 - .../conversations/xml/LocalizedContent.java | 59 - .../eu/siacs/conversations/xml/Namespace.java | 107 - .../java/eu/siacs/conversations/xml/Tag.java | 113 - .../eu/siacs/conversations/xml/TagWriter.java | 127 - .../conversations/xml/XmlElementReader.java | 19 - .../eu/siacs/conversations/xml/XmlReader.java | 133 - .../siacs/conversations/xmpp/InvalidJid.java | 157 - .../xmpp/IqResponseException.java | 8 - .../java/eu/siacs/conversations/xmpp/Jid.java | 145 - .../xmpp/OnAdvancedStreamFeaturesLoaded.java | 7 - .../conversations/xmpp/OnBindListener.java | 7 - .../xmpp/OnContactStatusChanged.java | 7 - .../xmpp/OnIqPacketReceived.java | 8 - .../xmpp/OnKeyStatusUpdated.java | 7 - .../xmpp/OnMessageAcknowledged.java | 7 - .../xmpp/OnMessagePacketReceived.java | 8 - .../xmpp/OnPresencePacketReceived.java | 8 - .../conversations/xmpp/OnStatusChanged.java | 7 - .../conversations/xmpp/OnUpdateBlocklist.java | 13 - .../conversations/xmpp/PacketReceived.java | 5 - .../siacs/conversations/xmpp/WrappedJid.java | 130 - .../conversations/xmpp/XmppConnection.java | 2798 --------- .../xmpp/chatstate/ChatState.java | 32 - .../siacs/conversations/xmpp/forms/Data.java | 125 - .../siacs/conversations/xmpp/forms/Field.java | 78 - .../xmpp/jingle/AbstractJingleConnection.java | 145 - .../xmpp/jingle/ContentAddition.java | 88 - .../xmpp/jingle/DirectConnectionUtils.java | 64 - .../xmpp/jingle/JingleCandidate.java | 152 - .../xmpp/jingle/JingleConnectionManager.java | 1056 ---- .../jingle/JingleFileTransferConnection.java | 1255 ----- .../xmpp/jingle/JingleInBandTransport.java | 265 - .../xmpp/jingle/JingleRtpConnection.java | 2797 --------- .../xmpp/jingle/JingleSocks5Transport.java | 305 - .../xmpp/jingle/JingleTransport.java | 15 - .../conversations/xmpp/jingle/Media.java | 35 - .../xmpp/jingle/MediaBuilder.java | 48 - .../xmpp/jingle/OmemoVerification.java | 83 - .../jingle/OmemoVerifiedRtpContentMap.java | 19 - .../OnFileTransmissionStatusChanged.java | 9 - .../xmpp/jingle/OnJinglePacketReceived.java | 9 - .../xmpp/jingle/OnPrimaryCandidateFound.java | 5 - .../xmpp/jingle/OnTransportConnected.java | 7 - .../xmpp/jingle/OngoingRtpSession.java | 10 - .../xmpp/jingle/RtpCapability.java | 95 - .../xmpp/jingle/RtpContentMap.java | 490 -- .../xmpp/jingle/RtpEndUserState.java | 20 - .../xmpp/jingle/SessionDescription.java | 417 -- .../jingle/SessionDescriptionBuilder.java | 42 - .../xmpp/jingle/ToneManager.java | 214 - .../xmpp/jingle/TrackWrapper.java | 76 - .../xmpp/jingle/VideoSourceWrapper.java | 187 - .../xmpp/jingle/WebRTCWrapper.java | 758 --- .../xmpp/jingle/stanzas/Content.java | 175 - .../stanzas/FileTransferDescription.java | 91 - .../jingle/stanzas/GenericDescription.java | 20 - .../jingle/stanzas/GenericTransportInfo.java | 20 - .../xmpp/jingle/stanzas/Group.java | 64 - .../xmpp/jingle/stanzas/IbbTransportInfo.java | 46 - .../jingle/stanzas/IceUdpTransportInfo.java | 411 -- .../xmpp/jingle/stanzas/JinglePacket.java | 166 - .../OmemoVerifiedIceUdpTransportInfo.java | 27 - .../xmpp/jingle/stanzas/Proceed.java | 31 - .../xmpp/jingle/stanzas/Propose.java | 41 - .../xmpp/jingle/stanzas/Reason.java | 68 - .../xmpp/jingle/stanzas/RtpDescription.java | 661 --- .../xmpp/jingle/stanzas/S5BTransportInfo.java | 50 - .../conversations/xmpp/mam/MamReference.java | 69 - .../siacs/conversations/xmpp/pep/Avatar.java | 102 - .../xmpp/pep/PublishOptions.java | 46 - .../AbstractAcknowledgeableStanza.java | 42 - .../xmpp/stanzas/AbstractStanza.java | 53 - .../conversations/xmpp/stanzas/IqPacket.java | 75 - .../xmpp/stanzas/MessagePacket.java | 100 - .../xmpp/stanzas/PresencePacket.java | 8 - .../xmpp/stanzas/csi/ActivePacket.java | 11 - .../xmpp/stanzas/csi/InactivePacket.java | 11 - .../xmpp/stanzas/streammgmt/AckPacket.java | 14 - .../xmpp/stanzas/streammgmt/EnablePacket.java | 14 - .../stanzas/streammgmt/RequestPacket.java | 13 - .../xmpp/stanzas/streammgmt/ResumePacket.java | 15 - .../drawable-hdpi/baseline_tour_black_48.png | Bin 369 -> 0 bytes .../drawable-hdpi/baseline_tour_white_48.png | Bin 372 -> 0 bytes .../res/drawable-hdpi/date_bubble_grey.9.png | Bin 657 -> 0 bytes .../res/drawable-hdpi/date_bubble_white.9.png | Bin 689 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 337 -> 0 bytes .../res/drawable-hdpi/ic_action_reply.png | Bin 462 -> 0 bytes .../res/drawable-hdpi/ic_add_white_24dp.png | Bin 223 -> 0 bytes .../drawable-hdpi/ic_android_black_48dp.png | Bin 519 -> 0 bytes .../drawable-hdpi/ic_android_white_48dp.png | Bin 536 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 251 -> 0 bytes .../drawable-hdpi/ic_archive_black_48dp.png | Bin 377 -> 0 bytes .../drawable-hdpi/ic_archive_white_24dp.png | Bin 247 -> 0 bytes .../drawable-hdpi/ic_archive_white_48dp.png | Bin 390 -> 0 bytes .../res/drawable-hdpi/ic_attach_camera.png | Bin 1235 -> 0 bytes .../drawable-hdpi/ic_attach_camera_white.png | Bin 636 -> 0 bytes .../res/drawable-hdpi/ic_attach_document.png | Bin 1060 -> 0 bytes .../ic_attach_document_white.png | Bin 393 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 452 -> 0 bytes .../res/drawable-hdpi/ic_attach_location.png | Bin 1280 -> 0 bytes .../ic_attach_location_white.png | Bin 665 -> 0 bytes .../res/drawable-hdpi/ic_attach_photo.png | Bin 1117 -> 0 bytes .../drawable-hdpi/ic_attach_photo_white.png | Bin 463 -> 0 bytes .../res/drawable-hdpi/ic_attach_record.png | Bin 1233 -> 0 bytes .../drawable-hdpi/ic_attach_record_white.png | Bin 614 -> 0 bytes .../res/drawable-hdpi/ic_attach_videocam.png | Bin 277 -> 0 bytes .../ic_attach_videocam_white.png | Bin 376 -> 0 bytes .../drawable-hdpi/ic_autorenew_white_24dp.png | Bin 489 -> 0 bytes .../drawable-hdpi/ic_backup_black_48dp.png | Bin 561 -> 0 bytes .../drawable-hdpi/ic_backup_white_48dp.png | Bin 589 -> 0 bytes .../res/drawable-hdpi/ic_block_white_24dp.png | Bin 606 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 420 -> 0 bytes .../res/drawable-hdpi/ic_book_black_48dp.png | Bin 278 -> 0 bytes .../res/drawable-hdpi/ic_book_white_48dp.png | Bin 283 -> 0 bytes .../res/drawable-hdpi/ic_call_black_24dp.png | Bin 326 -> 0 bytes .../drawable-hdpi/ic_call_end_white_48dp.png | Bin 553 -> 0 bytes .../drawable-hdpi/ic_call_made_black_18dp.png | Bin 159 -> 0 bytes .../drawable-hdpi/ic_call_made_white_18dp.png | Bin 174 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 179 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 180 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 180 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 191 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 159 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 169 -> 0 bytes .../res/drawable-hdpi/ic_call_white_24dp.png | Bin 340 -> 0 bytes .../res/drawable-hdpi/ic_call_white_48dp.png | Bin 597 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 364 -> 0 bytes .../drawable-hdpi/ic_cancel_black_24dp.png | Bin 397 -> 0 bytes .../drawable-hdpi/ic_cancel_white_24dp.png | Bin 510 -> 0 bytes .../res/drawable-hdpi/ic_chat_white_24dp.png | Bin 168 -> 0 bytes .../res/drawable-hdpi/ic_clear_white_48dp.png | Bin 347 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 353 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 195 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 203 -> 0 bytes .../res/drawable-hdpi/ic_crop_white_24dp.png | Bin 302 -> 0 bytes .../drawable-hdpi/ic_delete_black_24dp.png | Bin 155 -> 0 bytes .../drawable-hdpi/ic_delete_white_24dp.png | Bin 246 -> 0 bytes .../ic_description_black_48dp.png | Bin 279 -> 0 bytes .../ic_description_white_48dp.png | Bin 295 -> 0 bytes .../ic_directions_black_24dp.png | Bin 233 -> 0 bytes .../ic_directions_white_24dp.png | Bin 252 -> 0 bytes .../res/drawable-hdpi/ic_done_black_18dp.png | Bin 149 -> 0 bytes .../res/drawable-hdpi/ic_done_white_18dp.png | Bin 157 -> 0 bytes .../drawable-hdpi/ic_drafts_white_24dp.png | Bin 392 -> 0 bytes .../res/drawable-hdpi/ic_edit_black_24dp.png | Bin 202 -> 0 bytes .../res/drawable-hdpi/ic_edit_white_24dp.png | Bin 339 -> 0 bytes .../res/drawable-hdpi/ic_error_white_24dp.png | Bin 324 -> 0 bytes .../res/drawable-hdpi/ic_event_black_48dp.png | Bin 245 -> 0 bytes .../res/drawable-hdpi/ic_event_white_48dp.png | Bin 254 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 277 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 717 -> 0 bytes .../drawable-hdpi/ic_forward_white_24dp.png | Bin 139 -> 0 bytes .../drawable-hdpi/ic_gps_fixed_black_24dp.png | Bin 549 -> 0 bytes .../drawable-hdpi/ic_gps_fixed_white_24dp.png | Bin 546 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 472 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 468 -> 0 bytes .../drawable-hdpi/ic_group_add_white_24dp.png | Bin 396 -> 0 bytes .../res/drawable-hdpi/ic_group_white_24dp.png | Bin 417 -> 0 bytes .../drawable-hdpi/ic_headset_black_24dp.png | Bin 349 -> 0 bytes .../drawable-hdpi/ic_headset_black_48dp.png | Bin 586 -> 0 bytes .../drawable-hdpi/ic_headset_white_48dp.png | Bin 610 -> 0 bytes .../res/drawable-hdpi/ic_help_black_48dp.png | Bin 834 -> 0 bytes .../res/drawable-hdpi/ic_help_white_24dp.png | Bin 476 -> 0 bytes .../res/drawable-hdpi/ic_help_white_48dp.png | Bin 842 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 159 -> 0 bytes .../res/drawable-hdpi/ic_image_black_48dp.png | Bin 424 -> 0 bytes .../res/drawable-hdpi/ic_image_white_48dp.png | Bin 450 -> 0 bytes .../res/drawable-hdpi/ic_input_white_24dp.png | Bin 226 -> 0 bytes .../drawable-hdpi/ic_link_off_white_24dp.png | Bin 415 -> 0 bytes .../res/drawable-hdpi/ic_link_white_24dp.png | Bin 430 -> 0 bytes .../res/drawable-hdpi/ic_lock_black_18dp.png | Bin 275 -> 0 bytes .../drawable-hdpi/ic_lock_open_white_24dp.png | Bin 400 -> 0 bytes .../res/drawable-hdpi/ic_lock_white_18dp.png | Bin 281 -> 0 bytes .../res/drawable-hdpi/ic_lock_white_24dp.png | Bin 399 -> 0 bytes .../res/drawable-hdpi/ic_mic_black_24dp.png | Bin 344 -> 0 bytes .../res/drawable-hdpi/ic_mic_black_48dp.png | Bin 581 -> 0 bytes .../drawable-hdpi/ic_mic_off_black_24dp.png | Bin 402 -> 0 bytes .../res/drawable-hdpi/ic_mic_white_48dp.png | Bin 606 -> 0 bytes .../drawable-hdpi/ic_mode_edit_black_18dp.png | Bin 264 -> 0 bytes .../drawable-hdpi/ic_mode_edit_white_18dp.png | Bin 299 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 384 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 395 -> 0 bytes .../ic_no_results_background_black.png | Bin 3757 -> 0 bytes .../ic_no_results_background_white.png | Bin 4625 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 236 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 295 -> 0 bytes .../ic_notifications_none_white80.png | Bin 574 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 285 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 390 -> 0 bytes .../ic_notifications_off_white80.png | Bin 762 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 385 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 308 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 610 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 309 -> 0 bytes .../ic_notifications_white80.png | Bin 471 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 234 -> 0 bytes .../res/drawable-hdpi/ic_pause_black_36dp.png | Bin 123 -> 0 bytes .../res/drawable-hdpi/ic_pause_white_36dp.png | Bin 124 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 383 -> 0 bytes .../drawable-hdpi/ic_person_black_48dp.png | Bin 428 -> 0 bytes .../drawable-hdpi/ic_person_white_48dp.png | Bin 440 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 374 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 393 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 483 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 236 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 242 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 666 -> 0 bytes src/main/res/drawable-hdpi/ic_profile.png | Bin 999 -> 0 bytes .../drawable-hdpi/ic_public_white_24dp.png | Bin 504 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 461 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 192 -> 0 bytes .../drawable-hdpi/ic_refresh_black_24dp.png | Bin 391 -> 0 bytes .../drawable-hdpi/ic_refresh_white_24dp.png | Bin 387 -> 0 bytes .../drawable-hdpi/ic_replay_white_48dp.png | Bin 675 -> 0 bytes .../res/drawable-hdpi/ic_reply_white_24dp.png | Bin 253 -> 0 bytes .../res/drawable-hdpi/ic_room_black_48dp.png | Bin 683 -> 0 bytes .../res/drawable-hdpi/ic_room_white_24dp.png | Bin 494 -> 0 bytes .../res/drawable-hdpi/ic_room_white_48dp.png | Bin 675 -> 0 bytes .../res/drawable-hdpi/ic_save_black_24dp.png | Bin 240 -> 0 bytes .../res/drawable-hdpi/ic_save_white_24dp.png | Bin 247 -> 0 bytes .../ic_search_background_black.png | Bin 3220 -> 0 bytes .../ic_search_background_white.png | Bin 4077 -> 0 bytes .../drawable-hdpi/ic_search_white_24dp.png | Bin 504 -> 0 bytes .../res/drawable-hdpi/ic_send_cancel_away.png | Bin 1396 -> 0 bytes .../res/drawable-hdpi/ic_send_cancel_dnd.png | Bin 1587 -> 0 bytes .../drawable-hdpi/ic_send_cancel_offline.png | Bin 1206 -> 0 bytes .../ic_send_cancel_offline_dark.png | Bin 1163 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 1205 -> 0 bytes .../drawable-hdpi/ic_send_cancel_online.png | Bin 1550 -> 0 bytes .../drawable-hdpi/ic_send_file_offline.png | Bin 412 -> 0 bytes .../ic_send_file_offline_white.png | Bin 356 -> 0 bytes .../drawable-hdpi/ic_send_location_away.png | Bin 1159 -> 0 bytes .../drawable-hdpi/ic_send_location_dnd.png | Bin 1333 -> 0 bytes .../ic_send_location_offline.png | Bin 971 -> 0 bytes .../ic_send_location_offline_dark.png | Bin 945 -> 0 bytes .../ic_send_location_offline_white.png | Bin 1010 -> 0 bytes .../drawable-hdpi/ic_send_location_online.png | Bin 1345 -> 0 bytes .../res/drawable-hdpi/ic_send_photo_away.png | Bin 1203 -> 0 bytes .../res/drawable-hdpi/ic_send_photo_dnd.png | Bin 1383 -> 0 bytes .../drawable-hdpi/ic_send_photo_offline.png | Bin 987 -> 0 bytes .../ic_send_photo_offline_dark.png | Bin 978 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 1033 -> 0 bytes .../drawable-hdpi/ic_send_photo_online.png | Bin 1402 -> 0 bytes .../drawable-hdpi/ic_send_picture_away.png | Bin 790 -> 0 bytes .../res/drawable-hdpi/ic_send_picture_dnd.png | Bin 884 -> 0 bytes .../drawable-hdpi/ic_send_picture_offline.png | Bin 657 -> 0 bytes .../ic_send_picture_offline_dark.png | Bin 639 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 675 -> 0 bytes .../drawable-hdpi/ic_send_picture_online.png | Bin 887 -> 0 bytes .../res/drawable-hdpi/ic_send_text_away.png | Bin 982 -> 0 bytes .../res/drawable-hdpi/ic_send_text_dnd.png | Bin 1128 -> 0 bytes .../drawable-hdpi/ic_send_text_offline.png | Bin 800 -> 0 bytes .../ic_send_text_offline_dark.png | Bin 765 -> 0 bytes .../ic_send_text_offline_white.png | Bin 844 -> 0 bytes .../res/drawable-hdpi/ic_send_text_online.png | Bin 1121 -> 0 bytes .../drawable-hdpi/ic_send_videocam_away.png | Bin 487 -> 0 bytes .../drawable-hdpi/ic_send_videocam_dnd.png | Bin 540 -> 0 bytes .../ic_send_videocam_offline.png | Bin 435 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 447 -> 0 bytes .../drawable-hdpi/ic_send_videocam_online.png | Bin 540 -> 0 bytes .../res/drawable-hdpi/ic_send_voice_away.png | Bin 1017 -> 0 bytes .../res/drawable-hdpi/ic_send_voice_dnd.png | Bin 1161 -> 0 bytes .../drawable-hdpi/ic_send_voice_offline.png | Bin 844 -> 0 bytes .../ic_send_voice_offline_dark.png | Bin 824 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 878 -> 0 bytes .../drawable-hdpi/ic_send_voice_online.png | Bin 1170 -> 0 bytes .../drawable-hdpi/ic_settings_black_24dp.png | Bin 453 -> 0 bytes .../drawable-hdpi/ic_settings_white_24dp.png | Bin 460 -> 0 bytes .../res/drawable-hdpi/ic_share_white_24dp.png | Bin 506 -> 0 bytes .../res/drawable-hdpi/ic_star_black_24dp.png | Bin 369 -> 0 bytes .../res/drawable-hdpi/ic_star_white_24dp.png | Bin 370 -> 0 bytes .../drawable-hdpi/ic_stat_alert_warning.png | Bin 757 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 620 -> 0 bytes .../drawable-hdpi/ic_verified_fingerprint.png | Bin 1324 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 320 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 329 -> 0 bytes .../drawable-hdpi/ic_videocam_black_24dp.png | Bin 169 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 260 -> 0 bytes .../drawable-hdpi/ic_videocam_white_24dp.png | Bin 173 -> 0 bytes .../drawable-hdpi/ic_voicemail_white_24dp.png | Bin 478 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 407 -> 0 bytes .../drawable-hdpi/ic_volume_up_black_24dp.png | Bin 364 -> 0 bytes .../drawable-hdpi/ic_warning_white_24dp.png | Bin 421 -> 0 bytes .../drawable-hdpi/ic_warning_white_48dp.png | Bin 714 -> 0 bytes src/main/res/drawable-hdpi/ic_wear_reply.png | Bin 518 -> 0 bytes src/main/res/drawable-hdpi/marker.png | Bin 3591 -> 0 bytes .../message_bubble_received.9.png | Bin 772 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 773 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 750 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 776 -> 0 bytes .../message_bubble_received_white.9.png | Bin 779 -> 0 bytes .../drawable-hdpi/message_bubble_sent.9.png | Bin 687 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 707 -> 0 bytes src/main/res/drawable-hdpi/open_pdf_black.png | Bin 1499 -> 0 bytes src/main/res/drawable-hdpi/open_pdf_white.png | Bin 1569 -> 0 bytes src/main/res/drawable-hdpi/play_gif_black.png | Bin 761 -> 0 bytes src/main/res/drawable-hdpi/play_gif_white.png | Bin 791 -> 0 bytes .../res/drawable-hdpi/play_video_black.png | Bin 4799 -> 0 bytes .../res/drawable-hdpi/play_video_white.png | Bin 5087 -> 0 bytes .../drawable-mdpi/baseline_tour_black_48.png | Bin 273 -> 0 bytes .../drawable-mdpi/baseline_tour_white_48.png | Bin 277 -> 0 bytes .../res/drawable-mdpi/date_bubble_grey.9.png | Bin 514 -> 0 bytes .../res/drawable-mdpi/date_bubble_white.9.png | Bin 525 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 290 -> 0 bytes .../res/drawable-mdpi/ic_action_reply.png | Bin 343 -> 0 bytes .../res/drawable-mdpi/ic_add_white_24dp.png | Bin 174 -> 0 bytes .../drawable-mdpi/ic_android_black_48dp.png | Bin 343 -> 0 bytes .../drawable-mdpi/ic_android_white_48dp.png | Bin 356 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 214 -> 0 bytes .../drawable-mdpi/ic_archive_black_48dp.png | Bin 261 -> 0 bytes .../drawable-mdpi/ic_archive_white_24dp.png | Bin 181 -> 0 bytes .../drawable-mdpi/ic_archive_white_48dp.png | Bin 267 -> 0 bytes .../res/drawable-mdpi/ic_attach_camera.png | Bin 1114 -> 0 bytes .../drawable-mdpi/ic_attach_camera_white.png | Bin 453 -> 0 bytes .../res/drawable-mdpi/ic_attach_document.png | Bin 1021 -> 0 bytes .../ic_attach_document_white.png | Bin 322 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 332 -> 0 bytes .../res/drawable-mdpi/ic_attach_location.png | Bin 1146 -> 0 bytes .../ic_attach_location_white.png | Bin 486 -> 0 bytes .../res/drawable-mdpi/ic_attach_photo.png | Bin 1066 -> 0 bytes .../drawable-mdpi/ic_attach_photo_white.png | Bin 395 -> 0 bytes .../res/drawable-mdpi/ic_attach_record.png | Bin 1115 -> 0 bytes .../drawable-mdpi/ic_attach_record_white.png | Bin 451 -> 0 bytes .../res/drawable-mdpi/ic_attach_videocam.png | Bin 215 -> 0 bytes .../ic_attach_videocam_white.png | Bin 308 -> 0 bytes .../drawable-mdpi/ic_autorenew_white_24dp.png | Bin 353 -> 0 bytes .../drawable-mdpi/ic_backup_black_48dp.png | Bin 386 -> 0 bytes .../drawable-mdpi/ic_backup_white_48dp.png | Bin 405 -> 0 bytes .../res/drawable-mdpi/ic_block_white_24dp.png | Bin 428 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 283 -> 0 bytes .../res/drawable-mdpi/ic_book_black_48dp.png | Bin 201 -> 0 bytes .../res/drawable-mdpi/ic_book_white_48dp.png | Bin 197 -> 0 bytes .../res/drawable-mdpi/ic_call_black_24dp.png | Bin 244 -> 0 bytes .../drawable-mdpi/ic_call_end_white_48dp.png | Bin 389 -> 0 bytes .../drawable-mdpi/ic_call_made_black_18dp.png | Bin 132 -> 0 bytes .../drawable-mdpi/ic_call_made_white_18dp.png | Bin 135 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 141 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 134 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 136 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 147 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 133 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 140 -> 0 bytes .../res/drawable-mdpi/ic_call_white_24dp.png | Bin 246 -> 0 bytes .../res/drawable-mdpi/ic_call_white_48dp.png | Bin 420 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 240 -> 0 bytes .../drawable-mdpi/ic_cancel_black_24dp.png | Bin 291 -> 0 bytes .../drawable-mdpi/ic_cancel_white_24dp.png | Bin 393 -> 0 bytes .../res/drawable-mdpi/ic_chat_white_24dp.png | Bin 133 -> 0 bytes .../res/drawable-mdpi/ic_clear_white_48dp.png | Bin 257 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 242 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 130 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 134 -> 0 bytes .../res/drawable-mdpi/ic_crop_white_24dp.png | Bin 214 -> 0 bytes .../drawable-mdpi/ic_delete_black_24dp.png | Bin 111 -> 0 bytes .../drawable-mdpi/ic_delete_white_24dp.png | Bin 197 -> 0 bytes .../ic_description_black_48dp.png | Bin 202 -> 0 bytes .../ic_description_white_48dp.png | Bin 214 -> 0 bytes .../ic_directions_black_24dp.png | Bin 181 -> 0 bytes .../ic_directions_white_24dp.png | Bin 191 -> 0 bytes .../res/drawable-mdpi/ic_done_black_18dp.png | Bin 138 -> 0 bytes .../res/drawable-mdpi/ic_done_white_18dp.png | Bin 144 -> 0 bytes .../drawable-mdpi/ic_drafts_white_24dp.png | Bin 284 -> 0 bytes .../res/drawable-mdpi/ic_edit_black_24dp.png | Bin 160 -> 0 bytes .../res/drawable-mdpi/ic_edit_white_24dp.png | Bin 272 -> 0 bytes .../res/drawable-mdpi/ic_error_white_24dp.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/ic_event_black_48dp.png | Bin 188 -> 0 bytes .../res/drawable-mdpi/ic_event_white_48dp.png | Bin 193 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 210 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 472 -> 0 bytes .../drawable-mdpi/ic_forward_white_24dp.png | Bin 117 -> 0 bytes .../drawable-mdpi/ic_gps_fixed_black_24dp.png | Bin 341 -> 0 bytes .../drawable-mdpi/ic_gps_fixed_white_24dp.png | Bin 350 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 295 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 298 -> 0 bytes .../drawable-mdpi/ic_group_add_white_24dp.png | Bin 313 -> 0 bytes .../res/drawable-mdpi/ic_group_white_24dp.png | Bin 296 -> 0 bytes .../drawable-mdpi/ic_headset_black_24dp.png | Bin 230 -> 0 bytes .../drawable-mdpi/ic_headset_black_48dp.png | Bin 412 -> 0 bytes .../drawable-mdpi/ic_headset_white_48dp.png | Bin 433 -> 0 bytes .../res/drawable-mdpi/ic_help_black_48dp.png | Bin 579 -> 0 bytes .../res/drawable-mdpi/ic_help_white_24dp.png | Bin 304 -> 0 bytes .../res/drawable-mdpi/ic_help_white_48dp.png | Bin 585 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 135 -> 0 bytes .../res/drawable-mdpi/ic_image_black_48dp.png | Bin 295 -> 0 bytes .../res/drawable-mdpi/ic_image_white_48dp.png | Bin 304 -> 0 bytes .../res/drawable-mdpi/ic_input_white_24dp.png | Bin 148 -> 0 bytes .../drawable-mdpi/ic_link_off_white_24dp.png | Bin 273 -> 0 bytes .../res/drawable-mdpi/ic_link_white_24dp.png | Bin 297 -> 0 bytes .../res/drawable-mdpi/ic_lock_black_18dp.png | Bin 206 -> 0 bytes .../drawable-mdpi/ic_lock_open_white_24dp.png | Bin 290 -> 0 bytes .../res/drawable-mdpi/ic_lock_white_18dp.png | Bin 211 -> 0 bytes .../res/drawable-mdpi/ic_lock_white_24dp.png | Bin 296 -> 0 bytes .../res/drawable-mdpi/ic_mic_black_24dp.png | Bin 232 -> 0 bytes .../res/drawable-mdpi/ic_mic_black_48dp.png | Bin 418 -> 0 bytes .../drawable-mdpi/ic_mic_off_black_24dp.png | Bin 271 -> 0 bytes .../res/drawable-mdpi/ic_mic_white_48dp.png | Bin 436 -> 0 bytes .../drawable-mdpi/ic_mode_edit_black_18dp.png | Bin 229 -> 0 bytes .../drawable-mdpi/ic_mode_edit_white_18dp.png | Bin 249 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 277 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 287 -> 0 bytes .../ic_no_results_background_black.png | Bin 2359 -> 0 bytes .../ic_no_results_background_white.png | Bin 3019 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 179 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 206 -> 0 bytes .../ic_notifications_none_white80.png | Bin 409 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 207 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 290 -> 0 bytes .../ic_notifications_off_white80.png | Bin 505 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 279 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 235 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 466 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 235 -> 0 bytes .../ic_notifications_white80.png | Bin 369 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 177 -> 0 bytes .../res/drawable-mdpi/ic_pause_black_36dp.png | Bin 102 -> 0 bytes .../res/drawable-mdpi/ic_pause_white_36dp.png | Bin 105 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 289 -> 0 bytes .../drawable-mdpi/ic_person_black_48dp.png | Bin 307 -> 0 bytes .../drawable-mdpi/ic_person_white_48dp.png | Bin 312 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 253 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 261 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 325 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 194 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 195 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 464 -> 0 bytes src/main/res/drawable-mdpi/ic_profile.png | Bin 622 -> 0 bytes .../drawable-mdpi/ic_public_white_24dp.png | Bin 339 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 309 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 137 -> 0 bytes .../drawable-mdpi/ic_refresh_black_24dp.png | Bin 249 -> 0 bytes .../drawable-mdpi/ic_refresh_white_24dp.png | Bin 254 -> 0 bytes .../drawable-mdpi/ic_replay_white_48dp.png | Bin 457 -> 0 bytes .../res/drawable-mdpi/ic_reply_white_24dp.png | Bin 186 -> 0 bytes .../res/drawable-mdpi/ic_room_black_48dp.png | Bin 457 -> 0 bytes .../res/drawable-mdpi/ic_room_white_24dp.png | Bin 362 -> 0 bytes .../res/drawable-mdpi/ic_room_white_48dp.png | Bin 456 -> 0 bytes .../res/drawable-mdpi/ic_save_black_24dp.png | Bin 167 -> 0 bytes .../res/drawable-mdpi/ic_save_white_24dp.png | Bin 168 -> 0 bytes .../ic_search_background_black.png | Bin 2080 -> 0 bytes .../ic_search_background_white.png | Bin 2344 -> 0 bytes .../drawable-mdpi/ic_search_white_24dp.png | Bin 346 -> 0 bytes .../res/drawable-mdpi/ic_send_cancel_away.png | Bin 901 -> 0 bytes .../res/drawable-mdpi/ic_send_cancel_dnd.png | Bin 1025 -> 0 bytes .../drawable-mdpi/ic_send_cancel_offline.png | Bin 837 -> 0 bytes .../ic_send_cancel_offline_dark.png | Bin 786 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 799 -> 0 bytes .../drawable-mdpi/ic_send_cancel_online.png | Bin 1029 -> 0 bytes .../drawable-mdpi/ic_send_file_offline.png | Bin 282 -> 0 bytes .../ic_send_file_offline_white.png | Bin 248 -> 0 bytes .../drawable-mdpi/ic_send_location_away.png | Bin 784 -> 0 bytes .../drawable-mdpi/ic_send_location_dnd.png | Bin 917 -> 0 bytes .../ic_send_location_offline.png | Bin 673 -> 0 bytes .../ic_send_location_offline_dark.png | Bin 681 -> 0 bytes .../ic_send_location_offline_white.png | Bin 699 -> 0 bytes .../drawable-mdpi/ic_send_location_online.png | Bin 928 -> 0 bytes .../res/drawable-mdpi/ic_send_photo_away.png | Bin 776 -> 0 bytes .../res/drawable-mdpi/ic_send_photo_dnd.png | Bin 915 -> 0 bytes .../drawable-mdpi/ic_send_photo_offline.png | Bin 666 -> 0 bytes .../ic_send_photo_offline_dark.png | Bin 649 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 683 -> 0 bytes .../drawable-mdpi/ic_send_photo_online.png | Bin 917 -> 0 bytes .../drawable-mdpi/ic_send_picture_away.png | Bin 512 -> 0 bytes .../res/drawable-mdpi/ic_send_picture_dnd.png | Bin 585 -> 0 bytes .../drawable-mdpi/ic_send_picture_offline.png | Bin 456 -> 0 bytes .../ic_send_picture_offline_dark.png | Bin 436 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 475 -> 0 bytes .../drawable-mdpi/ic_send_picture_online.png | Bin 594 -> 0 bytes .../res/drawable-mdpi/ic_send_text_away.png | Bin 677 -> 0 bytes .../res/drawable-mdpi/ic_send_text_dnd.png | Bin 781 -> 0 bytes .../drawable-mdpi/ic_send_text_offline.png | Bin 542 -> 0 bytes .../ic_send_text_offline_dark.png | Bin 557 -> 0 bytes .../ic_send_text_offline_white.png | Bin 583 -> 0 bytes .../res/drawable-mdpi/ic_send_text_online.png | Bin 781 -> 0 bytes .../drawable-mdpi/ic_send_videocam_away.png | Bin 365 -> 0 bytes .../drawable-mdpi/ic_send_videocam_dnd.png | Bin 397 -> 0 bytes .../ic_send_videocam_offline.png | Bin 341 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 340 -> 0 bytes .../drawable-mdpi/ic_send_videocam_online.png | Bin 403 -> 0 bytes .../res/drawable-mdpi/ic_send_voice_away.png | Bin 679 -> 0 bytes .../res/drawable-mdpi/ic_send_voice_dnd.png | Bin 795 -> 0 bytes .../drawable-mdpi/ic_send_voice_offline.png | Bin 575 -> 0 bytes .../ic_send_voice_offline_dark.png | Bin 576 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 606 -> 0 bytes .../drawable-mdpi/ic_send_voice_online.png | Bin 796 -> 0 bytes .../drawable-mdpi/ic_settings_black_24dp.png | Bin 322 -> 0 bytes .../drawable-mdpi/ic_settings_white_24dp.png | Bin 326 -> 0 bytes .../res/drawable-mdpi/ic_share_white_24dp.png | Bin 361 -> 0 bytes .../res/drawable-mdpi/ic_star_black_24dp.png | Bin 263 -> 0 bytes .../res/drawable-mdpi/ic_star_white_24dp.png | Bin 271 -> 0 bytes .../drawable-mdpi/ic_stat_alert_warning.png | Bin 425 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 392 -> 0 bytes .../drawable-mdpi/ic_verified_fingerprint.png | Bin 1022 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 238 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 241 -> 0 bytes .../drawable-mdpi/ic_videocam_black_24dp.png | Bin 127 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 193 -> 0 bytes .../drawable-mdpi/ic_videocam_white_24dp.png | Bin 131 -> 0 bytes .../drawable-mdpi/ic_voicemail_white_24dp.png | Bin 221 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 279 -> 0 bytes .../drawable-mdpi/ic_volume_up_black_24dp.png | Bin 235 -> 0 bytes .../drawable-mdpi/ic_warning_white_24dp.png | Bin 328 -> 0 bytes .../drawable-mdpi/ic_warning_white_48dp.png | Bin 364 -> 0 bytes src/main/res/drawable-mdpi/ic_wear_reply.png | Bin 429 -> 0 bytes src/main/res/drawable-mdpi/marker.png | Bin 2211 -> 0 bytes .../message_bubble_received.9.png | Bin 596 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 617 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 595 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 599 -> 0 bytes .../message_bubble_received_white.9.png | Bin 610 -> 0 bytes .../drawable-mdpi/message_bubble_sent.9.png | Bin 558 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 568 -> 0 bytes src/main/res/drawable-mdpi/open_pdf_black.png | Bin 1168 -> 0 bytes src/main/res/drawable-mdpi/open_pdf_white.png | Bin 1259 -> 0 bytes src/main/res/drawable-mdpi/play_gif_black.png | Bin 584 -> 0 bytes src/main/res/drawable-mdpi/play_gif_white.png | Bin 612 -> 0 bytes .../res/drawable-mdpi/play_video_black.png | Bin 3204 -> 0 bytes .../res/drawable-mdpi/play_video_white.png | Bin 3383 -> 0 bytes .../drawable-xhdpi/baseline_tour_black_48.png | Bin 451 -> 0 bytes .../drawable-xhdpi/baseline_tour_white_48.png | Bin 451 -> 0 bytes .../res/drawable-xhdpi/date_bubble_grey.9.png | Bin 739 -> 0 bytes .../drawable-xhdpi/date_bubble_white.9.png | Bin 769 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 431 -> 0 bytes .../res/drawable-xhdpi/ic_action_reply.png | Bin 561 -> 0 bytes .../res/drawable-xhdpi/ic_add_white_24dp.png | Bin 198 -> 0 bytes .../drawable-xhdpi/ic_android_black_48dp.png | Bin 641 -> 0 bytes .../drawable-xhdpi/ic_android_white_48dp.png | Bin 665 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 285 -> 0 bytes .../drawable-xhdpi/ic_archive_black_48dp.png | Bin 483 -> 0 bytes .../drawable-xhdpi/ic_archive_white_24dp.png | Bin 267 -> 0 bytes .../drawable-xhdpi/ic_archive_white_48dp.png | Bin 489 -> 0 bytes .../res/drawable-xhdpi/ic_attach_camera.png | Bin 1313 -> 0 bytes .../drawable-xhdpi/ic_attach_camera_white.png | Bin 757 -> 0 bytes .../res/drawable-xhdpi/ic_attach_document.png | Bin 1097 -> 0 bytes .../ic_attach_document_white.png | Bin 427 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 576 -> 0 bytes .../res/drawable-xhdpi/ic_attach_location.png | Bin 1372 -> 0 bytes .../ic_attach_location_white.png | Bin 766 -> 0 bytes .../res/drawable-xhdpi/ic_attach_photo.png | Bin 1169 -> 0 bytes .../drawable-xhdpi/ic_attach_photo_white.png | Bin 543 -> 0 bytes .../res/drawable-xhdpi/ic_attach_record.png | Bin 1310 -> 0 bytes .../drawable-xhdpi/ic_attach_record_white.png | Bin 689 -> 0 bytes .../res/drawable-xhdpi/ic_attach_videocam.png | Bin 276 -> 0 bytes .../ic_attach_videocam_white.png | Bin 378 -> 0 bytes .../ic_autorenew_white_24dp.png | Bin 604 -> 0 bytes .../drawable-xhdpi/ic_backup_black_48dp.png | Bin 733 -> 0 bytes .../drawable-xhdpi/ic_backup_white_48dp.png | Bin 770 -> 0 bytes .../drawable-xhdpi/ic_block_white_24dp.png | Bin 796 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 479 -> 0 bytes .../res/drawable-xhdpi/ic_book_black_48dp.png | Bin 340 -> 0 bytes .../res/drawable-xhdpi/ic_book_white_48dp.png | Bin 350 -> 0 bytes .../res/drawable-xhdpi/ic_call_black_24dp.png | Bin 408 -> 0 bytes .../drawable-xhdpi/ic_call_end_white_48dp.png | Bin 712 -> 0 bytes .../ic_call_made_black_18dp.png | Bin 174 -> 0 bytes .../ic_call_made_white_18dp.png | Bin 189 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 201 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 188 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 193 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 215 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 175 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 189 -> 0 bytes .../res/drawable-xhdpi/ic_call_white_24dp.png | Bin 420 -> 0 bytes .../res/drawable-xhdpi/ic_call_white_48dp.png | Bin 778 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 446 -> 0 bytes .../drawable-xhdpi/ic_cancel_black_24dp.png | Bin 517 -> 0 bytes .../drawable-xhdpi/ic_cancel_white_24dp.png | Bin 645 -> 0 bytes .../res/drawable-xhdpi/ic_chat_white_24dp.png | Bin 205 -> 0 bytes .../drawable-xhdpi/ic_clear_white_48dp.png | Bin 436 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 417 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 180 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 188 -> 0 bytes .../res/drawable-xhdpi/ic_crop_white_24dp.png | Bin 272 -> 0 bytes .../drawable-xhdpi/ic_delete_black_24dp.png | Bin 148 -> 0 bytes .../drawable-xhdpi/ic_delete_white_24dp.png | Bin 270 -> 0 bytes .../ic_description_black_48dp.png | Bin 355 -> 0 bytes .../ic_description_white_48dp.png | Bin 378 -> 0 bytes .../ic_directions_black_24dp.png | Bin 274 -> 0 bytes .../ic_directions_white_24dp.png | Bin 307 -> 0 bytes .../res/drawable-xhdpi/ic_done_black_18dp.png | Bin 177 -> 0 bytes .../res/drawable-xhdpi/ic_done_white_18dp.png | Bin 188 -> 0 bytes .../drawable-xhdpi/ic_drafts_white_24dp.png | Bin 509 -> 0 bytes .../res/drawable-xhdpi/ic_edit_black_24dp.png | Bin 222 -> 0 bytes .../res/drawable-xhdpi/ic_edit_white_24dp.png | Bin 378 -> 0 bytes .../drawable-xhdpi/ic_error_white_24dp.png | Bin 431 -> 0 bytes .../drawable-xhdpi/ic_event_black_48dp.png | Bin 316 -> 0 bytes .../drawable-xhdpi/ic_event_white_48dp.png | Bin 326 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 282 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 915 -> 0 bytes .../drawable-xhdpi/ic_forward_white_24dp.png | Bin 159 -> 0 bytes .../ic_gps_fixed_black_24dp.png | Bin 660 -> 0 bytes .../ic_gps_fixed_white_24dp.png | Bin 687 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 561 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 577 -> 0 bytes .../ic_group_add_white_24dp.png | Bin 484 -> 0 bytes .../drawable-xhdpi/ic_group_white_24dp.png | Bin 464 -> 0 bytes .../drawable-xhdpi/ic_headset_black_24dp.png | Bin 412 -> 0 bytes .../drawable-xhdpi/ic_headset_black_48dp.png | Bin 786 -> 0 bytes .../drawable-xhdpi/ic_headset_white_48dp.png | Bin 838 -> 0 bytes .../res/drawable-xhdpi/ic_help_black_48dp.png | Bin 1122 -> 0 bytes .../res/drawable-xhdpi/ic_help_white_24dp.png | Bin 585 -> 0 bytes .../res/drawable-xhdpi/ic_help_white_48dp.png | Bin 1132 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 174 -> 0 bytes .../drawable-xhdpi/ic_image_black_48dp.png | Bin 548 -> 0 bytes .../drawable-xhdpi/ic_image_white_48dp.png | Bin 570 -> 0 bytes .../drawable-xhdpi/ic_input_white_24dp.png | Bin 219 -> 0 bytes .../drawable-xhdpi/ic_link_off_white_24dp.png | Bin 472 -> 0 bytes .../res/drawable-xhdpi/ic_link_white_24dp.png | Bin 494 -> 0 bytes .../res/drawable-xhdpi/ic_lock_black_18dp.png | Bin 308 -> 0 bytes .../ic_lock_open_white_24dp.png | Bin 513 -> 0 bytes .../res/drawable-xhdpi/ic_lock_white_18dp.png | Bin 309 -> 0 bytes .../res/drawable-xhdpi/ic_lock_white_24dp.png | Bin 465 -> 0 bytes .../res/drawable-xhdpi/ic_mic_black_24dp.png | Bin 418 -> 0 bytes .../res/drawable-xhdpi/ic_mic_black_48dp.png | Bin 773 -> 0 bytes .../drawable-xhdpi/ic_mic_off_black_24dp.png | Bin 454 -> 0 bytes .../res/drawable-xhdpi/ic_mic_white_48dp.png | Bin 819 -> 0 bytes .../ic_mode_edit_black_18dp.png | Bin 291 -> 0 bytes .../ic_mode_edit_white_18dp.png | Bin 351 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 480 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 498 -> 0 bytes .../ic_no_results_background_black.png | Bin 5368 -> 0 bytes .../ic_no_results_background_white.png | Bin 6250 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 272 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 349 -> 0 bytes .../ic_notifications_none_white80.png | Bin 706 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 344 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 492 -> 0 bytes .../ic_notifications_off_white80.png | Bin 1014 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 493 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 351 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 745 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 351 -> 0 bytes .../ic_notifications_white80.png | Bin 583 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 265 -> 0 bytes .../drawable-xhdpi/ic_pause_black_36dp.png | Bin 109 -> 0 bytes .../drawable-xhdpi/ic_pause_white_36dp.png | Bin 92 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 423 -> 0 bytes .../drawable-xhdpi/ic_person_black_48dp.png | Bin 565 -> 0 bytes .../drawable-xhdpi/ic_person_white_48dp.png | Bin 577 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 477 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 483 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 601 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 265 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 283 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 883 -> 0 bytes src/main/res/drawable-xhdpi/ic_profile.png | Bin 1374 -> 0 bytes .../drawable-xhdpi/ic_public_white_24dp.png | Bin 661 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 444 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 195 -> 0 bytes .../drawable-xhdpi/ic_refresh_black_24dp.png | Bin 506 -> 0 bytes .../drawable-xhdpi/ic_refresh_white_24dp.png | Bin 509 -> 0 bytes .../drawable-xhdpi/ic_replay_white_48dp.png | Bin 908 -> 0 bytes .../drawable-xhdpi/ic_reply_white_24dp.png | Bin 306 -> 0 bytes .../res/drawable-xhdpi/ic_room_black_48dp.png | Bin 868 -> 0 bytes .../res/drawable-xhdpi/ic_room_white_24dp.png | Bin 587 -> 0 bytes .../res/drawable-xhdpi/ic_room_white_48dp.png | Bin 869 -> 0 bytes .../res/drawable-xhdpi/ic_save_black_24dp.png | Bin 264 -> 0 bytes .../res/drawable-xhdpi/ic_save_white_24dp.png | Bin 273 -> 0 bytes .../ic_search_background_black.png | Bin 4465 -> 0 bytes .../ic_search_background_white.png | Bin 5477 -> 0 bytes .../drawable-xhdpi/ic_search_white_24dp.png | Bin 591 -> 0 bytes .../drawable-xhdpi/ic_send_cancel_away.png | Bin 1724 -> 0 bytes .../res/drawable-xhdpi/ic_send_cancel_dnd.png | Bin 1958 -> 0 bytes .../drawable-xhdpi/ic_send_cancel_offline.png | Bin 1519 -> 0 bytes .../ic_send_cancel_offline_dark.png | Bin 1458 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 1494 -> 0 bytes .../drawable-xhdpi/ic_send_cancel_online.png | Bin 1972 -> 0 bytes .../drawable-xhdpi/ic_send_file_offline.png | Bin 429 -> 0 bytes .../ic_send_file_offline_white.png | Bin 380 -> 0 bytes .../drawable-xhdpi/ic_send_location_away.png | Bin 1507 -> 0 bytes .../drawable-xhdpi/ic_send_location_dnd.png | Bin 1753 -> 0 bytes .../ic_send_location_offline.png | Bin 1278 -> 0 bytes .../ic_send_location_offline_dark.png | Bin 1250 -> 0 bytes .../ic_send_location_offline_white.png | Bin 1311 -> 0 bytes .../ic_send_location_online.png | Bin 1773 -> 0 bytes .../res/drawable-xhdpi/ic_send_photo_away.png | Bin 1516 -> 0 bytes .../res/drawable-xhdpi/ic_send_photo_dnd.png | Bin 1756 -> 0 bytes .../drawable-xhdpi/ic_send_photo_offline.png | Bin 1247 -> 0 bytes .../ic_send_photo_offline_dark.png | Bin 1191 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 1290 -> 0 bytes .../drawable-xhdpi/ic_send_photo_online.png | Bin 1758 -> 0 bytes .../drawable-xhdpi/ic_send_picture_away.png | Bin 899 -> 0 bytes .../drawable-xhdpi/ic_send_picture_dnd.png | Bin 1016 -> 0 bytes .../ic_send_picture_offline.png | Bin 799 -> 0 bytes .../ic_send_picture_offline_dark.png | Bin 752 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 828 -> 0 bytes .../drawable-xhdpi/ic_send_picture_online.png | Bin 1006 -> 0 bytes .../res/drawable-xhdpi/ic_send_text_away.png | Bin 1270 -> 0 bytes .../res/drawable-xhdpi/ic_send_text_dnd.png | Bin 1430 -> 0 bytes .../drawable-xhdpi/ic_send_text_offline.png | Bin 1007 -> 0 bytes .../ic_send_text_offline_dark.png | Bin 958 -> 0 bytes .../ic_send_text_offline_white.png | Bin 1079 -> 0 bytes .../drawable-xhdpi/ic_send_text_online.png | Bin 1429 -> 0 bytes .../drawable-xhdpi/ic_send_videocam_away.png | Bin 502 -> 0 bytes .../drawable-xhdpi/ic_send_videocam_dnd.png | Bin 542 -> 0 bytes .../ic_send_videocam_offline.png | Bin 479 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 470 -> 0 bytes .../ic_send_videocam_online.png | Bin 539 -> 0 bytes .../res/drawable-xhdpi/ic_send_voice_away.png | Bin 1257 -> 0 bytes .../res/drawable-xhdpi/ic_send_voice_dnd.png | Bin 1419 -> 0 bytes .../drawable-xhdpi/ic_send_voice_offline.png | Bin 1075 -> 0 bytes .../ic_send_voice_offline_dark.png | Bin 1034 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 1109 -> 0 bytes .../drawable-xhdpi/ic_send_voice_online.png | Bin 1433 -> 0 bytes .../drawable-xhdpi/ic_settings_black_24dp.png | Bin 557 -> 0 bytes .../drawable-xhdpi/ic_settings_white_24dp.png | Bin 562 -> 0 bytes .../drawable-xhdpi/ic_share_white_24dp.png | Bin 625 -> 0 bytes .../res/drawable-xhdpi/ic_star_black_24dp.png | Bin 467 -> 0 bytes .../res/drawable-xhdpi/ic_star_white_24dp.png | Bin 475 -> 0 bytes .../drawable-xhdpi/ic_stat_alert_warning.png | Bin 1175 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 972 -> 0 bytes .../ic_verified_fingerprint.png | Bin 1551 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 390 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 407 -> 0 bytes .../drawable-xhdpi/ic_videocam_black_24dp.png | Bin 171 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 274 -> 0 bytes .../drawable-xhdpi/ic_videocam_white_24dp.png | Bin 178 -> 0 bytes .../ic_voicemail_white_24dp.png | Bin 487 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 493 -> 0 bytes .../ic_volume_up_black_24dp.png | Bin 434 -> 0 bytes .../drawable-xhdpi/ic_warning_white_24dp.png | Bin 460 -> 0 bytes .../drawable-xhdpi/ic_warning_white_48dp.png | Bin 590 -> 0 bytes src/main/res/drawable-xhdpi/ic_wear_reply.png | Bin 564 -> 0 bytes src/main/res/drawable-xhdpi/marker.png | Bin 4815 -> 0 bytes .../message_bubble_received.9.png | Bin 936 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 926 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 915 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 916 -> 0 bytes .../message_bubble_received_white.9.png | Bin 935 -> 0 bytes .../drawable-xhdpi/message_bubble_sent.9.png | Bin 857 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 842 -> 0 bytes .../res/drawable-xhdpi/open_pdf_black.png | Bin 2247 -> 0 bytes .../res/drawable-xhdpi/open_pdf_white.png | Bin 2431 -> 0 bytes .../res/drawable-xhdpi/play_gif_black.png | Bin 1052 -> 0 bytes .../res/drawable-xhdpi/play_gif_white.png | Bin 1110 -> 0 bytes .../res/drawable-xhdpi/play_video_black.png | Bin 6572 -> 0 bytes .../res/drawable-xhdpi/play_video_white.png | Bin 6953 -> 0 bytes .../baseline_tour_black_48.png | Bin 662 -> 0 bytes .../baseline_tour_white_48.png | Bin 662 -> 0 bytes .../drawable-xxhdpi/date_bubble_grey.9.png | Bin 1072 -> 0 bytes .../drawable-xxhdpi/date_bubble_white.9.png | Bin 1127 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 578 -> 0 bytes .../res/drawable-xxhdpi/ic_action_reply.png | Bin 775 -> 0 bytes .../res/drawable-xxhdpi/ic_add_white_24dp.png | Bin 222 -> 0 bytes .../drawable-xxhdpi/ic_android_black_48dp.png | Bin 975 -> 0 bytes .../drawable-xxhdpi/ic_android_white_48dp.png | Bin 1012 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 355 -> 0 bytes .../drawable-xxhdpi/ic_archive_black_48dp.png | Bin 718 -> 0 bytes .../drawable-xxhdpi/ic_archive_white_24dp.png | Bin 390 -> 0 bytes .../drawable-xxhdpi/ic_archive_white_48dp.png | Bin 738 -> 0 bytes .../res/drawable-xxhdpi/ic_attach_camera.png | Bin 1552 -> 0 bytes .../ic_attach_camera_white.png | Bin 1085 -> 0 bytes .../drawable-xxhdpi/ic_attach_document.png | Bin 1183 -> 0 bytes .../ic_attach_document_white.png | Bin 518 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 870 -> 0 bytes .../drawable-xxhdpi/ic_attach_location.png | Bin 1628 -> 0 bytes .../ic_attach_location_white.png | Bin 1117 -> 0 bytes .../res/drawable-xxhdpi/ic_attach_photo.png | Bin 1324 -> 0 bytes .../drawable-xxhdpi/ic_attach_photo_white.png | Bin 716 -> 0 bytes .../res/drawable-xxhdpi/ic_attach_record.png | Bin 1494 -> 0 bytes .../ic_attach_record_white.png | Bin 913 -> 0 bytes .../drawable-xxhdpi/ic_attach_videocam.png | Bin 373 -> 0 bytes .../ic_attach_videocam_white.png | Bin 469 -> 0 bytes .../ic_autorenew_white_24dp.png | Bin 869 -> 0 bytes .../drawable-xxhdpi/ic_backup_black_48dp.png | Bin 1116 -> 0 bytes .../drawable-xxhdpi/ic_backup_white_48dp.png | Bin 1177 -> 0 bytes .../drawable-xxhdpi/ic_block_white_24dp.png | Bin 1194 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 724 -> 0 bytes .../drawable-xxhdpi/ic_book_black_48dp.png | Bin 516 -> 0 bytes .../drawable-xxhdpi/ic_book_white_48dp.png | Bin 532 -> 0 bytes .../drawable-xxhdpi/ic_call_black_24dp.png | Bin 574 -> 0 bytes .../ic_call_end_white_48dp.png | Bin 1039 -> 0 bytes .../ic_call_made_black_18dp.png | Bin 202 -> 0 bytes .../ic_call_made_white_18dp.png | Bin 225 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 247 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 235 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 235 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 263 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 202 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 228 -> 0 bytes .../drawable-xxhdpi/ic_call_white_24dp.png | Bin 597 -> 0 bytes .../drawable-xxhdpi/ic_call_white_48dp.png | Bin 1134 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 666 -> 0 bytes .../drawable-xxhdpi/ic_cancel_black_24dp.png | Bin 721 -> 0 bytes .../drawable-xxhdpi/ic_cancel_white_24dp.png | Bin 893 -> 0 bytes .../drawable-xxhdpi/ic_chat_white_24dp.png | Bin 270 -> 0 bytes .../drawable-xxhdpi/ic_clear_white_48dp.png | Bin 524 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 610 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 258 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 266 -> 0 bytes .../drawable-xxhdpi/ic_crop_white_24dp.png | Bin 326 -> 0 bytes .../drawable-xxhdpi/ic_delete_black_24dp.png | Bin 191 -> 0 bytes .../drawable-xxhdpi/ic_delete_white_24dp.png | Bin 338 -> 0 bytes .../ic_description_black_48dp.png | Bin 514 -> 0 bytes .../ic_description_white_48dp.png | Bin 563 -> 0 bytes .../ic_directions_black_24dp.png | Bin 393 -> 0 bytes .../ic_directions_white_24dp.png | Bin 444 -> 0 bytes .../drawable-xxhdpi/ic_done_black_18dp.png | Bin 199 -> 0 bytes .../drawable-xxhdpi/ic_done_white_18dp.png | Bin 217 -> 0 bytes .../drawable-xxhdpi/ic_drafts_white_24dp.png | Bin 717 -> 0 bytes .../drawable-xxhdpi/ic_edit_black_24dp.png | Bin 269 -> 0 bytes .../drawable-xxhdpi/ic_edit_white_24dp.png | Bin 490 -> 0 bytes .../drawable-xxhdpi/ic_error_white_24dp.png | Bin 614 -> 0 bytes .../drawable-xxhdpi/ic_event_black_48dp.png | Bin 484 -> 0 bytes .../drawable-xxhdpi/ic_event_white_48dp.png | Bin 513 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 351 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 1340 -> 0 bytes .../drawable-xxhdpi/ic_forward_white_24dp.png | Bin 204 -> 0 bytes .../ic_gps_fixed_black_24dp.png | Bin 976 -> 0 bytes .../ic_gps_fixed_white_24dp.png | Bin 1012 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 803 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 830 -> 0 bytes .../ic_group_add_white_24dp.png | Bin 722 -> 0 bytes .../drawable-xxhdpi/ic_group_white_24dp.png | Bin 599 -> 0 bytes .../drawable-xxhdpi/ic_headset_black_24dp.png | Bin 586 -> 0 bytes .../drawable-xxhdpi/ic_headset_black_48dp.png | Bin 1183 -> 0 bytes .../drawable-xxhdpi/ic_headset_white_48dp.png | Bin 1246 -> 0 bytes .../drawable-xxhdpi/ic_help_black_48dp.png | Bin 1652 -> 0 bytes .../drawable-xxhdpi/ic_help_white_24dp.png | Bin 842 -> 0 bytes .../drawable-xxhdpi/ic_help_white_48dp.png | Bin 1677 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 255 -> 0 bytes .../drawable-xxhdpi/ic_image_black_48dp.png | Bin 807 -> 0 bytes .../drawable-xxhdpi/ic_image_white_48dp.png | Bin 859 -> 0 bytes .../drawable-xxhdpi/ic_input_white_24dp.png | Bin 303 -> 0 bytes .../ic_link_off_white_24dp.png | Bin 650 -> 0 bytes .../drawable-xxhdpi/ic_link_white_24dp.png | Bin 670 -> 0 bytes .../drawable-xxhdpi/ic_lock_black_18dp.png | Bin 453 -> 0 bytes .../ic_lock_open_white_24dp.png | Bin 739 -> 0 bytes .../drawable-xxhdpi/ic_lock_white_18dp.png | Bin 463 -> 0 bytes .../drawable-xxhdpi/ic_lock_white_24dp.png | Bin 760 -> 0 bytes .../res/drawable-xxhdpi/ic_mic_black_24dp.png | Bin 581 -> 0 bytes .../res/drawable-xxhdpi/ic_mic_black_48dp.png | Bin 1146 -> 0 bytes .../drawable-xxhdpi/ic_mic_off_black_24dp.png | Bin 671 -> 0 bytes .../res/drawable-xxhdpi/ic_mic_white_48dp.png | Bin 1220 -> 0 bytes .../ic_mode_edit_black_18dp.png | Bin 336 -> 0 bytes .../ic_mode_edit_white_18dp.png | Bin 436 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 699 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 736 -> 0 bytes .../ic_no_results_background_black.png | Bin 8790 -> 0 bytes .../ic_no_results_background_white.png | Bin 9662 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 381 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 495 -> 0 bytes .../ic_notifications_none_white80.png | Bin 1033 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 485 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 690 -> 0 bytes .../ic_notifications_off_white80.png | Bin 1483 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 683 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 482 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 1049 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 482 -> 0 bytes .../ic_notifications_white80.png | Bin 831 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 378 -> 0 bytes .../drawable-xxhdpi/ic_pause_black_36dp.png | Bin 143 -> 0 bytes .../drawable-xxhdpi/ic_pause_white_36dp.png | Bin 158 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 683 -> 0 bytes .../drawable-xxhdpi/ic_person_black_48dp.png | Bin 846 -> 0 bytes .../drawable-xxhdpi/ic_person_white_48dp.png | Bin 863 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 685 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 704 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 882 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 366 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 390 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 1331 -> 0 bytes src/main/res/drawable-xxhdpi/ic_profile.png | Bin 2137 -> 0 bytes .../drawable-xxhdpi/ic_public_white_24dp.png | Bin 982 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 599 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 256 -> 0 bytes .../drawable-xxhdpi/ic_refresh_black_24dp.png | Bin 721 -> 0 bytes .../drawable-xxhdpi/ic_refresh_white_24dp.png | Bin 734 -> 0 bytes .../drawable-xxhdpi/ic_replay_white_48dp.png | Bin 1390 -> 0 bytes .../drawable-xxhdpi/ic_reply_white_24dp.png | Bin 436 -> 0 bytes .../drawable-xxhdpi/ic_room_black_48dp.png | Bin 1264 -> 0 bytes .../drawable-xxhdpi/ic_room_white_24dp.png | Bin 861 -> 0 bytes .../drawable-xxhdpi/ic_room_white_48dp.png | Bin 1270 -> 0 bytes .../drawable-xxhdpi/ic_save_black_24dp.png | Bin 368 -> 0 bytes .../drawable-xxhdpi/ic_save_white_24dp.png | Bin 391 -> 0 bytes .../ic_search_background_black.png | Bin 7248 -> 0 bytes .../ic_search_background_white.png | Bin 9102 -> 0 bytes .../drawable-xxhdpi/ic_search_white_24dp.png | Bin 871 -> 0 bytes .../drawable-xxhdpi/ic_send_cancel_away.png | Bin 2583 -> 0 bytes .../drawable-xxhdpi/ic_send_cancel_dnd.png | Bin 2983 -> 0 bytes .../ic_send_cancel_offline.png | Bin 2290 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 2239 -> 0 bytes .../drawable-xxhdpi/ic_send_cancel_online.png | Bin 2974 -> 0 bytes .../drawable-xxhdpi/ic_send_file_offline.png | Bin 750 -> 0 bytes .../ic_send_file_offline_white.png | Bin 669 -> 0 bytes .../drawable-xxhdpi/ic_send_location_away.png | Bin 2229 -> 0 bytes .../drawable-xxhdpi/ic_send_location_dnd.png | Bin 2589 -> 0 bytes .../ic_send_location_offline.png | Bin 1881 -> 0 bytes .../ic_send_location_offline_white.png | Bin 1940 -> 0 bytes .../ic_send_location_online.png | Bin 2607 -> 0 bytes .../drawable-xxhdpi/ic_send_photo_away.png | Bin 2256 -> 0 bytes .../res/drawable-xxhdpi/ic_send_photo_dnd.png | Bin 2618 -> 0 bytes .../drawable-xxhdpi/ic_send_photo_offline.png | Bin 1802 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 1943 -> 0 bytes .../drawable-xxhdpi/ic_send_photo_online.png | Bin 2636 -> 0 bytes .../drawable-xxhdpi/ic_send_picture_away.png | Bin 1327 -> 0 bytes .../drawable-xxhdpi/ic_send_picture_dnd.png | Bin 1516 -> 0 bytes .../ic_send_picture_offline.png | Bin 1159 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 1216 -> 0 bytes .../ic_send_picture_online.png | Bin 1515 -> 0 bytes .../res/drawable-xxhdpi/ic_send_text_away.png | Bin 1776 -> 0 bytes .../res/drawable-xxhdpi/ic_send_text_dnd.png | Bin 2005 -> 0 bytes .../drawable-xxhdpi/ic_send_text_offline.png | Bin 1410 -> 0 bytes .../ic_send_text_offline_white.png | Bin 1486 -> 0 bytes .../drawable-xxhdpi/ic_send_text_online.png | Bin 1970 -> 0 bytes .../drawable-xxhdpi/ic_send_videocam_away.png | Bin 705 -> 0 bytes .../drawable-xxhdpi/ic_send_videocam_dnd.png | Bin 777 -> 0 bytes .../ic_send_videocam_offline.png | Bin 650 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 670 -> 0 bytes .../ic_send_videocam_online.png | Bin 776 -> 0 bytes .../drawable-xxhdpi/ic_send_voice_away.png | Bin 1895 -> 0 bytes .../res/drawable-xxhdpi/ic_send_voice_dnd.png | Bin 2200 -> 0 bytes .../drawable-xxhdpi/ic_send_voice_offline.png | Bin 1621 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 1644 -> 0 bytes .../drawable-xxhdpi/ic_send_voice_online.png | Bin 2187 -> 0 bytes .../ic_settings_black_24dp.png | Bin 827 -> 0 bytes .../ic_settings_white_24dp.png | Bin 843 -> 0 bytes .../drawable-xxhdpi/ic_share_white_24dp.png | Bin 857 -> 0 bytes .../drawable-xxhdpi/ic_star_black_24dp.png | Bin 668 -> 0 bytes .../drawable-xxhdpi/ic_star_white_24dp.png | Bin 676 -> 0 bytes .../drawable-xxhdpi/ic_stat_alert_warning.png | Bin 2276 -> 0 bytes .../ic_stat_communication_import_export.png | Bin 1860 -> 0 bytes .../ic_verified_fingerprint.png | Bin 2306 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 516 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 538 -> 0 bytes .../ic_videocam_black_24dp.png | Bin 224 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 375 -> 0 bytes .../ic_videocam_white_24dp.png | Bin 234 -> 0 bytes .../ic_voicemail_white_24dp.png | Bin 625 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 704 -> 0 bytes .../ic_volume_up_black_24dp.png | Bin 626 -> 0 bytes .../drawable-xxhdpi/ic_warning_white_24dp.png | Bin 639 -> 0 bytes .../drawable-xxhdpi/ic_warning_white_48dp.png | Bin 843 -> 0 bytes .../res/drawable-xxhdpi/ic_wear_reply.png | Bin 866 -> 0 bytes src/main/res/drawable-xxhdpi/marker.png | Bin 7462 -> 0 bytes .../message_bubble_received.9.png | Bin 1319 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 1319 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 1301 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 1332 -> 0 bytes .../message_bubble_received_white.9.png | Bin 1344 -> 0 bytes .../drawable-xxhdpi/message_bubble_sent.9.png | Bin 1190 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 1173 -> 0 bytes .../res/drawable-xxhdpi/open_pdf_black.png | Bin 3076 -> 0 bytes .../res/drawable-xxhdpi/open_pdf_white.png | Bin 3301 -> 0 bytes .../res/drawable-xxhdpi/play_gif_black.png | Bin 1580 -> 0 bytes .../res/drawable-xxhdpi/play_gif_white.png | Bin 1652 -> 0 bytes .../res/drawable-xxhdpi/play_video_black.png | Bin 10044 -> 0 bytes .../res/drawable-xxhdpi/play_video_white.png | Bin 10668 -> 0 bytes .../baseline_tour_black_48.png | Bin 809 -> 0 bytes .../baseline_tour_white_48.png | Bin 809 -> 0 bytes .../drawable-xxxhdpi/date_bubble_grey.9.png | Bin 1392 -> 0 bytes .../drawable-xxxhdpi/date_bubble_white.9.png | Bin 1430 -> 0 bytes .../ic_account_box_white_24dp.png | Bin 894 -> 0 bytes .../drawable-xxxhdpi/ic_add_white_24dp.png | Bin 269 -> 0 bytes .../ic_android_black_48dp.png | Bin 1295 -> 0 bytes .../ic_android_white_48dp.png | Bin 1350 -> 0 bytes .../ic_announcement_white_24dp.png | Bin 519 -> 0 bytes .../ic_archive_black_48dp.png | Bin 945 -> 0 bytes .../ic_archive_white_24dp.png | Bin 489 -> 0 bytes .../ic_archive_white_48dp.png | Bin 971 -> 0 bytes .../res/drawable-xxxhdpi/ic_attach_camera.png | Bin 1790 -> 0 bytes .../ic_attach_camera_white.png | Bin 1416 -> 0 bytes .../drawable-xxxhdpi/ic_attach_document.png | Bin 1276 -> 0 bytes .../ic_attach_document_white.png | Bin 627 -> 0 bytes .../ic_attach_file_white_24dp.png | Bin 1039 -> 0 bytes .../drawable-xxxhdpi/ic_attach_location.png | Bin 1872 -> 0 bytes .../ic_attach_location_white.png | Bin 1395 -> 0 bytes .../res/drawable-xxxhdpi/ic_attach_photo.png | Bin 1454 -> 0 bytes .../ic_attach_photo_white.png | Bin 900 -> 0 bytes .../res/drawable-xxxhdpi/ic_attach_record.png | Bin 1703 -> 0 bytes .../ic_attach_record_white.png | Bin 1170 -> 0 bytes .../drawable-xxxhdpi/ic_attach_videocam.png | Bin 429 -> 0 bytes .../ic_attach_videocam_white.png | Bin 547 -> 0 bytes .../ic_autorenew_white_24dp.png | Bin 1114 -> 0 bytes .../drawable-xxxhdpi/ic_backup_black_48dp.png | Bin 1465 -> 0 bytes .../drawable-xxxhdpi/ic_backup_white_48dp.png | Bin 1562 -> 0 bytes .../drawable-xxxhdpi/ic_block_white_24dp.png | Bin 1497 -> 0 bytes .../ic_bluetooth_audio_black_24dp.png | Bin 867 -> 0 bytes .../drawable-xxxhdpi/ic_book_black_48dp.png | Bin 750 -> 0 bytes .../drawable-xxxhdpi/ic_book_white_48dp.png | Bin 766 -> 0 bytes .../drawable-xxxhdpi/ic_call_black_24dp.png | Bin 758 -> 0 bytes .../ic_call_end_white_48dp.png | Bin 1355 -> 0 bytes .../ic_call_made_black_18dp.png | Bin 212 -> 0 bytes .../ic_call_made_white_18dp.png | Bin 247 -> 0 bytes .../ic_call_missed_black_18dp.png | Bin 267 -> 0 bytes .../ic_call_missed_outgoing_black_18dp.png | Bin 257 -> 0 bytes .../ic_call_missed_outgoing_white_18dp.png | Bin 248 -> 0 bytes .../ic_call_missed_white_18dp.png | Bin 291 -> 0 bytes .../ic_call_received_black_18dp.png | Bin 214 -> 0 bytes .../ic_call_received_white_18dp.png | Bin 257 -> 0 bytes .../drawable-xxxhdpi/ic_call_white_24dp.png | Bin 778 -> 0 bytes .../drawable-xxxhdpi/ic_call_white_48dp.png | Bin 1529 -> 0 bytes .../ic_camera_alt_white_24dp.png | Bin 894 -> 0 bytes .../drawable-xxxhdpi/ic_cancel_black_24dp.png | Bin 963 -> 0 bytes .../drawable-xxxhdpi/ic_cancel_white_24dp.png | Bin 1179 -> 0 bytes .../drawable-xxxhdpi/ic_chat_white_24dp.png | Bin 344 -> 0 bytes .../drawable-xxxhdpi/ic_clear_white_48dp.png | Bin 702 -> 0 bytes .../ic_cloud_download_white_24dp.png | Bin 789 -> 0 bytes .../ic_content_copy_black_24dp.png | Bin 319 -> 0 bytes .../ic_content_copy_white_24dp.png | Bin 329 -> 0 bytes .../drawable-xxxhdpi/ic_crop_white_24dp.png | Bin 394 -> 0 bytes .../drawable-xxxhdpi/ic_delete_black_24dp.png | Bin 237 -> 0 bytes .../drawable-xxxhdpi/ic_delete_white_24dp.png | Bin 397 -> 0 bytes .../ic_description_black_48dp.png | Bin 726 -> 0 bytes .../ic_description_white_48dp.png | Bin 788 -> 0 bytes .../ic_directions_black_24dp.png | Bin 491 -> 0 bytes .../ic_directions_white_24dp.png | Bin 554 -> 0 bytes .../drawable-xxxhdpi/ic_done_black_18dp.png | Bin 227 -> 0 bytes .../drawable-xxxhdpi/ic_done_white_18dp.png | Bin 255 -> 0 bytes .../drawable-xxxhdpi/ic_drafts_white_24dp.png | Bin 953 -> 0 bytes .../drawable-xxxhdpi/ic_edit_black_24dp.png | Bin 319 -> 0 bytes .../drawable-xxxhdpi/ic_edit_white_24dp.png | Bin 632 -> 0 bytes .../drawable-xxxhdpi/ic_error_white_24dp.png | Bin 814 -> 0 bytes .../drawable-xxxhdpi/ic_event_black_48dp.png | Bin 713 -> 0 bytes .../drawable-xxxhdpi/ic_event_white_48dp.png | Bin 744 -> 0 bytes .../ic_file_download_white_24dp.png | Bin 433 -> 0 bytes .../ic_flip_camera_android_black_24dp.png | Bin 1780 -> 0 bytes .../ic_forward_white_24dp.png | Bin 236 -> 0 bytes .../ic_gps_fixed_black_24dp.png | Bin 1334 -> 0 bytes .../ic_gps_fixed_white_24dp.png | Bin 1379 -> 0 bytes .../ic_gps_not_fixed_black_24dp.png | Bin 1102 -> 0 bytes .../ic_gps_not_fixed_white_24dp.png | Bin 1139 -> 0 bytes .../ic_group_add_white_24dp.png | Bin 935 -> 0 bytes .../drawable-xxxhdpi/ic_group_white_24dp.png | Bin 759 -> 0 bytes .../ic_headset_black_24dp.png | Bin 786 -> 0 bytes .../ic_headset_black_48dp.png | Bin 1574 -> 0 bytes .../ic_headset_white_48dp.png | Bin 1736 -> 0 bytes .../drawable-xxxhdpi/ic_help_black_48dp.png | Bin 2217 -> 0 bytes .../drawable-xxxhdpi/ic_help_white_24dp.png | Bin 1132 -> 0 bytes .../drawable-xxxhdpi/ic_help_white_48dp.png | Bin 2356 -> 0 bytes .../ic_hourglass_empty_white_24dp.png | Bin 273 -> 0 bytes .../drawable-xxxhdpi/ic_image_black_48dp.png | Bin 1108 -> 0 bytes .../drawable-xxxhdpi/ic_image_white_48dp.png | Bin 1178 -> 0 bytes .../drawable-xxxhdpi/ic_input_white_24dp.png | Bin 382 -> 0 bytes .../ic_link_off_white_24dp.png | Bin 811 -> 0 bytes .../drawable-xxxhdpi/ic_link_white_24dp.png | Bin 865 -> 0 bytes .../drawable-xxxhdpi/ic_lock_black_18dp.png | Bin 527 -> 0 bytes .../ic_lock_open_white_24dp.png | Bin 946 -> 0 bytes .../drawable-xxxhdpi/ic_lock_white_18dp.png | Bin 540 -> 0 bytes .../drawable-xxxhdpi/ic_lock_white_24dp.png | Bin 971 -> 0 bytes .../drawable-xxxhdpi/ic_mic_black_24dp.png | Bin 773 -> 0 bytes .../drawable-xxxhdpi/ic_mic_black_48dp.png | Bin 1529 -> 0 bytes .../ic_mic_off_black_24dp.png | Bin 832 -> 0 bytes .../drawable-xxxhdpi/ic_mic_white_48dp.png | Bin 1664 -> 0 bytes .../ic_mode_edit_black_18dp.png | Bin 366 -> 0 bytes .../ic_mode_edit_white_18dp.png | Bin 490 -> 0 bytes .../ic_new_releases_black_24dp.png | Bin 897 -> 0 bytes .../ic_new_releases_white_24dp.png | Bin 932 -> 0 bytes .../ic_no_results_background_black.png | Bin 12852 -> 0 bytes .../ic_no_results_background_white.png | Bin 13693 -> 0 bytes .../ic_notifications_black_24dp.png | Bin 493 -> 0 bytes .../ic_notifications_none_black_24dp.png | Bin 641 -> 0 bytes .../ic_notifications_none_white80.png | Bin 1288 -> 0 bytes .../ic_notifications_none_white_24dp.png | Bin 633 -> 0 bytes .../ic_notifications_off_black_24dp.png | Bin 885 -> 0 bytes .../ic_notifications_off_white80.png | Bin 1903 -> 0 bytes .../ic_notifications_off_white_24dp.png | Bin 877 -> 0 bytes .../ic_notifications_paused_black_24dp.png | Bin 618 -> 0 bytes .../ic_notifications_paused_white80.png | Bin 1308 -> 0 bytes .../ic_notifications_paused_white_24dp.png | Bin 616 -> 0 bytes .../ic_notifications_white80.png | Bin 1053 -> 0 bytes .../ic_notifications_white_24dp.png | Bin 482 -> 0 bytes .../drawable-xxxhdpi/ic_pause_black_36dp.png | Bin 127 -> 0 bytes .../drawable-xxxhdpi/ic_pause_white_36dp.png | Bin 110 -> 0 bytes .../ic_person_add_white_24dp.png | Bin 909 -> 0 bytes .../drawable-xxxhdpi/ic_person_black_48dp.png | Bin 1121 -> 0 bytes .../drawable-xxxhdpi/ic_person_white_48dp.png | Bin 1140 -> 0 bytes .../ic_phone_in_talk_black_18dp.png | Bin 868 -> 0 bytes .../ic_phone_in_talk_white_18dp.png | Bin 882 -> 0 bytes .../ic_phone_in_talk_white_24dp.png | Bin 1162 -> 0 bytes .../ic_play_arrow_black_36dp.png | Bin 394 -> 0 bytes .../ic_play_arrow_white_36dp.png | Bin 461 -> 0 bytes .../ic_play_circle_filled_white_48dp.png | Bin 1826 -> 0 bytes .../drawable-xxxhdpi/ic_public_white_24dp.png | Bin 1288 -> 0 bytes .../ic_qr_code_scan_white_24dp.png | Bin 754 -> 0 bytes .../ic_question_answer_white_24dp.png | Bin 320 -> 0 bytes .../ic_refresh_black_24dp.png | Bin 948 -> 0 bytes .../ic_refresh_white_24dp.png | Bin 967 -> 0 bytes .../drawable-xxxhdpi/ic_replay_white_48dp.png | Bin 1885 -> 0 bytes .../drawable-xxxhdpi/ic_reply_white_24dp.png | Bin 579 -> 0 bytes .../drawable-xxxhdpi/ic_room_black_48dp.png | Bin 1691 -> 0 bytes .../drawable-xxxhdpi/ic_room_white_24dp.png | Bin 1093 -> 0 bytes .../drawable-xxxhdpi/ic_room_white_48dp.png | Bin 1709 -> 0 bytes .../drawable-xxxhdpi/ic_save_black_24dp.png | Bin 477 -> 0 bytes .../drawable-xxxhdpi/ic_save_white_24dp.png | Bin 504 -> 0 bytes .../ic_search_background_black.png | Bin 10595 -> 0 bytes .../ic_search_background_white.png | Bin 12848 -> 0 bytes .../drawable-xxxhdpi/ic_search_white_24dp.png | Bin 1090 -> 0 bytes .../drawable-xxxhdpi/ic_send_cancel_away.png | Bin 3377 -> 0 bytes .../drawable-xxxhdpi/ic_send_cancel_dnd.png | Bin 3862 -> 0 bytes .../ic_send_cancel_offline.png | Bin 2956 -> 0 bytes .../ic_send_cancel_offline_white.png | Bin 2987 -> 0 bytes .../ic_send_cancel_online.png | Bin 3861 -> 0 bytes .../ic_send_location_away.png | Bin 3015 -> 0 bytes .../drawable-xxxhdpi/ic_send_location_dnd.png | Bin 3514 -> 0 bytes .../ic_send_location_offline.png | Bin 2523 -> 0 bytes .../ic_send_location_offline_white.png | Bin 2563 -> 0 bytes .../ic_send_location_online.png | Bin 3519 -> 0 bytes .../drawable-xxxhdpi/ic_send_photo_away.png | Bin 3040 -> 0 bytes .../drawable-xxxhdpi/ic_send_photo_dnd.png | Bin 3569 -> 0 bytes .../ic_send_photo_offline.png | Bin 2491 -> 0 bytes .../ic_send_photo_offline_white.png | Bin 2631 -> 0 bytes .../drawable-xxxhdpi/ic_send_photo_online.png | Bin 3567 -> 0 bytes .../drawable-xxxhdpi/ic_send_picture_away.png | Bin 1632 -> 0 bytes .../drawable-xxxhdpi/ic_send_picture_dnd.png | Bin 1784 -> 0 bytes .../ic_send_picture_offline.png | Bin 1428 -> 0 bytes .../ic_send_picture_offline_white.png | Bin 1483 -> 0 bytes .../ic_send_picture_online.png | Bin 1777 -> 0 bytes .../drawable-xxxhdpi/ic_send_text_away.png | Bin 2311 -> 0 bytes .../res/drawable-xxxhdpi/ic_send_text_dnd.png | Bin 2592 -> 0 bytes .../drawable-xxxhdpi/ic_send_text_offline.png | Bin 1862 -> 0 bytes .../ic_send_text_offline_white.png | Bin 1974 -> 0 bytes .../drawable-xxxhdpi/ic_send_text_online.png | Bin 2665 -> 0 bytes .../ic_send_videocam_away.png | Bin 821 -> 0 bytes .../drawable-xxxhdpi/ic_send_videocam_dnd.png | Bin 884 -> 0 bytes .../ic_send_videocam_offline.png | Bin 772 -> 0 bytes .../ic_send_videocam_offline_white.png | Bin 777 -> 0 bytes .../ic_send_videocam_online.png | Bin 894 -> 0 bytes .../drawable-xxxhdpi/ic_send_voice_away.png | Bin 2491 -> 0 bytes .../drawable-xxxhdpi/ic_send_voice_dnd.png | Bin 2849 -> 0 bytes .../ic_send_voice_offline.png | Bin 2092 -> 0 bytes .../ic_send_voice_offline_white.png | Bin 2181 -> 0 bytes .../drawable-xxxhdpi/ic_send_voice_online.png | Bin 2895 -> 0 bytes .../ic_settings_black_24dp.png | Bin 1073 -> 0 bytes .../ic_settings_white_24dp.png | Bin 1074 -> 0 bytes .../drawable-xxxhdpi/ic_share_white_24dp.png | Bin 1115 -> 0 bytes .../drawable-xxxhdpi/ic_star_black_24dp.png | Bin 887 -> 0 bytes .../drawable-xxxhdpi/ic_star_white_24dp.png | Bin 890 -> 0 bytes .../ic_verified_fingerprint.png | Bin 2773 -> 0 bytes .../ic_verified_user_black_18dp.png | Bin 634 -> 0 bytes .../ic_verified_user_white_18dp.png | Bin 668 -> 0 bytes .../ic_videocam_black_24dp.png | Bin 270 -> 0 bytes .../ic_videocam_off_black_24dp.png | Bin 447 -> 0 bytes .../ic_videocam_white_24dp.png | Bin 290 -> 0 bytes .../ic_voicemail_white_24dp.png | Bin 971 -> 0 bytes .../ic_volume_off_black_24dp.png | Bin 924 -> 0 bytes .../ic_volume_up_black_24dp.png | Bin 828 -> 0 bytes .../ic_warning_white_24dp.png | Bin 887 -> 0 bytes .../ic_warning_white_48dp.png | Bin 1044 -> 0 bytes src/main/res/drawable-xxxhdpi/marker.png | Bin 9950 -> 0 bytes .../message_bubble_received.9.png | Bin 1713 -> 0 bytes .../message_bubble_received_dark.9.png | Bin 1691 -> 0 bytes .../message_bubble_received_grey.9.png | Bin 1670 -> 0 bytes .../message_bubble_received_warning.9.png | Bin 1696 -> 0 bytes .../message_bubble_received_white.9.png | Bin 1705 -> 0 bytes .../message_bubble_sent.9.png | Bin 1499 -> 0 bytes .../message_bubble_sent_grey.9.png | Bin 1468 -> 0 bytes .../res/drawable-xxxhdpi/open_pdf_black.png | Bin 4626 -> 0 bytes .../res/drawable-xxxhdpi/open_pdf_white.png | Bin 4986 -> 0 bytes .../res/drawable-xxxhdpi/play_gif_black.png | Bin 2334 -> 0 bytes .../res/drawable-xxxhdpi/play_gif_white.png | Bin 2436 -> 0 bytes .../res/drawable-xxxhdpi/play_video_black.png | Bin 13926 -> 0 bytes .../res/drawable-xxxhdpi/play_video_white.png | Bin 15040 -> 0 bytes .../res/drawable/account_image_border.xml | 15 - src/main/res/drawable/background.xml | 11 - .../res/drawable/es_slidingpane_shadow.xml | 12 - src/main/res/drawable/grey.xml | 7 - src/main/res/drawable/greybackground.xml | 6 - .../res/drawable/ic_baseline_check_24.xml | 5 - .../res/drawable/ic_call_black54_24dp.xml | 4 - .../drawable/ic_call_missed_white_24db.xml | 5 - .../res/drawable/ic_call_white70_24dp.xml | 4 - .../res/drawable/ic_directions_black_24dp.xml | 9 - .../res/drawable/ic_gps_fixed_black_24dp.xml | 9 - .../drawable/ic_gps_not_fixed_black_24dp.xml | 9 - .../res/drawable/ic_launcher_foreground.xml | 24 - src/main/res/drawable/ic_place_black_24dp.xml | 9 - .../res/drawable/ic_scroll_to_end_black.xml | 7 - .../res/drawable/ic_scroll_to_end_white.xml | 36 - .../res/drawable/ic_videocam_black54_24dp.xml | 4 - .../res/drawable/ic_videocam_white70_24dp.xml | 4 - src/main/res/drawable/ic_visibility.xml | 9 - src/main/res/drawable/ic_visibility_off.xml | 9 - .../drawable/list_item_background_dark.xml | 34 - .../drawable/list_item_background_light.xml | 34 - .../drawable/no_results_background_dark.xml | 41 - .../drawable/no_results_background_light.xml | 41 - .../no_results_primary_background_dark.xml | 41 - .../no_results_primary_background_light.xml | 41 - .../res/drawable/search_background_dark.xml | 41 - .../res/drawable/search_background_light.xml | 41 - src/main/res/drawable/snackbar.xml | 14 - .../drawable/visibility_toggle_drawable.xml | 5 - src/main/res/drawable/white_cursor.xml | 33 - .../layout-w945dp/activity_conversations.xml | 28 - src/main/res/layout/account_row.xml | 57 - src/main/res/layout/actionview_search.xml | 18 - src/main/res/layout/activity_about.xml | 40 - .../res/layout/activity_change_password.xml | 106 - .../res/layout/activity_channel_discovery.xml | 41 - .../res/layout/activity_choose_contact.xml | 36 - .../res/layout/activity_contact_details.xml | 223 - .../res/layout/activity_conversations.xml | 45 - src/main/res/layout/activity_edit_account.xml | 720 --- .../res/layout/activity_manage_accounts.xml | 18 - .../res/layout/activity_media_browser.xml | 24 - src/main/res/layout/activity_muc_details.xml | 430 -- src/main/res/layout/activity_muc_users.xml | 34 - .../activity_publish_profile_picture.xml | 99 - src/main/res/layout/activity_recording.xml | 48 - src/main/res/layout/activity_rtp_session.xml | 264 - src/main/res/layout/activity_scan.xml | 17 - src/main/res/layout/activity_search.xml | 53 - src/main/res/layout/activity_settings.xml | 12 - .../res/layout/activity_share_location.xml | 80 - src/main/res/layout/activity_share_with.xml | 19 - .../res/layout/activity_show_location.xml | 35 - .../layout/activity_start_conversation.xml | 59 - src/main/res/layout/activity_trust_keys.xml | 170 - src/main/res/layout/activity_uri_handler.xml | 31 - src/main/res/layout/captcha.xml | 25 - src/main/res/layout/contact.xml | 58 - src/main/res/layout/contact_key.xml | 79 - src/main/res/layout/conversation_list_row.xml | 146 - .../res/layout/create_conference_dialog.xml | 40 - .../layout/create_public_channel_dialog.xml | 55 - src/main/res/layout/dialog_block_contact.xml | 28 - src/main/res/layout/dialog_clear_history.xml | 26 - .../res/layout/dialog_join_conference.xml | 51 - src/main/res/layout/dialog_presence.xml | 66 - src/main/res/layout/dialog_quickedit.xml | 32 - .../res/layout/dialog_verify_fingerprints.xml | 23 - src/main/res/layout/enter_jid_dialog.xml | 42 - src/main/res/layout/form_boolean.xml | 11 - src/main/res/layout/form_text.xml | 17 - src/main/res/layout/fragment_conversation.xml | 170 - .../fragment_conversations_overview.xml | 27 - src/main/res/layout/keys_card.xml | 43 - src/main/res/layout/list_item_tag.xml | 13 - src/main/res/layout/media.xml | 15 - src/main/res/layout/media_preview.xml | 25 - src/main/res/layout/message_content.xml | 66 - src/main/res/layout/message_date_bubble.xml | 27 - src/main/res/layout/message_received.xml | 94 - src/main/res/layout/message_rtp_session.xml | 38 - src/main/res/layout/message_sent.xml | 108 - src/main/res/layout/message_status.xml | 46 - src/main/res/layout/presence_template.xml | 47 - src/main/res/layout/search_result_item.xml | 63 - src/main/res/layout/simple_list_item.xml | 25 - src/main/res/layout/toolbar.xml | 11 - src/main/res/layout/user_preview.xml | 17 - src/main/res/menu/account_context.xml | 12 - src/main/res/menu/activity_conversations.xml | 25 - .../menu/activity_publish_profile_picture.xml | 10 - src/main/res/menu/activity_rtp_session.xml | 19 - src/main/res/menu/activity_search.xml | 40 - src/main/res/menu/block.xml | 12 - .../res/menu/channel_discovery_activity.xml | 21 - src/main/res/menu/channel_item_context.xml | 9 - src/main/res/menu/choose_contact.xml | 17 - src/main/res/menu/conference_context.xml | 10 - src/main/res/menu/contact_context.xml | 17 - src/main/res/menu/contact_details.xml | 64 - src/main/res/menu/edit_message_actions.xml | 38 - src/main/res/menu/editaccount.xml | 63 - src/main/res/menu/fragment_conversation.xml | 142 - .../menu/fragment_conversations_overview.xml | 57 - src/main/res/menu/import_backup.xml | 11 - src/main/res/menu/manageaccounts_context.xml | 22 - src/main/res/menu/menu_show_location.xml | 14 - src/main/res/menu/message_context.xml | 60 - src/main/res/menu/muc_details.xml | 62 - src/main/res/menu/muc_details_context.xml | 58 - src/main/res/menu/muc_users_activity.xml | 11 - src/main/res/menu/omemo_key_context.xml | 13 - src/main/res/menu/one_on_one_context.xml | 9 - src/main/res/menu/search_result_context.xml | 49 - src/main/res/menu/share_with.xml | 12 - src/main/res/menu/start_conversation.xml | 40 - .../menu/start_conversation_fab_submenu.xml | 23 - src/main/res/menu/trust_keys.xml | 10 - src/main/res/mipmap-hdpi/new_launcher.png | Bin 2385 -> 0 bytes .../res/mipmap-hdpi/new_launcher_round.png | Bin 4216 -> 0 bytes src/main/res/raw/countries | 245 - src/main/res/values-h360dp/dimens.xml | 5 - src/main/res/values-h500dp/dimens.xml | 5 - src/main/res/values-land/dimens.xml | 8 - src/main/res/values-night/colors.xml | 5 - src/main/res/values-qwerty/defaults.xml | 4 - src/main/res/values-sw600dp/defaults.xml | 6 - src/main/res/values-v29/theme-settings.xml | 16 - src/main/res/values-w384dp/dimens.xml | 14 - src/main/res/values-w585dp/dimens.xml | 6 - src/main/res/values-w945dp/defaults.xml | 7 - src/main/res/values-w945dp/dimens.xml | 3 - src/main/res/values/about.xml | 65 - src/main/res/values/arrays.xml | 129 - src/main/res/values/attrs.xml | 131 - src/main/res/values/bools.xml | 4 - src/main/res/values/colors.xml | 47 - src/main/res/values/defaults.xml | 51 - src/main/res/values/dimens.xml | 50 - src/main/res/values/ids.xml | 7 - src/main/res/values/styles.xml | 162 - src/main/res/values/theme-settings.xml | 14 - src/main/res/values/themes.xml | 420 -- src/main/res/xml/automotive_app_desc.xml | 4 - src/main/res/xml/backup_content.xml | 11 - src/main/res/xml/file_paths.xml | 24 - .../xml/network_security_configuration.xml | 9 - src/main/res/xml/preferences.xml | 379 -- src/playstore/AndroidManifest.xml | 30 - .../services/EmojiInitializationService.java | 10 - .../services/MaintenanceReceiver.java | 30 - .../services/PushManagementService.java | 120 - .../services/PushMessageReceiver.java | 40 - src/quicksy/AndroidManifest.xml | 49 - .../android/PhoneNumberContact.java | 90 - .../siacs/conversations/entities/Entry.java | 109 - .../services/QuickConversationsService.java | 510 -- .../conversations/services/SMSReceiver.java | 22 - .../ui/ChooseCountryActivity.java | 132 - .../ui/EasyOnboardingInviteActivity.java | 9 - .../conversations/ui/EnterNameActivity.java | 81 - .../ui/EnterPhoneNumberActivity.java | 241 - .../siacs/conversations/ui/TosActivity.java | 77 - .../conversations/ui/VerifyActivity.java | 357 -- .../ui/adapter/CountryAdapter.java | 70 - .../ui/drawable/TextDrawable.java | 243 - .../ui/util/ApiDialogHelper.java | 101 - .../ui/util/PinEntryWrapper.java | 159 - .../utils/PhoneNumberUtilWrapper.java | 101 - .../utils/ProvisioningUtils.java | 9 - .../conversations/utils/SignupUtils.java | 58 - src/quicksy/new_launcher-web.png | Bin 23321 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 117 -> 0 bytes .../res/drawable-hdpi/ic_notification.png | Bin 1059 -> 0 bytes src/quicksy/res/drawable-hdpi/launcher.png | Bin 4512 -> 0 bytes src/quicksy/res/drawable-hdpi/main_logo.png | Bin 19860 -> 0 bytes src/quicksy/res/drawable-hdpi/splash_logo.png | Bin 14191 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 88 -> 0 bytes .../res/drawable-mdpi/ic_notification.png | Bin 663 -> 0 bytes src/quicksy/res/drawable-mdpi/launcher.png | Bin 3001 -> 0 bytes src/quicksy/res/drawable-mdpi/main_logo.png | Bin 13004 -> 0 bytes src/quicksy/res/drawable-mdpi/splash_logo.png | Bin 9070 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 117 -> 0 bytes .../res/drawable-xhdpi/ic_notification.png | Bin 1326 -> 0 bytes src/quicksy/res/drawable-xhdpi/launcher.png | Bin 6005 -> 0 bytes src/quicksy/res/drawable-xhdpi/main_logo.png | Bin 26976 -> 0 bytes .../res/drawable-xhdpi/splash_logo.png | Bin 19010 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 126 -> 0 bytes .../res/drawable-xxhdpi/ic_notification.png | Bin 2112 -> 0 bytes src/quicksy/res/drawable-xxhdpi/launcher.png | Bin 9070 -> 0 bytes src/quicksy/res/drawable-xxhdpi/main_logo.png | Bin 41177 -> 0 bytes .../res/drawable-xxhdpi/splash_logo.png | Bin 29217 -> 0 bytes .../ic_arrow_drop_down_black_18dp.png | Bin 141 -> 0 bytes .../res/drawable-xxxhdpi/ic_notification.png | Bin 2856 -> 0 bytes src/quicksy/res/drawable-xxxhdpi/launcher.png | Bin 12398 -> 0 bytes .../res/drawable-xxxhdpi/main_logo.png | Bin 55474 -> 0 bytes .../res/drawable-xxxhdpi/splash_logo.png | Bin 39466 -> 0 bytes .../res/layout/activity_choose_country.xml | 24 - .../res/layout/activity_enter_name.xml | 64 - .../res/layout/activity_enter_number.xml | 114 - src/quicksy/res/layout/activity_tos.xml | 77 - src/quicksy/res/layout/activity_verify.xml | 193 - src/quicksy/res/layout/country_item.xml | 30 - src/quicksy/res/menu/choose_country.xml | 11 - .../utils/SmsRetrieverWrapper.java | 16 - .../utils/SmsRetrieverWrapper.java | 40 - 2165 files changed, 982 insertions(+), 95714 deletions(-) create mode 100644 annotation-processor/build.gradle rename {libs/annotation-processor => annotation-processor}/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java (100%) create mode 100644 annotation/build.gradle rename {libs/annotation => annotation}/src/main/java/im/conversations/android/annotation/XmlElement.java (100%) rename {libs/annotation => annotation}/src/main/java/im/conversations/android/annotation/XmlPackage.java (100%) create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro rename {schemas => app/schemas}/im.conversations.android.database.ConversationsDatabase/1.json (100%) rename {src => app/src}/androidTest/java/im/conversations/android/xmpp/TransformationTest.java (100%) rename {src => app/src}/conversations/res/drawable/ic_launcher_foreground.xml (100%) rename {src => app/src}/conversations/res/mipmap-anydpi-v26/new_launcher.xml (100%) rename {src => app/src}/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml (100%) rename {src/main => app/src/conversations}/res/mipmap-hdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-hdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-hdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-mdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-mdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-mdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-xhdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-xhdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-xhdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-xxhdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-xxhdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-xxhdpi/new_launcher_round.png (100%) rename {src/main => app/src/conversations}/res/mipmap-xxxhdpi/ic_launcher_background.png (100%) rename {src => app/src}/conversations/res/mipmap-xxxhdpi/new_launcher.png (100%) rename {src => app/src}/conversations/res/mipmap-xxxhdpi/new_launcher_round.png (100%) rename {src => app/src}/conversations/res/values-ar/strings.xml (100%) rename {src => app/src}/conversations/res/values-bg/strings.xml (100%) rename {src => app/src}/conversations/res/values-bn-rIN/strings.xml (100%) rename {src => app/src}/conversations/res/values-ca/strings.xml (100%) rename {src => app/src}/conversations/res/values-da-rDK/strings.xml (100%) rename {src => app/src}/conversations/res/values-de/strings.xml (100%) rename {src => app/src}/conversations/res/values-el/strings.xml (100%) rename {src => app/src}/conversations/res/values-es/strings.xml (100%) rename {src => app/src}/conversations/res/values-eu/strings.xml (100%) rename {src => app/src}/conversations/res/values-fa-rIR/strings.xml (100%) rename {src => app/src}/conversations/res/values-fi/strings.xml (100%) rename {src => app/src}/conversations/res/values-fr/strings.xml (100%) rename {src => app/src}/conversations/res/values-gl/strings.xml (100%) rename {src => app/src}/conversations/res/values-hr/strings.xml (100%) rename {src => app/src}/conversations/res/values-hu/strings.xml (100%) rename {src => app/src}/conversations/res/values-id/strings.xml (100%) rename {src => app/src}/conversations/res/values-it/strings.xml (100%) rename {src => app/src}/conversations/res/values-ja/strings.xml (100%) rename {src => app/src}/conversations/res/values-nl/strings.xml (100%) rename {src => app/src}/conversations/res/values-pl/strings.xml (100%) rename {src => app/src}/conversations/res/values-pt-rBR/strings.xml (100%) rename {src => app/src}/conversations/res/values-pt/strings.xml (100%) rename {src => app/src}/conversations/res/values-ro-rRO/strings.xml (100%) rename {src => app/src}/conversations/res/values-ru/strings.xml (100%) rename {src => app/src}/conversations/res/values-sk/strings.xml (100%) rename {src => app/src}/conversations/res/values-sq/strings.xml (100%) rename {src => app/src}/conversations/res/values-sr/strings.xml (100%) rename {src => app/src}/conversations/res/values-sv/strings.xml (100%) rename {src => app/src}/conversations/res/values-szl/strings.xml (100%) rename {src => app/src}/conversations/res/values-tr-rTR/strings.xml (100%) rename {src => app/src}/conversations/res/values-uk/strings.xml (100%) rename {src => app/src}/conversations/res/values-vi/strings.xml (100%) rename {src => app/src}/conversations/res/values-zh-rCN/strings.xml (100%) rename {src => app/src}/conversations/res/values-zh-rTW/strings.xml (100%) rename {src => app/src}/conversations/res/values/strings.xml (100%) create mode 100644 app/src/main/AndroidManifest.xml rename {src => app/src}/main/assets/logback.xml (100%) rename {src => app/src}/main/java/im/conversations/android/Conversations.java (79%) rename {src => app/src}/main/java/im/conversations/android/IDs.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/AxolotlDatabaseStore.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/ConversationsDatabase.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/Converters.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/CredentialStore.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/AccountDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/AvatarDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/AxolotlDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/BlockingDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/BookmarkDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/ChatDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/DiscoDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/MessageDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/NickDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/PresenceDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/dao/RosterDao.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AccountEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AvatarEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/BlockedItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/BookmarkEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/ChatEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/DiscoItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageContentEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageReactionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageStateEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/MessageVersionEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/NickEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/PresenceEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/RosterItemEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Account.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/AvatarBase.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/AvatarExternal.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/AvatarThumbnail.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/ChatIdentifier.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/ChatType.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Connection.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Credential.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageContent.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageEmbedded.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageIdentifier.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageReaction.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageState.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/MessageWithContentReactions.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Modification.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/PartType.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/PresenceShow.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/PresenceType.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/Proxy.java (100%) rename {src => app/src}/main/java/im/conversations/android/database/model/StateType.java (100%) create mode 100644 app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java rename {src/main/java/eu/siacs/conversations/utils => app/src/main/java/im/conversations/android/dns}/AndroidUsingLinkProperties.java (67%) create mode 100644 app/src/main/java/im/conversations/android/dns/IP.java rename {src/main/java/eu/siacs/conversations/utils => app/src/main/java/im/conversations/android/dns}/Resolver.java (67%) rename {src => app/src}/main/java/im/conversations/android/repository/AbstractRepository.java (100%) rename {src => app/src}/main/java/im/conversations/android/repository/AccountRepository.java (100%) rename {src/main/java/eu/siacs/conversations/utils => app/src/main/java/im/conversations/android/socks}/SocksSocketFactory.java (77%) rename {src => app/src}/main/java/im/conversations/android/tls/SSLSockets.java (100%) create mode 100644 app/src/main/java/im/conversations/android/tls/TrustManagers.java rename {src => app/src}/main/java/im/conversations/android/tls/XmppDomainVerifier.java (100%) rename {src => app/src}/main/java/im/conversations/android/transformer/Transformation.java (100%) rename {src => app/src}/main/java/im/conversations/android/transformer/TransformationFactory.java (100%) rename {src => app/src}/main/java/im/conversations/android/transformer/Transformer.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/Activities.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/BindingAdapters.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/Event.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/NavControllers.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/activity/SetupActivity.java (90%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java (100%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java (88%) rename {src => app/src}/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java (88%) rename {src => app/src}/main/java/im/conversations/android/ui/model/SetupViewModel.java (100%) rename {src/main/java/eu/siacs/conversations/ui => app/src/main/java/im/conversations/android}/util/PendingItem.java (98%) rename {src => app/src}/main/java/im/conversations/android/xml/Element.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/Entities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/Namespace.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/Tag.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/TagWriter.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/XmlElementReader.java (100%) rename {src => app/src}/main/java/im/conversations/android/xml/XmlReader.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Closables.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ConnectionException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ConnectionPool.java (99%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ConnectionState.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Entity.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/EntityCapabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/EntityCapabilities2.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ExtensionFactory.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/IqErrorException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Managers.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/NodeConfiguration.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/PubSubErrorException.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/ServiceDescription.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/Timestamps.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/XmppConnection.java (89%) rename {src => app/src}/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/AbstractManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/AvatarManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/BlockingManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/DiscoManager.java (99%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/NickManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/PepManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/PresenceManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/PubSubManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/RosterManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/ByteContent.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/Extension.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/Hash.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/StreamElement.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/avatar/Data.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/avatar/Info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Device.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Header.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java (100%) rename src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java => app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java (67%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Block.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/blocking/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/Enable.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/Received.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/Sent.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/carbons/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/correction/Replace.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/csi/Active.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/csi/Inactive.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/csi/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/Data.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/Field.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/Value.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/data/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/delay/Delay.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/items/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/error/Condition.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/error/Error.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/error/Text.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/jabber/Body.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/jabber/Thread.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/jabber/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/mam/Result.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/mam/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/Displayed.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/Markable.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/Received.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/markers/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/Role.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/nick/Nick.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/oob/URL.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/oob/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/ping/Ping.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Items.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reactions/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/receipts/Received.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/receipts/Request.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/receipts/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Instructions.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Password.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Register.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Remove.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/Username.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/register/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/reply/Reply.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/retract/Retract.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/retract/Retracted.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/retract/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/Group.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/Item.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/Query.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/roster/package-info.java (100%) create mode 100644 app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java create mode 100644 app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Ack.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Enable.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Request.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/Resume.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/sm/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Iq.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Message.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Presence.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/stanza/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Active.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Composing.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Gone.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Inactive.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/Paused.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/state/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/streams/Features.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/streams/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/unique/OriginId.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/unique/package-info.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/model/version/Version.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/BindProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/IqProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/Anonymous.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/External.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/HashedToken.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/Plain.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java (100%) rename {src => app/src}/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java (100%) rename {src => app/src}/main/res/anim/slide_from_left.xml (100%) rename {src => app/src}/main/res/anim/slide_from_right.xml (100%) rename {src => app/src}/main/res/anim/slide_to_left.xml (100%) rename {src => app/src}/main/res/anim/slide_to_right.xml (100%) rename {src => app/src}/main/res/drawable/ic_account_circle_24dp.xml (100%) rename {src => app/src}/main/res/drawable/ic_settings_24dp.xml (100%) rename {src => app/src}/main/res/layout/activity_setup.xml (100%) rename {src => app/src}/main/res/layout/fragment_password.xml (99%) rename {src => app/src}/main/res/layout/fragment_sign_in.xml (98%) rename src/main/res/menu/setup.xml => app/src/main/res/menu/activity_setup.xml (100%) rename {src => app/src}/main/res/navigation/setup_navigation.xml (100%) rename {src => app/src}/main/res/values-ar/strings.xml (100%) rename {src => app/src}/main/res/values-bg/strings.xml (100%) rename {src => app/src}/main/res/values-bn-rIN/strings.xml (100%) rename {src => app/src}/main/res/values-ca/strings.xml (100%) rename {src => app/src}/main/res/values-cs/strings.xml (100%) rename {src => app/src}/main/res/values-da-rDK/strings.xml (100%) rename {src => app/src}/main/res/values-de/strings.xml (100%) rename {src => app/src}/main/res/values-el/strings.xml (100%) rename {src => app/src}/main/res/values-es/strings.xml (100%) rename {src => app/src}/main/res/values-eu/strings.xml (100%) rename {src => app/src}/main/res/values-fa-rIR/strings.xml (100%) rename {src => app/src}/main/res/values-fi/strings.xml (100%) rename {src => app/src}/main/res/values-fr/strings.xml (100%) rename {src => app/src}/main/res/values-gl/strings.xml (100%) rename {src => app/src}/main/res/values-hi-rIN/strings.xml (100%) rename {src => app/src}/main/res/values-hr/strings.xml (100%) rename {src => app/src}/main/res/values-hu/strings.xml (100%) rename {src => app/src}/main/res/values-id/strings.xml (100%) rename {src => app/src}/main/res/values-it/strings.xml (100%) rename {src => app/src}/main/res/values-iw/strings.xml (100%) rename {src => app/src}/main/res/values-ja/strings.xml (100%) rename {src => app/src}/main/res/values-ko/strings.xml (100%) rename {src => app/src}/main/res/values-land/bools.xml (100%) create mode 100644 app/src/main/res/values-land/dimens.xml rename {src => app/src}/main/res/values-ml/strings.xml (100%) rename {src => app/src}/main/res/values-nb-rNO/strings.xml (100%) create mode 100644 app/src/main/res/values-night/themes.xml rename {src => app/src}/main/res/values-nl/strings.xml (100%) rename {src => app/src}/main/res/values-pl/strings.xml (100%) rename {src => app/src}/main/res/values-pt-rBR/strings.xml (100%) rename {src => app/src}/main/res/values-pt/strings.xml (100%) rename {src => app/src}/main/res/values-ro-rRO/strings.xml (100%) rename {src => app/src}/main/res/values-ru/strings.xml (100%) rename {src => app/src}/main/res/values-sk/strings.xml (100%) rename {src => app/src}/main/res/values-sq-rAL/strings.xml (100%) rename {src => app/src}/main/res/values-sr/strings.xml (100%) rename {src => app/src}/main/res/values-sv/strings.xml (100%) rename src/quicksy/res/values/defaults.xml => app/src/main/res/values-sw600dp/device.xml (52%) rename {src => app/src}/main/res/values-szl/strings.xml (100%) rename {src => app/src}/main/res/values-tr-rTR/strings.xml (100%) rename {src => app/src}/main/res/values-uk/strings.xml (100%) rename {src => app/src}/main/res/values-vi/strings.xml (100%) rename {src => app/src}/main/res/values-zh-rCN/strings.xml (100%) rename {src => app/src}/main/res/values-zh-rTW/strings.xml (100%) create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/device.xml create mode 100644 app/src/main/res/values/dimens.xml rename {src => app/src}/main/res/values/integers.xml (100%) rename {src => app/src}/main/res/values/strings.xml (100%) create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_rules.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml rename {src => app/src}/quicksy/res/drawable/ic_launcher_foreground.xml (100%) rename {src => app/src}/quicksy/res/mipmap-anydpi-v26/new_launcher.xml (100%) rename {src => app/src}/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml (100%) create mode 100644 app/src/quicksy/res/mipmap-hdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-hdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-hdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-mdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-mdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-mdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-xhdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-xhdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-xhdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-xxhdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-xxhdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-xxhdpi/new_launcher_round.png (100%) create mode 100644 app/src/quicksy/res/mipmap-xxxhdpi/ic_launcher_background.png rename {src => app/src}/quicksy/res/mipmap-xxxhdpi/new_launcher.png (100%) rename {src => app/src}/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png (100%) rename {src => app/src}/quicksy/res/values-ar/strings.xml (100%) rename {src => app/src}/quicksy/res/values-bg/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ca/strings.xml (100%) rename {src => app/src}/quicksy/res/values-da-rDK/strings.xml (100%) rename {src => app/src}/quicksy/res/values-de/strings.xml (100%) rename {src => app/src}/quicksy/res/values-el/strings.xml (100%) rename {src => app/src}/quicksy/res/values-es/strings.xml (100%) rename {src => app/src}/quicksy/res/values-fi/strings.xml (100%) rename {src => app/src}/quicksy/res/values-fr/strings.xml (100%) rename {src => app/src}/quicksy/res/values-gl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-hr/strings.xml (100%) rename {src => app/src}/quicksy/res/values-hu/strings.xml (100%) rename {src => app/src}/quicksy/res/values-id/strings.xml (100%) rename {src => app/src}/quicksy/res/values-it/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ja/strings.xml (100%) rename {src => app/src}/quicksy/res/values-nl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-pl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-pt-rBR/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ro-rRO/strings.xml (100%) rename {src => app/src}/quicksy/res/values-ru/strings.xml (100%) rename {src => app/src}/quicksy/res/values-sk/strings.xml (100%) rename {src => app/src}/quicksy/res/values-sq/strings.xml (100%) rename {src => app/src}/quicksy/res/values-sv/strings.xml (100%) rename {src => app/src}/quicksy/res/values-szl/strings.xml (100%) rename {src => app/src}/quicksy/res/values-tr-rTR/strings.xml (100%) rename {src => app/src}/quicksy/res/values-uk/strings.xml (100%) rename {src => app/src}/quicksy/res/values-vi/strings.xml (100%) rename {src => app/src}/quicksy/res/values-zh-rCN/strings.xml (100%) rename {src => app/src}/quicksy/res/values-zh-rTW/strings.xml (100%) rename {src => app/src}/quicksy/res/values/strings.xml (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/PubSubTest.java (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/TimestampTest.java (100%) rename {src => app/src}/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java (100%) delete mode 100644 libs/annotation-processor/build.gradle delete mode 100644 libs/annotation/build.gradle delete mode 100644 proguard-rules.pro delete mode 100644 src/conversations/AndroidManifest.xml delete mode 100644 src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java delete mode 100644 src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java delete mode 100644 src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java delete mode 100644 src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java delete mode 100644 src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java delete mode 100644 src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java delete mode 100644 src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java delete mode 100644 src/conversations/new_launcher-web.png delete mode 100644 src/conversations/res/drawable-hdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-hdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-hdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-hdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-mdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-mdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-mdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-mdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-xhdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-xhdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-xhdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-xhdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-xxhdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-xxhdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-xxhdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-xxhdpi/splash_logo.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/ic_notification.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/ic_unarchive_white_24dp.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/main_logo.png delete mode 100644 src/conversations/res/drawable-xxxhdpi/splash_logo.png delete mode 100644 src/conversations/res/layout/activity_easy_invite.xml delete mode 100644 src/conversations/res/layout/activity_import_backup.xml delete mode 100644 src/conversations/res/layout/activity_pick_server.xml delete mode 100644 src/conversations/res/layout/activity_welcome.xml delete mode 100644 src/conversations/res/layout/dialog_enter_password.xml delete mode 100644 src/conversations/res/layout/magic_create.xml delete mode 100644 src/conversations/res/menu/easy_onboarding_invite.xml delete mode 100644 src/conversations/res/menu/manageaccounts.xml delete mode 100644 src/conversations/res/menu/welcome_menu.xml delete mode 100644 src/conversationsFree/java/eu/siacs/conversations/utils/InstallReferrerUtils.java delete mode 100644 src/conversationsPlaystore/java/eu/siacs/conversations/utils/InstallReferrerUtils.java delete mode 100644 src/free/java/eu/siacs/conversations/services/EmojiInitializationService.java delete mode 100644 src/free/java/eu/siacs/conversations/services/PushManagementService.java delete mode 100644 src/main/AndroidManifest.xml delete mode 100644 src/main/java/eu/siacs/conversations/Config.java delete mode 100644 src/main/java/eu/siacs/conversations/android/AbstractPhoneContact.java delete mode 100644 src/main/java/eu/siacs/conversations/android/JabberIdContact.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/DomainHostnameVerifier.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/OmemoSetting.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/PgpDecryptionService.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/PgpEngine.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/XmppDomainVerifier.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/BrokenSessionException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/CryptoFailedException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/FingerprintStatus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/NoSessionsCreatedException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/NotEncryptedForThisDeviceException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/OnMessageCreatedCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/OutdatedSenderException.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/SQLiteAxolotlStore.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/XmppAxolotlMessage.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/axolotl/XmppAxolotlSession.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/Anonymous.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ChannelBinding.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ChannelBindingMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/DigestMd5.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/External.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/HashedToken.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/HashedTokenSha256.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/HashedTokenSha512.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/Plain.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/SaslMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramPlusMechanism.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha1.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha1Plus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha256.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha256Plus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha512.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/ScramSha512Plus.java delete mode 100644 src/main/java/eu/siacs/conversations/crypto/sasl/Tokenizer.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/AbstractEntity.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Account.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Blockable.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Bookmark.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Contact.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Conversation.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Conversational.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/DownloadableFile.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Edit.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/IndividualMessage.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ListItem.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/MTMDecision.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Message.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/MucOptions.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Presence.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/PresenceTemplate.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Presences.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/RawBlockable.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ReadByMarker.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ReceiptRequest.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Room.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Roster.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/RtpSessionStatus.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/ServiceDiscoveryResult.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/StubConversation.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/Transferable.java delete mode 100644 src/main/java/eu/siacs/conversations/entities/TransferablePlaceholder.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/IqGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/MessageGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java delete mode 100644 src/main/java/eu/siacs/conversations/http/AesGcmURL.java delete mode 100644 src/main/java/eu/siacs/conversations/http/HttpConnectionManager.java delete mode 100644 src/main/java/eu/siacs/conversations/http/HttpDownloadConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/http/HttpUploadConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/http/Method.java delete mode 100644 src/main/java/eu/siacs/conversations/http/SlotRequester.java delete mode 100644 src/main/java/eu/siacs/conversations/http/URL.java delete mode 100644 src/main/java/eu/siacs/conversations/http/services/MuclumbusService.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/AbstractParser.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/IqParser.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/MessageParser.java delete mode 100644 src/main/java/eu/siacs/conversations/parser/PresenceParser.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/FileBackend.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/OnPhoneContactsMerged.java delete mode 100644 src/main/java/eu/siacs/conversations/persistance/UnifiedPushDatabase.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AbstractConnectionManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AbstractQuickConversationsService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AppRTCAudioManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AppRTCBluetoothManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AppRTCProximitySensor.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AttachFileToConversationRunnable.java delete mode 100644 src/main/java/eu/siacs/conversations/services/AvatarService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/BarcodeProvider.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ChannelDiscoveryService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ContactChooserTargetService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/EventReceiver.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ExportBackupService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MediaPlayer.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MemorizingTrustManager.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MessageArchiveService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/MessageSearchTask.java delete mode 100644 src/main/java/eu/siacs/conversations/services/NotificationService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/ShortcutService.java delete mode 100644 src/main/java/eu/siacs/conversations/services/UnifiedPushBroker.java delete mode 100644 src/main/java/eu/siacs/conversations/services/UnifiedPushDistributor.java delete mode 100644 src/main/java/eu/siacs/conversations/services/XmppConnectionService.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/AboutActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/AboutPreference.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/AbstractSearchableListItemActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ActionBarActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/BlockContactDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/BlocklistActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChannelDiscoveryActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChooseAccountForProfilePictureActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ContactDetailsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ConversationsOverviewFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/CreatePrivateGroupChatDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/CreatePublicChannelDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/JoinConferenceDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/LocationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/MediaBrowserActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/MemorizingActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/MucUsersActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/OmemoActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/PublishGroupChatProfilePictureActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/RecordingActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/RtpSessionActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ScanActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/SearchActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/SettingsActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/SettingsFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShareLocationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShortcutActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/ShowLocationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/TimePreference.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/UiCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/UiInformableCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/UriHandlerActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/XmppActivity.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/XmppFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/AccountAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/ChannelSearchResultAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/KnownHostsAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/MediaAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/MediaPreviewAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/PresenceTemplateAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/UserAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/adapter/UserPreviewAdapter.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormBooleanFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormFieldFactory.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormJidSingleFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormTextFieldWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/forms/FormWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnAvatarPublication.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnBackendConnected.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationArchived.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationRead.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationSelected.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnConversationsListItemUpdated.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnMediaLoaded.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/interfaces/OnSearchResultsAvailable.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/service/AudioPlayer.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/service/CameraManager.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/text/DividerSpan.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/text/FixedURLSpan.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/text/QuoteSpan.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ActionBarUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ActivityResult.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/Attachment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/AvatarWorkerTask.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ChangeWatcher.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ConversationMenuConfigurator.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/DateSeparator.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/DelayedHintHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/EditMessageActionModeCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/GridManager.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/JidDialog.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ListViewUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/LocationHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MainThreadExecutor.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MenuDoubleTabUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MucConfiguration.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MucDetailsContextMenuHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/MyLinkify.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/PendingActionHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/PresenceSelector.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/QuoteHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/Rationals.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ScrollState.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SendButtonAction.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SendButtonTool.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SettingsUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ShareUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/SoftKeyboardUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/StyledAttributes.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/UriHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/util/ViewUtil.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/ClickableMovementMethod.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/DisabledActionModeCallback.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/EditMessage.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/ImmediateAutoCompleteTextView.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/Marker.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/MyLocation.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/ScannerView.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/SquareFrameLayout.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/SurfaceViewRenderer.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/SwipeRefreshListFragment.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/TextInputEditText.java delete mode 100644 src/main/java/eu/siacs/conversations/ui/widget/UnreadCountCustomView.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AccountUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AndroidUsingExecLowPriority.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AppRTCUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/AsciiArmor.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/BackupFileHeader.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Cancellable.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/CharSequenceUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Checksum.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Compatibility.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ConversationsFileObserver.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/CryptoHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/CursorUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/EasyOnboardingInvite.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Emoticons.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ExceptionHandler.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/FileUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/FileWriterException.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/FtsUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/GeoHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/IP.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ImStyleParser.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/IrregularUnicodeDetector.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/JidHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/LanguageUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/LocationProvider.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/MessageUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/MimeUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/NickValidityChecker.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/OnPhoneContactsLoadedListener.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Patterns.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/PermissionUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/PhoneHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/QuickLoader.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/Random.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ReplacingSerialSingleThreadExecutor.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ReplacingTaskManager.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/SSLSockets.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/SerialSingleThreadExecutor.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/StringUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/StylingHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TLSSocketFactory.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/ThemeHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TimeFrameUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TorServiceUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/TranscoderStrategies.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/UIHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/WakeLockHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/WeakReferenceSet.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/XEP0392Helper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/XmlHelper.java delete mode 100644 src/main/java/eu/siacs/conversations/utils/XmppUri.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/Element.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/LocalizedContent.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/Namespace.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/Tag.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/TagWriter.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/XmlElementReader.java delete mode 100644 src/main/java/eu/siacs/conversations/xml/XmlReader.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/InvalidJid.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/IqResponseException.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/Jid.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnAdvancedStreamFeaturesLoaded.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnBindListener.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnContactStatusChanged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnIqPacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnKeyStatusUpdated.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnMessageAcknowledged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnMessagePacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnPresencePacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnStatusChanged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/OnUpdateBlocklist.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/PacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/WrappedJid.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/chatstate/ChatState.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/forms/Data.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/forms/Field.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/AbstractJingleConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/ContentAddition.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/DirectConnectionUtils.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleCandidate.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleFileTransferConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInBandTransport.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/JingleTransport.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/Media.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/MediaBuilder.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OmemoVerification.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OmemoVerifiedRtpContentMap.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnFileTransmissionStatusChanged.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnJinglePacketReceived.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnPrimaryCandidateFound.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OnTransportConnected.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/OngoingRtpSession.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/RtpCapability.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/RtpContentMap.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/RtpEndUserState.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/SessionDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/SessionDescriptionBuilder.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/ToneManager.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/TrackWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/VideoSourceWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/WebRTCWrapper.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Content.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/FileTransferDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/GenericDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/GenericTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Group.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/IbbTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/IceUdpTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/JinglePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/OmemoVerifiedIceUdpTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Proceed.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Propose.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/Reason.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/RtpDescription.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/jingle/stanzas/S5BTransportInfo.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/mam/MamReference.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/pep/PublishOptions.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractAcknowledgeableStanza.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/AbstractStanza.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/IqPacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/MessagePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/PresencePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/csi/ActivePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/csi/InactivePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/AckPacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/EnablePacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/RequestPacket.java delete mode 100644 src/main/java/eu/siacs/conversations/xmpp/stanzas/streammgmt/ResumePacket.java delete mode 100644 src/main/res/drawable-hdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-hdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-hdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-hdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-hdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-hdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-hdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-hdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-hdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-hdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_profile.png delete mode 100644 src/main/res/drawable-hdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-hdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_offline_dark.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-hdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-hdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-hdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-hdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-hdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-hdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-hdpi/marker.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-hdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-hdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-hdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-hdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-hdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-hdpi/play_video_black.png delete mode 100644 src/main/res/drawable-hdpi/play_video_white.png delete mode 100644 src/main/res/drawable-mdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-mdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-mdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-mdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-mdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-mdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-mdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-mdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-mdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-mdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_profile.png delete mode 100644 src/main/res/drawable-mdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-mdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_offline_dark.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-mdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-mdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-mdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-mdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-mdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-mdpi/marker.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-mdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-mdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-mdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-mdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-mdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-mdpi/play_video_black.png delete mode 100644 src/main/res/drawable-mdpi/play_video_white.png delete mode 100644 src/main/res/drawable-xhdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-xhdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-xhdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-xhdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-xhdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-xhdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-xhdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-xhdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-xhdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-xhdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_profile.png delete mode 100644 src/main/res/drawable-xhdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-xhdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_offline_dark.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-xhdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-xhdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-xhdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-xhdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-xhdpi/marker.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-xhdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-xhdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-xhdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-xhdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-xhdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-xhdpi/play_video_black.png delete mode 100644 src/main/res/drawable-xhdpi/play_video_white.png delete mode 100644 src/main/res/drawable-xxhdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-xxhdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-xxhdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-xxhdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_reply.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-xxhdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_profile.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_file_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_file_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_stat_alert_warning.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_stat_communication_import_export.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_wear_reply.png delete mode 100644 src/main/res/drawable-xxhdpi/marker.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-xxhdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-xxhdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-xxhdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-xxhdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-xxhdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-xxhdpi/play_video_black.png delete mode 100644 src/main/res/drawable-xxhdpi/play_video_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/baseline_tour_black_48.png delete mode 100644 src/main/res/drawable-xxxhdpi/baseline_tour_white_48.png delete mode 100644 src/main/res/drawable-xxxhdpi/date_bubble_grey.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/date_bubble_white.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_account_box_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_android_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_android_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_announcement_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_archive_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_archive_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_archive_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_camera.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_camera_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_document.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_document_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_file_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_location.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_location_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_photo.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_photo_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_record.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_record_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_videocam.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_attach_videocam_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_autorenew_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_backup_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_backup_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_block_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_bluetooth_audio_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_book_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_book_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_end_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_made_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_made_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_outgoing_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_outgoing_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_missed_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_received_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_received_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_call_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_camera_alt_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_cancel_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_cancel_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_chat_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_clear_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_cloud_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_content_copy_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_content_copy_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_crop_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_delete_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_description_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_description_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_directions_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_directions_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_done_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_done_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_drafts_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_edit_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_edit_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_event_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_event_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_file_download_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_flip_camera_android_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_forward_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_not_fixed_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_gps_not_fixed_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_group_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_group_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_headset_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_headset_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_headset_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_help_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_help_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_help_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_hourglass_empty_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_image_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_image_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_input_white_24dp.png delete mode 100755 src/main/res/drawable-xxxhdpi/ic_link_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_link_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_open_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_lock_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mic_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mode_edit_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_mode_edit_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_new_releases_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_new_releases_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_no_results_background_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_no_results_background_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_none_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_none_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_none_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_off_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_off_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_paused_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_paused_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_paused_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_white80.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_notifications_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_pause_black_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_pause_white_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_person_add_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_person_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_person_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_phone_in_talk_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_phone_in_talk_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_phone_in_talk_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_play_arrow_black_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_play_arrow_white_36dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_play_circle_filled_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_public_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_qr_code_scan_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_question_answer_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_refresh_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_refresh_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_replay_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_reply_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_room_black_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_room_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_room_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_save_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_save_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_search_background_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_search_background_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_search_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_picture_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_videocam_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_away.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_offline.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_offline_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_settings_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_settings_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_share_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_star_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_star_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_verified_fingerprint.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_verified_user_black_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_verified_user_white_18dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_videocam_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_voicemail_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_volume_off_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_volume_up_black_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_warning_white_24dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/ic_warning_white_48dp.png delete mode 100644 src/main/res/drawable-xxxhdpi/marker.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_dark.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_grey.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_warning.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_received_white.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_sent.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/message_bubble_sent_grey.9.png delete mode 100644 src/main/res/drawable-xxxhdpi/open_pdf_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/open_pdf_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_gif_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_gif_white.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_video_black.png delete mode 100644 src/main/res/drawable-xxxhdpi/play_video_white.png delete mode 100644 src/main/res/drawable/account_image_border.xml delete mode 100644 src/main/res/drawable/background.xml delete mode 100644 src/main/res/drawable/es_slidingpane_shadow.xml delete mode 100644 src/main/res/drawable/grey.xml delete mode 100644 src/main/res/drawable/greybackground.xml delete mode 100644 src/main/res/drawable/ic_baseline_check_24.xml delete mode 100644 src/main/res/drawable/ic_call_black54_24dp.xml delete mode 100644 src/main/res/drawable/ic_call_missed_white_24db.xml delete mode 100644 src/main/res/drawable/ic_call_white70_24dp.xml delete mode 100644 src/main/res/drawable/ic_directions_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_gps_fixed_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_gps_not_fixed_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_launcher_foreground.xml delete mode 100644 src/main/res/drawable/ic_place_black_24dp.xml delete mode 100644 src/main/res/drawable/ic_scroll_to_end_black.xml delete mode 100644 src/main/res/drawable/ic_scroll_to_end_white.xml delete mode 100644 src/main/res/drawable/ic_videocam_black54_24dp.xml delete mode 100644 src/main/res/drawable/ic_videocam_white70_24dp.xml delete mode 100644 src/main/res/drawable/ic_visibility.xml delete mode 100644 src/main/res/drawable/ic_visibility_off.xml delete mode 100644 src/main/res/drawable/list_item_background_dark.xml delete mode 100644 src/main/res/drawable/list_item_background_light.xml delete mode 100644 src/main/res/drawable/no_results_background_dark.xml delete mode 100644 src/main/res/drawable/no_results_background_light.xml delete mode 100644 src/main/res/drawable/no_results_primary_background_dark.xml delete mode 100644 src/main/res/drawable/no_results_primary_background_light.xml delete mode 100644 src/main/res/drawable/search_background_dark.xml delete mode 100644 src/main/res/drawable/search_background_light.xml delete mode 100644 src/main/res/drawable/snackbar.xml delete mode 100644 src/main/res/drawable/visibility_toggle_drawable.xml delete mode 100644 src/main/res/drawable/white_cursor.xml delete mode 100644 src/main/res/layout-w945dp/activity_conversations.xml delete mode 100644 src/main/res/layout/account_row.xml delete mode 100644 src/main/res/layout/actionview_search.xml delete mode 100644 src/main/res/layout/activity_about.xml delete mode 100644 src/main/res/layout/activity_change_password.xml delete mode 100644 src/main/res/layout/activity_channel_discovery.xml delete mode 100644 src/main/res/layout/activity_choose_contact.xml delete mode 100644 src/main/res/layout/activity_contact_details.xml delete mode 100644 src/main/res/layout/activity_conversations.xml delete mode 100644 src/main/res/layout/activity_edit_account.xml delete mode 100644 src/main/res/layout/activity_manage_accounts.xml delete mode 100644 src/main/res/layout/activity_media_browser.xml delete mode 100644 src/main/res/layout/activity_muc_details.xml delete mode 100644 src/main/res/layout/activity_muc_users.xml delete mode 100644 src/main/res/layout/activity_publish_profile_picture.xml delete mode 100644 src/main/res/layout/activity_recording.xml delete mode 100644 src/main/res/layout/activity_rtp_session.xml delete mode 100644 src/main/res/layout/activity_scan.xml delete mode 100644 src/main/res/layout/activity_search.xml delete mode 100644 src/main/res/layout/activity_settings.xml delete mode 100644 src/main/res/layout/activity_share_location.xml delete mode 100644 src/main/res/layout/activity_share_with.xml delete mode 100644 src/main/res/layout/activity_show_location.xml delete mode 100644 src/main/res/layout/activity_start_conversation.xml delete mode 100644 src/main/res/layout/activity_trust_keys.xml delete mode 100644 src/main/res/layout/activity_uri_handler.xml delete mode 100644 src/main/res/layout/captcha.xml delete mode 100644 src/main/res/layout/contact.xml delete mode 100644 src/main/res/layout/contact_key.xml delete mode 100644 src/main/res/layout/conversation_list_row.xml delete mode 100644 src/main/res/layout/create_conference_dialog.xml delete mode 100644 src/main/res/layout/create_public_channel_dialog.xml delete mode 100644 src/main/res/layout/dialog_block_contact.xml delete mode 100644 src/main/res/layout/dialog_clear_history.xml delete mode 100644 src/main/res/layout/dialog_join_conference.xml delete mode 100644 src/main/res/layout/dialog_presence.xml delete mode 100644 src/main/res/layout/dialog_quickedit.xml delete mode 100644 src/main/res/layout/dialog_verify_fingerprints.xml delete mode 100644 src/main/res/layout/enter_jid_dialog.xml delete mode 100644 src/main/res/layout/form_boolean.xml delete mode 100644 src/main/res/layout/form_text.xml delete mode 100644 src/main/res/layout/fragment_conversation.xml delete mode 100644 src/main/res/layout/fragment_conversations_overview.xml delete mode 100644 src/main/res/layout/keys_card.xml delete mode 100644 src/main/res/layout/list_item_tag.xml delete mode 100644 src/main/res/layout/media.xml delete mode 100644 src/main/res/layout/media_preview.xml delete mode 100644 src/main/res/layout/message_content.xml delete mode 100644 src/main/res/layout/message_date_bubble.xml delete mode 100644 src/main/res/layout/message_received.xml delete mode 100644 src/main/res/layout/message_rtp_session.xml delete mode 100644 src/main/res/layout/message_sent.xml delete mode 100644 src/main/res/layout/message_status.xml delete mode 100644 src/main/res/layout/presence_template.xml delete mode 100644 src/main/res/layout/search_result_item.xml delete mode 100644 src/main/res/layout/simple_list_item.xml delete mode 100644 src/main/res/layout/toolbar.xml delete mode 100644 src/main/res/layout/user_preview.xml delete mode 100644 src/main/res/menu/account_context.xml delete mode 100644 src/main/res/menu/activity_conversations.xml delete mode 100644 src/main/res/menu/activity_publish_profile_picture.xml delete mode 100644 src/main/res/menu/activity_rtp_session.xml delete mode 100644 src/main/res/menu/activity_search.xml delete mode 100644 src/main/res/menu/block.xml delete mode 100644 src/main/res/menu/channel_discovery_activity.xml delete mode 100644 src/main/res/menu/channel_item_context.xml delete mode 100644 src/main/res/menu/choose_contact.xml delete mode 100644 src/main/res/menu/conference_context.xml delete mode 100644 src/main/res/menu/contact_context.xml delete mode 100644 src/main/res/menu/contact_details.xml delete mode 100644 src/main/res/menu/edit_message_actions.xml delete mode 100644 src/main/res/menu/editaccount.xml delete mode 100644 src/main/res/menu/fragment_conversation.xml delete mode 100644 src/main/res/menu/fragment_conversations_overview.xml delete mode 100644 src/main/res/menu/import_backup.xml delete mode 100644 src/main/res/menu/manageaccounts_context.xml delete mode 100644 src/main/res/menu/menu_show_location.xml delete mode 100644 src/main/res/menu/message_context.xml delete mode 100644 src/main/res/menu/muc_details.xml delete mode 100644 src/main/res/menu/muc_details_context.xml delete mode 100644 src/main/res/menu/muc_users_activity.xml delete mode 100644 src/main/res/menu/omemo_key_context.xml delete mode 100644 src/main/res/menu/one_on_one_context.xml delete mode 100644 src/main/res/menu/search_result_context.xml delete mode 100644 src/main/res/menu/share_with.xml delete mode 100644 src/main/res/menu/start_conversation.xml delete mode 100644 src/main/res/menu/start_conversation_fab_submenu.xml delete mode 100644 src/main/res/menu/trust_keys.xml delete mode 100644 src/main/res/mipmap-hdpi/new_launcher.png delete mode 100644 src/main/res/mipmap-hdpi/new_launcher_round.png delete mode 100644 src/main/res/raw/countries delete mode 100644 src/main/res/values-h360dp/dimens.xml delete mode 100644 src/main/res/values-h500dp/dimens.xml delete mode 100644 src/main/res/values-land/dimens.xml delete mode 100644 src/main/res/values-night/colors.xml delete mode 100644 src/main/res/values-qwerty/defaults.xml delete mode 100644 src/main/res/values-sw600dp/defaults.xml delete mode 100644 src/main/res/values-v29/theme-settings.xml delete mode 100644 src/main/res/values-w384dp/dimens.xml delete mode 100644 src/main/res/values-w585dp/dimens.xml delete mode 100644 src/main/res/values-w945dp/defaults.xml delete mode 100644 src/main/res/values-w945dp/dimens.xml delete mode 100644 src/main/res/values/about.xml delete mode 100644 src/main/res/values/arrays.xml delete mode 100644 src/main/res/values/attrs.xml delete mode 100644 src/main/res/values/bools.xml delete mode 100644 src/main/res/values/colors.xml delete mode 100644 src/main/res/values/defaults.xml delete mode 100644 src/main/res/values/dimens.xml delete mode 100644 src/main/res/values/ids.xml delete mode 100644 src/main/res/values/styles.xml delete mode 100644 src/main/res/values/theme-settings.xml delete mode 100644 src/main/res/values/themes.xml delete mode 100644 src/main/res/xml/automotive_app_desc.xml delete mode 100644 src/main/res/xml/backup_content.xml delete mode 100644 src/main/res/xml/file_paths.xml delete mode 100644 src/main/res/xml/network_security_configuration.xml delete mode 100644 src/main/res/xml/preferences.xml delete mode 100644 src/playstore/AndroidManifest.xml delete mode 100644 src/playstore/java/eu/siacs/conversations/services/EmojiInitializationService.java delete mode 100644 src/playstore/java/eu/siacs/conversations/services/MaintenanceReceiver.java delete mode 100644 src/playstore/java/eu/siacs/conversations/services/PushManagementService.java delete mode 100644 src/playstore/java/eu/siacs/conversations/services/PushMessageReceiver.java delete mode 100644 src/quicksy/AndroidManifest.xml delete mode 100644 src/quicksy/java/eu/siacs/conversations/android/PhoneNumberContact.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/entities/Entry.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/services/QuickConversationsService.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/services/SMSReceiver.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/ChooseCountryActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/EnterNameActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/EnterPhoneNumberActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/TosActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/VerifyActivity.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/adapter/CountryAdapter.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/drawable/TextDrawable.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/util/ApiDialogHelper.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/ui/util/PinEntryWrapper.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/utils/ProvisioningUtils.java delete mode 100644 src/quicksy/java/eu/siacs/conversations/utils/SignupUtils.java delete mode 100644 src/quicksy/new_launcher-web.png delete mode 100644 src/quicksy/res/drawable-hdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-hdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-hdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-hdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-hdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-mdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-mdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-mdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-mdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-mdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-xhdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-xhdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-xhdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-xhdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-xhdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-xxhdpi/splash_logo.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/ic_arrow_drop_down_black_18dp.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/ic_notification.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/launcher.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/main_logo.png delete mode 100644 src/quicksy/res/drawable-xxxhdpi/splash_logo.png delete mode 100644 src/quicksy/res/layout/activity_choose_country.xml delete mode 100644 src/quicksy/res/layout/activity_enter_name.xml delete mode 100644 src/quicksy/res/layout/activity_enter_number.xml delete mode 100644 src/quicksy/res/layout/activity_tos.xml delete mode 100644 src/quicksy/res/layout/activity_verify.xml delete mode 100644 src/quicksy/res/layout/country_item.xml delete mode 100644 src/quicksy/res/menu/choose_country.xml delete mode 100644 src/quicksyFree/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java delete mode 100644 src/quicksyPlaystore/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java diff --git a/annotation-processor/build.gradle b/annotation-processor/build.gradle new file mode 100644 index 000000000..4518d0e5b --- /dev/null +++ b/annotation-processor/build.gradle @@ -0,0 +1,14 @@ +apply plugin: "java-library" + +java { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 +} +dependencies { + + implementation project(':annotation') + + annotationProcessor 'com.google.auto.service:auto-service:1.0.1' + compileOnly 'com.google.auto.service:auto-service:1.0.1' + +} \ No newline at end of file diff --git a/libs/annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java b/annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java similarity index 100% rename from libs/annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java rename to annotation-processor/src/main/java/im/conversations/android/annotation/processor/XmlElementProcessor.java diff --git a/annotation/build.gradle b/annotation/build.gradle new file mode 100644 index 000000000..d5917e460 --- /dev/null +++ b/annotation/build.gradle @@ -0,0 +1,6 @@ +apply plugin: "java-library" + +java { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 +} \ No newline at end of file diff --git a/libs/annotation/src/main/java/im/conversations/android/annotation/XmlElement.java b/annotation/src/main/java/im/conversations/android/annotation/XmlElement.java similarity index 100% rename from libs/annotation/src/main/java/im/conversations/android/annotation/XmlElement.java rename to annotation/src/main/java/im/conversations/android/annotation/XmlElement.java diff --git a/libs/annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java b/annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java similarity index 100% rename from libs/annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java rename to annotation/src/main/java/im/conversations/android/annotation/XmlPackage.java diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 000000000..7711816a5 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,127 @@ +apply plugin: "com.android.application" +apply plugin: "androidx.navigation.safeargs" +apply plugin: "com.diffplug.spotless" + + +android { + namespace 'im.conversations.android' + compileSdk 33 + + defaultConfig { + minSdk 23 + targetSdk 33 + versionCode 1 + versionName "3.0.0-alpha" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + javaCompileOptions { + annotationProcessorOptions { + arguments += ["room.schemaLocation": "$projectDir/schemas".toString()] + } + } + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + coreLibraryDesugaringEnabled true + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 + } + buildFeatures { + dataBinding true + } + flavorDimensions "product" + productFlavors { + quicksy { + dimension "product" + applicationId = "im.quicksy.client" + + def appName = "Quicksy" + + resValue "string", "applicationId", applicationId + resValue "string", "app_name", appName + buildConfigField "String", "APP_NAME", "\"$appName\"" + } + conversations { + dimension "product" + applicationId "im.conversations.android" + + def appName = "Conversations" + + resValue "string", "applicationId", applicationId + resValue "string", "app_name", appName + buildConfigField "String", "APP_NAME", "\"$appName\"" + } + } + +} + +spotless { + java { + target '**/*.java' + googleJavaFormat('1.8').aosp().reflowLongStrings() + } +} + +dependencies { + implementation project(':annotation') + annotationProcessor project(':annotation-processor') + + // make Java 8 API available + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.2' + + + // Jetpack / AndroidX libraries + implementation "androidx.appcompat:appcompat:$rootProject.ext.appcompatVersion" + + implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.ext.lifecycleVersion" + implementation "androidx.navigation:navigation-fragment:$rootProject.ext.navVersion" + implementation "androidx.navigation:navigation-ui:$rootProject.ext.navVersion" + + implementation "androidx.room:room-runtime:$rootProject.ext.roomVersion" + implementation "androidx.room:room-guava:$rootProject.ext.roomVersion" + annotationProcessor "androidx.room:room-compiler:$rootProject.ext.roomVersion" + + implementation "androidx.security:security-crypto:1.0.0" + + + // Google material design libraries + implementation "com.google.android.material:material:$rootProject.ext.material" + + + // crypto libraries + implementation 'org.whispersystems:signal-protocol-java:2.6.2' + implementation 'org.conscrypt:conscrypt-android:2.5.2' + implementation 'org.bouncycastle:bcmail-jdk15on:1.64' + + + // XMPP Address library + implementation 'org.jxmpp:jxmpp-jid:1.0.3' + + // DNS library (XMPP needs to resolve SRV records) + implementation 'de.measite.minidns:minidns-hla:0.2.4' + + // Guava + implementation 'com.google.guava:guava:31.1-android' + + // HTTP library + implementation "com.squareup.okhttp3:okhttp:4.10.0" + + // JSON parser + implementation 'com.google.code.gson:gson:2.10.1' + + // logging framework + logging api + implementation 'org.slf4j:slf4j-api:1.7.36' + implementation 'com.github.tony19:logback-android:2.0.1' + + testImplementation 'junit:junit:4.13.2' + testImplementation 'org.robolectric:robolectric:4.9.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.ext.espressoVersion" +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 000000000..481bb4348 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/schemas/im.conversations.android.database.ConversationsDatabase/1.json b/app/schemas/im.conversations.android.database.ConversationsDatabase/1.json similarity index 100% rename from schemas/im.conversations.android.database.ConversationsDatabase/1.json rename to app/schemas/im.conversations.android.database.ConversationsDatabase/1.json diff --git a/src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java b/app/src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java similarity index 100% rename from src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java rename to app/src/androidTest/java/im/conversations/android/xmpp/TransformationTest.java diff --git a/src/conversations/res/drawable/ic_launcher_foreground.xml b/app/src/conversations/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from src/conversations/res/drawable/ic_launcher_foreground.xml rename to app/src/conversations/res/drawable/ic_launcher_foreground.xml diff --git a/src/conversations/res/mipmap-anydpi-v26/new_launcher.xml b/app/src/conversations/res/mipmap-anydpi-v26/new_launcher.xml similarity index 100% rename from src/conversations/res/mipmap-anydpi-v26/new_launcher.xml rename to app/src/conversations/res/mipmap-anydpi-v26/new_launcher.xml diff --git a/src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml b/app/src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml similarity index 100% rename from src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml rename to app/src/conversations/res/mipmap-anydpi-v26/new_launcher_round.xml diff --git a/src/main/res/mipmap-hdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-hdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-hdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-hdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-hdpi/new_launcher.png b/app/src/conversations/res/mipmap-hdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-hdpi/new_launcher.png rename to app/src/conversations/res/mipmap-hdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-hdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-hdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-hdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-hdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-mdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-mdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-mdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-mdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-mdpi/new_launcher.png b/app/src/conversations/res/mipmap-mdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-mdpi/new_launcher.png rename to app/src/conversations/res/mipmap-mdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-mdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-mdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-mdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-mdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-xhdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-xhdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-xhdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-xhdpi/new_launcher.png b/app/src/conversations/res/mipmap-xhdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-xhdpi/new_launcher.png rename to app/src/conversations/res/mipmap-xhdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-xhdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-xhdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-xhdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-xhdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-xxhdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-xxhdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-xxhdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-xxhdpi/new_launcher.png b/app/src/conversations/res/mipmap-xxhdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-xxhdpi/new_launcher.png rename to app/src/conversations/res/mipmap-xxhdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-xxhdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-xxhdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-xxhdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-xxhdpi/new_launcher_round.png diff --git a/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/conversations/res/mipmap-xxxhdpi/ic_launcher_background.png similarity index 100% rename from src/main/res/mipmap-xxxhdpi/ic_launcher_background.png rename to app/src/conversations/res/mipmap-xxxhdpi/ic_launcher_background.png diff --git a/src/conversations/res/mipmap-xxxhdpi/new_launcher.png b/app/src/conversations/res/mipmap-xxxhdpi/new_launcher.png similarity index 100% rename from src/conversations/res/mipmap-xxxhdpi/new_launcher.png rename to app/src/conversations/res/mipmap-xxxhdpi/new_launcher.png diff --git a/src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png b/app/src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png similarity index 100% rename from src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png rename to app/src/conversations/res/mipmap-xxxhdpi/new_launcher_round.png diff --git a/src/conversations/res/values-ar/strings.xml b/app/src/conversations/res/values-ar/strings.xml similarity index 100% rename from src/conversations/res/values-ar/strings.xml rename to app/src/conversations/res/values-ar/strings.xml diff --git a/src/conversations/res/values-bg/strings.xml b/app/src/conversations/res/values-bg/strings.xml similarity index 100% rename from src/conversations/res/values-bg/strings.xml rename to app/src/conversations/res/values-bg/strings.xml diff --git a/src/conversations/res/values-bn-rIN/strings.xml b/app/src/conversations/res/values-bn-rIN/strings.xml similarity index 100% rename from src/conversations/res/values-bn-rIN/strings.xml rename to app/src/conversations/res/values-bn-rIN/strings.xml diff --git a/src/conversations/res/values-ca/strings.xml b/app/src/conversations/res/values-ca/strings.xml similarity index 100% rename from src/conversations/res/values-ca/strings.xml rename to app/src/conversations/res/values-ca/strings.xml diff --git a/src/conversations/res/values-da-rDK/strings.xml b/app/src/conversations/res/values-da-rDK/strings.xml similarity index 100% rename from src/conversations/res/values-da-rDK/strings.xml rename to app/src/conversations/res/values-da-rDK/strings.xml diff --git a/src/conversations/res/values-de/strings.xml b/app/src/conversations/res/values-de/strings.xml similarity index 100% rename from src/conversations/res/values-de/strings.xml rename to app/src/conversations/res/values-de/strings.xml diff --git a/src/conversations/res/values-el/strings.xml b/app/src/conversations/res/values-el/strings.xml similarity index 100% rename from src/conversations/res/values-el/strings.xml rename to app/src/conversations/res/values-el/strings.xml diff --git a/src/conversations/res/values-es/strings.xml b/app/src/conversations/res/values-es/strings.xml similarity index 100% rename from src/conversations/res/values-es/strings.xml rename to app/src/conversations/res/values-es/strings.xml diff --git a/src/conversations/res/values-eu/strings.xml b/app/src/conversations/res/values-eu/strings.xml similarity index 100% rename from src/conversations/res/values-eu/strings.xml rename to app/src/conversations/res/values-eu/strings.xml diff --git a/src/conversations/res/values-fa-rIR/strings.xml b/app/src/conversations/res/values-fa-rIR/strings.xml similarity index 100% rename from src/conversations/res/values-fa-rIR/strings.xml rename to app/src/conversations/res/values-fa-rIR/strings.xml diff --git a/src/conversations/res/values-fi/strings.xml b/app/src/conversations/res/values-fi/strings.xml similarity index 100% rename from src/conversations/res/values-fi/strings.xml rename to app/src/conversations/res/values-fi/strings.xml diff --git a/src/conversations/res/values-fr/strings.xml b/app/src/conversations/res/values-fr/strings.xml similarity index 100% rename from src/conversations/res/values-fr/strings.xml rename to app/src/conversations/res/values-fr/strings.xml diff --git a/src/conversations/res/values-gl/strings.xml b/app/src/conversations/res/values-gl/strings.xml similarity index 100% rename from src/conversations/res/values-gl/strings.xml rename to app/src/conversations/res/values-gl/strings.xml diff --git a/src/conversations/res/values-hr/strings.xml b/app/src/conversations/res/values-hr/strings.xml similarity index 100% rename from src/conversations/res/values-hr/strings.xml rename to app/src/conversations/res/values-hr/strings.xml diff --git a/src/conversations/res/values-hu/strings.xml b/app/src/conversations/res/values-hu/strings.xml similarity index 100% rename from src/conversations/res/values-hu/strings.xml rename to app/src/conversations/res/values-hu/strings.xml diff --git a/src/conversations/res/values-id/strings.xml b/app/src/conversations/res/values-id/strings.xml similarity index 100% rename from src/conversations/res/values-id/strings.xml rename to app/src/conversations/res/values-id/strings.xml diff --git a/src/conversations/res/values-it/strings.xml b/app/src/conversations/res/values-it/strings.xml similarity index 100% rename from src/conversations/res/values-it/strings.xml rename to app/src/conversations/res/values-it/strings.xml diff --git a/src/conversations/res/values-ja/strings.xml b/app/src/conversations/res/values-ja/strings.xml similarity index 100% rename from src/conversations/res/values-ja/strings.xml rename to app/src/conversations/res/values-ja/strings.xml diff --git a/src/conversations/res/values-nl/strings.xml b/app/src/conversations/res/values-nl/strings.xml similarity index 100% rename from src/conversations/res/values-nl/strings.xml rename to app/src/conversations/res/values-nl/strings.xml diff --git a/src/conversations/res/values-pl/strings.xml b/app/src/conversations/res/values-pl/strings.xml similarity index 100% rename from src/conversations/res/values-pl/strings.xml rename to app/src/conversations/res/values-pl/strings.xml diff --git a/src/conversations/res/values-pt-rBR/strings.xml b/app/src/conversations/res/values-pt-rBR/strings.xml similarity index 100% rename from src/conversations/res/values-pt-rBR/strings.xml rename to app/src/conversations/res/values-pt-rBR/strings.xml diff --git a/src/conversations/res/values-pt/strings.xml b/app/src/conversations/res/values-pt/strings.xml similarity index 100% rename from src/conversations/res/values-pt/strings.xml rename to app/src/conversations/res/values-pt/strings.xml diff --git a/src/conversations/res/values-ro-rRO/strings.xml b/app/src/conversations/res/values-ro-rRO/strings.xml similarity index 100% rename from src/conversations/res/values-ro-rRO/strings.xml rename to app/src/conversations/res/values-ro-rRO/strings.xml diff --git a/src/conversations/res/values-ru/strings.xml b/app/src/conversations/res/values-ru/strings.xml similarity index 100% rename from src/conversations/res/values-ru/strings.xml rename to app/src/conversations/res/values-ru/strings.xml diff --git a/src/conversations/res/values-sk/strings.xml b/app/src/conversations/res/values-sk/strings.xml similarity index 100% rename from src/conversations/res/values-sk/strings.xml rename to app/src/conversations/res/values-sk/strings.xml diff --git a/src/conversations/res/values-sq/strings.xml b/app/src/conversations/res/values-sq/strings.xml similarity index 100% rename from src/conversations/res/values-sq/strings.xml rename to app/src/conversations/res/values-sq/strings.xml diff --git a/src/conversations/res/values-sr/strings.xml b/app/src/conversations/res/values-sr/strings.xml similarity index 100% rename from src/conversations/res/values-sr/strings.xml rename to app/src/conversations/res/values-sr/strings.xml diff --git a/src/conversations/res/values-sv/strings.xml b/app/src/conversations/res/values-sv/strings.xml similarity index 100% rename from src/conversations/res/values-sv/strings.xml rename to app/src/conversations/res/values-sv/strings.xml diff --git a/src/conversations/res/values-szl/strings.xml b/app/src/conversations/res/values-szl/strings.xml similarity index 100% rename from src/conversations/res/values-szl/strings.xml rename to app/src/conversations/res/values-szl/strings.xml diff --git a/src/conversations/res/values-tr-rTR/strings.xml b/app/src/conversations/res/values-tr-rTR/strings.xml similarity index 100% rename from src/conversations/res/values-tr-rTR/strings.xml rename to app/src/conversations/res/values-tr-rTR/strings.xml diff --git a/src/conversations/res/values-uk/strings.xml b/app/src/conversations/res/values-uk/strings.xml similarity index 100% rename from src/conversations/res/values-uk/strings.xml rename to app/src/conversations/res/values-uk/strings.xml diff --git a/src/conversations/res/values-vi/strings.xml b/app/src/conversations/res/values-vi/strings.xml similarity index 100% rename from src/conversations/res/values-vi/strings.xml rename to app/src/conversations/res/values-vi/strings.xml diff --git a/src/conversations/res/values-zh-rCN/strings.xml b/app/src/conversations/res/values-zh-rCN/strings.xml similarity index 100% rename from src/conversations/res/values-zh-rCN/strings.xml rename to app/src/conversations/res/values-zh-rCN/strings.xml diff --git a/src/conversations/res/values-zh-rTW/strings.xml b/app/src/conversations/res/values-zh-rTW/strings.xml similarity index 100% rename from src/conversations/res/values-zh-rTW/strings.xml rename to app/src/conversations/res/values-zh-rTW/strings.xml diff --git a/src/conversations/res/values/strings.xml b/app/src/conversations/res/values/strings.xml similarity index 100% rename from src/conversations/res/values/strings.xml rename to app/src/conversations/res/values/strings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000..808baf278 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/assets/logback.xml b/app/src/main/assets/logback.xml similarity index 100% rename from src/main/assets/logback.xml rename to app/src/main/assets/logback.xml diff --git a/src/main/java/im/conversations/android/Conversations.java b/app/src/main/java/im/conversations/android/Conversations.java similarity index 79% rename from src/main/java/im/conversations/android/Conversations.java rename to app/src/main/java/im/conversations/android/Conversations.java index f34ffed9c..16005816d 100644 --- a/src/main/java/im/conversations/android/Conversations.java +++ b/app/src/main/java/im/conversations/android/Conversations.java @@ -1,7 +1,11 @@ package im.conversations.android; import android.app.Application; + +import androidx.appcompat.app.AppCompatDelegate; + import com.google.android.material.color.DynamicColors; +import im.conversations.android.dns.Resolver; import im.conversations.android.xmpp.ConnectionPool; import java.security.SecureRandom; import java.security.Security; @@ -23,7 +27,9 @@ public class Conversations extends Application { } catch (final Throwable throwable) { LOGGER.warn("Could not initialize security provider", throwable); } + Resolver.init(this); ConnectionPool.getInstance(this).reconfigure(); + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM); //For night mode theme DynamicColors.applyToActivitiesIfAvailable(this); } } diff --git a/src/main/java/im/conversations/android/IDs.java b/app/src/main/java/im/conversations/android/IDs.java similarity index 100% rename from src/main/java/im/conversations/android/IDs.java rename to app/src/main/java/im/conversations/android/IDs.java diff --git a/src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java b/app/src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java similarity index 100% rename from src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java rename to app/src/main/java/im/conversations/android/database/AxolotlDatabaseStore.java diff --git a/src/main/java/im/conversations/android/database/ConversationsDatabase.java b/app/src/main/java/im/conversations/android/database/ConversationsDatabase.java similarity index 100% rename from src/main/java/im/conversations/android/database/ConversationsDatabase.java rename to app/src/main/java/im/conversations/android/database/ConversationsDatabase.java diff --git a/src/main/java/im/conversations/android/database/Converters.java b/app/src/main/java/im/conversations/android/database/Converters.java similarity index 100% rename from src/main/java/im/conversations/android/database/Converters.java rename to app/src/main/java/im/conversations/android/database/Converters.java diff --git a/src/main/java/im/conversations/android/database/CredentialStore.java b/app/src/main/java/im/conversations/android/database/CredentialStore.java similarity index 100% rename from src/main/java/im/conversations/android/database/CredentialStore.java rename to app/src/main/java/im/conversations/android/database/CredentialStore.java diff --git a/src/main/java/im/conversations/android/database/dao/AccountDao.java b/app/src/main/java/im/conversations/android/database/dao/AccountDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/AccountDao.java rename to app/src/main/java/im/conversations/android/database/dao/AccountDao.java diff --git a/src/main/java/im/conversations/android/database/dao/AvatarDao.java b/app/src/main/java/im/conversations/android/database/dao/AvatarDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/AvatarDao.java rename to app/src/main/java/im/conversations/android/database/dao/AvatarDao.java diff --git a/src/main/java/im/conversations/android/database/dao/AxolotlDao.java b/app/src/main/java/im/conversations/android/database/dao/AxolotlDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/AxolotlDao.java rename to app/src/main/java/im/conversations/android/database/dao/AxolotlDao.java diff --git a/src/main/java/im/conversations/android/database/dao/BlockingDao.java b/app/src/main/java/im/conversations/android/database/dao/BlockingDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/BlockingDao.java rename to app/src/main/java/im/conversations/android/database/dao/BlockingDao.java diff --git a/src/main/java/im/conversations/android/database/dao/BookmarkDao.java b/app/src/main/java/im/conversations/android/database/dao/BookmarkDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/BookmarkDao.java rename to app/src/main/java/im/conversations/android/database/dao/BookmarkDao.java diff --git a/src/main/java/im/conversations/android/database/dao/ChatDao.java b/app/src/main/java/im/conversations/android/database/dao/ChatDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/ChatDao.java rename to app/src/main/java/im/conversations/android/database/dao/ChatDao.java diff --git a/src/main/java/im/conversations/android/database/dao/DiscoDao.java b/app/src/main/java/im/conversations/android/database/dao/DiscoDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/DiscoDao.java rename to app/src/main/java/im/conversations/android/database/dao/DiscoDao.java diff --git a/src/main/java/im/conversations/android/database/dao/MessageDao.java b/app/src/main/java/im/conversations/android/database/dao/MessageDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/MessageDao.java rename to app/src/main/java/im/conversations/android/database/dao/MessageDao.java diff --git a/src/main/java/im/conversations/android/database/dao/NickDao.java b/app/src/main/java/im/conversations/android/database/dao/NickDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/NickDao.java rename to app/src/main/java/im/conversations/android/database/dao/NickDao.java diff --git a/src/main/java/im/conversations/android/database/dao/PresenceDao.java b/app/src/main/java/im/conversations/android/database/dao/PresenceDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/PresenceDao.java rename to app/src/main/java/im/conversations/android/database/dao/PresenceDao.java diff --git a/src/main/java/im/conversations/android/database/dao/RosterDao.java b/app/src/main/java/im/conversations/android/database/dao/RosterDao.java similarity index 100% rename from src/main/java/im/conversations/android/database/dao/RosterDao.java rename to app/src/main/java/im/conversations/android/database/dao/RosterDao.java diff --git a/src/main/java/im/conversations/android/database/entity/AccountEntity.java b/app/src/main/java/im/conversations/android/database/entity/AccountEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AccountEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AccountEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java b/app/src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AvatarAdditionalEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AvatarEntity.java b/app/src/main/java/im/conversations/android/database/entity/AvatarEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AvatarEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AvatarEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlDeviceListItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlIdentityKeyPairEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlPreKeyEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlSessionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java b/app/src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java rename to app/src/main/java/im/conversations/android/database/entity/AxolotlSignedPreKeyEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/BlockedItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/BookmarkEntity.java b/app/src/main/java/im/conversations/android/database/entity/BookmarkEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/BookmarkEntity.java rename to app/src/main/java/im/conversations/android/database/entity/BookmarkEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/ChatEntity.java b/app/src/main/java/im/conversations/android/database/entity/ChatEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/ChatEntity.java rename to app/src/main/java/im/conversations/android/database/entity/ChatEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoExtensionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoExtensionFieldValueEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoFeatureEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoIdentityEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/DiscoItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageContentEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageContentEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageContentEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageContentEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageReactionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageStateEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageStateEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageStateEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageStateEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java b/app/src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java rename to app/src/main/java/im/conversations/android/database/entity/MessageVersionEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/NickEntity.java b/app/src/main/java/im/conversations/android/database/entity/NickEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/NickEntity.java rename to app/src/main/java/im/conversations/android/database/entity/NickEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/PresenceEntity.java b/app/src/main/java/im/conversations/android/database/entity/PresenceEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/PresenceEntity.java rename to app/src/main/java/im/conversations/android/database/entity/PresenceEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/RosterItemEntity.java b/app/src/main/java/im/conversations/android/database/entity/RosterItemEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/RosterItemEntity.java rename to app/src/main/java/im/conversations/android/database/entity/RosterItemEntity.java diff --git a/src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java b/app/src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java similarity index 100% rename from src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java rename to app/src/main/java/im/conversations/android/database/entity/RosterItemGroupEntity.java diff --git a/src/main/java/im/conversations/android/database/model/Account.java b/app/src/main/java/im/conversations/android/database/model/Account.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Account.java rename to app/src/main/java/im/conversations/android/database/model/Account.java diff --git a/src/main/java/im/conversations/android/database/model/AvatarBase.java b/app/src/main/java/im/conversations/android/database/model/AvatarBase.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/AvatarBase.java rename to app/src/main/java/im/conversations/android/database/model/AvatarBase.java diff --git a/src/main/java/im/conversations/android/database/model/AvatarExternal.java b/app/src/main/java/im/conversations/android/database/model/AvatarExternal.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/AvatarExternal.java rename to app/src/main/java/im/conversations/android/database/model/AvatarExternal.java diff --git a/src/main/java/im/conversations/android/database/model/AvatarThumbnail.java b/app/src/main/java/im/conversations/android/database/model/AvatarThumbnail.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/AvatarThumbnail.java rename to app/src/main/java/im/conversations/android/database/model/AvatarThumbnail.java diff --git a/src/main/java/im/conversations/android/database/model/ChatIdentifier.java b/app/src/main/java/im/conversations/android/database/model/ChatIdentifier.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/ChatIdentifier.java rename to app/src/main/java/im/conversations/android/database/model/ChatIdentifier.java diff --git a/src/main/java/im/conversations/android/database/model/ChatType.java b/app/src/main/java/im/conversations/android/database/model/ChatType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/ChatType.java rename to app/src/main/java/im/conversations/android/database/model/ChatType.java diff --git a/src/main/java/im/conversations/android/database/model/Connection.java b/app/src/main/java/im/conversations/android/database/model/Connection.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Connection.java rename to app/src/main/java/im/conversations/android/database/model/Connection.java diff --git a/src/main/java/im/conversations/android/database/model/Credential.java b/app/src/main/java/im/conversations/android/database/model/Credential.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Credential.java rename to app/src/main/java/im/conversations/android/database/model/Credential.java diff --git a/src/main/java/im/conversations/android/database/model/MessageContent.java b/app/src/main/java/im/conversations/android/database/model/MessageContent.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageContent.java rename to app/src/main/java/im/conversations/android/database/model/MessageContent.java diff --git a/src/main/java/im/conversations/android/database/model/MessageEmbedded.java b/app/src/main/java/im/conversations/android/database/model/MessageEmbedded.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageEmbedded.java rename to app/src/main/java/im/conversations/android/database/model/MessageEmbedded.java diff --git a/src/main/java/im/conversations/android/database/model/MessageIdentifier.java b/app/src/main/java/im/conversations/android/database/model/MessageIdentifier.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageIdentifier.java rename to app/src/main/java/im/conversations/android/database/model/MessageIdentifier.java diff --git a/src/main/java/im/conversations/android/database/model/MessageReaction.java b/app/src/main/java/im/conversations/android/database/model/MessageReaction.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageReaction.java rename to app/src/main/java/im/conversations/android/database/model/MessageReaction.java diff --git a/src/main/java/im/conversations/android/database/model/MessageState.java b/app/src/main/java/im/conversations/android/database/model/MessageState.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageState.java rename to app/src/main/java/im/conversations/android/database/model/MessageState.java diff --git a/src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java b/app/src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java rename to app/src/main/java/im/conversations/android/database/model/MessageWithContentReactions.java diff --git a/src/main/java/im/conversations/android/database/model/Modification.java b/app/src/main/java/im/conversations/android/database/model/Modification.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Modification.java rename to app/src/main/java/im/conversations/android/database/model/Modification.java diff --git a/src/main/java/im/conversations/android/database/model/PartType.java b/app/src/main/java/im/conversations/android/database/model/PartType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/PartType.java rename to app/src/main/java/im/conversations/android/database/model/PartType.java diff --git a/src/main/java/im/conversations/android/database/model/PresenceShow.java b/app/src/main/java/im/conversations/android/database/model/PresenceShow.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/PresenceShow.java rename to app/src/main/java/im/conversations/android/database/model/PresenceShow.java diff --git a/src/main/java/im/conversations/android/database/model/PresenceType.java b/app/src/main/java/im/conversations/android/database/model/PresenceType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/PresenceType.java rename to app/src/main/java/im/conversations/android/database/model/PresenceType.java diff --git a/src/main/java/im/conversations/android/database/model/Proxy.java b/app/src/main/java/im/conversations/android/database/model/Proxy.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/Proxy.java rename to app/src/main/java/im/conversations/android/database/model/Proxy.java diff --git a/src/main/java/im/conversations/android/database/model/StateType.java b/app/src/main/java/im/conversations/android/database/model/StateType.java similarity index 100% rename from src/main/java/im/conversations/android/database/model/StateType.java rename to app/src/main/java/im/conversations/android/database/model/StateType.java diff --git a/app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java b/app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java new file mode 100644 index 000000000..09d13813d --- /dev/null +++ b/app/src/main/java/im/conversations/android/dns/AndroidUsingExecLowPriority.java @@ -0,0 +1,88 @@ +/* + * Copyright 2015-2016 the original author or authors + * + * This software is licensed under the Apache License, Version 2.0, + * the GNU Lesser General Public License version 2 or later ("LGPL") + * and the WTFPL. + * You may choose either license to govern your use of this software only + * upon the condition that you accept all of the terms of either + * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. + */ +package im.conversations.android.dns; + +import de.measite.minidns.dnsserverlookup.AbstractDNSServerLookupMechanism; +import de.measite.minidns.dnsserverlookup.AndroidUsingReflection; +import de.measite.minidns.dnsserverlookup.DNSServerLookupMechanism; +import de.measite.minidns.util.PlatformDetection; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.LineNumberReader; +import java.net.InetAddress; +import java.util.HashSet; +import java.util.logging.Level; + +/** Try to retrieve the list of DNS server by executing getprop. */ +public class AndroidUsingExecLowPriority extends AbstractDNSServerLookupMechanism { + + public static final DNSServerLookupMechanism INSTANCE = new AndroidUsingExecLowPriority(); + public static final int PRIORITY = AndroidUsingReflection.PRIORITY + 1; + + private AndroidUsingExecLowPriority() { + super(AndroidUsingExecLowPriority.class.getSimpleName(), PRIORITY); + } + + @Override + public String[] getDnsServerAddresses() { + try { + Process process = Runtime.getRuntime().exec("getprop"); + InputStream inputStream = process.getInputStream(); + LineNumberReader lnr = new LineNumberReader(new InputStreamReader(inputStream)); + String line; + HashSet server = new HashSet<>(6); + while ((line = lnr.readLine()) != null) { + int split = line.indexOf("]: ["); + if (split == -1) { + continue; + } + String property = line.substring(1, split); + String value = line.substring(split + 4, line.length() - 1); + + if (value.isEmpty()) { + continue; + } + + if (property.endsWith(".dns") + || property.endsWith(".dns1") + || property.endsWith(".dns2") + || property.endsWith(".dns3") + || property.endsWith(".dns4")) { + + // normalize the address + + InetAddress ip = InetAddress.getByName(value); + + if (ip == null) continue; + + value = ip.getHostAddress(); + + if (value == null) continue; + if (value.length() == 0) continue; + + server.add(value); + } + } + if (server.size() > 0) { + return server.toArray(new String[server.size()]); + } + } catch (IOException e) { + LOGGER.log(Level.WARNING, "Exception in findDNSByExec", e); + } + return null; + } + + @Override + public boolean isAvailable() { + return PlatformDetection.isAndroid(); + } +} diff --git a/src/main/java/eu/siacs/conversations/utils/AndroidUsingLinkProperties.java b/app/src/main/java/im/conversations/android/dns/AndroidUsingLinkProperties.java similarity index 67% rename from src/main/java/eu/siacs/conversations/utils/AndroidUsingLinkProperties.java rename to app/src/main/java/im/conversations/android/dns/AndroidUsingLinkProperties.java index 658e7abcd..e164f1b27 100644 --- a/src/main/java/eu/siacs/conversations/utils/AndroidUsingLinkProperties.java +++ b/app/src/main/java/im/conversations/android/dns/AndroidUsingLinkProperties.java @@ -1,22 +1,18 @@ -package eu.siacs.conversations.utils; +package im.conversations.android.dns; -import android.annotation.TargetApi; import android.content.Context; import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.Network; import android.net.NetworkInfo; import android.net.RouteInfo; -import android.os.Build; - +import de.measite.minidns.dnsserverlookup.AbstractDNSServerLookupMechanism; +import de.measite.minidns.dnsserverlookup.AndroidUsingExec; import java.net.Inet4Address; import java.net.InetAddress; import java.util.ArrayList; import java.util.List; -import de.measite.minidns.dnsserverlookup.AbstractDNSServerLookupMechanism; -import de.measite.minidns.dnsserverlookup.AndroidUsingExec; - public class AndroidUsingLinkProperties extends AbstractDNSServerLookupMechanism { private final Context context; @@ -28,47 +24,47 @@ public class AndroidUsingLinkProperties extends AbstractDNSServerLookupMechanism @Override public boolean isAvailable() { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP; + return true; } @Override - @TargetApi(21) public String[] getDnsServerAddresses() { - final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - final Network[] networks = connectivityManager == null ? null : connectivityManager.getAllNetworks(); + final ConnectivityManager connectivityManager = + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + final Network[] networks = + connectivityManager == null ? null : connectivityManager.getAllNetworks(); if (networks == null) { return new String[0]; } - final Network activeNetwork = getActiveNetwork(connectivityManager); + final Network activeNetwork = connectivityManager.getActiveNetwork(); final List servers = new ArrayList<>(); int vpnOffset = 0; - for(Network network : networks) { + for (Network network : networks) { LinkProperties linkProperties = connectivityManager.getLinkProperties(network); if (linkProperties == null) { continue; } final NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network); final boolean isActiveNetwork = network.equals(activeNetwork); - final boolean isVpn = networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_VPN; + final boolean isVpn = + networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_VPN; if (isActiveNetwork && isVpn) { final List tmp = getIPv4First(linkProperties.getDnsServers()); servers.addAll(0, tmp); vpnOffset += tmp.size(); - } else if (hasDefaultRoute(linkProperties) || isActiveNetwork || activeNetwork == null || isVpn) { + } else if (hasDefaultRoute(linkProperties) + || isActiveNetwork + || activeNetwork == null + || isVpn) { servers.addAll(vpnOffset, getIPv4First(linkProperties.getDnsServers())); } } return servers.toArray(new String[0]); } - @TargetApi(23) - private static Network getActiveNetwork(ConnectivityManager cm) { - return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M ? cm.getActiveNetwork() : null; - } - private static List getIPv4First(List in) { List out = new ArrayList<>(); - for(InetAddress address : in) { + for (InetAddress address : in) { if (address instanceof Inet4Address) { out.add(0, address.getHostAddress()); } else { @@ -78,9 +74,8 @@ public class AndroidUsingLinkProperties extends AbstractDNSServerLookupMechanism return out; } - @TargetApi(Build.VERSION_CODES.LOLLIPOP) private static boolean hasDefaultRoute(LinkProperties linkProperties) { - for(RouteInfo route: linkProperties.getRoutes()) { + for (RouteInfo route : linkProperties.getRoutes()) { if (route.isDefaultRoute()) { return true; } diff --git a/app/src/main/java/im/conversations/android/dns/IP.java b/app/src/main/java/im/conversations/android/dns/IP.java new file mode 100644 index 000000000..b87e83561 --- /dev/null +++ b/app/src/main/java/im/conversations/android/dns/IP.java @@ -0,0 +1,39 @@ +package im.conversations.android.dns; + +import java.util.regex.Pattern; + +public class IP { + + private static final Pattern PATTERN_IPV4 = + Pattern.compile( + "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"); + private static final Pattern PATTERN_IPV6_HEX4DECCOMPRESSED = + Pattern.compile( + "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)" + + " ::((?:[0-9A-Fa-f]{1,4}:)*)(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"); + private static final Pattern PATTERN_IPV6_6HEX4DEC = + Pattern.compile( + "\\A((?:[0-9A-Fa-f]{1,4}:){6,6})(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"); + private static final Pattern PATTERN_IPV6_HEXCOMPRESSED = + Pattern.compile( + "\\A((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)\\z"); + private static final Pattern PATTERN_IPV6 = + Pattern.compile("\\A(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\\z"); + + public static boolean matches(String server) { + return server != null + && (PATTERN_IPV4.matcher(server).matches() + || PATTERN_IPV6.matcher(server).matches() + || PATTERN_IPV6_6HEX4DEC.matcher(server).matches() + || PATTERN_IPV6_HEX4DECCOMPRESSED.matcher(server).matches() + || PATTERN_IPV6_HEXCOMPRESSED.matcher(server).matches()); + } + + public static String wrapIPv6(final String host) { + if (matches(host)) { + return String.format("[%s]", host); + } else { + return host; + } + } +} diff --git a/src/main/java/eu/siacs/conversations/utils/Resolver.java b/app/src/main/java/im/conversations/android/dns/Resolver.java similarity index 67% rename from src/main/java/eu/siacs/conversations/utils/Resolver.java rename to app/src/main/java/im/conversations/android/dns/Resolver.java index 463d6eb73..9a085d93a 100644 --- a/src/main/java/eu/siacs/conversations/utils/Resolver.java +++ b/app/src/main/java/im/conversations/android/dns/Resolver.java @@ -1,20 +1,10 @@ -package eu.siacs.conversations.utils; +package im.conversations.android.dns; +import android.app.Application; import android.content.ContentValues; +import android.content.Context; import android.database.Cursor; -import android.util.Log; - import androidx.annotation.NonNull; - -import java.io.IOException; -import java.lang.reflect.Field; -import java.net.Inet4Address; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - import de.measite.minidns.AbstractDNSClient; import de.measite.minidns.DNSCache; import de.measite.minidns.DNSClient; @@ -34,26 +24,34 @@ import de.measite.minidns.record.CNAME; import de.measite.minidns.record.Data; import de.measite.minidns.record.InternetAddressRR; import de.measite.minidns.record.SRV; -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.xmpp.Jid; +import java.io.IOException; +import java.lang.reflect.Field; +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import org.jxmpp.jid.DomainJid; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class Resolver { + private static final Logger LOGGER = LoggerFactory.getLogger(Resolver.class); + public static final int DEFAULT_PORT_XMPP = 5222; private static final String DIRECT_TLS_SERVICE = "_xmpps-client"; private static final String STARTTLS_SERVICE = "_xmpp-client"; - private static XmppConnectionService SERVICE = null; + private static Context SERVICE; - - public static void init(XmppConnectionService service) { - Resolver.SERVICE = service; + public static void init(final Application application) { + SERVICE = application.getApplicationContext(); DNSClient.removeDNSServerLookupMechanism(AndroidUsingExec.INSTANCE); DNSClient.addDnsServerLookupMechanism(AndroidUsingExecLowPriority.INSTANCE); - DNSClient.addDnsServerLookupMechanism(new AndroidUsingLinkProperties(service)); + DNSClient.addDnsServerLookupMechanism(new AndroidUsingLinkProperties(application)); final AbstractDNSClient client = ResolverApi.INSTANCE.getClient(); if (client instanceof ReliableDNSClient) { disableHardcodedDnsServers((ReliableDNSClient) client); @@ -68,11 +66,12 @@ public class Resolver { if (dnsClient != null) { dnsClient.getDataSource().setTimeout(3000); } - final Field useHardcodedDnsServers = DNSClient.class.getDeclaredField("useHardcodedDnsServers"); + final Field useHardcodedDnsServers = + DNSClient.class.getDeclaredField("useHardcodedDnsServers"); useHardcodedDnsServers.setAccessible(true); useHardcodedDnsServers.setBoolean(dnsClient, false); - } catch (NoSuchFieldException | IllegalAccessException e) { - Log.e(Config.LOGTAG, "Unable to disable hardcoded DNS servers", e); + } catch (final NoSuchFieldException | IllegalAccessException e) { + LOGGER.error("Unable to disable hardcoded DNS servers", e); } } @@ -85,7 +84,7 @@ public class Resolver { return Collections.singletonList(result); } - public static void checkDomain(final Jid jid) { + public static void checkDomain(final DomainJid jid) { DNSName.from(jid.getDomain()); } @@ -102,50 +101,57 @@ public class Resolver { final AbstractDNSClient client = ResolverApi.INSTANCE.getClient(); final DNSCache dnsCache = client.getCache(); if (dnsCache instanceof LRUCache) { - Log.d(Config.LOGTAG,"clearing DNS cache"); + LOGGER.debug("clearing DNS cache"); ((LRUCache) dnsCache).clear(); } } - public static boolean useDirectTls(final int port) { return port == 443 || port == 5223; } public static List resolve(String domain) { - final List ipResults = fromIpAddress(domain); + final List ipResults = fromIpAddress(domain); if (ipResults.size() > 0) { return ipResults; } final List results = new ArrayList<>(); final List fallbackResults = new ArrayList<>(); final Thread[] threads = new Thread[3]; - threads[0] = new Thread(() -> { - try { - final List list = resolveSrv(domain, true); - synchronized (results) { - results.addAll(list); - } - } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving SRV record (direct TLS)", throwable); - } - }); - threads[1] = new Thread(() -> { - try { - final List list = resolveSrv(domain, false); - synchronized (results) { - results.addAll(list); - } - } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving SRV record (STARTTLS)", throwable); - } - }); - threads[2] = new Thread(() -> { - List list = resolveNoSrvRecords(DNSName.from(domain), true); - synchronized (fallbackResults) { - fallbackResults.addAll(list); - } - }); + threads[0] = + new Thread( + () -> { + try { + final List list = resolveSrv(domain, true); + synchronized (results) { + results.addAll(list); + } + } catch (final Throwable throwable) { + LOGGER.debug("error resolving SRV record (direct TLS)", throwable); + } + }); + threads[1] = + new Thread( + () -> { + try { + final List list = resolveSrv(domain, false); + synchronized (results) { + results.addAll(list); + } + + } catch (Throwable throwable) { + LOGGER.debug( + "error resolving SRV record (direct STARTTLS)", throwable); + } + }); + threads[2] = + new Thread( + () -> { + List list = resolveNoSrvRecords(DNSName.from(domain), true); + synchronized (fallbackResults) { + fallbackResults.addAll(list); + } + }); for (final Thread thread : threads) { thread.start(); } @@ -156,14 +162,14 @@ public class Resolver { threads[2].interrupt(); synchronized (results) { Collections.sort(results); - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": " + results.toString()); + LOGGER.info("{}", results); return new ArrayList<>(results); } } else { threads[2].join(); synchronized (fallbackResults) { Collections.sort(fallbackResults); - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": " + fallbackResults.toString()); + LOGGER.info("fallback {}", fallbackResults); return new ArrayList<>(fallbackResults); } } @@ -189,8 +195,11 @@ public class Resolver { } } - private static List resolveSrv(String domain, final boolean directTls) throws IOException { - DNSName dnsName = DNSName.from((directTls ? DIRECT_TLS_SERVICE : STARTTLS_SERVICE) + "._tcp." + domain); + private static List resolveSrv(String domain, final boolean directTls) + throws IOException { + DNSName dnsName = + DNSName.from( + (directTls ? DIRECT_TLS_SERVICE : STARTTLS_SERVICE) + "._tcp." + domain); ResolverResult result = resolveWithFallback(dnsName, SRV.class); final List results = new ArrayList<>(); final List threads = new ArrayList<>(); @@ -198,24 +207,37 @@ public class Resolver { if (record.name.length() == 0 && record.priority == 0) { continue; } - threads.add(new Thread(() -> { - final List ipv4s = resolveIp(record, A.class, result.isAuthenticData(), directTls); - if (ipv4s.size() == 0) { - Result resolverResult = Result.fromRecord(record, directTls); - resolverResult.authenticated = result.isAuthenticData(); - ipv4s.add(resolverResult); - } - synchronized (results) { - results.addAll(ipv4s); - } - - })); - threads.add(new Thread(() -> { - final List ipv6s = resolveIp(record, AAAA.class, result.isAuthenticData(), directTls); - synchronized (results) { - results.addAll(ipv6s); - } - })); + threads.add( + new Thread( + () -> { + final List ipv4s = + resolveIp( + record, + A.class, + result.isAuthenticData(), + directTls); + if (ipv4s.size() == 0) { + Result resolverResult = Result.fromRecord(record, directTls); + resolverResult.authenticated = result.isAuthenticData(); + ipv4s.add(resolverResult); + } + synchronized (results) { + results.addAll(ipv4s); + } + })); + threads.add( + new Thread( + () -> { + final List ipv6s = + resolveIp( + record, + AAAA.class, + result.isAuthenticData(), + directTls); + synchronized (results) { + results.addAll(ipv6s); + } + })); } for (Thread thread : threads) { thread.start(); @@ -230,18 +252,22 @@ public class Resolver { return results; } - private static List resolveIp(SRV srv, Class type, boolean authenticated, boolean directTls) { + private static List resolveIp( + SRV srv, Class type, boolean authenticated, boolean directTls) { List list = new ArrayList<>(); try { ResolverResult results = resolveWithFallback(srv.name, type, authenticated); for (D record : results.getAnswersOrEmptySet()) { Result resolverResult = Result.fromRecord(srv, directTls); - resolverResult.authenticated = results.isAuthenticData() && authenticated; //TODO technically it doesn’t matter if the IP was authenticated + resolverResult.authenticated = + results.isAuthenticData() + && authenticated; // TODO technically it doesn’t matter if the IP + // was authenticated resolverResult.ip = record.getInetAddress(); list.add(resolverResult); } - } catch (Throwable t) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " " + t.getMessage()); + } catch (final Throwable t) { + LOGGER.info("error resolving {}", type.getSimpleName(), t); } return list; } @@ -252,26 +278,30 @@ public class Resolver { for (A a : resolveWithFallback(dnsName, A.class, false).getAnswersOrEmptySet()) { results.add(Result.createDefault(dnsName, a.getInetAddress())); } - for (AAAA aaaa : resolveWithFallback(dnsName, AAAA.class, false).getAnswersOrEmptySet()) { + for (AAAA aaaa : + resolveWithFallback(dnsName, AAAA.class, false).getAnswersOrEmptySet()) { results.add(Result.createDefault(dnsName, aaaa.getInetAddress())); } if (results.size() == 0 && withCnames) { - for (CNAME cname : resolveWithFallback(dnsName, CNAME.class, false).getAnswersOrEmptySet()) { + for (CNAME cname : + resolveWithFallback(dnsName, CNAME.class, false).getAnswersOrEmptySet()) { results.addAll(resolveNoSrvRecords(cname.name, false)); } } } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + "error resolving fallback records", throwable); + LOGGER.info("Error resolving fallback records", throwable); } results.add(Result.createDefault(dnsName)); return results; } - private static ResolverResult resolveWithFallback(DNSName dnsName, Class type) throws IOException { + private static ResolverResult resolveWithFallback( + DNSName dnsName, Class type) throws IOException { return resolveWithFallback(dnsName, type, validateHostname()); } - private static ResolverResult resolveWithFallback(DNSName dnsName, Class type, boolean validateHostname) throws IOException { + private static ResolverResult resolveWithFallback( + DNSName dnsName, Class type, boolean validateHostname) throws IOException { final Question question = new Question(dnsName, Record.TYPE.getType(type)); if (!validateHostname) { return ResolverApi.INSTANCE.resolve(question); @@ -279,17 +309,22 @@ public class Resolver { try { return DnssecResolverApi.INSTANCE.resolveDnssecReliable(question); } catch (DNSSECResultNotAuthenticException e) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " with DNSSEC. Trying DNS instead.", e); + LOGGER.info( + "Error resolving {} with DNSSEC. Trying DNS instead", type.getSimpleName(), e); } catch (IOException e) { throw e; } catch (Throwable throwable) { - Log.d(Config.LOGTAG, Resolver.class.getSimpleName() + ": error resolving " + type.getSimpleName() + " with DNSSEC. Trying DNS instead.", throwable); + LOGGER.info( + "Error resolving {} with DNSSEC. Trying DNS instead", + type.getSimpleName(), + throwable); } return ResolverApi.INSTANCE.resolve(question); } private static boolean validateHostname() { - return SERVICE != null && SERVICE.getBooleanPreference("validate_hostname", R.bool.validate_hostname); + // TODO bring back in one form or another + return false; } public static class Result implements Comparable { @@ -392,14 +427,22 @@ public class Resolver { @Override public String toString() { - return "Result{" + - "ip='" + (ip == null ? null : ip.getHostAddress()) + '\'' + - ", hostame='" + (hostname == null ? null : hostname.toString()) + '\'' + - ", port=" + port + - ", directTls=" + directTls + - ", authenticated=" + authenticated + - ", priority=" + priority + - '}'; + return "Result{" + + "ip='" + + (ip == null ? null : ip.getHostAddress()) + + '\'' + + ", hostame='" + + (hostname == null ? null : hostname.toString()) + + '\'' + + ", port=" + + port + + ", directTls=" + + directTls + + ", authenticated=" + + authenticated + + ", priority=" + + priority + + '}'; } @Override @@ -436,5 +479,4 @@ public class Resolver { return contentValues; } } - } diff --git a/src/main/java/im/conversations/android/repository/AbstractRepository.java b/app/src/main/java/im/conversations/android/repository/AbstractRepository.java similarity index 100% rename from src/main/java/im/conversations/android/repository/AbstractRepository.java rename to app/src/main/java/im/conversations/android/repository/AbstractRepository.java diff --git a/src/main/java/im/conversations/android/repository/AccountRepository.java b/app/src/main/java/im/conversations/android/repository/AccountRepository.java similarity index 100% rename from src/main/java/im/conversations/android/repository/AccountRepository.java rename to app/src/main/java/im/conversations/android/repository/AccountRepository.java diff --git a/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java b/app/src/main/java/im/conversations/android/socks/SocksSocketFactory.java similarity index 77% rename from src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java rename to app/src/main/java/im/conversations/android/socks/SocksSocketFactory.java index 2b9d42d7a..aa01901ad 100644 --- a/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java +++ b/app/src/main/java/im/conversations/android/socks/SocksSocketFactory.java @@ -1,7 +1,7 @@ -package eu.siacs.conversations.utils; +package im.conversations.android.socks; import com.google.common.io.ByteStreams; - +import im.conversations.android.xmpp.ConnectionPool; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; @@ -10,17 +10,16 @@ import java.net.InetSocketAddress; import java.net.Socket; import java.nio.ByteBuffer; -import eu.siacs.conversations.Config; - public class SocksSocketFactory { - private static final byte[] LOCALHOST = new byte[]{127, 0, 0, 1}; + private static final byte[] LOCALHOST = new byte[] {127, 0, 0, 1}; - public static void createSocksConnection(final Socket socket, final String destination, final int port) throws IOException { - //TODO use different Socks Addr Type if destination is IP or IPv6 + public static void createSocksConnection( + final Socket socket, final String destination, final int port) throws IOException { + // TODO use different Socks Addr Type if destination is IP or IPv6 final InputStream proxyIs = socket.getInputStream(); final OutputStream proxyOs = socket.getOutputStream(); - proxyOs.write(new byte[]{0x05, 0x01, 0x00}); + proxyOs.write(new byte[] {0x05, 0x01, 0x00}); proxyOs.flush(); final byte[] handshake = new byte[2]; ByteStreams.readFully(proxyIs, handshake); @@ -29,7 +28,7 @@ public class SocksSocketFactory { } final byte[] dest = destination.getBytes(); final ByteBuffer request = ByteBuffer.allocate(7 + dest.length); - request.put(new byte[]{0x05, 0x01, 0x00, 0x03}); + request.put(new byte[] {0x05, 0x01, 0x00, 0x03}); request.put((byte) dest.length); request.put(dest); request.putShort((short) port); @@ -48,7 +47,10 @@ public class SocksSocketFactory { if (bndAddrType == 0x03) { final String receivedDestination = new String(bndDestination); if (!receivedDestination.equalsIgnoreCase(destination)) { - throw new IOException(String.format("Destination mismatch. Received %s Expected %s", receivedDestination, destination)); + throw new IOException( + String.format( + "Destination mismatch. Received %s Expected %s", + receivedDestination, destination)); } } ByteStreams.readFully(proxyIs, bndPort); @@ -63,7 +65,8 @@ public class SocksSocketFactory { } } - private static byte[] readDestination(final byte type, final InputStream inputStream) throws IOException { + private static byte[] readDestination(final byte type, final InputStream inputStream) + throws IOException { final byte[] bndDestination; if (type == 0x01) { bndDestination = new byte[4]; @@ -88,10 +91,11 @@ public class SocksSocketFactory { return false; } - private static Socket createSocket(InetSocketAddress address, String destination, int port) throws IOException { + private static Socket createSocket(InetSocketAddress address, String destination, int port) + throws IOException { Socket socket = new Socket(); try { - socket.connect(address, Config.CONNECT_TIMEOUT * 1000); + socket.connect(address, ConnectionPool.CONNECT_TIMEOUT * 1000); } catch (IOException e) { throw new SocksProxyNotFoundException(); } @@ -100,7 +104,10 @@ public class SocksSocketFactory { } public static Socket createSocketOverTor(String destination, int port) throws IOException { - return createSocket(new InetSocketAddress(InetAddress.getByAddress(LOCALHOST), 9050), destination, port); + return createSocket( + new InetSocketAddress(InetAddress.getByAddress(LOCALHOST), 9050), + destination, + port); } private static class SocksConnectionException extends IOException { @@ -109,9 +116,7 @@ public class SocksSocketFactory { } } - public static class SocksProxyNotFoundException extends IOException { - - } + public static class SocksProxyNotFoundException extends IOException {} public static class HostNotFoundException extends SocksConnectionException { HostNotFoundException(String message) { diff --git a/src/main/java/im/conversations/android/tls/SSLSockets.java b/app/src/main/java/im/conversations/android/tls/SSLSockets.java similarity index 100% rename from src/main/java/im/conversations/android/tls/SSLSockets.java rename to app/src/main/java/im/conversations/android/tls/SSLSockets.java diff --git a/app/src/main/java/im/conversations/android/tls/TrustManagers.java b/app/src/main/java/im/conversations/android/tls/TrustManagers.java new file mode 100644 index 000000000..a7a7aa8f2 --- /dev/null +++ b/app/src/main/java/im/conversations/android/tls/TrustManagers.java @@ -0,0 +1,29 @@ +package im.conversations.android.tls; + +import java.security.KeyStore; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class TrustManagers { + + private static final Logger LOGGER = LoggerFactory.getLogger(TrustManagers.class); + + public static X509TrustManager getTrustManager() { + try { + final TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); + tmf.init((KeyStore) null); + for (final TrustManager t : tmf.getTrustManagers()) { + if (t instanceof X509TrustManager) { + return (X509TrustManager) t; + } + } + return null; + } catch (final Exception e) { + LOGGER.info("Could not get default Trust Manager"); + return null; + } + } +} diff --git a/src/main/java/im/conversations/android/tls/XmppDomainVerifier.java b/app/src/main/java/im/conversations/android/tls/XmppDomainVerifier.java similarity index 100% rename from src/main/java/im/conversations/android/tls/XmppDomainVerifier.java rename to app/src/main/java/im/conversations/android/tls/XmppDomainVerifier.java diff --git a/src/main/java/im/conversations/android/transformer/Transformation.java b/app/src/main/java/im/conversations/android/transformer/Transformation.java similarity index 100% rename from src/main/java/im/conversations/android/transformer/Transformation.java rename to app/src/main/java/im/conversations/android/transformer/Transformation.java diff --git a/src/main/java/im/conversations/android/transformer/TransformationFactory.java b/app/src/main/java/im/conversations/android/transformer/TransformationFactory.java similarity index 100% rename from src/main/java/im/conversations/android/transformer/TransformationFactory.java rename to app/src/main/java/im/conversations/android/transformer/TransformationFactory.java diff --git a/src/main/java/im/conversations/android/transformer/Transformer.java b/app/src/main/java/im/conversations/android/transformer/Transformer.java similarity index 100% rename from src/main/java/im/conversations/android/transformer/Transformer.java rename to app/src/main/java/im/conversations/android/transformer/Transformer.java diff --git a/src/main/java/im/conversations/android/ui/Activities.java b/app/src/main/java/im/conversations/android/ui/Activities.java similarity index 100% rename from src/main/java/im/conversations/android/ui/Activities.java rename to app/src/main/java/im/conversations/android/ui/Activities.java diff --git a/src/main/java/im/conversations/android/ui/BindingAdapters.java b/app/src/main/java/im/conversations/android/ui/BindingAdapters.java similarity index 100% rename from src/main/java/im/conversations/android/ui/BindingAdapters.java rename to app/src/main/java/im/conversations/android/ui/BindingAdapters.java diff --git a/src/main/java/im/conversations/android/ui/Event.java b/app/src/main/java/im/conversations/android/ui/Event.java similarity index 100% rename from src/main/java/im/conversations/android/ui/Event.java rename to app/src/main/java/im/conversations/android/ui/Event.java diff --git a/src/main/java/im/conversations/android/ui/NavControllers.java b/app/src/main/java/im/conversations/android/ui/NavControllers.java similarity index 100% rename from src/main/java/im/conversations/android/ui/NavControllers.java rename to app/src/main/java/im/conversations/android/ui/NavControllers.java diff --git a/src/main/java/im/conversations/android/ui/activity/SetupActivity.java b/app/src/main/java/im/conversations/android/ui/activity/SetupActivity.java similarity index 90% rename from src/main/java/im/conversations/android/ui/activity/SetupActivity.java rename to app/src/main/java/im/conversations/android/ui/activity/SetupActivity.java index ca814d840..6ecc943bc 100644 --- a/src/main/java/im/conversations/android/ui/activity/SetupActivity.java +++ b/app/src/main/java/im/conversations/android/ui/activity/SetupActivity.java @@ -2,12 +2,13 @@ package im.conversations.android.ui.activity; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.app.AppCompatDelegate; import androidx.databinding.DataBindingUtil; import androidx.lifecycle.ViewModelProvider; import androidx.navigation.NavController; -import eu.siacs.conversations.R; -import eu.siacs.conversations.SetupNavigationDirections; -import eu.siacs.conversations.databinding.ActivitySetupBinding; +import im.conversations.android.R; +import im.conversations.android.SetupNavigationDirections; +import im.conversations.android.databinding.ActivitySetupBinding; import im.conversations.android.ui.Activities; import im.conversations.android.ui.Event; import im.conversations.android.ui.NavControllers; diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java similarity index 100% rename from src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/AbstractSetupFragment.java diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java similarity index 100% rename from src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/HostnameFragment.java diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java similarity index 88% rename from src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java index 389aaca59..dda4f20a5 100644 --- a/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java +++ b/app/src/main/java/im/conversations/android/ui/fragment/setup/PasswordFragment.java @@ -6,8 +6,8 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.FragmentPasswordBinding; +import im.conversations.android.R; +import im.conversations.android.databinding.FragmentPasswordBinding; public class PasswordFragment extends AbstractSetupFragment { diff --git a/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java b/app/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java similarity index 88% rename from src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java rename to app/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java index dac120a11..3bb96f74c 100644 --- a/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java +++ b/app/src/main/java/im/conversations/android/ui/fragment/setup/SignInFragment.java @@ -6,8 +6,8 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.FragmentSignInBinding; +import im.conversations.android.R; +import im.conversations.android.databinding.FragmentSignInBinding; public class SignInFragment extends AbstractSetupFragment { diff --git a/src/main/java/im/conversations/android/ui/model/SetupViewModel.java b/app/src/main/java/im/conversations/android/ui/model/SetupViewModel.java similarity index 100% rename from src/main/java/im/conversations/android/ui/model/SetupViewModel.java rename to app/src/main/java/im/conversations/android/ui/model/SetupViewModel.java diff --git a/src/main/java/eu/siacs/conversations/ui/util/PendingItem.java b/app/src/main/java/im/conversations/android/util/PendingItem.java similarity index 98% rename from src/main/java/eu/siacs/conversations/ui/util/PendingItem.java rename to app/src/main/java/im/conversations/android/util/PendingItem.java index a02281f77..0a5d94f13 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/PendingItem.java +++ b/app/src/main/java/im/conversations/android/util/PendingItem.java @@ -27,7 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package eu.siacs.conversations.ui.util; +package im.conversations.android.util; import java.util.function.Supplier; diff --git a/src/main/java/im/conversations/android/xml/Element.java b/app/src/main/java/im/conversations/android/xml/Element.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Element.java rename to app/src/main/java/im/conversations/android/xml/Element.java diff --git a/src/main/java/im/conversations/android/xml/Entities.java b/app/src/main/java/im/conversations/android/xml/Entities.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Entities.java rename to app/src/main/java/im/conversations/android/xml/Entities.java diff --git a/src/main/java/im/conversations/android/xml/Namespace.java b/app/src/main/java/im/conversations/android/xml/Namespace.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Namespace.java rename to app/src/main/java/im/conversations/android/xml/Namespace.java diff --git a/src/main/java/im/conversations/android/xml/Tag.java b/app/src/main/java/im/conversations/android/xml/Tag.java similarity index 100% rename from src/main/java/im/conversations/android/xml/Tag.java rename to app/src/main/java/im/conversations/android/xml/Tag.java diff --git a/src/main/java/im/conversations/android/xml/TagWriter.java b/app/src/main/java/im/conversations/android/xml/TagWriter.java similarity index 100% rename from src/main/java/im/conversations/android/xml/TagWriter.java rename to app/src/main/java/im/conversations/android/xml/TagWriter.java diff --git a/src/main/java/im/conversations/android/xml/XmlElementReader.java b/app/src/main/java/im/conversations/android/xml/XmlElementReader.java similarity index 100% rename from src/main/java/im/conversations/android/xml/XmlElementReader.java rename to app/src/main/java/im/conversations/android/xml/XmlElementReader.java diff --git a/src/main/java/im/conversations/android/xml/XmlReader.java b/app/src/main/java/im/conversations/android/xml/XmlReader.java similarity index 100% rename from src/main/java/im/conversations/android/xml/XmlReader.java rename to app/src/main/java/im/conversations/android/xml/XmlReader.java diff --git a/src/main/java/im/conversations/android/xmpp/Closables.java b/app/src/main/java/im/conversations/android/xmpp/Closables.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Closables.java rename to app/src/main/java/im/conversations/android/xmpp/Closables.java diff --git a/src/main/java/im/conversations/android/xmpp/ConnectionException.java b/app/src/main/java/im/conversations/android/xmpp/ConnectionException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ConnectionException.java rename to app/src/main/java/im/conversations/android/xmpp/ConnectionException.java diff --git a/src/main/java/im/conversations/android/xmpp/ConnectionPool.java b/app/src/main/java/im/conversations/android/xmpp/ConnectionPool.java similarity index 99% rename from src/main/java/im/conversations/android/xmpp/ConnectionPool.java rename to app/src/main/java/im/conversations/android/xmpp/ConnectionPool.java index a57b5e6ab..41b1bbd32 100644 --- a/src/main/java/im/conversations/android/xmpp/ConnectionPool.java +++ b/app/src/main/java/im/conversations/android/xmpp/ConnectionPool.java @@ -31,6 +31,7 @@ public class ConnectionPool { private static final Logger LOGGER = LoggerFactory.getLogger(ConnectionPool.class); + public static final int SOCKET_TIMEOUT = 15; public static final int CONNECT_TIMEOUT = 90; public static final int PING_MAX_INTERVAL = 300; public static final int PING_MIN_INTERVAL = 30; diff --git a/src/main/java/im/conversations/android/xmpp/ConnectionState.java b/app/src/main/java/im/conversations/android/xmpp/ConnectionState.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ConnectionState.java rename to app/src/main/java/im/conversations/android/xmpp/ConnectionState.java diff --git a/src/main/java/im/conversations/android/xmpp/Entity.java b/app/src/main/java/im/conversations/android/xmpp/Entity.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Entity.java rename to app/src/main/java/im/conversations/android/xmpp/Entity.java diff --git a/src/main/java/im/conversations/android/xmpp/EntityCapabilities.java b/app/src/main/java/im/conversations/android/xmpp/EntityCapabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/EntityCapabilities.java rename to app/src/main/java/im/conversations/android/xmpp/EntityCapabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java b/app/src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java rename to app/src/main/java/im/conversations/android/xmpp/EntityCapabilities2.java diff --git a/src/main/java/im/conversations/android/xmpp/ExtensionFactory.java b/app/src/main/java/im/conversations/android/xmpp/ExtensionFactory.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ExtensionFactory.java rename to app/src/main/java/im/conversations/android/xmpp/ExtensionFactory.java diff --git a/src/main/java/im/conversations/android/xmpp/IqErrorException.java b/app/src/main/java/im/conversations/android/xmpp/IqErrorException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/IqErrorException.java rename to app/src/main/java/im/conversations/android/xmpp/IqErrorException.java diff --git a/src/main/java/im/conversations/android/xmpp/Managers.java b/app/src/main/java/im/conversations/android/xmpp/Managers.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Managers.java rename to app/src/main/java/im/conversations/android/xmpp/Managers.java diff --git a/src/main/java/im/conversations/android/xmpp/NodeConfiguration.java b/app/src/main/java/im/conversations/android/xmpp/NodeConfiguration.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/NodeConfiguration.java rename to app/src/main/java/im/conversations/android/xmpp/NodeConfiguration.java diff --git a/src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java b/app/src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java rename to app/src/main/java/im/conversations/android/xmpp/PreconditionNotMetException.java diff --git a/src/main/java/im/conversations/android/xmpp/PubSubErrorException.java b/app/src/main/java/im/conversations/android/xmpp/PubSubErrorException.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/PubSubErrorException.java rename to app/src/main/java/im/conversations/android/xmpp/PubSubErrorException.java diff --git a/src/main/java/im/conversations/android/xmpp/ServiceDescription.java b/app/src/main/java/im/conversations/android/xmpp/ServiceDescription.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/ServiceDescription.java rename to app/src/main/java/im/conversations/android/xmpp/ServiceDescription.java diff --git a/src/main/java/im/conversations/android/xmpp/Timestamps.java b/app/src/main/java/im/conversations/android/xmpp/Timestamps.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/Timestamps.java rename to app/src/main/java/im/conversations/android/xmpp/Timestamps.java diff --git a/src/main/java/im/conversations/android/xmpp/XmppConnection.java b/app/src/main/java/im/conversations/android/xmpp/XmppConnection.java similarity index 89% rename from src/main/java/im/conversations/android/xmpp/XmppConnection.java rename to app/src/main/java/im/conversations/android/xmpp/XmppConnection.java index 17a7296ef..fe6f46d4d 100644 --- a/src/main/java/im/conversations/android/xmpp/XmppConnection.java +++ b/app/src/main/java/im/conversations/android/xmpp/XmppConnection.java @@ -5,7 +5,6 @@ import android.os.Build; import android.os.SystemClock; import android.security.KeyChain; import android.util.Base64; -import android.util.Log; import android.util.Pair; import android.util.SparseArray; import androidx.annotation.NonNull; @@ -18,15 +17,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.services.MemorizingTrustManager; -import eu.siacs.conversations.services.NotificationService; -import eu.siacs.conversations.ui.util.PendingItem; -import eu.siacs.conversations.utils.PhoneHelper; -import eu.siacs.conversations.utils.Resolver; -import eu.siacs.conversations.utils.SocksSocketFactory; -import eu.siacs.conversations.xmpp.bind.Bind2; +import im.conversations.android.BuildConfig; import im.conversations.android.Conversations; import im.conversations.android.IDs; import im.conversations.android.database.ConversationsDatabase; @@ -34,8 +25,12 @@ import im.conversations.android.database.CredentialStore; import im.conversations.android.database.model.Account; import im.conversations.android.database.model.Connection; import im.conversations.android.database.model.Credential; +import im.conversations.android.dns.Resolver; +import im.conversations.android.socks.SocksSocketFactory; import im.conversations.android.tls.SSLSockets; +import im.conversations.android.tls.TrustManagers; import im.conversations.android.tls.XmppDomainVerifier; +import im.conversations.android.util.PendingItem; import im.conversations.android.xml.Element; import im.conversations.android.xml.Namespace; import im.conversations.android.xml.Tag; @@ -46,11 +41,13 @@ import im.conversations.android.xmpp.manager.CarbonsManager; import im.conversations.android.xmpp.manager.DiscoManager; import im.conversations.android.xmpp.model.Extension; import im.conversations.android.xmpp.model.StreamElement; +import im.conversations.android.xmpp.model.bind2.BindInlineFeatures; import im.conversations.android.xmpp.model.csi.Active; import im.conversations.android.xmpp.model.csi.Inactive; import im.conversations.android.xmpp.model.error.Condition; import im.conversations.android.xmpp.model.error.Error; import im.conversations.android.xmpp.model.ping.Ping; +import im.conversations.android.xmpp.model.sasl2.Inline; import im.conversations.android.xmpp.model.sm.Ack; import im.conversations.android.xmpp.model.sm.Enable; import im.conversations.android.xmpp.model.sm.Request; @@ -82,7 +79,6 @@ import java.security.PrivateKey; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.Hashtable; import java.util.Iterator; import java.util.List; @@ -113,6 +109,9 @@ public class XmppConnection implements Runnable { private static final Logger LOGGER = LoggerFactory.getLogger(XmppConnection.class); + private static final boolean EXTENDED_SM_LOGGING = false; + private static final int CONNECT_DISCO_TIMEOUT = 20; + protected final Account account; private final SparseArray mStanzaQueue = new SparseArray<>(); private final Hashtable>> packetCallbacks = new Hashtable<>(); @@ -185,8 +184,7 @@ public class XmppConnection implements Runnable { if (Strings.isNullOrEmpty(resource)) { return null; } - int fixedPartLength = - context.getString(R.string.app_name).length() + 1; // include the trailing dot + int fixedPartLength = BuildConfig.APP_NAME.length() + 1; // include the trailing dot int randomPartLength = 4; // 3 bytes if (resource.length() > fixedPartLength + randomPartLength) { if (validBase64( @@ -208,8 +206,7 @@ public class XmppConnection implements Runnable { private void changeStatus(final ConnectionState nextStatus) { synchronized (this) { if (Thread.currentThread().isInterrupted()) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": not changing status to " + nextStatus @@ -268,7 +265,7 @@ public class XmppConnection implements Runnable { ConversationsDatabase.getInstance(context) .accountDao() .getConnectionSettings(account.id); - Log.d(Config.LOGTAG, account.address + ": connecting"); + LOGGER.debug(account.address + ": connecting"); this.encryptionEnabled = false; this.inSmacksSession = false; this.quickStartInProgress = false; @@ -301,8 +298,7 @@ public class XmppConnection implements Runnable { directTls = connection.directTls; } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": connect to " + destination @@ -318,8 +314,7 @@ public class XmppConnection implements Runnable { try { startXmpp(localSocket); } catch (final InterruptedException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": thread was interrupted before beginning stream"); return; } catch (final Exception e) { @@ -334,11 +329,11 @@ public class XmppConnection implements Runnable { results = Resolver.resolve(domain); } if (Thread.currentThread().isInterrupted()) { - Log.d(Config.LOGTAG, account.address + ": Thread was interrupted"); + LOGGER.debug(account.address + ": Thread was interrupted"); return; } if (results.size() == 0) { - Log.e(Config.LOGTAG, account.address + ": Resolver results were empty"); + LOGGER.warn("Resolver results were empty"); return; } final Resolver.Result storedBackupResult; @@ -350,8 +345,7 @@ public class XmppConnection implements Runnable { null; // context.databaseBackend.findResolverResult(domain); if (storedBackupResult != null && !results.contains(storedBackupResult)) { results.add(storedBackupResult); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": loaded backup resolver result from db: " + storedBackupResult); @@ -361,7 +355,7 @@ public class XmppConnection implements Runnable { iterator.hasNext(); ) { final Resolver.Result result = iterator.next(); if (Thread.currentThread().isInterrupted()) { - Log.d(Config.LOGTAG, account.address + ": Thread was interrupted"); + LOGGER.debug(account.address + ": Thread was interrupted"); return; } try { @@ -369,12 +363,11 @@ public class XmppConnection implements Runnable { this.encryptionEnabled = result.isDirectTls(); verifiedHostname = result.isAuthenticated() ? result.getHostname().toString() : null; - Log.d(Config.LOGTAG, "verified hostname " + verifiedHostname); + LOGGER.debug("verified hostname " + verifiedHostname); final InetSocketAddress addr; if (result.getIp() != null) { addr = new InetSocketAddress(result.getIp(), result.getPort()); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": using values from resolver " + (result.getHostname() == null @@ -390,8 +383,7 @@ public class XmppConnection implements Runnable { new InetSocketAddress( IDN.toASCII(result.getHostname().toString()), result.getPort()); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": using values from resolver " + result.getHostname().toString() @@ -402,13 +394,13 @@ public class XmppConnection implements Runnable { } localSocket = new Socket(); - localSocket.connect(addr, Config.SOCKET_TIMEOUT * 1000); + localSocket.connect(addr, ConnectionPool.SOCKET_TIMEOUT * 1000); if (this.encryptionEnabled) { localSocket = upgradeSocketToTls(localSocket); } - localSocket.setSoTimeout(Config.SOCKET_TIMEOUT * 1000); + localSocket.setSoTimeout(ConnectionPool.SOCKET_TIMEOUT * 1000); if (startXmpp(localSocket)) { localSocket.setSoTimeout( 0); // reset to 0; once the connection is established we don’t @@ -427,14 +419,12 @@ public class XmppConnection implements Runnable { throw e; } } catch (InterruptedException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": thread was interrupted before beginning stream"); return; } catch (final Throwable e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": " + e.getMessage() @@ -459,15 +449,14 @@ public class XmppConnection implements Runnable { } catch (final SocksSocketFactory.SocksProxyNotFoundException e) { this.changeStatus(ConnectionState.TOR_NOT_AVAILABLE); } catch (final IOException | XmlPullParserException e) { - Log.d(Config.LOGTAG, account.address + ": " + e.getMessage()); + LOGGER.debug(account.address + ": " + e.getMessage()); this.changeStatus(ConnectionState.OFFLINE); this.attempt = Math.max(0, this.attempt - 1); } finally { if (!Thread.currentThread().isInterrupted()) { forceCloseSocket(); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": not force closing socket because thread was interrupted"); } @@ -514,7 +503,6 @@ public class XmppConnection implements Runnable { private SSLSocketFactory getSSLSocketFactory() throws NoSuchAlgorithmException, KeyManagementException { final SSLContext sc = SSLSockets.getSSLContext(); - final MemorizingTrustManager trustManager = MemorizingTrustManager.create(context); final KeyManager[] keyManager; final Credential credential = CredentialStore.getInstance(context).get(account); if (Strings.isNullOrEmpty(credential.privateKeyAlias)) { @@ -528,7 +516,7 @@ public class XmppConnection implements Runnable { // we need a better solution for this using live data or similar sc.init( keyManager, - new X509TrustManager[] {trustManager.getInteractive(domain)}, + new X509TrustManager[] {TrustManagers.getTrustManager()}, Conversations.SECURE_RANDOM); return sc.getSocketFactory(); } @@ -538,9 +526,7 @@ public class XmppConnection implements Runnable { synchronized (this) { this.mThread = Thread.currentThread(); if (this.mThread.isInterrupted()) { - Log.d( - Config.LOGTAG, - account.address + ": aborting connect because thread was interrupted"); + LOGGER.debug(account.address + ": aborting connect because thread was interrupted"); return; } forceCloseSocket(); @@ -578,8 +564,7 @@ public class XmppConnection implements Runnable { final Element challenge = tagReader.readElement(nextTag); processChallenge(challenge); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": received 'challenge on an unsecure connection"); throw new StateChangingException(ConnectionState.INCOMPATIBLE_CLIENT); } @@ -591,30 +576,26 @@ public class XmppConnection implements Runnable { processResumed(resumed); } else if (nextTag.isStart("r")) { tagReader.readElement(nextTag); - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": acknowledging stanza #" + this.stanzasReceived); } final Ack ack = new Ack(this.stanzasReceived); tagWriter.writeStanzaAsync(ack); } else if (nextTag.isStart("a")) { - synchronized (NotificationService.CATCHUP_LOCK) { - if (mWaitingForSmCatchup.compareAndSet(true, false)) { - final int messageCount = mSmCatchupMessageCounter.get(); - final int pendingIQs = packetCallbacks.size(); - Log.d( - Config.LOGTAG, - account.address - + ": SM catchup complete (messages=" - + messageCount - + ", pending IQs=" - + pendingIQs - + ")"); - if (messageCount > 0) { - // TODO finish notification backlog (ok to pling now) - // context.getNotificationService().finishBacklog(true, account); - } + if (mWaitingForSmCatchup.compareAndSet(true, false)) { + final int messageCount = mSmCatchupMessageCounter.get(); + final int pendingIQs = packetCallbacks.size(); + LOGGER.debug( + account.address + + ": SM catchup complete (messages=" + + messageCount + + ", pending IQs=" + + pendingIQs + + ")"); + if (messageCount > 0) { + // TODO finish notification backlog (ok to pling now) + // context.getNotificationService().finishBacklog(true, account); } } final Element ack = tagReader.readElement(nextTag); @@ -626,9 +607,7 @@ public class XmppConnection implements Runnable { acknowledgedMessages = acknowledgeStanzaUpTo(serverSequence.get()); } else { acknowledgedMessages = false; - Log.d( - Config.LOGTAG, - account.address + ": server send ack without sequence number"); + LOGGER.debug(account.address + ": server send ack without sequence number"); } } } else if (nextTag.isStart("failed")) { @@ -668,7 +647,7 @@ public class XmppConnection implements Runnable { saslMechanism.getResponse(challenge.getContent(), sslSocketOrNull(socket))); } catch (final SaslMechanism.AuthenticationException e) { // TODO: Send auth abort tag. - Log.e(Config.LOGTAG, e.toString()); + LOGGER.error("Authentication failed", e); throw new StateChangingException(ConnectionState.UNAUTHORIZED); } tagWriter.writeElement(response); @@ -697,16 +676,16 @@ public class XmppConnection implements Runnable { try { currentSaslMechanism.getResponse(challenge, sslSocketOrNull(socket)); } catch (final SaslMechanism.AuthenticationException e) { - Log.e(Config.LOGTAG, String.valueOf(e)); + LOGGER.error("Authentication failed", e); throw new StateChangingException(ConnectionState.UNAUTHORIZED); } - Log.d(Config.LOGTAG, account.address + ": logged in (using " + version + ")"); + LOGGER.debug(account.address + ": logged in (using " + version + ")"); if (SaslMechanism.pin(currentSaslMechanism)) { try { CredentialStore.getInstance(context) .setPinnedMechanism(account, currentSaslMechanism); } catch (final Exception e) { - Log.d(Config.LOGTAG, "unable to pin mechanism in credential store", e); + LOGGER.debug("unable to pin mechanism in credential store", e); } } if (version == SaslMechanism.Version.SASL_2) { @@ -719,8 +698,7 @@ public class XmppConnection implements Runnable { ? null : JidCreate.from(authorizationIdentifier); } catch (final XmppStringprepException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": SASL 2.0 authorization identifier was not a valid jid"); throw new StateChangingException(ConnectionState.BIND_FAILURE); @@ -728,14 +706,12 @@ public class XmppConnection implements Runnable { if (authorizationJid == null) { throw new StateChangingException(ConnectionState.BIND_FAILURE); } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": SASL 2.0 authorization identifier was " + authorizationJid); if (!account.address.getDomain().equals(authorizationJid.getDomain())) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server tried to re-assign domain to " + authorizationJid.getDomain()); @@ -748,9 +724,7 @@ public class XmppConnection implements Runnable { final Element tokenWrapper = success.findChild("token", Namespace.FAST); final String token = tokenWrapper == null ? null : tokenWrapper.getAttribute("token"); if (bound != null && resumed != null) { - Log.d( - Config.LOGTAG, - account.address + ": server sent bound and resumed in SASL2 success"); + LOGGER.debug(account.address + ": server sent bound and resumed in SASL2 success"); throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } final boolean processNopStreamFeatures; @@ -773,7 +747,7 @@ public class XmppConnection implements Runnable { enableStreamManagement(); } if (carbonsEnabled != null) { - Log.d(Config.LOGTAG, account.address + ": successfully enabled carbons"); + LOGGER.debug(account.address + ": successfully enabled carbons"); } sendPostBindInitialization(carbonsEnabled != null); processNopStreamFeatures = true; @@ -792,15 +766,12 @@ public class XmppConnection implements Runnable { try { CredentialStore.getInstance(context) .setFastToken(account, tokenMechanism, token); - Log.d( - Config.LOGTAG, - account.address + ": storing hashed token " + tokenMechanism); + LOGGER.debug(account.address + ": storing hashed token " + tokenMechanism); } catch (final Exception e) { - Log.d(Config.LOGTAG, "could not store fast token", e); + LOGGER.debug("could not store fast token", e); } } else if (this.hashTokenRequest != null) { - Log.w( - Config.LOGTAG, + LOGGER.warn( account.address + ": no response to our hashed token request " + this.hashTokenRequest); @@ -829,9 +800,8 @@ public class XmppConnection implements Runnable { private void resetOutboundStanzaQueue() { synchronized (this.mStanzaQueue) { final List intermediateStanzas = new ArrayList<>(); - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": stanzas sent before auth: " + this.stanzasSentBeforeAuthentication); @@ -847,9 +817,8 @@ public class XmppConnection implements Runnable { this.mStanzaQueue.put(i, intermediateStanzas.get(i)); } this.stanzasSent = intermediateStanzas.size(); - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": resetting outbound stanza queue to " + this.stanzasSent); @@ -865,9 +834,8 @@ public class XmppConnection implements Runnable { "Processed NOP stream features after success {}", this.streamFeatures.getExtensionIds()); } else { - Log.d(Config.LOGTAG, account.address + ": received " + tag); - Log.d( - Config.LOGTAG, + LOGGER.debug(account.address + ": received " + tag); + LOGGER.debug( account.address + ": server did not send stream features after SASL2 success"); throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } @@ -880,22 +848,21 @@ public class XmppConnection implements Runnable { } catch (final IllegalArgumentException e) { throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } - Log.d(Config.LOGTAG, failure.toString()); - Log.d(Config.LOGTAG, account.address + ": login failure " + version); + LOGGER.debug(failure.toString()); + LOGGER.debug(account.address + ": login failure " + version); if (SaslMechanism.hashedToken(this.saslMechanism)) { - Log.d(Config.LOGTAG, account.address + ": resetting token"); + LOGGER.debug(account.address + ": resetting token"); try { CredentialStore.getInstance(context).resetFastToken(account); } catch (final Exception e) { - Log.d(Config.LOGTAG, "could not reset fast token in credential store", e); + LOGGER.debug("could not reset fast token in credential store", e); } } if (failure.hasChild("temporary-auth-failure")) { throw new StateChangingException(ConnectionState.TEMPORARY_AUTH_FAILURE); } if (SaslMechanism.hashedToken(this.saslMechanism)) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": fast authentication failed. falling back to regular" + " authentication"); @@ -917,9 +884,9 @@ public class XmppConnection implements Runnable { final String streamId; if (enabled.getAttributeAsBoolean("resume")) { streamId = enabled.getAttribute("id"); - Log.d(Config.LOGTAG, account.address + ": stream management enabled (resumable)"); + LOGGER.debug(account.address + ": stream management enabled (resumable)"); } else { - Log.d(Config.LOGTAG, account.address + ": stream management enabled"); + LOGGER.debug(account.address + ": stream management enabled"); streamId = null; } this.streamId = streamId; @@ -946,10 +913,10 @@ public class XmppConnection implements Runnable { final boolean acknowledgedMessages; synchronized (this.mStanzaQueue) { if (serverCount < stanzasSent) { - Log.d(Config.LOGTAG, account.address + ": session resumed with lost packages"); + LOGGER.debug(account.address + ": session resumed with lost packages"); stanzasSent = serverCount; } else { - Log.d(Config.LOGTAG, account.address + ": session resumed"); + LOGGER.debug(account.address + ": session resumed"); } acknowledgedMessages = acknowledgeStanzaUpTo(serverCount); for (int i = 0; i < this.mStanzaQueue.size(); ++i) { @@ -957,7 +924,7 @@ public class XmppConnection implements Runnable { } mStanzaQueue.clear(); } - Log.d(Config.LOGTAG, account.address + ": resending " + failedStanzas.size() + " stanzas"); + LOGGER.debug(account.address + ": resending " + failedStanzas.size() + " stanzas"); for (final Stanza packet : failedStanzas) { if (packet instanceof Message) { Message message = (Message) packet; @@ -971,8 +938,7 @@ public class XmppConnection implements Runnable { } private void changeStatusToOnline() { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": online with resource " + connectionAddress.getResourceOrNull()); @@ -982,8 +948,7 @@ public class XmppConnection implements Runnable { private void processFailed(final Element failed, final boolean sendBindRequest) { final Optional serverCount = failed.getOptionalIntAttribute("h"); if (serverCount.isPresent()) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": resumption failed but server acknowledged stanza #" + serverCount.get()); @@ -992,7 +957,7 @@ public class XmppConnection implements Runnable { acknowledgedMessages = acknowledgeStanzaUpTo(serverCount.get()); } } else { - Log.d(Config.LOGTAG, account.address + ": resumption failed"); + LOGGER.debug(account.address + ": resumption failed"); } resetStreamId(); if (sendBindRequest) { @@ -1002,8 +967,7 @@ public class XmppConnection implements Runnable { private boolean acknowledgeStanzaUpTo(final int serverCount) { if (serverCount > stanzasSent) { - Log.e( - Config.LOGTAG, + LOGGER.error( "server acknowledged more stanzas than we sent. serverCount=" + serverCount + ", ourCount=" @@ -1012,9 +976,8 @@ public class XmppConnection implements Runnable { boolean acknowledgedMessages = false; for (int i = 0; i < mStanzaQueue.size(); ++i) { if (serverCount >= mStanzaQueue.keyAt(i)) { - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": server acknowledged stanza #" + mStanzaQueue.keyAt(i)); @@ -1045,8 +1008,7 @@ public class XmppConnection implements Runnable { if (inSmacksSession) { ++stanzasReceived; } else if (this.streamFeatures.streamManagement()) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": not counting stanza(" + stanza.getClass().getSimpleName() @@ -1070,7 +1032,7 @@ public class XmppConnection implements Runnable { packetCallbacks.remove(packet.getId()); } else { callback = null; - Log.e(Config.LOGTAG, account.address + ": ignoring spoofed iq packet"); + LOGGER.warn("Ignoring spoofed iq stanza"); } } else { if (packet.getFrom() != null @@ -1079,7 +1041,7 @@ public class XmppConnection implements Runnable { packetCallbacks.remove(packet.getId()); } else { callback = null; - Log.e(Config.LOGTAG, account.address + ": ignoring spoofed iq packet"); + LOGGER.error(account.address + ": ignoring spoofed iq packet"); } } } else if (packet.getType() == Iq.Type.GET || packet.getType() == Iq.Type.SET) { @@ -1169,9 +1131,7 @@ public class XmppConnection implements Runnable { account.address.getDomain().toString(), this.verifiedHostname, sslSocket.getSession())) { - Log.d( - Config.LOGTAG, - account.address + ": TLS certificate domain verification failed"); + LOGGER.debug(account.address + ": TLS certificate domain verification failed"); Closables.close(sslSocket); throw new StateChangingException(ConnectionState.TLS_ERROR_DOMAIN); } @@ -1197,17 +1157,14 @@ public class XmppConnection implements Runnable { } if (isFastTokenAvailable( this.streamFeatures.findChild("authentication", Namespace.SASL_2))) { - Log.d( - Config.LOGTAG, - account.address + ": fast token available; resetting quick start"); + LOGGER.debug(account.address + ": fast token available; resetting quick start"); ConversationsDatabase.getInstance(context) .accountDao() .setQuickStartAvailable(account.id, false); } return; } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server lost support for SASL 2. quick start not possible"); ConversationsDatabase.getInstance(context) .accountDao() @@ -1234,10 +1191,8 @@ public class XmppConnection implements Runnable { && shouldAuthenticate) { authenticate(SaslMechanism.Version.SASL); } else if (this.streamFeatures.streamManagement() && streamId != null && !inSmacksSession) { - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, - account.address + ": resuming after stanza #" + stanzasReceived); + if (EXTENDED_SM_LOGGING) { + LOGGER.debug(account.address + ": resuming after stanza #" + stanzasReceived); } final Resume resume = new Resume(this.streamId, stanzasReceived); this.mSmCatchupMessageCounter.set(0); @@ -1269,7 +1224,7 @@ public class XmppConnection implements Runnable { } private boolean isSecure() { - return this.encryptionEnabled || Config.ALLOW_NON_TLS_CONNECTIONS || account.isOnion(); + return this.encryptionEnabled || account.isOnion(); } private void authenticate(final SaslMechanism.Version version) throws IOException { @@ -1302,7 +1257,7 @@ public class XmppConnection implements Runnable { } quickStartAvailable = false; } else if (version == SaslMechanism.Version.SASL_2) { - final Element inline = authElement.findChild("inline", Namespace.SASL_2); + final Inline inline = authElement.getExtension(Inline.class); final boolean sm = inline != null && inline.hasChild("sm", Namespace.STREAM_MANAGEMENT); final HashedToken.Mechanism hashTokenRequest; if (usingFast) { @@ -1314,13 +1269,11 @@ public class XmppConnection implements Runnable { hashTokenRequest = HashedToken.Mechanism.best(fastMechanisms, SSLSockets.version(this.socket)); } - // TODO fix me. properly parse bind2 features - final Collection bindFeatures = - Collections.emptyList(); // Bind2.features(inline); + final Collection bindFeatures = BindInlineFeatures.get(inline); quickStartAvailable = sm && bindFeatures != null - && bindFeatures.containsAll(Bind2.QUICKSTART_FEATURES); + && bindFeatures.containsAll(BindInlineFeatures.QUICKSTART_FEATURES); this.hashTokenRequest = hashTokenRequest; authenticate = generateAuthenticationRequest( @@ -1333,8 +1286,7 @@ public class XmppConnection implements Runnable { .accountDao() .setQuickStartAvailable(account.id, quickStartAvailable); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": Authenticating with " + version @@ -1357,8 +1309,7 @@ public class XmppConnection implements Runnable { final @Nullable SaslMechanism saslMechanism, Collection mechanisms) throws StateChangingException { if (saslMechanism == null) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": unable to find supported SASL mechanism in " + mechanisms); throw new StateChangingException(ConnectionState.INCOMPATIBLE_SERVER); } @@ -1370,8 +1321,7 @@ public class XmppConnection implements Runnable { account, CredentialStore.getInstance(context).get(account)); final int pinnedMechanism = saslFactory.getPinnedMechanismPriority(); if (pinnedMechanism > saslMechanism.getPriority()) { - Log.e( - Config.LOGTAG, + LOGGER.error( "Auth failed. Authentication mechanism " + saslMechanism.getMechanism() + " has lower priority (" @@ -1387,7 +1337,7 @@ public class XmppConnection implements Runnable { private Element generateAuthenticationRequest( final String firstMessage, final boolean usingFast) { return generateAuthenticationRequest( - firstMessage, usingFast, null, Bind2.QUICKSTART_FEATURES, true); + firstMessage, usingFast, null, BindInlineFeatures.QUICKSTART_FEATURES, true); } private Element generateAuthenticationRequest( @@ -1402,12 +1352,10 @@ public class XmppConnection implements Runnable { } final Element userAgent = authenticate.addChild("user-agent"); userAgent.setAttribute("id", account.getPublicDeviceId().toString()); - userAgent.addChild("software").setContent(context.getString(R.string.app_name)); - if (!PhoneHelper.isEmulator()) { - userAgent - .addChild("device") - .setContent(String.format("%s %s", Build.MANUFACTURER, Build.MODEL)); - } + userAgent.addChild("software").setContent(BuildConfig.APP_NAME); + userAgent + .addChild("device") + .setContent(String.format("%s %s", Build.MANUFACTURER, Build.MODEL)); if (bind != null) { authenticate.addChild(generateBindRequest(bind)); } @@ -1428,9 +1376,9 @@ public class XmppConnection implements Runnable { } private Element generateBindRequest(final Collection bindFeatures) { - Log.d(Config.LOGTAG, "inline bind features: " + bindFeatures); + LOGGER.debug("inline bind features: " + bindFeatures); final Element bind = new Element("bind", Namespace.BIND2); - bind.addChild("tag").setContent(context.getString(R.string.app_name)); + bind.addChild("tag").setContent(BuildConfig.APP_NAME); if (bindFeatures.contains(Namespace.CARBONS)) { bind.addChild("enable", Namespace.CARBONS); } @@ -1496,8 +1444,7 @@ public class XmppConnection implements Runnable { try { assignedJid = JidCreate.from(jid); } catch (final XmppStringprepException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server reported invalid jid (" + jid @@ -1506,8 +1453,7 @@ public class XmppConnection implements Runnable { } if (!account.address.getDomain().equals(assignedJid.getDomain())) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": server tried to re-assign domain to " + assignedJid.getDomain()); @@ -1523,8 +1469,7 @@ public class XmppConnection implements Runnable { } return; } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": disconnecting because of bind failure (" + packet); @@ -1537,8 +1482,7 @@ public class XmppConnection implements Runnable { ConversationsDatabase.getInstance(context) .accountDao() .setResource(account.id, alternativeResource); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": switching resource due to conflict (" + alternativeResource @@ -1559,8 +1503,7 @@ public class XmppConnection implements Runnable { if (this.packetCallbacks.size() == 0) { return; } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": clearing " + this.packetCallbacks.size() @@ -1577,8 +1520,7 @@ public class XmppConnection implements Runnable { try { callback.accept(failurePacket); } catch (StateChangingError error) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": caught StateChangingError(" + error.state.toString() @@ -1586,8 +1528,7 @@ public class XmppConnection implements Runnable { // ignore } } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": done clearing iq callbacks. " + this.packetCallbacks.size() @@ -1595,7 +1536,7 @@ public class XmppConnection implements Runnable { } private void sendStartSession() { - Log.d(Config.LOGTAG, account.address + ": sending legacy session to outdated server"); + LOGGER.debug(account.address + ": sending legacy session to outdated server"); final Iq startSession = new Iq(Iq.Type.SET); startSession.addChild("session", "urn:ietf:params:xml:ns:xmpp-session"); this.sendIqPacketUnbound( @@ -1628,7 +1569,7 @@ public class XmppConnection implements Runnable { private void sendPostBindInitialization(final boolean carbonsEnabled) { getManager(CarbonsManager.class).setEnabled(carbonsEnabled); - Log.d(Config.LOGTAG, account.address + ": starting service discovery"); + LOGGER.debug(account.address + ": starting service discovery"); final ArrayList> discoFutures = new ArrayList<>(); final var discoManager = getManager(DiscoManager.class); @@ -1646,7 +1587,7 @@ public class XmppConnection implements Runnable { final var discoFuture = Futures.withTimeout( Futures.allAsList(discoFutures), - Config.CONNECT_DISCO_TIMEOUT, + CONNECT_DISCO_TIMEOUT, TimeUnit.SECONDS, ConnectionPool.CONNECTION_SCHEDULER); @@ -1661,7 +1602,7 @@ public class XmppConnection implements Runnable { @Override public void onFailure(@NonNull Throwable t) { - Log.d(Config.LOGTAG, "unable to fetch disco", t); + LOGGER.debug("unable to fetch disco", t); // TODO reset stream ID so we get a proper connect next time finalizeBind(); } @@ -1700,8 +1641,7 @@ public class XmppConnection implements Runnable { ConversationsDatabase.getInstance(context) .accountDao() .setResource(account.id, alternativeResource); - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": switching resource due to conflict (" + alternativeResource @@ -1712,11 +1652,11 @@ public class XmppConnection implements Runnable { } else if (streamError.hasChild("policy-violation")) { this.lastConnect = SystemClock.elapsedRealtime(); final String text = streamError.findChildContent("text"); - Log.d(Config.LOGTAG, account.address + ": policy violation. " + text); + LOGGER.debug(account.address + ": policy violation. " + text); failPendingMessages(text); throw new StateChangingException(ConnectionState.POLICY_VIOLATION); } else { - Log.d(Config.LOGTAG, account.address + ": stream error " + streamError); + LOGGER.debug(account.address + ": stream error " + streamError); throw new StateChangingException(ConnectionState.STREAM_ERROR); } } @@ -1747,7 +1687,6 @@ public class XmppConnection implements Runnable { SaslMechanism.ensureAvailable(saslFactory.getQuickStartMechanism(), sslVersion); final boolean secureConnection = sslVersion != SSLSockets.Version.NONE; if (secureConnection - && Config.QUICKSTART_ENABLED && quickStartMechanism != null && ConversationsDatabase.getInstance(context) .accountDao() @@ -1765,8 +1704,7 @@ public class XmppConnection implements Runnable { this.stanzasSentBeforeAuthentication = this.stanzasSent; tagWriter.writeElement(authenticate); } - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": quick start with " + quickStartMechanism.getMechanism()); return true; } else { @@ -1790,7 +1728,7 @@ public class XmppConnection implements Runnable { } private String createNewResource(final String postfixId) { - return String.format("%s.%s", context.getString(R.string.app_name), postfixId); + return String.format("%s.%s", BuildConfig.APP_NAME, postfixId); } public ListenableFuture sendIqPacket(final Iq packet) { @@ -1886,8 +1824,7 @@ public class XmppConnection implements Runnable { if (sendToUnboundStream || isBound) { tagWriter.writeStanzaAsync(packet); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + " do not write stanza to unbound stream " + packet.toString()); @@ -1903,9 +1840,8 @@ public class XmppConnection implements Runnable { } ++stanzasSent; - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": counting outbound " + packet.getName() @@ -1914,9 +1850,8 @@ public class XmppConnection implements Runnable { } this.mStanzaQueue.append(stanzasSent, stanza); if (stanza instanceof Message && stanza.getId() != null && inSmacksSession) { - if (Config.EXTENDED_SM_LOGGING) { - Log.d( - Config.LOGTAG, + if (EXTENDED_SM_LOGGING) { + LOGGER.debug( account.address + ": requesting ack for message stanza #" + stanzasSent); @@ -1969,7 +1904,7 @@ public class XmppConnection implements Runnable { public void disconnect(final boolean force) { interrupt(); - Log.d(Config.LOGTAG, account.address + ": disconnecting force=" + force); + LOGGER.debug(account.address + ": disconnecting force=" + force); if (force) { forceCloseSocket(); } else { @@ -1980,25 +1915,21 @@ public class XmppConnection implements Runnable { final CountDownLatch streamCountDownLatch = this.mStreamCountDownLatch; try { currentTagWriter.await(1, TimeUnit.SECONDS); - Log.d(Config.LOGTAG, account.address + ": closing stream"); + LOGGER.debug(account.address + ": closing stream"); currentTagWriter.writeTag(Tag.end("stream:stream")); if (streamCountDownLatch != null) { if (streamCountDownLatch.await(1, TimeUnit.SECONDS)) { - Log.d(Config.LOGTAG, account.address + ": remote ended stream"); + LOGGER.debug(account.address + ": remote ended stream"); } else { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": remote has not closed socket. force closing"); } } } catch (InterruptedException e) { - Log.d( - Config.LOGTAG, - account.address + ": interrupted while gracefully closing stream"); + LOGGER.debug(account.address + ": interrupted while gracefully closing stream"); } catch (final IOException e) { - Log.d( - Config.LOGTAG, + LOGGER.debug( account.address + ": io exception during disconnect (" + e.getMessage() @@ -2118,11 +2049,11 @@ public class XmppConnection implements Runnable { @Override public X509Certificate[] getCertificateChain(String alias) { - Log.d(Config.LOGTAG, "getting certificate chain"); + LOGGER.debug("getting certificate chain"); try { return KeyChain.getCertificateChain(context, alias); } catch (final Exception e) { - Log.d(Config.LOGTAG, "could not get certificate chain", e); + LOGGER.debug("could not get certificate chain", e); return new X509Certificate[0]; } } diff --git a/src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java b/app/src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java rename to app/src/main/java/im/conversations/android/xmpp/axolotl/AxolotlAddress.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/AbstractManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/ArchiveManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/AvatarManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/AxolotlManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/BlockingManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/BookmarkManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/CarbonsManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/ChatStateManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java similarity index 99% rename from src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java index 50a910e9d..7e1756004 100644 --- a/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java +++ b/app/src/main/java/im/conversations/android/xmpp/manager/DiscoManager.java @@ -11,8 +11,8 @@ import com.google.common.io.BaseEncoding; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; -import eu.siacs.conversations.BuildConfig; -import eu.siacs.conversations.R; +import im.conversations.android.BuildConfig; +import im.conversations.android.R; import im.conversations.android.xml.Namespace; import im.conversations.android.xmpp.Entity; import im.conversations.android.xmpp.EntityCapabilities; diff --git a/src/main/java/im/conversations/android/xmpp/manager/NickManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/NickManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/NickManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/NickManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/PepManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/PepManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/PepManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/PepManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/PresenceManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/PubSubManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/ReceiptManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/RegistrationManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/RosterManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/RosterManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/RosterManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/RosterManager.java diff --git a/src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java b/app/src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java rename to app/src/main/java/im/conversations/android/xmpp/manager/StanzaIdManager.java diff --git a/src/main/java/im/conversations/android/xmpp/model/ByteContent.java b/app/src/main/java/im/conversations/android/xmpp/model/ByteContent.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/ByteContent.java rename to app/src/main/java/im/conversations/android/xmpp/model/ByteContent.java diff --git a/src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java b/app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java rename to app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceipt.java diff --git a/src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java b/app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java rename to app/src/main/java/im/conversations/android/xmpp/model/DeliveryReceiptRequest.java diff --git a/src/main/java/im/conversations/android/xmpp/model/Extension.java b/app/src/main/java/im/conversations/android/xmpp/model/Extension.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/Extension.java rename to app/src/main/java/im/conversations/android/xmpp/model/Extension.java diff --git a/src/main/java/im/conversations/android/xmpp/model/Hash.java b/app/src/main/java/im/conversations/android/xmpp/model/Hash.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/Hash.java rename to app/src/main/java/im/conversations/android/xmpp/model/Hash.java diff --git a/src/main/java/im/conversations/android/xmpp/model/StreamElement.java b/app/src/main/java/im/conversations/android/xmpp/model/StreamElement.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/StreamElement.java rename to app/src/main/java/im/conversations/android/xmpp/model/StreamElement.java diff --git a/src/main/java/im/conversations/android/xmpp/model/avatar/Data.java b/app/src/main/java/im/conversations/android/xmpp/model/avatar/Data.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/avatar/Data.java rename to app/src/main/java/im/conversations/android/xmpp/model/avatar/Data.java diff --git a/src/main/java/im/conversations/android/xmpp/model/avatar/Info.java b/app/src/main/java/im/conversations/android/xmpp/model/avatar/Info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/avatar/Info.java rename to app/src/main/java/im/conversations/android/xmpp/model/avatar/Info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java b/app/src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java rename to app/src/main/java/im/conversations/android/xmpp/model/avatar/Metadata.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Bundle.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Device.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/DeviceList.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/ECPublicKeyContent.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Encrypted.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Header.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/IdentityKey.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/Payload.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKey.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/PreKeys.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKey.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/SignedPreKeySignature.java diff --git a/src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/axolotl/package-info.java diff --git a/src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java b/app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java similarity index 67% rename from src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java rename to app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java index 21c957a0f..b8e825b03 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/bind/Bind2.java +++ b/app/src/main/java/im/conversations/android/xmpp/model/bind2/BindInlineFeatures.java @@ -1,22 +1,19 @@ -package eu.siacs.conversations.xmpp.bind; +package im.conversations.android.xmpp.model.bind2; import com.google.common.collect.Collections2; - +import im.conversations.android.xml.Element; +import im.conversations.android.xml.Namespace; +import im.conversations.android.xmpp.model.sasl2.Inline; import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import eu.siacs.conversations.xml.Element; -import eu.siacs.conversations.xml.Namespace; +public class BindInlineFeatures { -public class Bind2 { + public static final Collection QUICKSTART_FEATURES = + Arrays.asList(Namespace.CARBONS, Namespace.STREAM_MANAGEMENT); - public static final Collection QUICKSTART_FEATURES = Arrays.asList( - Namespace.CARBONS, - Namespace.STREAM_MANAGEMENT - ); - - public static Collection features(final Element inline) { + public static Collection get(final Inline inline) { final Element inlineBind2 = inline != null ? inline.findChild("bind", Namespace.BIND2) : null; final Element inlineBind2Inline = diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Block.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Block.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Block.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Block.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Blocklist.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/Unblock.java diff --git a/src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/blocking/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java b/app/src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java rename to app/src/main/java/im/conversations/android/xmpp/model/bookmark/Conference.java diff --git a/src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/bookmark/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java b/app/src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java rename to app/src/main/java/im/conversations/android/xmpp/model/capabilties/Capabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java b/app/src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java rename to app/src/main/java/im/conversations/android/xmpp/model/capabilties/EntityCapabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java b/app/src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java rename to app/src/main/java/im/conversations/android/xmpp/model/capabilties/LegacyCapabilities.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/Enable.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/Received.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/Received.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/Received.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/Received.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/Sent.java diff --git a/src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/carbons/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/correction/Replace.java b/app/src/main/java/im/conversations/android/xmpp/model/correction/Replace.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/correction/Replace.java rename to app/src/main/java/im/conversations/android/xmpp/model/correction/Replace.java diff --git a/src/main/java/im/conversations/android/xmpp/model/csi/Active.java b/app/src/main/java/im/conversations/android/xmpp/model/csi/Active.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/csi/Active.java rename to app/src/main/java/im/conversations/android/xmpp/model/csi/Active.java diff --git a/src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java b/app/src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java rename to app/src/main/java/im/conversations/android/xmpp/model/csi/Inactive.java diff --git a/src/main/java/im/conversations/android/xmpp/model/csi/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/csi/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/csi/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/csi/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/Data.java b/app/src/main/java/im/conversations/android/xmpp/model/data/Data.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/Data.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/Data.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/Field.java b/app/src/main/java/im/conversations/android/xmpp/model/data/Field.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/Field.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/Field.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/Value.java b/app/src/main/java/im/conversations/android/xmpp/model/data/Value.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/Value.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/Value.java diff --git a/src/main/java/im/conversations/android/xmpp/model/data/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/data/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/data/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/data/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/delay/Delay.java b/app/src/main/java/im/conversations/android/xmpp/model/delay/Delay.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/delay/Delay.java rename to app/src/main/java/im/conversations/android/xmpp/model/delay/Delay.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/Feature.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/Identity.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/InfoQuery.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/info/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/items/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/items/ItemsQuery.java diff --git a/src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/disco/items/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/error/Condition.java b/app/src/main/java/im/conversations/android/xmpp/model/error/Condition.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/error/Condition.java rename to app/src/main/java/im/conversations/android/xmpp/model/error/Condition.java diff --git a/src/main/java/im/conversations/android/xmpp/model/error/Error.java b/app/src/main/java/im/conversations/android/xmpp/model/error/Error.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/error/Error.java rename to app/src/main/java/im/conversations/android/xmpp/model/error/Error.java diff --git a/src/main/java/im/conversations/android/xmpp/model/error/Text.java b/app/src/main/java/im/conversations/android/xmpp/model/error/Text.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/error/Text.java rename to app/src/main/java/im/conversations/android/xmpp/model/error/Text.java diff --git a/src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java b/app/src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java rename to app/src/main/java/im/conversations/android/xmpp/model/forward/Forwarded.java diff --git a/src/main/java/im/conversations/android/xmpp/model/jabber/Body.java b/app/src/main/java/im/conversations/android/xmpp/model/jabber/Body.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/jabber/Body.java rename to app/src/main/java/im/conversations/android/xmpp/model/jabber/Body.java diff --git a/src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java b/app/src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java rename to app/src/main/java/im/conversations/android/xmpp/model/jabber/Thread.java diff --git a/src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/jabber/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/mam/Result.java b/app/src/main/java/im/conversations/android/xmpp/model/mam/Result.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/mam/Result.java rename to app/src/main/java/im/conversations/android/xmpp/model/mam/Result.java diff --git a/src/main/java/im/conversations/android/xmpp/model/mam/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/mam/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/mam/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/mam/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/Displayed.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/Markable.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/Markable.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/Markable.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/Markable.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/Received.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/Received.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/Received.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/Received.java diff --git a/src/main/java/im/conversations/android/xmpp/model/markers/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/markers/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/markers/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/markers/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/Affiliation.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/Role.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/Role.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/Role.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/Role.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/user/MultiUserChat.java diff --git a/src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/muc/user/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/nick/Nick.java b/app/src/main/java/im/conversations/android/xmpp/model/nick/Nick.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/nick/Nick.java rename to app/src/main/java/im/conversations/android/xmpp/model/nick/Nick.java diff --git a/src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java b/app/src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java rename to app/src/main/java/im/conversations/android/xmpp/model/occupant/OccupantId.java diff --git a/src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java b/app/src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java rename to app/src/main/java/im/conversations/android/xmpp/model/oob/OutOfBandData.java diff --git a/src/main/java/im/conversations/android/xmpp/model/oob/URL.java b/app/src/main/java/im/conversations/android/xmpp/model/oob/URL.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/oob/URL.java rename to app/src/main/java/im/conversations/android/xmpp/model/oob/URL.java diff --git a/src/main/java/im/conversations/android/xmpp/model/oob/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/oob/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/oob/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/oob/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java b/app/src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java rename to app/src/main/java/im/conversations/android/xmpp/model/pars/PreAuth.java diff --git a/src/main/java/im/conversations/android/xmpp/model/ping/Ping.java b/app/src/main/java/im/conversations/android/xmpp/model/ping/Ping.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/ping/Ping.java rename to app/src/main/java/im/conversations/android/xmpp/model/ping/Ping.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Items.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/PubSub.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Publish.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/PublishOptions.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/Retract.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/PubSubError.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/error/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Event.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Purge.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/Retract.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/event/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/Configure.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/PubSubOwner.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/owner/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/pubsub/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java b/app/src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java rename to app/src/main/java/im/conversations/android/xmpp/model/reactions/Reaction.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java b/app/src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java rename to app/src/main/java/im/conversations/android/xmpp/model/reactions/Reactions.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/reactions/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/receipts/Received.java b/app/src/main/java/im/conversations/android/xmpp/model/receipts/Received.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/receipts/Received.java rename to app/src/main/java/im/conversations/android/xmpp/model/receipts/Received.java diff --git a/src/main/java/im/conversations/android/xmpp/model/receipts/Request.java b/app/src/main/java/im/conversations/android/xmpp/model/receipts/Request.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/receipts/Request.java rename to app/src/main/java/im/conversations/android/xmpp/model/receipts/Request.java diff --git a/src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/receipts/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Instructions.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Instructions.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Instructions.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Instructions.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Password.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Password.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Password.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Password.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Register.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Register.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Register.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Register.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Remove.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Remove.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Remove.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Remove.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/Username.java b/app/src/main/java/im/conversations/android/xmpp/model/register/Username.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/Username.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/Username.java diff --git a/src/main/java/im/conversations/android/xmpp/model/register/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/register/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/register/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/register/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/reply/Reply.java b/app/src/main/java/im/conversations/android/xmpp/model/reply/Reply.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/reply/Reply.java rename to app/src/main/java/im/conversations/android/xmpp/model/reply/Reply.java diff --git a/src/main/java/im/conversations/android/xmpp/model/retract/Retract.java b/app/src/main/java/im/conversations/android/xmpp/model/retract/Retract.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/retract/Retract.java rename to app/src/main/java/im/conversations/android/xmpp/model/retract/Retract.java diff --git a/src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java b/app/src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java rename to app/src/main/java/im/conversations/android/xmpp/model/retract/Retracted.java diff --git a/src/main/java/im/conversations/android/xmpp/model/retract/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/retract/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/retract/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/retract/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/Group.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/Group.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/Group.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/Group.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/Item.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/Item.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/Item.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/Item.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/Query.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/Query.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/Query.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/Query.java diff --git a/src/main/java/im/conversations/android/xmpp/model/roster/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/roster/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/roster/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/roster/package-info.java diff --git a/app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java new file mode 100644 index 000000000..e424cb0dd --- /dev/null +++ b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/Inline.java @@ -0,0 +1,12 @@ +package im.conversations.android.xmpp.model.sasl2; + +import im.conversations.android.annotation.XmlElement; +import im.conversations.android.xmpp.model.Extension; + +@XmlElement +public class Inline extends Extension { + + public Inline() { + super(Inline.class); + } +} diff --git a/app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java new file mode 100644 index 000000000..36f8927ff --- /dev/null +++ b/app/src/main/java/im/conversations/android/xmpp/model/sasl2/package-info.java @@ -0,0 +1,5 @@ +@XmlPackage(namespace = Namespace.SASL_2) +package im.conversations.android.xmpp.model.sasl2; + +import im.conversations.android.annotation.XmlPackage; +import im.conversations.android.xml.Namespace; diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Ack.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Ack.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Ack.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Ack.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Enable.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Enable.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Enable.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Enable.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Request.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Request.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Request.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Request.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/Resume.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/Resume.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/Resume.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/Resume.java diff --git a/src/main/java/im/conversations/android/xmpp/model/sm/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/sm/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/sm/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/sm/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Iq.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Message.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Message.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Message.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Message.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Presence.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/Stanza.java diff --git a/src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/stanza/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Active.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Active.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Active.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Active.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java b/app/src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/ChatStateNotification.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Composing.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Composing.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Composing.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Composing.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Gone.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Gone.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Gone.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Gone.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Inactive.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Inactive.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Inactive.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Inactive.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/Paused.java b/app/src/main/java/im/conversations/android/xmpp/model/state/Paused.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/Paused.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/Paused.java diff --git a/src/main/java/im/conversations/android/xmpp/model/state/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/state/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/state/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/state/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/streams/Features.java b/app/src/main/java/im/conversations/android/xmpp/model/streams/Features.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/streams/Features.java rename to app/src/main/java/im/conversations/android/xmpp/model/streams/Features.java diff --git a/src/main/java/im/conversations/android/xmpp/model/streams/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/streams/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/streams/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/streams/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java b/app/src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java rename to app/src/main/java/im/conversations/android/xmpp/model/unique/OriginId.java diff --git a/src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java b/app/src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java rename to app/src/main/java/im/conversations/android/xmpp/model/unique/StanzaId.java diff --git a/src/main/java/im/conversations/android/xmpp/model/unique/package-info.java b/app/src/main/java/im/conversations/android/xmpp/model/unique/package-info.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/unique/package-info.java rename to app/src/main/java/im/conversations/android/xmpp/model/unique/package-info.java diff --git a/src/main/java/im/conversations/android/xmpp/model/version/Version.java b/app/src/main/java/im/conversations/android/xmpp/model/version/Version.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/model/version/Version.java rename to app/src/main/java/im/conversations/android/xmpp/model/version/Version.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/BindProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/IqProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/MessageAcknowledgeProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/MessageProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java b/app/src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java rename to app/src/main/java/im/conversations/android/xmpp/processor/PresenceProcessor.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java b/app/src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/Anonymous.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBinding.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ChannelBindingMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java b/app/src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/DigestMd5.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/External.java b/app/src/main/java/im/conversations/android/xmpp/sasl/External.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/External.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/External.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java b/app/src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/HashedToken.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java b/app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha256.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java b/app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/HashedTokenSha512.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/Plain.java b/app/src/main/java/im/conversations/android/xmpp/sasl/Plain.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/Plain.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/Plain.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/SaslMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramPlusMechanism.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha1Plus.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha256Plus.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java b/app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/ScramSha512Plus.java diff --git a/src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java b/app/src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java similarity index 100% rename from src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java rename to app/src/main/java/im/conversations/android/xmpp/sasl/Tokenizer.java diff --git a/src/main/res/anim/slide_from_left.xml b/app/src/main/res/anim/slide_from_left.xml similarity index 100% rename from src/main/res/anim/slide_from_left.xml rename to app/src/main/res/anim/slide_from_left.xml diff --git a/src/main/res/anim/slide_from_right.xml b/app/src/main/res/anim/slide_from_right.xml similarity index 100% rename from src/main/res/anim/slide_from_right.xml rename to app/src/main/res/anim/slide_from_right.xml diff --git a/src/main/res/anim/slide_to_left.xml b/app/src/main/res/anim/slide_to_left.xml similarity index 100% rename from src/main/res/anim/slide_to_left.xml rename to app/src/main/res/anim/slide_to_left.xml diff --git a/src/main/res/anim/slide_to_right.xml b/app/src/main/res/anim/slide_to_right.xml similarity index 100% rename from src/main/res/anim/slide_to_right.xml rename to app/src/main/res/anim/slide_to_right.xml diff --git a/src/main/res/drawable/ic_account_circle_24dp.xml b/app/src/main/res/drawable/ic_account_circle_24dp.xml similarity index 100% rename from src/main/res/drawable/ic_account_circle_24dp.xml rename to app/src/main/res/drawable/ic_account_circle_24dp.xml diff --git a/src/main/res/drawable/ic_settings_24dp.xml b/app/src/main/res/drawable/ic_settings_24dp.xml similarity index 100% rename from src/main/res/drawable/ic_settings_24dp.xml rename to app/src/main/res/drawable/ic_settings_24dp.xml diff --git a/src/main/res/layout/activity_setup.xml b/app/src/main/res/layout/activity_setup.xml similarity index 100% rename from src/main/res/layout/activity_setup.xml rename to app/src/main/res/layout/activity_setup.xml diff --git a/src/main/res/layout/fragment_password.xml b/app/src/main/res/layout/fragment_password.xml similarity index 99% rename from src/main/res/layout/fragment_password.xml rename to app/src/main/res/layout/fragment_password.xml index fa9d2b8ca..46deb9163 100644 --- a/src/main/res/layout/fragment_password.xml +++ b/app/src/main/res/layout/fragment_password.xml @@ -33,7 +33,7 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:title="@string/app_name" - app:menu="@menu/setup" + app:menu="@menu/activity_setup" app:titleTextColor="?colorPrimary" app:titleCentered="true" /> diff --git a/src/main/res/layout/fragment_sign_in.xml b/app/src/main/res/layout/fragment_sign_in.xml similarity index 98% rename from src/main/res/layout/fragment_sign_in.xml rename to app/src/main/res/layout/fragment_sign_in.xml index 018557a7d..0339896e7 100644 --- a/src/main/res/layout/fragment_sign_in.xml +++ b/app/src/main/res/layout/fragment_sign_in.xml @@ -32,7 +32,7 @@ android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:title="@string/app_name" - app:menu="@menu/setup" + app:menu="@menu/activity_setup" app:titleTextColor="?colorPrimary" app:titleCentered="true" /> @@ -111,7 +111,6 @@ android:layout_height="wrap_content" android:text="@string/no_account_register" android:layout_centerHorizontal="true" - android:textColor="?colorSecondary" android:enabled="@{!setupViewModel.isLoading()}" android:layout_below="@+id/xmpp_address_input_layout" /> diff --git a/src/main/res/menu/setup.xml b/app/src/main/res/menu/activity_setup.xml similarity index 100% rename from src/main/res/menu/setup.xml rename to app/src/main/res/menu/activity_setup.xml diff --git a/src/main/res/navigation/setup_navigation.xml b/app/src/main/res/navigation/setup_navigation.xml similarity index 100% rename from src/main/res/navigation/setup_navigation.xml rename to app/src/main/res/navigation/setup_navigation.xml diff --git a/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml similarity index 100% rename from src/main/res/values-ar/strings.xml rename to app/src/main/res/values-ar/strings.xml diff --git a/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml similarity index 100% rename from src/main/res/values-bg/strings.xml rename to app/src/main/res/values-bg/strings.xml diff --git a/src/main/res/values-bn-rIN/strings.xml b/app/src/main/res/values-bn-rIN/strings.xml similarity index 100% rename from src/main/res/values-bn-rIN/strings.xml rename to app/src/main/res/values-bn-rIN/strings.xml diff --git a/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml similarity index 100% rename from src/main/res/values-ca/strings.xml rename to app/src/main/res/values-ca/strings.xml diff --git a/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml similarity index 100% rename from src/main/res/values-cs/strings.xml rename to app/src/main/res/values-cs/strings.xml diff --git a/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml similarity index 100% rename from src/main/res/values-da-rDK/strings.xml rename to app/src/main/res/values-da-rDK/strings.xml diff --git a/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml similarity index 100% rename from src/main/res/values-de/strings.xml rename to app/src/main/res/values-de/strings.xml diff --git a/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml similarity index 100% rename from src/main/res/values-el/strings.xml rename to app/src/main/res/values-el/strings.xml diff --git a/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml similarity index 100% rename from src/main/res/values-es/strings.xml rename to app/src/main/res/values-es/strings.xml diff --git a/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml similarity index 100% rename from src/main/res/values-eu/strings.xml rename to app/src/main/res/values-eu/strings.xml diff --git a/src/main/res/values-fa-rIR/strings.xml b/app/src/main/res/values-fa-rIR/strings.xml similarity index 100% rename from src/main/res/values-fa-rIR/strings.xml rename to app/src/main/res/values-fa-rIR/strings.xml diff --git a/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml similarity index 100% rename from src/main/res/values-fi/strings.xml rename to app/src/main/res/values-fi/strings.xml diff --git a/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml similarity index 100% rename from src/main/res/values-fr/strings.xml rename to app/src/main/res/values-fr/strings.xml diff --git a/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml similarity index 100% rename from src/main/res/values-gl/strings.xml rename to app/src/main/res/values-gl/strings.xml diff --git a/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml similarity index 100% rename from src/main/res/values-hi-rIN/strings.xml rename to app/src/main/res/values-hi-rIN/strings.xml diff --git a/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml similarity index 100% rename from src/main/res/values-hr/strings.xml rename to app/src/main/res/values-hr/strings.xml diff --git a/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml similarity index 100% rename from src/main/res/values-hu/strings.xml rename to app/src/main/res/values-hu/strings.xml diff --git a/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml similarity index 100% rename from src/main/res/values-id/strings.xml rename to app/src/main/res/values-id/strings.xml diff --git a/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml similarity index 100% rename from src/main/res/values-it/strings.xml rename to app/src/main/res/values-it/strings.xml diff --git a/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml similarity index 100% rename from src/main/res/values-iw/strings.xml rename to app/src/main/res/values-iw/strings.xml diff --git a/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml similarity index 100% rename from src/main/res/values-ja/strings.xml rename to app/src/main/res/values-ja/strings.xml diff --git a/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml similarity index 100% rename from src/main/res/values-ko/strings.xml rename to app/src/main/res/values-ko/strings.xml diff --git a/src/main/res/values-land/bools.xml b/app/src/main/res/values-land/bools.xml similarity index 100% rename from src/main/res/values-land/bools.xml rename to app/src/main/res/values-land/bools.xml diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml new file mode 100644 index 000000000..66ed64d3d --- /dev/null +++ b/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,5 @@ + + 8dp + 12dp + 272dp + diff --git a/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml similarity index 100% rename from src/main/res/values-ml/strings.xml rename to app/src/main/res/values-ml/strings.xml diff --git a/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml similarity index 100% rename from src/main/res/values-nb-rNO/strings.xml rename to app/src/main/res/values-nb-rNO/strings.xml diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 000000000..2bbe27628 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,31 @@ + + + + diff --git a/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml similarity index 100% rename from src/main/res/values-nl/strings.xml rename to app/src/main/res/values-nl/strings.xml diff --git a/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml similarity index 100% rename from src/main/res/values-pl/strings.xml rename to app/src/main/res/values-pl/strings.xml diff --git a/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml similarity index 100% rename from src/main/res/values-pt-rBR/strings.xml rename to app/src/main/res/values-pt-rBR/strings.xml diff --git a/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml similarity index 100% rename from src/main/res/values-pt/strings.xml rename to app/src/main/res/values-pt/strings.xml diff --git a/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml similarity index 100% rename from src/main/res/values-ro-rRO/strings.xml rename to app/src/main/res/values-ro-rRO/strings.xml diff --git a/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml similarity index 100% rename from src/main/res/values-ru/strings.xml rename to app/src/main/res/values-ru/strings.xml diff --git a/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml similarity index 100% rename from src/main/res/values-sk/strings.xml rename to app/src/main/res/values-sk/strings.xml diff --git a/src/main/res/values-sq-rAL/strings.xml b/app/src/main/res/values-sq-rAL/strings.xml similarity index 100% rename from src/main/res/values-sq-rAL/strings.xml rename to app/src/main/res/values-sq-rAL/strings.xml diff --git a/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml similarity index 100% rename from src/main/res/values-sr/strings.xml rename to app/src/main/res/values-sr/strings.xml diff --git a/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml similarity index 100% rename from src/main/res/values-sv/strings.xml rename to app/src/main/res/values-sv/strings.xml diff --git a/src/quicksy/res/values/defaults.xml b/app/src/main/res/values-sw600dp/device.xml similarity index 52% rename from src/quicksy/res/values/defaults.xml rename to app/src/main/res/values-sw600dp/device.xml index 8f3617396..76b119505 100644 --- a/src/quicksy/res/values/defaults.xml +++ b/app/src/main/res/values-sw600dp/device.xml @@ -1,4 +1,4 @@ - always + true diff --git a/src/main/res/values-szl/strings.xml b/app/src/main/res/values-szl/strings.xml similarity index 100% rename from src/main/res/values-szl/strings.xml rename to app/src/main/res/values-szl/strings.xml diff --git a/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml similarity index 100% rename from src/main/res/values-tr-rTR/strings.xml rename to app/src/main/res/values-tr-rTR/strings.xml diff --git a/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml similarity index 100% rename from src/main/res/values-uk/strings.xml rename to app/src/main/res/values-uk/strings.xml diff --git a/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml similarity index 100% rename from src/main/res/values-vi/strings.xml rename to app/src/main/res/values-vi/strings.xml diff --git a/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml similarity index 100% rename from src/main/res/values-zh-rCN/strings.xml rename to app/src/main/res/values-zh-rCN/strings.xml diff --git a/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml similarity index 100% rename from src/main/res/values-zh-rTW/strings.xml rename to app/src/main/res/values-zh-rTW/strings.xml diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 000000000..fe65a2a6a --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,64 @@ + + + #43A047 + #006E1C + #FFFFFF + #98F994 + #002204 + #52634F + #FFFFFF + #D5E8CF + #111F0F + #38656A + #FFFFFF + #BCEBF0 + #002023 + #BA1A1A + #FFDAD6 + #FFFFFF + #410002 + #FCFDF6 + #1A1C19 + #FCFDF6 + #1A1C19 + #DEE5D8 + #424940 + #72796F + #F0F1EB + #2F312D + #7DDC7A + #000000 + #006E1C + #C2C9BD + #000000 + #7DDC7A + #00390A + #005313 + #98F994 + #BACCB3 + #253423 + #3B4B38 + #D5E8CF + #A0CFD4 + #00363B + #1F4D52 + #BCEBF0 + #FFB4AB + #93000A + #690005 + #FFDAD6 + #1A1C19 + #E2E3DD + #1A1C19 + #E2E3DD + #424940 + #C2C9BD + #8C9388 + #1A1C19 + #E2E3DD + #006E1C + #000000 + #7DDC7A + #424940 + #000000 + diff --git a/app/src/main/res/values/device.xml b/app/src/main/res/values/device.xml new file mode 100644 index 000000000..f99fe3e59 --- /dev/null +++ b/app/src/main/res/values/device.xml @@ -0,0 +1,4 @@ + + + false + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 000000000..7f85bd709 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,5 @@ + + 48dp + 336dp + 24dp + diff --git a/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml similarity index 100% rename from src/main/res/values/integers.xml rename to app/src/main/res/values/integers.xml diff --git a/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml similarity index 100% rename from src/main/res/values/strings.xml rename to app/src/main/res/values/strings.xml diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 000000000..ddf74586f --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,31 @@ + + + + diff --git a/app/src/main/res/xml/backup_rules.xml b/app/src/main/res/xml/backup_rules.xml new file mode 100644 index 000000000..fa0f996d2 --- /dev/null +++ b/app/src/main/res/xml/backup_rules.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 000000000..9ee9997b0 --- /dev/null +++ b/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,19 @@ + + + + + + + \ No newline at end of file diff --git a/src/quicksy/res/drawable/ic_launcher_foreground.xml b/app/src/quicksy/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from src/quicksy/res/drawable/ic_launcher_foreground.xml rename to app/src/quicksy/res/drawable/ic_launcher_foreground.xml diff --git a/src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml b/app/src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml similarity index 100% rename from src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml rename to app/src/quicksy/res/mipmap-anydpi-v26/new_launcher.xml diff --git a/src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml b/app/src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml similarity index 100% rename from src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml rename to app/src/quicksy/res/mipmap-anydpi-v26/new_launcher_round.xml diff --git a/app/src/quicksy/res/mipmap-hdpi/ic_launcher_background.png b/app/src/quicksy/res/mipmap-hdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..0e5a16390aae109be31f0e54e7236bc0d23ddf54 GIT binary patch literal 1752 zcmah~`8(SO7*8UXbecqotf&w}wRNq6s`xsK5^=0ibRzYnYuQ+7R-~4%t6A%+TGuL- zxJT9^j;=$aVvf?*9CbX@F-L|9qKwv-?jP6>@B4m!`F!5b=Xu`ed4HhOPN`uIVjvKR znx}`Wzj79TEHqNtpRE(LArNGdr>j%o)v=X{CI5iaxb$%I7(IZdkHLRpOzvv60%J53 z!y`wl>MKc@9V11!1?`{u6ZS1M`$9f8X^urM1xgR#-JyBT2m`b+XS3Kw zJWK)~1L*OXcrE_EteWEz4FOQFF|pR`Y0IfpC*u}$ryn!Iz{j=>?QYYUq;NpzNUGd7dvC5`=e>=7F>%eHE$9}kvP3G$A;9|ihyM%qf`6G z+ud*O_z44_14AA+1ap4@I!9j}>TfpoK_doPE9FLX!MGgW3S7O7|b@ zE)%!`2-c}Pe?Alp%)nWj(X!yaZAlX*a7zrUT~Aq>9LNndwha*gqW9@YY}|+H6;Xl& z&g#(CP-_m2APoJ7^UMTd7)E-@#)Pv-4c#5W7~zgY#j=AAG@?rZksRaoXwyXA}t7&LKQ zgbjhyNoVQ;vQnF_kR##Vq~V%?qzCB~d1;p@|E4-$Gt{kr>ImY+L1SF?uQ&eieOA#? zb4`3c*gOw7%DtY6phiaFJ;0z*UCO!i3(y06O~qDj6gJvM&}ab$EkhFfAaA}&8v^01 zHnO%I)gh;?@4^=)bXe^xqYjlKLI~{_Cakt=yg6Z1?j;bXs7k#khsRmGGj!@iqYc3b zce6!ijVRKxstzuJvp})SKHjZGkupcF*hP)%kSlb$rsOZyErZcPl@w(n=Gn$J8&Q2i z4v-Og=MmD2XN9wGN;KPaRh3Fyq9VCpPA!KwrodTK_gluGJ8k1FryuF{%7`Fwd#V{J zK-CwF3AnrV5ElKu%5osjy6t(|J&Zcvsgv^SfNxgB8-bq*NaWm3(QExMH7_i9mk42X zwQq!ULzYs0LVd1jh;wPxd&`Cm>i^CCPEdvFq2vIc*g6hE6{rPNAW|u`aD5n3GBsD? z-HDd+UgMfn>f3GJhcoQ+R!AT*=GxhP7V3qX-iJL%$Ob#|ZHPkBv^5*UcA$GX!TRG% za&K5@g=tg1j-`89!218zPdFy=mtUs$IKeEJ-Gff^WM5@jDn=} z{jGGt#gTc$X(}WeGlV7MbnUNBT2`p^b~Jq-J)n~poB_lw8>U+EEamIWzm!sohg=<= zt#2O%J}z1FJ=5!K0ySy79P^Lc1UDxk15iBq^j)#>-Q*KIyTzl-c^)?t&!?T!+ZqaZ zMR@a-Ga2al$jhwx{tyF-8U^*HQKdZNe1T9q>o zwYFbZB=82A@Z#B6Q%=Au}Ihvmmj8i)ZE2Drj8F7#z#a{P8y#o)oxIMYK=%ewa8T&$h#B(uFe z!2Efxy(YMbSd(cj-;|FClZfNxO41V>Xt9P6Au-1q8(J}YFEmsnfv&1$=Pybw}Jl>ITexDxt zW!kp-l&896HZ1yna{r+jG{2!)wHGs8iI_IzUL;lcc8orcolHmYZ@sh*d#6?rPJO14 zAye8a1V`SV-Itj9CK&(V{m!b}xaGXl;BvtN!QlVD23kKtxZxO66nSr*s?wnRSP)M) Kn(ISnX7axdE(){& literal 0 HcmV?d00001 diff --git a/src/quicksy/res/mipmap-hdpi/new_launcher.png b/app/src/quicksy/res/mipmap-hdpi/new_launcher.png similarity index 100% rename from src/quicksy/res/mipmap-hdpi/new_launcher.png rename to app/src/quicksy/res/mipmap-hdpi/new_launcher.png diff --git a/src/quicksy/res/mipmap-hdpi/new_launcher_round.png b/app/src/quicksy/res/mipmap-hdpi/new_launcher_round.png similarity index 100% rename from src/quicksy/res/mipmap-hdpi/new_launcher_round.png rename to app/src/quicksy/res/mipmap-hdpi/new_launcher_round.png diff --git a/app/src/quicksy/res/mipmap-mdpi/ic_launcher_background.png b/app/src/quicksy/res/mipmap-mdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..57edd5ca3b8225076c8a49743cbcb823d7ffe73d GIT binary patch literal 1162 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 WMM;#w_Bwb6Mp&Cu$W>-uN&gSL?WEBF literal 0 HcmV?d00001 diff --git a/src/quicksy/res/mipmap-xxhdpi/new_launcher.png b/app/src/quicksy/res/mipmap-xxhdpi/new_launcher.png similarity index 100% rename from src/quicksy/res/mipmap-xxhdpi/new_launcher.png rename to app/src/quicksy/res/mipmap-xxhdpi/new_launcher.png diff --git a/src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png b/app/src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png similarity index 100% rename from src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png rename to app/src/quicksy/res/mipmap-xxhdpi/new_launcher_round.png diff --git a/app/src/quicksy/res/mipmap-xxxhdpi/ic_launcher_background.png b/app/src/quicksy/res/mipmap-xxxhdpi/ic_launcher_background.png new file mode 100644 index 0000000000000000000000000000000000000000..b75f8bc457e06ea450ee9a26bcb094c94d38750c GIT binary patch literal 5359 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 B!~p;R literal 0 HcmV?d00001 diff --git a/src/quicksy/res/mipmap-xxxhdpi/new_launcher.png b/app/src/quicksy/res/mipmap-xxxhdpi/new_launcher.png similarity index 100% rename from src/quicksy/res/mipmap-xxxhdpi/new_launcher.png rename to app/src/quicksy/res/mipmap-xxxhdpi/new_launcher.png diff --git a/src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png b/app/src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png similarity index 100% rename from src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png rename to app/src/quicksy/res/mipmap-xxxhdpi/new_launcher_round.png diff --git a/src/quicksy/res/values-ar/strings.xml b/app/src/quicksy/res/values-ar/strings.xml similarity index 100% rename from src/quicksy/res/values-ar/strings.xml rename to app/src/quicksy/res/values-ar/strings.xml diff --git a/src/quicksy/res/values-bg/strings.xml b/app/src/quicksy/res/values-bg/strings.xml similarity index 100% rename from src/quicksy/res/values-bg/strings.xml rename to app/src/quicksy/res/values-bg/strings.xml diff --git a/src/quicksy/res/values-ca/strings.xml b/app/src/quicksy/res/values-ca/strings.xml similarity index 100% rename from src/quicksy/res/values-ca/strings.xml rename to app/src/quicksy/res/values-ca/strings.xml diff --git a/src/quicksy/res/values-da-rDK/strings.xml b/app/src/quicksy/res/values-da-rDK/strings.xml similarity index 100% rename from src/quicksy/res/values-da-rDK/strings.xml rename to app/src/quicksy/res/values-da-rDK/strings.xml diff --git a/src/quicksy/res/values-de/strings.xml b/app/src/quicksy/res/values-de/strings.xml similarity index 100% rename from src/quicksy/res/values-de/strings.xml rename to app/src/quicksy/res/values-de/strings.xml diff --git a/src/quicksy/res/values-el/strings.xml b/app/src/quicksy/res/values-el/strings.xml similarity index 100% rename from src/quicksy/res/values-el/strings.xml rename to app/src/quicksy/res/values-el/strings.xml diff --git a/src/quicksy/res/values-es/strings.xml b/app/src/quicksy/res/values-es/strings.xml similarity index 100% rename from src/quicksy/res/values-es/strings.xml rename to app/src/quicksy/res/values-es/strings.xml diff --git a/src/quicksy/res/values-fi/strings.xml b/app/src/quicksy/res/values-fi/strings.xml similarity index 100% rename from src/quicksy/res/values-fi/strings.xml rename to app/src/quicksy/res/values-fi/strings.xml diff --git a/src/quicksy/res/values-fr/strings.xml b/app/src/quicksy/res/values-fr/strings.xml similarity index 100% rename from src/quicksy/res/values-fr/strings.xml rename to app/src/quicksy/res/values-fr/strings.xml diff --git a/src/quicksy/res/values-gl/strings.xml b/app/src/quicksy/res/values-gl/strings.xml similarity index 100% rename from src/quicksy/res/values-gl/strings.xml rename to app/src/quicksy/res/values-gl/strings.xml diff --git a/src/quicksy/res/values-hr/strings.xml b/app/src/quicksy/res/values-hr/strings.xml similarity index 100% rename from src/quicksy/res/values-hr/strings.xml rename to app/src/quicksy/res/values-hr/strings.xml diff --git a/src/quicksy/res/values-hu/strings.xml b/app/src/quicksy/res/values-hu/strings.xml similarity index 100% rename from src/quicksy/res/values-hu/strings.xml rename to app/src/quicksy/res/values-hu/strings.xml diff --git a/src/quicksy/res/values-id/strings.xml b/app/src/quicksy/res/values-id/strings.xml similarity index 100% rename from src/quicksy/res/values-id/strings.xml rename to app/src/quicksy/res/values-id/strings.xml diff --git a/src/quicksy/res/values-it/strings.xml b/app/src/quicksy/res/values-it/strings.xml similarity index 100% rename from src/quicksy/res/values-it/strings.xml rename to app/src/quicksy/res/values-it/strings.xml diff --git a/src/quicksy/res/values-ja/strings.xml b/app/src/quicksy/res/values-ja/strings.xml similarity index 100% rename from src/quicksy/res/values-ja/strings.xml rename to app/src/quicksy/res/values-ja/strings.xml diff --git a/src/quicksy/res/values-nl/strings.xml b/app/src/quicksy/res/values-nl/strings.xml similarity index 100% rename from src/quicksy/res/values-nl/strings.xml rename to app/src/quicksy/res/values-nl/strings.xml diff --git a/src/quicksy/res/values-pl/strings.xml b/app/src/quicksy/res/values-pl/strings.xml similarity index 100% rename from src/quicksy/res/values-pl/strings.xml rename to app/src/quicksy/res/values-pl/strings.xml diff --git a/src/quicksy/res/values-pt-rBR/strings.xml b/app/src/quicksy/res/values-pt-rBR/strings.xml similarity index 100% rename from src/quicksy/res/values-pt-rBR/strings.xml rename to app/src/quicksy/res/values-pt-rBR/strings.xml diff --git a/src/quicksy/res/values-ro-rRO/strings.xml b/app/src/quicksy/res/values-ro-rRO/strings.xml similarity index 100% rename from src/quicksy/res/values-ro-rRO/strings.xml rename to app/src/quicksy/res/values-ro-rRO/strings.xml diff --git a/src/quicksy/res/values-ru/strings.xml b/app/src/quicksy/res/values-ru/strings.xml similarity index 100% rename from src/quicksy/res/values-ru/strings.xml rename to app/src/quicksy/res/values-ru/strings.xml diff --git a/src/quicksy/res/values-sk/strings.xml b/app/src/quicksy/res/values-sk/strings.xml similarity index 100% rename from src/quicksy/res/values-sk/strings.xml rename to app/src/quicksy/res/values-sk/strings.xml diff --git a/src/quicksy/res/values-sq/strings.xml b/app/src/quicksy/res/values-sq/strings.xml similarity index 100% rename from src/quicksy/res/values-sq/strings.xml rename to app/src/quicksy/res/values-sq/strings.xml diff --git a/src/quicksy/res/values-sv/strings.xml b/app/src/quicksy/res/values-sv/strings.xml similarity index 100% rename from src/quicksy/res/values-sv/strings.xml rename to app/src/quicksy/res/values-sv/strings.xml diff --git a/src/quicksy/res/values-szl/strings.xml b/app/src/quicksy/res/values-szl/strings.xml similarity index 100% rename from src/quicksy/res/values-szl/strings.xml rename to app/src/quicksy/res/values-szl/strings.xml diff --git a/src/quicksy/res/values-tr-rTR/strings.xml b/app/src/quicksy/res/values-tr-rTR/strings.xml similarity index 100% rename from src/quicksy/res/values-tr-rTR/strings.xml rename to app/src/quicksy/res/values-tr-rTR/strings.xml diff --git a/src/quicksy/res/values-uk/strings.xml b/app/src/quicksy/res/values-uk/strings.xml similarity index 100% rename from src/quicksy/res/values-uk/strings.xml rename to app/src/quicksy/res/values-uk/strings.xml diff --git a/src/quicksy/res/values-vi/strings.xml b/app/src/quicksy/res/values-vi/strings.xml similarity index 100% rename from src/quicksy/res/values-vi/strings.xml rename to app/src/quicksy/res/values-vi/strings.xml diff --git a/src/quicksy/res/values-zh-rCN/strings.xml b/app/src/quicksy/res/values-zh-rCN/strings.xml similarity index 100% rename from src/quicksy/res/values-zh-rCN/strings.xml rename to app/src/quicksy/res/values-zh-rCN/strings.xml diff --git a/src/quicksy/res/values-zh-rTW/strings.xml b/app/src/quicksy/res/values-zh-rTW/strings.xml similarity index 100% rename from src/quicksy/res/values-zh-rTW/strings.xml rename to app/src/quicksy/res/values-zh-rTW/strings.xml diff --git a/src/quicksy/res/values/strings.xml b/app/src/quicksy/res/values/strings.xml similarity index 100% rename from src/quicksy/res/values/strings.xml rename to app/src/quicksy/res/values/strings.xml diff --git a/src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java b/app/src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java rename to app/src/test/java/im/conversations/android/xmpp/EntityCapabilitiesTest.java diff --git a/src/test/java/im/conversations/android/xmpp/PubSubTest.java b/app/src/test/java/im/conversations/android/xmpp/PubSubTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/PubSubTest.java rename to app/src/test/java/im/conversations/android/xmpp/PubSubTest.java diff --git a/src/test/java/im/conversations/android/xmpp/TimestampTest.java b/app/src/test/java/im/conversations/android/xmpp/TimestampTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/TimestampTest.java rename to app/src/test/java/im/conversations/android/xmpp/TimestampTest.java diff --git a/src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java b/app/src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java similarity index 100% rename from src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java rename to app/src/test/java/im/conversations/android/xmpp/XmlElementReaderTest.java diff --git a/build.gradle b/build.gradle index 7c156fc29..5170846e3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,318 +1,28 @@ buildscript { - ext { - room_version = "2.5.0" - navVersion = '2.5.3' appcompatVersion = "1.6.1" + material = "1.8.0" lifecycleVersion = "2.2.0" + navVersion = '2.5.3' + roomVersion = "2.5.0" + espressoVersion = "3.5.1" } repositories { google() mavenCentral() } + + dependencies { classpath 'com.android.tools.build:gradle:7.4.1' - classpath "com.diffplug.spotless:spotless-plugin-gradle:6.13.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navVersion" + classpath "com.diffplug.spotless:spotless-plugin-gradle:6.13.0" } } - -apply plugin: 'com.android.application' -apply plugin: "com.diffplug.spotless" -apply plugin: "androidx.navigation.safeargs" - - -repositories { - google() - mavenCentral() - jcenter() -} - -configurations { - playstoreImplementation - freeImplementation - conversationsFreeImplementation - conversationsPlaystorImplementation - conversationsPlaystoreImplementation - quicksyPlaystoreImplementation - quicksyPlaystoreImplementation - quicksyFreeImplementation - quicksyImplementation -} - -spotless { - ratchetFrom '2.12.2' - java { - target '**/*.java' - googleJavaFormat('1.8').aosp().reflowLongStrings() +allprojects { + repositories { + google() + mavenCentral() } -} - -dependencies { - - // Conversations 3.0 dependencies - - implementation project(':libs:annotation') - annotationProcessor project(':libs:annotation-processor') - - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.8' - - implementation "androidx.appcompat:appcompat:$rootProject.ext.appcompatVersion" - - implementation "androidx.lifecycle:lifecycle-extensions:$rootProject.ext.lifecycleVersion" - - implementation "androidx.room:room-runtime:$room_version" - annotationProcessor "androidx.room:room-compiler:$room_version" - implementation "androidx.room:room-guava:$room_version" - - implementation "androidx.navigation:navigation-fragment:$rootProject.ext.navVersion" - implementation "androidx.navigation:navigation-ui:$rootProject.ext.navVersion" - - implementation 'androidx.constraintlayout:constraintlayout:2.1.4' - - - implementation "androidx.security:security-crypto:1.0.0" - - - implementation 'org.slf4j:slf4j-api:1.7.36' - implementation 'com.github.tony19:logback-android:2.0.1' - - testImplementation 'junit:junit:4.13.2' - testImplementation 'org.robolectric:robolectric:4.9' - androidTestImplementation 'androidx.test.ext:junit:1.1.5' - androidTestImplementation 'androidx.test:runner:1.5.2' - - - // legacy dependencies. Ideally everything below should be carefully reviewed and eventually moved up - - - implementation 'androidx.viewpager:viewpager:1.0.0' - - playstoreImplementation('com.google.firebase:firebase-messaging:23.1.1') { - exclude group: 'com.google.firebase', module: 'firebase-core' - exclude group: 'com.google.firebase', module: 'firebase-analytics' - exclude group: 'com.google.firebase', module: 'firebase-measurement-connector' - } - conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2") - quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1' - implementation 'org.sufficientlysecure:openpgp-api:10.0' - implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0' - implementation 'androidx.exifinterface:exifinterface:1.3.6' - implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' - implementation 'com.google.android.material:material:1.8.0' - - implementation "androidx.emoji2:emoji2:1.2.0" - freeImplementation "androidx.emoji2:emoji2-bundled:1.2.0" - - implementation 'org.bouncycastle:bcmail-jdk15on:1.64' - //zxing stopped supporting Java 7 so we have to stick with 3.3.3 - //https://github.com/zxing/zxing/issues/1170 - implementation 'com.google.zxing:core:3.3.3' - implementation 'de.measite.minidns:minidns-hla:0.2.4' - implementation 'me.leolin:ShortcutBadger:1.1.22@aar' - implementation 'org.whispersystems:signal-protocol-java:2.6.2' - implementation 'com.makeramen:roundedimageview:2.3.0' - implementation "com.wefika:flowlayout:0.4.1" - //noinspection GradleDependency - implementation 'com.otaliastudios:transcoder:0.9.1' - - implementation 'org.jxmpp:jxmpp-jid:1.0.3' - implementation 'org.osmdroid:osmdroid-android:6.1.11' - implementation 'org.hsluv:hsluv:0.2' - implementation 'org.conscrypt:conscrypt-android:2.5.2' - implementation 'me.drakeet.support:toastcompat:1.1.0' - implementation "com.leinardi.android:speed-dial:3.2.0" - - implementation "com.squareup.retrofit2:retrofit:2.9.0" - implementation "com.squareup.retrofit2:converter-gson:2.9.0" - implementation "com.squareup.okhttp3:okhttp:4.10.0" - - implementation 'com.google.guava:guava:31.1-android' - quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.12.49' - implementation 'im.conversations.webrtc:webrtc-android:104.0.0' -} - -ext { - preDexEnabled = System.getProperty("pre-dex", "true") - abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4] -} - -android { - namespace 'eu.siacs.conversations' - compileSdkVersion 33 - - defaultConfig { - minSdkVersion 23 - targetSdkVersion 33 - versionCode 1 - versionName "3.0.0-alpha" - archivesBaseName += "-$versionName" - applicationId "im.conversations.android" - resValue "string", "applicationId", applicationId - def appName = "Conversations" - resValue "string", "app_name", appName - buildConfigField "String", "APP_NAME", "\"$appName\"" - - javaCompileOptions { - annotationProcessorOptions { - arguments += ["room.schemaLocation": "$projectDir/schemas".toString()] - } - } - - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - testInstrumentationRunnerArguments clearPackageData: 'true' - - } - - testOptions { - unitTests { - includeAndroidResources = false - } - } - - splits { - abi { - universalApk true - enable true - } - } - - configurations { - implementation.exclude group: 'org.jetbrains' , module:'annotations' - } - - dataBinding { - enabled true - } - - compileOptions { - coreLibraryDesugaringEnabled true - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 - } - - - flavorDimensions("mode", "distribution") - - productFlavors { - - quicksy { - dimension "mode" - applicationId = "im.quicksy.client" - resValue "string", "applicationId", applicationId - - def appName = "Quicksy" - resValue "string", "app_name", appName - buildConfigField "String", "APP_NAME", "\"$appName\"" - } - - conversations { - dimension "mode" - } - - playstore { - dimension "distribution" - versionNameSuffix "+playstore" - } - free { - dimension "distribution" - versionNameSuffix "+free" - } - } - - sourceSets { - quicksyFree { - java { - srcDir 'src/quicksyFree/java' - } - } - quicksyPlaystore { - java { - srcDir 'src/quicksyPlaystore/java' - } - res { - srcDir 'src/quicksyPlaystore/res' - } - } - conversationsFree { - java { - srcDir 'src/conversationsFree/java' - } - } - conversationsPlaystore { - java { - srcDir 'src/conversationsPlaystore/java' - } - res { - srcDir 'src/conversationsPlaystore/res' - } - } - } - - buildTypes { - release { - shrinkResources true - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - debug { - //useProguard false - //shrinkResources true - //minifyEnabled true - //proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - } - } - - - if (new File("signing.properties").exists()) { - Properties props = new Properties() - props.load(new FileInputStream(file("signing.properties"))) - - signingConfigs { - release { - storeFile file(props['keystore']) - storePassword props['keystore.password'] - keyAlias props['keystore.alias'] - keyPassword props['keystore.password'] - } - } - buildTypes.release.signingConfig = signingConfigs.release - } - - - subprojects { - - afterEvaluate { - if (getPlugins().hasPlugin('android') || - getPlugins().hasPlugin('android-library')) { - - configure(android.lintOptions) { - disable 'AndroidGradlePluginVersion', 'MissingTranslation' - } - } - - } - } - packagingOptions { - resources { - excludes += ['META-INF/BCKEY.DSA', 'META-INF/BCKEY.SF'] - } - } - lint { - disable 'MissingTranslation', 'InvalidPackage', 'AppCompatResource' - } - - android.applicationVariants.all { variant -> - variant.outputs.each { output -> - def baseAbiVersionCode = project.ext.abiCodes.get(output.getFilter(com.android.build.OutputFile.ABI)) - if (baseAbiVersionCode != null) { - output.versionCodeOverride = (100 * project.android.defaultConfig.versionCode) + baseAbiVersionCode - } else { - output.versionCodeOverride = 100 * project.android.defaultConfig.versionCode - } - } - - } -} +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 431e485f2..a03b35489 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -android.enableJetifier=true -org.gradle.jvmargs=-Xmx4096m +# Enables namespacing of each library's R class so that its R class includes only the +# resources declared in the library itself and none from the library's dependencies, +# thereby reducing the size of the R class for that library +android.nonTransitiveRClass=true diff --git a/libs/annotation-processor/build.gradle b/libs/annotation-processor/build.gradle deleted file mode 100644 index 3bad25d2b..000000000 --- a/libs/annotation-processor/build.gradle +++ /dev/null @@ -1,21 +0,0 @@ -plugins { - id 'java-library' -} - -repositories { - google() - mavenCentral() -} - -java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 -} -dependencies { - - implementation project(':libs:annotation') - - annotationProcessor 'com.google.auto.service:auto-service:1.0-rc5' - compileOnly 'com.google.auto.service:auto-service:1.0-rc5' - -} \ No newline at end of file diff --git a/libs/annotation/build.gradle b/libs/annotation/build.gradle deleted file mode 100644 index e493c42ff..000000000 --- a/libs/annotation/build.gradle +++ /dev/null @@ -1,8 +0,0 @@ -plugins { - id 'java-library' -} - -java { - sourceCompatibility = JavaVersion.VERSION_1_7 - targetCompatibility = JavaVersion.VERSION_1_7 -} \ No newline at end of file diff --git a/proguard-rules.pro b/proguard-rules.pro deleted file mode 100644 index b9bab8865..000000000 --- a/proguard-rules.pro +++ /dev/null @@ -1,74 +0,0 @@ --dontobfuscate - --keep class eu.siacs.conversations.** - --keep class org.whispersystems.** - --keep class com.kyleduo.switchbutton.Configuration - --keep class com.soundcloud.android.crop.** - --keep class com.google.android.gms.** - --keep class org.openintents.openpgp.* --keep class org.webrtc.** { *; } - -# Logger --keep class org.slf4j.** {*;} --keep class ch.qos.** {*;} - --dontwarn javax.mail.internet.MimeMessage --dontwarn javax.mail.internet.MimeBodyPart --dontwarn javax.mail.internet.SharedInputStream --dontwarn javax.activation.DataContentHandler --dontwarn org.bouncycastle.mail.** --dontwarn org.bouncycastle.x509.util.LDAPStoreHelper --dontwarn org.bouncycastle.jce.provider.X509LDAPCertStoreSpi --dontwarn org.bouncycastle.cert.dane.** --dontwarn rocks.xmpp.addr.** --dontwarn com.google.firebase.analytics.connector.AnalyticsConnector --dontwarn java.lang.** --dontwarn javax.lang.** - --dontwarn com.android.org.conscrypt.SSLParametersImpl --dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl --dontwarn org.bouncycastle.jsse.BCSSLParameters --dontwarn org.bouncycastle.jsse.BCSSLSocket --dontwarn org.bouncycastle.jsse.provider.BouncyCastleJsseProvider --dontwarn org.openjsse.javax.net.ssl.SSLParameters --dontwarn org.openjsse.javax.net.ssl.SSLSocket --dontwarn org.openjsse.net.ssl.OpenJSSE - --keepclassmembers class eu.siacs.conversations.http.services.** { - !transient ; -} - -# Retrofit does reflection on generic parameters. InnerClasses is required to use Signature and -# EnclosingMethod is required to use InnerClasses. --keepattributes Signature, InnerClasses, EnclosingMethod - -# Retrofit does reflection on method and parameter annotations. --keepattributes RuntimeVisibleAnnotations, RuntimeVisibleParameterAnnotations - -# Retain service method parameters when optimizing. --keepclassmembers,allowshrinking,allowobfuscation interface * { - @retrofit2.http.* ; -} - -# Ignore annotation used for build tooling. --dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement - -# Ignore JSR 305 annotations for embedding nullability information. --dontwarn javax.annotation.** - -# Guarded by a NoClassDefFoundError try/catch and only used when on the classpath. --dontwarn kotlin.Unit - -# Top-level functions that can only be used by Kotlin. --dontwarn retrofit2.KotlinExtensions --dontwarn retrofit2.KotlinExtensions$* - -# With R8 full mode, it sees no subtypes of Retrofit interfaces since they are created with a Proxy -# and replaces all potential values with null. Explicitly keeping the interfaces prevents this. --if interface * { @retrofit2.http.* ; } --keep,allowobfuscation interface <1> diff --git a/settings.gradle b/settings.gradle index a08420a89..c9722936c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,4 @@ -include ':libs:annotation' -include ':libs:annotation-processor' -rootProject.name = 'Conversations' +rootProject.name = "Conversations" +include ':app' +include ':annotation' +include ':annotation-processor' diff --git a/src/conversations/AndroidManifest.xml b/src/conversations/AndroidManifest.xml deleted file mode 100644 index c79e4e265..000000000 --- a/src/conversations/AndroidManifest.xml +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java b/src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java deleted file mode 100644 index 65b6804f9..000000000 --- a/src/conversations/java/eu/siacs/conversations/entities/AccountConfiguration.java +++ /dev/null @@ -1,50 +0,0 @@ -package eu.siacs.conversations.entities; - -import com.google.common.base.Preconditions; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonSyntaxException; -import com.google.gson.annotations.SerializedName; - -import eu.siacs.conversations.xmpp.Jid; - -public class AccountConfiguration { - - private static final Gson GSON = new GsonBuilder().create(); - - public Protocol protocol; - public String address; - public String password; - - public Jid getJid() { - return Jid.ofEscaped(address); - } - - public static AccountConfiguration parse(final String input) { - final AccountConfiguration c; - try { - c = GSON.fromJson(input, AccountConfiguration.class); - } catch (JsonSyntaxException e) { - throw new IllegalArgumentException("Not a valid JSON string", e); - } - Preconditions.checkArgument( - c.protocol == Protocol.XMPP, - "Protocol must be XMPP" - ); - Preconditions.checkArgument( - c.address != null && c.getJid().isBareJid() && !c.getJid().isDomainJid(), - "Invalid XMPP address" - ); - Preconditions.checkArgument( - c.password != null && c.password.length() > 0, - "No password specified" - ); - return c; - } - - public enum Protocol { - @SerializedName("xmpp") XMPP, - } - -} - diff --git a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java b/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java deleted file mode 100644 index c118d7375..000000000 --- a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java +++ /dev/null @@ -1,394 +0,0 @@ -package eu.siacs.conversations.services; - -import static eu.siacs.conversations.utils.Compatibility.s; - -import android.app.Notification; -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.app.Service; -import android.content.Context; -import android.content.Intent; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.net.Uri; -import android.os.Binder; -import android.os.IBinder; -import android.provider.OpenableColumns; -import android.util.Log; - -import androidx.core.app.NotificationCompat; -import androidx.core.app.NotificationManagerCompat; - -import com.google.common.base.Charsets; -import com.google.common.base.Stopwatch; -import com.google.common.io.CountingInputStream; - -import org.bouncycastle.crypto.engines.AESEngine; -import org.bouncycastle.crypto.io.CipherInputStream; -import org.bouncycastle.crypto.modes.AEADBlockCipher; -import org.bouncycastle.crypto.modes.GCMBlockCipher; -import org.bouncycastle.crypto.params.AEADParameters; -import org.bouncycastle.crypto.params.KeyParameter; - -import java.io.BufferedReader; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.WeakHashMap; -import java.util.concurrent.atomic.AtomicBoolean; -import java.util.zip.GZIPInputStream; -import java.util.zip.ZipException; - -import javax.crypto.BadPaddingException; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.persistance.DatabaseBackend; -import eu.siacs.conversations.persistance.FileBackend; -import eu.siacs.conversations.ui.ManageAccountActivity; -import eu.siacs.conversations.utils.BackupFileHeader; -import eu.siacs.conversations.utils.SerialSingleThreadExecutor; -import eu.siacs.conversations.xmpp.Jid; - -public class ImportBackupService extends Service { - - private static final int NOTIFICATION_ID = 21; - private static final AtomicBoolean running = new AtomicBoolean(false); - private final ImportBackupServiceBinder binder = new ImportBackupServiceBinder(); - private final SerialSingleThreadExecutor executor = new SerialSingleThreadExecutor(getClass().getSimpleName()); - private final Set mOnBackupProcessedListeners = Collections.newSetFromMap(new WeakHashMap<>()); - private DatabaseBackend mDatabaseBackend; - private NotificationManager notificationManager; - - private static int count(String input, char c) { - int count = 0; - for (char aChar : input.toCharArray()) { - if (aChar == c) { - ++count; - } - } - return count; - } - - @Override - public void onCreate() { - mDatabaseBackend = DatabaseBackend.getInstance(getBaseContext()); - notificationManager = (android.app.NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - if (intent == null) { - return START_NOT_STICKY; - } - final String password = intent.getStringExtra("password"); - final Uri data = intent.getData(); - final Uri uri; - if (data == null) { - final String file = intent.getStringExtra("file"); - uri = file == null ? null : Uri.fromFile(new File(file)); - } else { - uri = data; - } - - if (password == null || password.isEmpty() || uri == null) { - return START_NOT_STICKY; - } - if (running.compareAndSet(false, true)) { - executor.execute(() -> { - startForegroundService(); - final boolean success = importBackup(uri, password); - stopForeground(true); - running.set(false); - if (success) { - notifySuccess(); - } - stopSelf(); - }); - } else { - Log.d(Config.LOGTAG, "backup already running"); - } - return START_NOT_STICKY; - } - - public boolean getLoadingState() { - return running.get(); - } - - public void loadBackupFiles(final OnBackupFilesLoaded onBackupFilesLoaded) { - executor.execute(() -> { - final List accounts = mDatabaseBackend.getAccountJids(false); - final ArrayList backupFiles = new ArrayList<>(); - final Set apps = new HashSet<>(Arrays.asList("Conversations", "Quicksy", getString(R.string.app_name))); - final List directories = new ArrayList<>(); - for (final String app : apps) { - directories.add(FileBackend.getLegacyBackupDirectory(app)); - } - directories.add(FileBackend.getBackupDirectory(this)); - for (final File directory : directories) { - if (!directory.exists() || !directory.isDirectory()) { - Log.d(Config.LOGTAG, "directory not found: " + directory.getAbsolutePath()); - continue; - } - final File[] files = directory.listFiles(); - if (files == null) { - continue; - } - for (final File file : files) { - if (file.isFile() && file.getName().endsWith(".ceb")) { - try { - final BackupFile backupFile = BackupFile.read(file); - if (accounts.contains(backupFile.getHeader().getJid())) { - Log.d(Config.LOGTAG, "skipping backup for " + backupFile.getHeader().getJid()); - } else { - backupFiles.add(backupFile); - } - } catch (IOException | IllegalArgumentException e) { - Log.d(Config.LOGTAG, "unable to read backup file ", e); - } - } - } - } - Collections.sort(backupFiles, (a, b) -> a.header.getJid().toString().compareTo(b.header.getJid().toString())); - onBackupFilesLoaded.onBackupFilesLoaded(backupFiles); - }); - } - - private void startForegroundService() { - startForeground(NOTIFICATION_ID, createImportBackupNotification(1, 0)); - } - - private void updateImportBackupNotification(final long total, final long current) { - final int max; - final int progress; - if (total == 0) { - max = 1; - progress = 0; - } else { - max = 100; - progress = (int) (current * 100 / total); - } - final NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); - try { - notificationManager.notify(NOTIFICATION_ID, createImportBackupNotification(max, progress)); - } catch (final RuntimeException e) { - Log.d(Config.LOGTAG, "unable to make notification", e); - } - } - - private Notification createImportBackupNotification(final int max, final int progress) { - NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getBaseContext(), "backup"); - mBuilder.setContentTitle(getString(R.string.restoring_backup)) - .setSmallIcon(R.drawable.ic_unarchive_white_24dp) - .setProgress(max, progress, max == 1 && progress == 0); - return mBuilder.build(); - } - - private boolean importBackup(final Uri uri, final String password) { - Log.d(Config.LOGTAG, "importing backup from " + uri); - final Stopwatch stopwatch = Stopwatch.createStarted(); - try { - final SQLiteDatabase db = mDatabaseBackend.getWritableDatabase(); - final InputStream inputStream; - final String path = uri.getPath(); - final long fileSize; - if ("file".equals(uri.getScheme()) && path != null) { - final File file = new File(path); - inputStream = new FileInputStream(file); - fileSize = file.length(); - } else { - final Cursor returnCursor = getContentResolver().query(uri, null, null, null, null); - if (returnCursor == null) { - fileSize = 0; - } else { - returnCursor.moveToFirst(); - fileSize = returnCursor.getLong(returnCursor.getColumnIndex(OpenableColumns.SIZE)); - returnCursor.close(); - } - inputStream = getContentResolver().openInputStream(uri); - } - if (inputStream == null) { - synchronized (mOnBackupProcessedListeners) { - for (final OnBackupProcessed l : mOnBackupProcessedListeners) { - l.onBackupRestoreFailed(); - } - } - return false; - } - final CountingInputStream countingInputStream = new CountingInputStream(inputStream); - final DataInputStream dataInputStream = new DataInputStream(countingInputStream); - final BackupFileHeader backupFileHeader = BackupFileHeader.read(dataInputStream); - Log.d(Config.LOGTAG, backupFileHeader.toString()); - - if (mDatabaseBackend.getAccountJids(false).contains(backupFileHeader.getJid())) { - synchronized (mOnBackupProcessedListeners) { - for (OnBackupProcessed l : mOnBackupProcessedListeners) { - l.onAccountAlreadySetup(); - } - } - return false; - } - - final byte[] key = ExportBackupService.getKey(password, backupFileHeader.getSalt()); - - final AEADBlockCipher cipher = new GCMBlockCipher(new AESEngine()); - cipher.init(false, new AEADParameters(new KeyParameter(key), 128, backupFileHeader.getIv())); - final CipherInputStream cipherInputStream = new CipherInputStream(countingInputStream, cipher); - - final GZIPInputStream gzipInputStream = new GZIPInputStream(cipherInputStream); - final BufferedReader reader = new BufferedReader(new InputStreamReader(gzipInputStream, Charsets.UTF_8)); - db.beginTransaction(); - String line; - StringBuilder multiLineQuery = null; - while ((line = reader.readLine()) != null) { - int count = count(line, '\''); - if (multiLineQuery != null) { - multiLineQuery.append('\n'); - multiLineQuery.append(line); - if (count % 2 == 1) { - db.execSQL(multiLineQuery.toString()); - multiLineQuery = null; - updateImportBackupNotification(fileSize, countingInputStream.getCount()); - } - } else { - if (count % 2 == 0) { - db.execSQL(line); - updateImportBackupNotification(fileSize, countingInputStream.getCount()); - } else { - multiLineQuery = new StringBuilder(line); - } - } - } - db.setTransactionSuccessful(); - db.endTransaction(); - final Jid jid = backupFileHeader.getJid(); - final Cursor countCursor = db.rawQuery("select count(messages.uuid) from messages join conversations on conversations.uuid=messages.conversationUuid join accounts on conversations.accountUuid=accounts.uuid where accounts.username=? and accounts.server=?", new String[]{jid.getEscapedLocal(), jid.getDomain().toEscapedString()}); - countCursor.moveToFirst(); - final int count = countCursor.getInt(0); - Log.d(Config.LOGTAG, String.format("restored %d messages in %s", count, stopwatch.stop().toString())); - countCursor.close(); - stopBackgroundService(); - synchronized (mOnBackupProcessedListeners) { - for (OnBackupProcessed l : mOnBackupProcessedListeners) { - l.onBackupRestored(); - } - } - return true; - } catch (final Exception e) { - final Throwable throwable = e.getCause(); - final boolean reasonWasCrypto = throwable instanceof BadPaddingException || e instanceof ZipException; - synchronized (mOnBackupProcessedListeners) { - for (OnBackupProcessed l : mOnBackupProcessedListeners) { - if (reasonWasCrypto) { - l.onBackupDecryptionFailed(); - } else { - l.onBackupRestoreFailed(); - } - } - } - Log.d(Config.LOGTAG, "error restoring backup " + uri, e); - return false; - } - } - - private void notifySuccess() { - NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getBaseContext(), "backup"); - mBuilder.setContentTitle(getString(R.string.notification_restored_backup_title)) - .setContentText(getString(R.string.notification_restored_backup_subtitle)) - .setAutoCancel(true) - .setContentIntent(PendingIntent.getActivity(this, 145, new Intent(this, ManageAccountActivity.class), s() - ? PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT - : PendingIntent.FLAG_UPDATE_CURRENT)) - .setSmallIcon(R.drawable.ic_unarchive_white_24dp); - notificationManager.notify(NOTIFICATION_ID, mBuilder.build()); - } - - private void stopBackgroundService() { - Intent intent = new Intent(this, XmppConnectionService.class); - stopService(intent); - } - - public void removeOnBackupProcessedListener(OnBackupProcessed listener) { - synchronized (mOnBackupProcessedListeners) { - mOnBackupProcessedListeners.remove(listener); - } - } - - public void addOnBackupProcessedListener(OnBackupProcessed listener) { - synchronized (mOnBackupProcessedListeners) { - mOnBackupProcessedListeners.add(listener); - } - } - - @Override - public IBinder onBind(Intent intent) { - return this.binder; - } - - public interface OnBackupFilesLoaded { - void onBackupFilesLoaded(List files); - } - - public interface OnBackupProcessed { - void onBackupRestored(); - - void onBackupDecryptionFailed(); - - void onBackupRestoreFailed(); - - void onAccountAlreadySetup(); - } - - public static class BackupFile { - private final Uri uri; - private final BackupFileHeader header; - - private BackupFile(Uri uri, BackupFileHeader header) { - this.uri = uri; - this.header = header; - } - - private static BackupFile read(File file) throws IOException { - final FileInputStream fileInputStream = new FileInputStream(file); - final DataInputStream dataInputStream = new DataInputStream(fileInputStream); - BackupFileHeader backupFileHeader = BackupFileHeader.read(dataInputStream); - fileInputStream.close(); - return new BackupFile(Uri.fromFile(file), backupFileHeader); - } - - public static BackupFile read(final Context context, final Uri uri) throws IOException { - final InputStream inputStream = context.getContentResolver().openInputStream(uri); - if (inputStream == null) { - throw new FileNotFoundException(); - } - final DataInputStream dataInputStream = new DataInputStream(inputStream); - BackupFileHeader backupFileHeader = BackupFileHeader.read(dataInputStream); - inputStream.close(); - return new BackupFile(uri, backupFileHeader); - } - - public BackupFileHeader getHeader() { - return header; - } - - public Uri getUri() { - return uri; - } - } - - public class ImportBackupServiceBinder extends Binder { - public ImportBackupService getService() { - return ImportBackupService.this; - } - } -} \ No newline at end of file diff --git a/src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java b/src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java deleted file mode 100644 index b2a0d17f4..000000000 --- a/src/conversations/java/eu/siacs/conversations/services/QuickConversationsService.java +++ /dev/null @@ -1,38 +0,0 @@ -package eu.siacs.conversations.services; - -import android.content.Intent; -import android.util.Log; - -import eu.siacs.conversations.Config; - -public class QuickConversationsService extends AbstractQuickConversationsService { - - QuickConversationsService(XmppConnectionService xmppConnectionService) { - super(xmppConnectionService); - } - - @Override - public void considerSync() { - - } - - @Override - public void signalAccountStateChange() { - - } - - @Override - public boolean isSynchronizing() { - return false; - } - - @Override - public void considerSyncBackground(boolean force) { - - } - - @Override - public void handleSmsReceived(Intent intent) { - Log.d(Config.LOGTAG,"ignoring received SMS"); - } -} \ No newline at end of file diff --git a/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java b/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java deleted file mode 100644 index fea92401b..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java +++ /dev/null @@ -1,151 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.app.Activity; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.os.Bundle; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.Toast; - -import androidx.databinding.DataBindingUtil; - -import com.google.common.base.Strings; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityEasyInviteBinding; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.BarcodeProvider; -import eu.siacs.conversations.utils.EasyOnboardingInvite; -import eu.siacs.conversations.xmpp.Jid; - -public class EasyOnboardingInviteActivity extends XmppActivity implements EasyOnboardingInvite.OnInviteRequested { - - private ActivityEasyInviteBinding binding; - - private EasyOnboardingInvite easyOnboardingInvite; - - - @Override - public void onCreate(final Bundle bundle) { - super.onCreate(bundle); - this.binding = DataBindingUtil.setContentView(this, R.layout.activity_easy_invite); - setSupportActionBar(binding.toolbar); - configureActionBar(getSupportActionBar(), true); - this.binding.shareButton.setOnClickListener(v -> share()); - if (bundle != null && bundle.containsKey("invite")) { - this.easyOnboardingInvite = bundle.getParcelable("invite"); - if (this.easyOnboardingInvite != null) { - showInvite(this.easyOnboardingInvite); - return; - } - } - this.showLoading(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.easy_onboarding_invite, menu); - final MenuItem share = menu.findItem(R.id.action_share); - share.setVisible(easyOnboardingInvite != null); - return super.onCreateOptionsMenu(menu); - } - - public boolean onOptionsItemSelected(MenuItem menuItem) { - if (menuItem.getItemId() == R.id.action_share) { - share(); - return true; - } else { - return super.onOptionsItemSelected(menuItem); - } - } - - private void share() { - final String shareText = getString( - R.string.easy_invite_share_text, - easyOnboardingInvite.getDomain(), - easyOnboardingInvite.getShareableLink() - ); - final Intent sendIntent = new Intent(); - sendIntent.setAction(Intent.ACTION_SEND); - sendIntent.putExtra(Intent.EXTRA_TEXT, shareText); - sendIntent.setType("text/plain"); - startActivity(Intent.createChooser(sendIntent, getString(R.string.share_invite_with))); - } - - @Override - protected void refreshUiReal() { - invalidateOptionsMenu(); - if (easyOnboardingInvite != null) { - showInvite(easyOnboardingInvite); - } else { - showLoading(); - } - } - - private void showLoading() { - this.binding.inProgress.setVisibility(View.VISIBLE); - this.binding.invite.setVisibility(View.GONE); - } - - private void showInvite(final EasyOnboardingInvite invite) { - this.binding.inProgress.setVisibility(View.GONE); - this.binding.invite.setVisibility(View.VISIBLE); - this.binding.tapToShare.setText(getString(R.string.tap_share_button_send_invite, invite.getDomain())); - final Point size = new Point(); - getWindowManager().getDefaultDisplay().getSize(size); - final int width = Math.min(size.x, size.y); - final Bitmap bitmap = BarcodeProvider.create2dBarcodeBitmap(invite.getShareableLink(), width); - binding.qrCode.setImageBitmap(bitmap); - } - - @Override - public void onSaveInstanceState(Bundle bundle) { - super.onSaveInstanceState(bundle); - if (easyOnboardingInvite != null) { - bundle.putParcelable("invite", easyOnboardingInvite); - } - } - - @Override - void onBackendConnected() { - if (easyOnboardingInvite != null) { - return; - } - final Intent launchIntent = getIntent(); - final String accountExtra = launchIntent.getStringExtra(EXTRA_ACCOUNT); - final Jid jid = accountExtra == null ? null : Jid.ofEscaped(accountExtra); - if (jid == null) { - return; - } - final Account account = xmppConnectionService.findAccountByJid(jid); - xmppConnectionService.requestEasyOnboardingInvite(account, this); - } - - public static void launch(final Account account, final Activity context) { - final Intent intent = new Intent(context, EasyOnboardingInviteActivity.class); - intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); - context.startActivity(intent); - } - - @Override - public void inviteRequested(EasyOnboardingInvite invite) { - this.easyOnboardingInvite = invite; - Log.d(Config.LOGTAG, "invite requested"); - refreshUi(); - } - - @Override - public void inviteRequestFailed(final String message) { - runOnUiThread(() -> { - if (!Strings.isNullOrEmpty(message)) { - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); - } - finish(); - }); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java deleted file mode 100644 index 6e4815159..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java +++ /dev/null @@ -1,251 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.ComponentName; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.ServiceConnection; -import android.net.Uri; -import android.os.Bundle; -import android.os.IBinder; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; - -import androidx.appcompat.app.AlertDialog; -import androidx.core.content.ContextCompat; -import androidx.databinding.DataBindingUtil; - -import com.google.android.material.snackbar.Snackbar; - -import java.io.IOException; -import java.util.List; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityImportBackupBinding; -import eu.siacs.conversations.databinding.DialogEnterPasswordBinding; -import eu.siacs.conversations.services.ImportBackupService; -import eu.siacs.conversations.ui.adapter.BackupFileAdapter; -import eu.siacs.conversations.ui.util.SettingsUtils; -import eu.siacs.conversations.utils.ThemeHelper; - -public class ImportBackupActivity extends ActionBarActivity implements ServiceConnection, ImportBackupService.OnBackupFilesLoaded, BackupFileAdapter.OnItemClickedListener, ImportBackupService.OnBackupProcessed { - - private ActivityImportBackupBinding binding; - - private BackupFileAdapter backupFileAdapter; - private ImportBackupService service; - - private boolean mLoadingState = false; - - private int mTheme; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - this.mTheme = ThemeHelper.find(this); - setTheme(this.mTheme); - super.onCreate(savedInstanceState); - binding = DataBindingUtil.setContentView(this, R.layout.activity_import_backup); - setSupportActionBar(binding.toolbar); - setLoadingState(savedInstanceState != null && savedInstanceState.getBoolean("loading_state", false)); - this.backupFileAdapter = new BackupFileAdapter(); - this.binding.list.setAdapter(this.backupFileAdapter); - this.backupFileAdapter.setOnItemClickedListener(this); - } - - @Override - protected void onResume(){ - super.onResume(); - SettingsUtils.applyScreenshotPreventionSetting(this); - } - - @Override - public boolean onCreateOptionsMenu(final Menu menu) { - getMenuInflater().inflate(R.menu.import_backup, menu); - final MenuItem openBackup = menu.findItem(R.id.action_open_backup_file); - openBackup.setVisible(!this.mLoadingState); - return true; - } - - @Override - public void onSaveInstanceState(Bundle bundle) { - bundle.putBoolean("loading_state", this.mLoadingState); - super.onSaveInstanceState(bundle); - } - - @Override - public void onStart() { - super.onStart(); - final int theme = ThemeHelper.find(this); - if (this.mTheme != theme) { - recreate(); - } else { - bindService(new Intent(this, ImportBackupService.class), this, Context.BIND_AUTO_CREATE); - } - final Intent intent = getIntent(); - if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction()) && !this.mLoadingState) { - Uri uri = intent.getData(); - if (uri != null) { - openBackupFileFromUri(uri, true); - } - } - } - - @Override - public void onStop() { - super.onStop(); - if (this.service != null) { - this.service.removeOnBackupProcessedListener(this); - } - unbindService(this); - } - - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - ImportBackupService.ImportBackupServiceBinder binder = (ImportBackupService.ImportBackupServiceBinder) service; - this.service = binder.getService(); - this.service.addOnBackupProcessedListener(this); - setLoadingState(this.service.getLoadingState()); - this.service.loadBackupFiles(this); - } - - @Override - public void onServiceDisconnected(ComponentName name) { - this.service = null; - } - - @Override - public void onBackupFilesLoaded(final List files) { - runOnUiThread(() -> backupFileAdapter.setFiles(files)); - } - - @Override - public void onClick(final ImportBackupService.BackupFile backupFile) { - showEnterPasswordDialog(backupFile, false); - } - - private void openBackupFileFromUri(final Uri uri, final boolean finishOnCancel) { - try { - final ImportBackupService.BackupFile backupFile = ImportBackupService.BackupFile.read(this, uri); - showEnterPasswordDialog(backupFile, finishOnCancel); - } catch (final IOException | IllegalArgumentException 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(); - } catch (final SecurityException e) { - Snackbar.make(binding.coordinator, R.string.sharing_application_not_grant_permission, Snackbar.LENGTH_LONG).show(); - } - } - - private void showEnterPasswordDialog(final ImportBackupService.BackupFile backupFile, final boolean finishOnCancel) { - final DialogEnterPasswordBinding enterPasswordBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.dialog_enter_password, null, false); - Log.d(Config.LOGTAG, "attempting to import " + backupFile.getUri()); - enterPasswordBinding.explain.setText(getString(R.string.enter_password_to_restore, backupFile.getHeader().getJid().toString())); - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setView(enterPasswordBinding.getRoot()); - builder.setTitle(R.string.enter_password); - builder.setNegativeButton(R.string.cancel, (dialog, which) -> { - if (finishOnCancel) { - finish(); - } - }); - builder.setPositiveButton(R.string.restore, null); - builder.setCancelable(false); - final AlertDialog dialog = builder.create(); - dialog.setOnShowListener((d) -> { - dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(v -> { - final String password = enterPasswordBinding.accountPassword.getEditableText().toString(); - if (password.isEmpty()) { - enterPasswordBinding.accountPasswordLayout.setError(getString(R.string.please_enter_password)); - return; - } - final Uri uri = backupFile.getUri(); - Intent intent = new Intent(this, ImportBackupService.class); - intent.setAction(Intent.ACTION_SEND); - intent.putExtra("password", password); - if ("file".equals(uri.getScheme())) { - intent.putExtra("file", uri.getPath()); - } else { - intent.setData(uri); - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - } - setLoadingState(true); - ContextCompat.startForegroundService(this, intent); - d.dismiss(); - }); - }); - dialog.show(); - } - - private void setLoadingState(final boolean loadingState) { - binding.coordinator.setVisibility(loadingState ? View.GONE : View.VISIBLE); - binding.inProgress.setVisibility(loadingState ? View.VISIBLE : View.GONE); - setTitle(loadingState ? R.string.restoring_backup : R.string.restore_backup); - configureActionBar(getSupportActionBar(), !loadingState); - this.mLoadingState = loadingState; - invalidateOptionsMenu(); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent intent) { - super.onActivityResult(requestCode, resultCode, intent); - if (resultCode == RESULT_OK) { - if (requestCode == 0xbac) { - openBackupFileFromUri(intent.getData(), false); - } - } - } - - @Override - public void onAccountAlreadySetup() { - runOnUiThread(() -> { - setLoadingState(false); - Snackbar.make(binding.coordinator, R.string.account_already_setup, Snackbar.LENGTH_LONG).show(); - }); - } - - @Override - public void onBackupRestored() { - runOnUiThread(() -> { - Intent intent = new Intent(this, ConversationActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - startActivity(intent); - finish(); - }); - } - - @Override - public void onBackupDecryptionFailed() { - runOnUiThread(() -> { - setLoadingState(false); - Snackbar.make(binding.coordinator, R.string.unable_to_decrypt_backup, Snackbar.LENGTH_LONG).show(); - }); - } - - @Override - public void onBackupRestoreFailed() { - runOnUiThread(() -> { - setLoadingState(false); - Snackbar.make(binding.coordinator, R.string.unable_to_restore_backup, Snackbar.LENGTH_LONG).show(); - }); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == R.id.action_open_backup_file) { - openBackupFile(); - return true; - } - return super.onOptionsItemSelected(item); - } - - private void openBackupFile() { - final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); - intent.setType("*/*"); - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false); - intent.addCategory(Intent.CATEGORY_OPENABLE); - startActivityForResult(Intent.createChooser(intent, getString(R.string.open_backup)), 0xbac); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java b/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java deleted file mode 100644 index 38761befd..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java +++ /dev/null @@ -1,162 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.os.Bundle; -import android.text.Editable; -import android.text.TextWatcher; -import android.view.View; -import android.widget.Toast; - -import androidx.databinding.DataBindingUtil; - -import java.security.SecureRandom; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.MagicCreateBinding; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.utils.CryptoHelper; -import eu.siacs.conversations.utils.InstallReferrerUtils; -import eu.siacs.conversations.xmpp.Jid; - -public class MagicCreateActivity extends XmppActivity implements TextWatcher { - - public static final String EXTRA_DOMAIN = "domain"; - public static final String EXTRA_PRE_AUTH = "pre_auth"; - public static final String EXTRA_USERNAME = "username"; - - private MagicCreateBinding binding; - private String domain; - private String username; - private String preAuth; - - @Override - protected void refreshUiReal() { - - } - - @Override - void onBackendConnected() { - - } - - @Override - public void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - final Intent data = getIntent(); - this.domain = data == null ? null : data.getStringExtra(EXTRA_DOMAIN); - this.preAuth = data == null ? null : data.getStringExtra(EXTRA_PRE_AUTH); - this.username = data == null ? null : data.getStringExtra(EXTRA_USERNAME); - if (getResources().getBoolean(R.bool.portrait_only)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - super.onCreate(savedInstanceState); - this.binding = DataBindingUtil.setContentView(this, R.layout.magic_create); - setSupportActionBar(this.binding.toolbar); - configureActionBar(getSupportActionBar(), this.domain == null); - if (username != null && domain != null) { - binding.title.setText(R.string.your_server_invitation); - binding.instructions.setText(getString(R.string.magic_create_text_fixed, domain)); - binding.username.setEnabled(false); - binding.username.setText(this.username); - updateFullJidInformation(this.username); - } else if (domain != null) { - binding.instructions.setText(getString(R.string.magic_create_text_on_x, domain)); - } - binding.createAccount.setOnClickListener(v -> { - try { - final String username = binding.username.getText().toString(); - final Jid jid; - final boolean fixedUsername; - if (this.domain != null && this.username != null) { - fixedUsername = true; - jid = Jid.ofLocalAndDomainEscaped(this.username, this.domain); - } else if (this.domain != null) { - fixedUsername = false; - jid = Jid.ofLocalAndDomainEscaped(username, this.domain); - } else { - fixedUsername = false; - jid = Jid.ofLocalAndDomainEscaped(username, Config.MAGIC_CREATE_DOMAIN); - } - if (!jid.getEscapedLocal().equals(jid.getLocal()) || (this.username == null && username.length() < 3)) { - binding.username.setError(getString(R.string.invalid_username)); - binding.username.requestFocus(); - } else { - binding.username.setError(null); - Account account = xmppConnectionService.findAccountByJid(jid); - if (account == null) { - account = new Account(jid, CryptoHelper.createPassword(new SecureRandom())); - account.setOption(Account.OPTION_REGISTER, true); - account.setOption(Account.OPTION_DISABLED, true); - account.setOption(Account.OPTION_MAGIC_CREATE, true); - account.setOption(Account.OPTION_FIXED_USERNAME, fixedUsername); - if (this.preAuth != null) { - account.setKey(Account.KEY_PRE_AUTH_REGISTRATION_TOKEN, this.preAuth); - } - xmppConnectionService.createAccount(account); - } - Intent intent = new Intent(MagicCreateActivity.this, EditAccountActivity.class); - intent.putExtra("jid", account.getJid().asBareJid().toString()); - intent.putExtra("init", true); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - Toast.makeText(MagicCreateActivity.this, R.string.secure_password_generated, Toast.LENGTH_SHORT).show(); - StartConversationActivity.addInviteUri(intent, getIntent()); - startActivity(intent); - } - } catch (IllegalArgumentException e) { - binding.username.setError(getString(R.string.invalid_username)); - binding.username.requestFocus(); - } - }); - binding.username.addTextChangedListener(this); - } - - @Override - public void onDestroy() { - InstallReferrerUtils.markInstallReferrerExecuted(this); - super.onDestroy(); - } - - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(final Editable s) { - updateFullJidInformation(s.toString()); - } - - private void updateFullJidInformation(final String username) { - if (username.trim().isEmpty()) { - binding.fullJid.setVisibility(View.INVISIBLE); - } else { - try { - binding.fullJid.setVisibility(View.VISIBLE); - final Jid jid; - if (this.domain == null) { - jid = Jid.ofLocalAndDomainEscaped(username, Config.MAGIC_CREATE_DOMAIN); - } else { - jid = Jid.ofLocalAndDomainEscaped(username, this.domain); - } - binding.fullJid.setText(getString(R.string.your_full_jid_will_be, jid.toEscapedString())); - } catch (IllegalArgumentException e) { - binding.fullJid.setVisibility(View.INVISIBLE); - } - } - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java deleted file mode 100644 index 6aecf4b26..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java +++ /dev/null @@ -1,429 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.os.Bundle; -import android.security.KeyChain; -import android.security.KeyChainAliasCallback; -import android.util.Pair; -import android.view.ContextMenu; -import android.view.ContextMenu.ContextMenuInfo; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView.AdapterContextMenuInfo; -import android.widget.ListView; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AlertDialog; - -import org.openintents.openpgp.util.OpenPgpApi; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.services.XmppConnectionService.OnAccountUpdate; -import eu.siacs.conversations.ui.adapter.AccountAdapter; -import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; -import eu.siacs.conversations.xmpp.Jid; -import eu.siacs.conversations.xmpp.XmppConnection; - -import static eu.siacs.conversations.utils.PermissionUtils.allGranted; -import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; - -public class ManageAccountActivity extends XmppActivity implements OnAccountUpdate, KeyChainAliasCallback, XmppConnectionService.OnAccountCreated, AccountAdapter.OnTglAccountState { - - private final String STATE_SELECTED_ACCOUNT = "selected_account"; - - private static final int REQUEST_IMPORT_BACKUP = 0x63fb; - - protected Account selectedAccount = null; - protected Jid selectedAccountJid = null; - - protected final List accountList = new ArrayList<>(); - protected ListView accountListView; - protected AccountAdapter mAccountAdapter; - protected AtomicBoolean mInvokedAddAccount = new AtomicBoolean(false); - - protected Pair mPostponedActivityResult = null; - - @Override - public void onAccountUpdate() { - refreshUi(); - } - - @Override - protected void refreshUiReal() { - synchronized (this.accountList) { - accountList.clear(); - accountList.addAll(xmppConnectionService.getAccounts()); - } - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setHomeButtonEnabled(this.accountList.size() > 0); - actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0); - } - invalidateOptionsMenu(); - mAccountAdapter.notifyDataSetChanged(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_manage_accounts); - setSupportActionBar(findViewById(R.id.toolbar)); - configureActionBar(getSupportActionBar()); - if (savedInstanceState != null) { - String jid = savedInstanceState.getString(STATE_SELECTED_ACCOUNT); - if (jid != null) { - try { - this.selectedAccountJid = Jid.ofEscaped(jid); - } catch (IllegalArgumentException e) { - this.selectedAccountJid = null; - } - } - } - - accountListView = findViewById(R.id.account_list); - this.mAccountAdapter = new AccountAdapter(this, accountList); - accountListView.setAdapter(this.mAccountAdapter); - accountListView.setOnItemClickListener((arg0, view, position, arg3) -> switchToAccount(accountList.get(position))); - registerForContextMenu(accountListView); - } - - @Override - protected void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - @Override - public void onSaveInstanceState(final Bundle savedInstanceState) { - if (selectedAccount != null) { - savedInstanceState.putString(STATE_SELECTED_ACCOUNT, selectedAccount.getJid().asBareJid().toEscapedString()); - } - super.onSaveInstanceState(savedInstanceState); - } - - @Override - public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { - super.onCreateContextMenu(menu, v, menuInfo); - ManageAccountActivity.this.getMenuInflater().inflate( - R.menu.manageaccounts_context, menu); - AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo; - this.selectedAccount = accountList.get(acmi.position); - if (this.selectedAccount.isEnabled()) { - menu.findItem(R.id.mgmt_account_enable).setVisible(false); - menu.findItem(R.id.mgmt_account_announce_pgp).setVisible(Config.supportOpenPgp()); - } else { - menu.findItem(R.id.mgmt_account_disable).setVisible(false); - menu.findItem(R.id.mgmt_account_announce_pgp).setVisible(false); - menu.findItem(R.id.mgmt_account_publish_avatar).setVisible(false); - } - menu.setHeaderTitle(this.selectedAccount.getJid().asBareJid().toEscapedString()); - } - - @Override - void onBackendConnected() { - if (selectedAccountJid != null) { - this.selectedAccount = xmppConnectionService.findAccountByJid(selectedAccountJid); - } - refreshUiReal(); - if (this.mPostponedActivityResult != null) { - this.onActivityResult(mPostponedActivityResult.first, RESULT_OK, mPostponedActivityResult.second); - } - if (Config.X509_VERIFICATION && this.accountList.size() == 0) { - if (mInvokedAddAccount.compareAndSet(false, true)) { - addAccountFromKey(); - } - } - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.manageaccounts, menu); - MenuItem enableAll = menu.findItem(R.id.action_enable_all); - MenuItem addAccount = menu.findItem(R.id.action_add_account); - MenuItem addAccountWithCertificate = menu.findItem(R.id.action_add_account_with_cert); - - if (Config.X509_VERIFICATION) { - addAccount.setVisible(false); - addAccountWithCertificate.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - } - - if (!accountsLeftToEnable()) { - enableAll.setVisible(false); - } - MenuItem disableAll = menu.findItem(R.id.action_disable_all); - if (!accountsLeftToDisable()) { - disableAll.setVisible(false); - } - return true; - } - - @Override - public boolean onContextItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.mgmt_account_publish_avatar: - publishAvatar(selectedAccount); - return true; - case R.id.mgmt_account_disable: - disableAccount(selectedAccount); - return true; - case R.id.mgmt_account_enable: - enableAccount(selectedAccount); - return true; - case R.id.mgmt_account_delete: - deleteAccount(selectedAccount); - return true; - case R.id.mgmt_account_announce_pgp: - publishOpenPGPPublicKey(selectedAccount); - return true; - default: - return super.onContextItemSelected(item); - } - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (MenuDoubleTabUtil.shouldIgnoreTap()) { - return false; - } - switch (item.getItemId()) { - case R.id.action_add_account: - startActivity(new Intent(this, EditAccountActivity.class)); - break; - case R.id.action_import_backup: - if (hasStoragePermission(REQUEST_IMPORT_BACKUP)) { - startActivity(new Intent(this, ImportBackupActivity.class)); - } - break; - case R.id.action_disable_all: - disableAllAccounts(); - break; - case R.id.action_enable_all: - enableAllAccounts(); - break; - case R.id.action_add_account_with_cert: - addAccountFromKey(); - break; - default: - break; - } - return super.onOptionsItemSelected(item); - } - - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - if (grantResults.length > 0) { - if (allGranted(grantResults)) { - switch (requestCode) { - case REQUEST_IMPORT_BACKUP: - startActivity(new Intent(this, ImportBackupActivity.class)); - break; - } - } else { - Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show(); - } - } - if (writeGranted(grantResults, permissions)) { - if (xmppConnectionService != null) { - xmppConnectionService.restartFileObserver(); - } - } - } - - @Override - public boolean onNavigateUp() { - if (xmppConnectionService.getConversations().size() == 0) { - Intent contactsIntent = new Intent(this, - StartConversationActivity.class); - contactsIntent.setFlags( - // if activity exists in stack, pop the stack and go back to it - Intent.FLAG_ACTIVITY_CLEAR_TOP | - // otherwise, make a new task for it - Intent.FLAG_ACTIVITY_NEW_TASK | - // don't use the new activity animation; finish - // animation runs instead - Intent.FLAG_ACTIVITY_NO_ANIMATION); - startActivity(contactsIntent); - finish(); - return true; - } else { - return super.onNavigateUp(); - } - } - - @Override - public void onClickTglAccountState(Account account, boolean enable) { - if (enable) { - enableAccount(account); - } else { - disableAccount(account); - } - } - - private void addAccountFromKey() { - try { - KeyChain.choosePrivateKeyAlias(this, this, null, null, null, -1, null); - } catch (ActivityNotFoundException e) { - Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG).show(); - } - } - - private void publishAvatar(Account account) { - Intent intent = new Intent(getApplicationContext(), - PublishProfilePictureActivity.class); - intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); - startActivity(intent); - } - - private void disableAllAccounts() { - List list = new ArrayList<>(); - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (account.isEnabled()) { - list.add(account); - } - } - } - for (Account account : list) { - disableAccount(account); - } - } - - private boolean accountsLeftToDisable() { - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (account.isEnabled()) { - return true; - } - } - return false; - } - } - - private boolean accountsLeftToEnable() { - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (!account.isEnabled()) { - return true; - } - } - return false; - } - } - - private void enableAllAccounts() { - List list = new ArrayList<>(); - synchronized (this.accountList) { - for (Account account : this.accountList) { - if (!account.isEnabled()) { - list.add(account); - } - } - } - for (Account account : list) { - enableAccount(account); - } - } - - private void disableAccount(Account account) { - account.setOption(Account.OPTION_DISABLED, true); - if (!xmppConnectionService.updateAccount(account)) { - Toast.makeText(this, R.string.unable_to_update_account, Toast.LENGTH_SHORT).show(); - } - } - - private void enableAccount(Account account) { - account.setOption(Account.OPTION_DISABLED, false); - final XmppConnection connection = account.getXmppConnection(); - if (connection != null) { - connection.resetEverything(); - } - if (!xmppConnectionService.updateAccount(account)) { - Toast.makeText(this, R.string.unable_to_update_account, Toast.LENGTH_SHORT).show(); - } - } - - private void publishOpenPGPPublicKey(Account account) { - if (ManageAccountActivity.this.hasPgp()) { - announcePgp(selectedAccount, null, null, onOpenPGPKeyPublished); - } else { - this.showInstallPgpDialog(); - } - } - - private void deleteAccount(final Account account) { - final AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(getString(R.string.mgmt_account_are_you_sure)); - builder.setIconAttribute(android.R.attr.alertDialogIcon); - builder.setMessage(getString(R.string.mgmt_account_delete_confirm_text)); - builder.setPositiveButton(getString(R.string.delete), - (dialog, which) -> { - xmppConnectionService.deleteAccount(account); - selectedAccount = null; - if (xmppConnectionService.getAccounts().size() == 0 && Config.MAGIC_CREATE_DOMAIN != null) { - WelcomeActivity.launch(this); - } - }); - builder.setNegativeButton(getString(R.string.cancel), null); - builder.create().show(); - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - super.onActivityResult(requestCode, resultCode, data); - if (resultCode == RESULT_OK) { - if (xmppConnectionServiceBound) { - if (requestCode == REQUEST_CHOOSE_PGP_ID) { - if (data.getExtras().containsKey(OpenPgpApi.EXTRA_SIGN_KEY_ID)) { - selectedAccount.setPgpSignId(data.getExtras().getLong(OpenPgpApi.EXTRA_SIGN_KEY_ID)); - announcePgp(selectedAccount, null, null, onOpenPGPKeyPublished); - } else { - choosePgpSignId(selectedAccount); - } - } else if (requestCode == REQUEST_ANNOUNCE_PGP) { - announcePgp(selectedAccount, null, data, onOpenPGPKeyPublished); - } - this.mPostponedActivityResult = null; - } else { - this.mPostponedActivityResult = new Pair<>(requestCode, data); - } - } - } - - @Override - public void alias(final String alias) { - if (alias != null) { - xmppConnectionService.createAccountFromKey(alias, this); - } - } - - @Override - public void onAccountCreated(final Account account) { - final Intent intent = new Intent(this, EditAccountActivity.class); - intent.putExtra("jid", account.getJid().asBareJid().toString()); - intent.putExtra("init", true); - startActivity(intent); - } - - @Override - public void informUser(final int r) { - runOnUiThread(() -> Toast.makeText(ManageAccountActivity.this, r, Toast.LENGTH_LONG).show()); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java b/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java deleted file mode 100644 index 06320d33d..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java +++ /dev/null @@ -1,104 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.os.Bundle; -import android.view.MenuItem; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.databinding.DataBindingUtil; - -import java.util.List; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityPickServerBinding; -import eu.siacs.conversations.entities.Account; - -public class PickServerActivity extends XmppActivity { - - @Override - protected void refreshUiReal() { - - } - - @Override - void onBackendConnected() { - - } - - @Override - public void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - - @Override - public boolean onOptionsItemSelected(final MenuItem item) { - if (item.getItemId() == android.R.id.home) { - startActivity(new Intent(this, WelcomeActivity.class)); - finish(); - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override - public void onBackPressed() { - startActivity(new Intent(this, WelcomeActivity.class)); - super.onBackPressed(); - } - - @Override - public void onNewIntent(Intent intent) { - if (intent != null) { - setIntent(intent); - } - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - if (getResources().getBoolean(R.bool.portrait_only)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - super.onCreate(savedInstanceState); - ActivityPickServerBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_pick_server); - setSupportActionBar(binding.toolbar); - configureActionBar(getSupportActionBar()); - binding.useCim.setOnClickListener(v -> { - final Intent intent = new Intent(this, MagicCreateActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); - addInviteUri(intent); - startActivity(intent); - }); - binding.useOwnProvider.setOnClickListener(v -> { - List accounts = xmppConnectionService.getAccounts(); - Intent intent = new Intent(this, EditAccountActivity.class); - intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, true); - if (accounts.size() == 1) { - intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); - intent.putExtra("init", true); - } else if (accounts.size() >= 1) { - intent = new Intent(this, ManageAccountActivity.class); - } - addInviteUri(intent); - startActivity(intent); - }); - - } - - public void addInviteUri(Intent intent) { - StartConversationActivity.addInviteUri(intent, getIntent()); - } - - public static void launch(AppCompatActivity activity) { - Intent intent = new Intent(activity, PickServerActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - activity.startActivity(intent); - activity.overridePendingTransition(0, 0); - } - -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java deleted file mode 100644 index 762dfbb42..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java +++ /dev/null @@ -1,90 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.os.Bundle; -import android.widget.ListView; - -import java.util.ArrayList; -import java.util.List; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.entities.Conversation; -import eu.siacs.conversations.ui.adapter.AccountAdapter; -import eu.siacs.conversations.xmpp.Jid; - -public class ShareViaAccountActivity extends XmppActivity { - public static final String EXTRA_CONTACT = "contact"; - public static final String EXTRA_BODY = "body"; - - protected final List accountList = new ArrayList<>(); - protected ListView accountListView; - protected AccountAdapter mAccountAdapter; - - @Override - protected void refreshUiReal() { - synchronized (this.accountList) { - accountList.clear(); - accountList.addAll(xmppConnectionService.getAccounts()); - } - mAccountAdapter.notifyDataSetChanged(); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_manage_accounts); - setSupportActionBar(findViewById(R.id.toolbar)); - configureActionBar(getSupportActionBar()); - accountListView = findViewById(R.id.account_list); - this.mAccountAdapter = new AccountAdapter(this, accountList, false); - accountListView.setAdapter(this.mAccountAdapter); - accountListView.setOnItemClickListener((arg0, view, position, arg3) -> { - final Account account = accountList.get(position); - final String body = getIntent().getStringExtra(EXTRA_BODY); - - try { - final Jid contact = Jid.of(getIntent().getStringExtra(EXTRA_CONTACT)); - final Conversation conversation = xmppConnectionService.findOrCreateConversation( - account, contact, false, false); - switchToConversation(conversation, body); - } catch (IllegalArgumentException e) { - // ignore error - } - - finish(); - }); - } - - @Override - protected void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - } - - @Override - void onBackendConnected() { - final int numAccounts = xmppConnectionService.getAccounts().size(); - - if (numAccounts == 1) { - final String body = getIntent().getStringExtra(EXTRA_BODY); - final Account account = xmppConnectionService.getAccounts().get(0); - - try { - final Jid contact = Jid.of(getIntent().getStringExtra(EXTRA_CONTACT)); - final Conversation conversation = xmppConnectionService.findOrCreateConversation( - account, contact, false, false); - switchToConversation(conversation, body); - } catch (IllegalArgumentException e) { - // ignore error - } - - finish(); - } else { - refreshUiReal(); - } - } -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java b/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java deleted file mode 100644 index d61c64a9c..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java +++ /dev/null @@ -1,236 +0,0 @@ -package eu.siacs.conversations.ui; - -import android.Manifest; -import android.content.ActivityNotFoundException; -import android.content.Intent; -import android.content.pm.ActivityInfo; -import android.net.Uri; -import android.os.Bundle; -import android.security.KeyChain; -import android.security.KeyChainAliasCallback; -import android.util.Log; -import android.view.Menu; -import android.view.MenuItem; -import android.widget.Toast; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; -import androidx.databinding.DataBindingUtil; - -import java.util.Arrays; -import java.util.List; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityWelcomeBinding; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.utils.Compatibility; -import eu.siacs.conversations.utils.InstallReferrerUtils; -import eu.siacs.conversations.utils.SignupUtils; -import eu.siacs.conversations.utils.XmppUri; -import eu.siacs.conversations.xmpp.Jid; - -import static eu.siacs.conversations.utils.PermissionUtils.allGranted; -import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; - -public class WelcomeActivity extends XmppActivity implements XmppConnectionService.OnAccountCreated, KeyChainAliasCallback { - - private static final int REQUEST_IMPORT_BACKUP = 0x63fb; - - private XmppUri inviteUri; - - public static void launch(AppCompatActivity activity) { - Intent intent = new Intent(activity, WelcomeActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - activity.startActivity(intent); - activity.overridePendingTransition(0, 0); - } - - public void onInstallReferrerDiscovered(final Uri referrer) { - Log.d(Config.LOGTAG, "welcome activity: on install referrer discovered " + referrer); - if ("xmpp".equalsIgnoreCase(referrer.getScheme())) { - final XmppUri xmppUri = new XmppUri(referrer); - runOnUiThread(() -> processXmppUri(xmppUri)); - } else { - Log.i(Config.LOGTAG, "install referrer was not an XMPP uri"); - } - } - - private void processXmppUri(final XmppUri xmppUri) { - if (!xmppUri.isValidJid()) { - return; - } - final String preAuth = xmppUri.getParameter(XmppUri.PARAMETER_PRE_AUTH); - final Jid jid = xmppUri.getJid(); - final Intent intent; - if (xmppUri.isAction(XmppUri.ACTION_REGISTER)) { - intent = SignupUtils.getTokenRegistrationIntent(this, jid, preAuth); - } else if (xmppUri.isAction(XmppUri.ACTION_ROSTER) && "y".equals(xmppUri.getParameter(XmppUri.PARAMETER_IBR))) { - intent = SignupUtils.getTokenRegistrationIntent(this, jid.getDomain(), preAuth); - intent.putExtra(StartConversationActivity.EXTRA_INVITE_URI, xmppUri.toString()); - } else { - intent = null; - } - if (intent != null) { - startActivity(intent); - finish(); - return; - } - this.inviteUri = xmppUri; - } - - @Override - protected void refreshUiReal() { - - } - - @Override - void onBackendConnected() { - - } - - @Override - public void onStart() { - super.onStart(); - final int theme = findTheme(); - if (this.mTheme != theme) { - recreate(); - } - new InstallReferrerUtils(this); - } - - @Override - public void onStop() { - super.onStop(); - } - - @Override - public void onNewIntent(final Intent intent) { - super.onNewIntent(intent); - if (intent != null) { - setIntent(intent); - } - } - - @Override - protected void onCreate(final Bundle savedInstanceState) { - if (getResources().getBoolean(R.bool.portrait_only)) { - setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - } - super.onCreate(savedInstanceState); - ActivityWelcomeBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_welcome); - setSupportActionBar(binding.toolbar); - configureActionBar(getSupportActionBar(), false); - binding.registerNewAccount.setOnClickListener(v -> { - final Intent intent = new Intent(this, PickServerActivity.class); - addInviteUri(intent); - startActivity(intent); - }); - binding.useExisting.setOnClickListener(v -> { - final List accounts = xmppConnectionService.getAccounts(); - Intent intent = new Intent(WelcomeActivity.this, EditAccountActivity.class); - intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, false); - if (accounts.size() == 1) { - intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); - intent.putExtra("init", true); - } else if (accounts.size() >= 1) { - intent = new Intent(WelcomeActivity.this, ManageAccountActivity.class); - } - addInviteUri(intent); - startActivity(intent); - }); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.welcome_menu, menu); - final MenuItem scan = menu.findItem(R.id.action_scan_qr_code); - scan.setVisible(Compatibility.hasFeatureCamera(this)); - return super.onCreateOptionsMenu(menu); - } - - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.action_import_backup: - if (hasStoragePermission(REQUEST_IMPORT_BACKUP)) { - startActivity(new Intent(this, ImportBackupActivity.class)); - } - break; - case R.id.action_scan_qr_code: - UriHandlerActivity.scan(this, true); - break; - case R.id.action_add_account_with_cert: - addAccountFromKey(); - break; - } - return super.onOptionsItemSelected(item); - } - - private void addAccountFromKey() { - try { - KeyChain.choosePrivateKeyAlias(this, this, null, null, null, -1, null); - } catch (ActivityNotFoundException e) { - Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG).show(); - } - } - - @Override - public void alias(final String alias) { - if (alias != null) { - xmppConnectionService.createAccountFromKey(alias, this); - } - } - - @Override - public void onAccountCreated(final Account account) { - final Intent intent = new Intent(this, EditAccountActivity.class); - intent.putExtra("jid", account.getJid().asBareJid().toEscapedString()); - intent.putExtra("init", true); - addInviteUri(intent); - startActivity(intent); - } - - @Override - public void informUser(final int r) { - runOnUiThread(() -> Toast.makeText(this, r, Toast.LENGTH_LONG).show()); - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - super.onRequestPermissionsResult(requestCode, permissions, grantResults); - UriHandlerActivity.onRequestPermissionResult(this, requestCode, grantResults); - if (grantResults.length > 0) { - if (allGranted(grantResults)) { - switch (requestCode) { - case REQUEST_IMPORT_BACKUP: - startActivity(new Intent(this, ImportBackupActivity.class)); - break; - } - } else if (Arrays.asList(permissions).contains(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { - Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show(); - } - } - if (writeGranted(grantResults, permissions)) { - if (xmppConnectionService != null) { - xmppConnectionService.restartFileObserver(); - } - } - } - - public void addInviteUri(Intent to) { - final Intent from = getIntent(); - if (from != null && from.hasExtra(StartConversationActivity.EXTRA_INVITE_URI)) { - final String invite = from.getStringExtra(StartConversationActivity.EXTRA_INVITE_URI); - to.putExtra(StartConversationActivity.EXTRA_INVITE_URI, invite); - } else if (this.inviteUri != null) { - Log.d(Config.LOGTAG, "injecting referrer uri into on-boarding flow"); - to.putExtra(StartConversationActivity.EXTRA_INVITE_URI, this.inviteUri.toString()); - } - } - -} diff --git a/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java b/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java deleted file mode 100644 index 9857dcd8a..000000000 --- a/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java +++ /dev/null @@ -1,170 +0,0 @@ -package eu.siacs.conversations.ui.adapter; - -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; -import android.text.format.DateUtils; -import android.util.DisplayMetrics; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; - -import androidx.annotation.NonNull; -import androidx.databinding.DataBindingUtil; -import androidx.recyclerview.widget.RecyclerView; - -import java.lang.ref.WeakReference; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.RejectedExecutionException; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.AccountRowBinding; -import eu.siacs.conversations.services.AvatarService; -import eu.siacs.conversations.services.ImportBackupService; -import eu.siacs.conversations.utils.BackupFileHeader; -import eu.siacs.conversations.utils.UIHelper; -import eu.siacs.conversations.xmpp.Jid; - -public class BackupFileAdapter extends RecyclerView.Adapter { - - private OnItemClickedListener listener; - - private final List files = new ArrayList<>(); - - - @NonNull - @Override - public BackupFileViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { - return new BackupFileViewHolder(DataBindingUtil.inflate(LayoutInflater.from(viewGroup.getContext()), R.layout.account_row, viewGroup, false)); - } - - @Override - public void onBindViewHolder(@NonNull BackupFileViewHolder backupFileViewHolder, int position) { - final ImportBackupService.BackupFile backupFile = files.get(position); - final BackupFileHeader header = backupFile.getHeader(); - backupFileViewHolder.binding.accountJid.setText(header.getJid().asBareJid().toString()); - backupFileViewHolder.binding.accountStatus.setText(String.format("%s · %s",header.getApp(), DateUtils.formatDateTime(backupFileViewHolder.binding.getRoot().getContext(), header.getTimestamp(), DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR))); - backupFileViewHolder.binding.tglAccountStatus.setVisibility(View.GONE); - backupFileViewHolder.binding.getRoot().setOnClickListener(v -> { - if (listener != null) { - listener.onClick(backupFile); - } - }); - loadAvatar(header.getJid(), backupFileViewHolder.binding.accountImage); - } - - @Override - public int getItemCount() { - return files.size(); - } - - public void setFiles(List files) { - this.files.clear(); - this.files.addAll(files); - notifyDataSetChanged(); - } - - public void setOnItemClickedListener(OnItemClickedListener listener) { - this.listener = listener; - } - - static class BackupFileViewHolder extends RecyclerView.ViewHolder { - private final AccountRowBinding binding; - - BackupFileViewHolder(AccountRowBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - public interface OnItemClickedListener { - void onClick(ImportBackupService.BackupFile backupFile); - } - - static class BitmapWorkerTask extends AsyncTask { - private final WeakReference imageViewReference; - private Jid jid = null; - private final int size; - - BitmapWorkerTask(ImageView imageView) { - imageViewReference = new WeakReference<>(imageView); - DisplayMetrics metrics = imageView.getContext().getResources().getDisplayMetrics(); - this.size = ((int) (48 * metrics.density)); - } - - @Override - protected Bitmap doInBackground(Jid... params) { - this.jid = params[0]; - return AvatarService.get(this.jid, size); - } - - @Override - protected void onPostExecute(Bitmap bitmap) { - if (bitmap != null && !isCancelled()) { - final ImageView imageView = imageViewReference.get(); - if (imageView != null) { - imageView.setImageBitmap(bitmap); - imageView.setBackgroundColor(0x00000000); - } - } - } - } - - private void loadAvatar(Jid jid, ImageView imageView) { - if (cancelPotentialWork(jid, imageView)) { - imageView.setBackgroundColor(UIHelper.getColorForName(jid.asBareJid().toString())); - imageView.setImageDrawable(null); - final BitmapWorkerTask task = new BitmapWorkerTask(imageView); - final AsyncDrawable asyncDrawable = new AsyncDrawable(imageView.getContext().getResources(), null, task); - imageView.setImageDrawable(asyncDrawable); - try { - task.execute(jid); - } catch (final RejectedExecutionException ignored) { - } - } - } - - private static boolean cancelPotentialWork(Jid jid, ImageView imageView) { - final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); - - if (bitmapWorkerTask != null) { - final Jid oldJid = bitmapWorkerTask.jid; - if (oldJid == null || jid != oldJid) { - bitmapWorkerTask.cancel(true); - } else { - return false; - } - } - return true; - } - - private static BitmapWorkerTask getBitmapWorkerTask(ImageView imageView) { - if (imageView != null) { - final Drawable drawable = imageView.getDrawable(); - if (drawable instanceof AsyncDrawable) { - final AsyncDrawable asyncDrawable = (AsyncDrawable) drawable; - return asyncDrawable.getBitmapWorkerTask(); - } - } - return null; - } - - static class AsyncDrawable extends BitmapDrawable { - private final WeakReference bitmapWorkerTaskReference; - - AsyncDrawable(Resources res, Bitmap bitmap, BitmapWorkerTask bitmapWorkerTask) { - super(res, bitmap); - bitmapWorkerTaskReference = new WeakReference<>(bitmapWorkerTask); - } - - BitmapWorkerTask getBitmapWorkerTask() { - return bitmapWorkerTaskReference.get(); - } - } - -} \ No newline at end of file diff --git a/src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java b/src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java deleted file mode 100644 index 2f7963cf6..000000000 --- a/src/conversations/java/eu/siacs/conversations/utils/PhoneNumberUtilWrapper.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.siacs.conversations.utils; - -import android.content.Context; - -import eu.siacs.conversations.xmpp.Jid; - -public class PhoneNumberUtilWrapper { - public static String toFormattedPhoneNumber(Context context, Jid jid) { - throw new AssertionError("This method is not implemented in Conversations"); - } -} diff --git a/src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java b/src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java deleted file mode 100644 index 593291d95..000000000 --- a/src/conversations/java/eu/siacs/conversations/utils/ProvisioningUtils.java +++ /dev/null @@ -1,43 +0,0 @@ -package eu.siacs.conversations.utils; - -import android.app.Activity; -import android.content.Intent; -import android.widget.Toast; - -import java.util.List; - -import eu.siacs.conversations.R; -import eu.siacs.conversations.entities.AccountConfiguration; -import eu.siacs.conversations.persistance.DatabaseBackend; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.ui.EditAccountActivity; -import eu.siacs.conversations.xmpp.Jid; - -public class ProvisioningUtils { - - public static void provision(final Activity activity, final String json) { - final AccountConfiguration accountConfiguration; - try { - accountConfiguration = AccountConfiguration.parse(json); - } catch (final IllegalArgumentException e) { - Toast.makeText(activity, R.string.improperly_formatted_provisioning, Toast.LENGTH_LONG).show(); - return; - } - final Jid jid = accountConfiguration.getJid(); - final List accounts = DatabaseBackend.getInstance(activity).getAccountJids(true); - if (accounts.contains(jid)) { - Toast.makeText(activity, R.string.account_already_exists, Toast.LENGTH_LONG).show(); - return; - } - final Intent serviceIntent = new Intent(activity, XmppConnectionService.class); - serviceIntent.setAction(XmppConnectionService.ACTION_PROVISION_ACCOUNT); - serviceIntent.putExtra("address", jid.asBareJid().toEscapedString()); - serviceIntent.putExtra("password", accountConfiguration.password); - Compatibility.startService(activity, serviceIntent); - final Intent intent = new Intent(activity, EditAccountActivity.class); - intent.putExtra("jid", jid.asBareJid().toEscapedString()); - intent.putExtra("init", true); - activity.startActivity(intent); - } - -} diff --git a/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java b/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java deleted file mode 100644 index fb088234a..000000000 --- a/src/conversations/java/eu/siacs/conversations/utils/SignupUtils.java +++ /dev/null @@ -1,77 +0,0 @@ -package eu.siacs.conversations.utils; - -import android.app.Activity; -import android.content.Intent; - -import eu.siacs.conversations.Config; -import eu.siacs.conversations.entities.Account; -import eu.siacs.conversations.services.XmppConnectionService; -import eu.siacs.conversations.ui.ConversationsActivity; -import eu.siacs.conversations.ui.EditAccountActivity; -import eu.siacs.conversations.ui.MagicCreateActivity; -import eu.siacs.conversations.ui.ManageAccountActivity; -import eu.siacs.conversations.ui.PickServerActivity; -import eu.siacs.conversations.ui.StartConversationActivity; -import eu.siacs.conversations.ui.WelcomeActivity; -import eu.siacs.conversations.xmpp.Jid; - -public class SignupUtils { - - public static boolean isSupportTokenRegistry() { - return true; - } - - public static Intent getTokenRegistrationIntent(final Activity activity, Jid jid, String preAuth) { - final Intent intent = new Intent(activity, MagicCreateActivity.class); - if (jid.isDomainJid()) { - intent.putExtra(MagicCreateActivity.EXTRA_DOMAIN, jid.getDomain().toEscapedString()); - } else { - intent.putExtra(MagicCreateActivity.EXTRA_DOMAIN, jid.getDomain().toEscapedString()); - intent.putExtra(MagicCreateActivity.EXTRA_USERNAME, jid.getEscapedLocal()); - } - intent.putExtra(MagicCreateActivity.EXTRA_PRE_AUTH, preAuth); - return intent; - } - - public static Intent getSignUpIntent(final Activity activity) { - return getSignUpIntent(activity, false); - } - - public static Intent getSignUpIntent(final Activity activity, final boolean toServerChooser) { - final Intent intent; - if (toServerChooser) { - intent = new Intent(activity, PickServerActivity.class); - } else { - intent = new Intent(activity, WelcomeActivity.class); - } - return intent; - } - - public static Intent getRedirectionIntent(final ConversationsActivity activity) { - final XmppConnectionService service = activity.xmppConnectionService; - Account pendingAccount = AccountUtils.getPendingAccount(service); - Intent intent; - if (pendingAccount != null) { - intent = new Intent(activity, EditAccountActivity.class); - intent.putExtra("jid", pendingAccount.getJid().asBareJid().toString()); - if (!pendingAccount.isOptionSet(Account.OPTION_MAGIC_CREATE)) { - intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, pendingAccount.isOptionSet(Account.OPTION_REGISTER)); - } - } else { - if (service.getAccounts().size() == 0) { - if (Config.X509_VERIFICATION) { - intent = new Intent(activity, ManageAccountActivity.class); - } else if (Config.MAGIC_CREATE_DOMAIN != null) { - intent = getSignUpIntent(activity); - } else { - intent = new Intent(activity, EditAccountActivity.class); - } - } else { - intent = new Intent(activity, StartConversationActivity.class); - } - } - intent.putExtra("init", true); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - return intent; - } -} \ No newline at end of file diff --git a/src/conversations/new_launcher-web.png b/src/conversations/new_launcher-web.png deleted file mode 100644 index 76057f9fea7b2eded734a58069a67c575d466167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19483 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 diff --git a/src/conversations/res/drawable-hdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-hdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index 18730f12f8b7a94fc49b26a916aa877091d3a9c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 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 AGynhq diff --git a/src/conversations/res/drawable-mdpi/ic_notification.png b/src/conversations/res/drawable-mdpi/ic_notification.png deleted file mode 100644 index 379720e94faef2a64ae5ec6668eb99fe908d3f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 554 zcmV+_0@eMAP)Icq!0;eqabRbNulwHn5f6%?fAxJW0t(R)$X0yb7#KU znF(4--42WZYrw~d_}TW`|3QzbH`I6jtKaG~bz0rG8Snx1q3!fTomF?Vg`ZZxw1nqc zRL3`hPgWz^tUjot>%sS^pZkC(&8u6Q0_F<9lg=e>q(uc@r1t`P3+#;u2P$K#ARJ&f za1#{NF3pK6PAtMbP)?`h=?s%w?E zoH1V37gNP64Mf?}&O9*q?njq+YCMT;F8h^BLSL_=_e@LvIZpG}N$P zEkJJ{i~?_ft%cxUft?Z2832fg_rUc+aDdwp(Scrx04~$rfh9E3=&Fa*l>!UAq&A-n z>S6VDfsljs5&;kq&*`2cGr(#eWt!ZuhdQQSP#@X7msizq>MQlWdS0DS&!|uA-qlHW s`xxB11Da5;s>|wP@qjF7n>q~e2Zt*yOg8&mI{*Lx07*qoM6N<$g2U$Rc>n+a diff --git a/src/conversations/res/drawable-mdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-mdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index 8ec62cd34b2c63234ff5593637d5105bdb253343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 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 diff --git a/src/conversations/res/drawable-xhdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-xhdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index a0a1509a16df382eb674cddbaf52e6e70292b30c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 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 diff --git a/src/conversations/res/drawable-xhdpi/splash_logo.png b/src/conversations/res/drawable-xhdpi/splash_logo.png deleted file mode 100644 index 9458b791c2369075087d76d7e0491bd354847e9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23030 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 JPDHLkV1nFuGUWgO diff --git a/src/conversations/res/drawable-xxhdpi/ic_notification.png b/src/conversations/res/drawable-xxhdpi/ic_notification.png deleted file mode 100644 index 6adbc8f648ad35bc7176b6ac5e6c989634068647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1619 zcmV-Z2CVssP)N{E z&fGgQ_hn{h{lWcmo;l|{^XJUWIp=xKg_E458Z51jC5-_l0TY3dz?r}>-~`YKbOZZ< z-DdWCN^UkrAW5eHGl1EJ-wdERMiWPXAA$9S-$pb0r267fQWnLhSJF~RL(>#ygrw!^>QIr5lEzkZpNT&6lA3|ffUBzMyg}>-=9<~I zB$Z^qgIF{klbwbD_~Ya$Fjse;8HXDE6T+~A~yOW`49(SEU-cmCzKThl5_*` zRJC4Zj5)y5Q7$a|h)Eg_v;*hWz^SZp47kM1c9y%S(g=Eie2N2bD)6?XvV$blC}|?F z3rKIe-WYB&v(;h7awF(j@-Gg+l5(Rc&>(3Xum`sVIvAK|W?uvu!bZ>o3?6X+9tks) zj37xvfW5%@dU}*GdVvXMw$C>Nji5FLmpI^bxFgKqGrzvRWR`hBg+Y&4J8*H`-N_z3 zz-Tk;DlY6df+U>V<6OBIc;1(pMU0yBZff#DJB9sphgwgTgThk@xa`d$UB#KrL2fX7I-Oe!A%k+d#h zc;zjBJtJwVTnxPue@HsltJ@@Lb;Q1(54evuNj(Yf<47feHYaGbOK#sNsJ&Ms)L$4< zcU*+Jdlj-XDCzwK_ab@85dJ$T$@;6^%(_Etn)f|bFVHXV$QP)K__Ruz;};f&>b()_-yc$bCr~M+<#I_= z1Nt5T+!mp4pKdc#s8!O6gwJh+Y6xMN!=rNo!*C zUCe%86aUNe67XCC<@@NsedZ?<|1*0O*n!(g7?Ysy-+;roxlGa=p`B)SQE`Dk5Beox z!+o@nd@gkw0aN`LOsJx6AG`em{~h#m4LTXflnfAGpsgf(QRjv70-0G45G(s3XKeQi zf_4!rxY&DjbR>%$Bc?#B zsD4f~kXUJE2Z9WN0u@%sFW1$j>>%KcFk`vwjwW1gP~P{cKQXffVaCwxj=~%LL7c*Q zret|hOxXk~GuwdMXU;Qab1y5#z~r*(x8P0&=8+zt*~|_F87n4nn%O~M0p3nqj%dO~ zVFHPi23$Dju&7oZWsuonhNyYcnAtl(Nr)vUTpMOca+u|HTu?AioWQ+@4*Q14Bd8BE zdjeQYzCQm$2|3yoTOa^4TMFC<9IwKutP%LRPb3h4nJvSqz9(rL86!}js&j!PodLWF z+*OPAQsg)=%8wE!9zlJWS(lmJgZoteRBd}HG7Km=EnT%heH4}@({Yi~vg?}+Gutny znLywcxMub)ZU^92;A>pGyI%AH-{QWi*8$6LM=z7o_%m^m#!Gre?uhpBgdyQ#4oX@j zX`up+d`mi0(xZ~v6SRF)-d|ia^rb47RB$zL87|##67GQTNcv}^9mR!_4*X_V^lZwYeA6pJP8h%kzl)Vluxg``=M zJ}5j+L426DkC{Ny7)eh`+T{t<@65(Pp4im{x#ZI}+(F+>X7+i?E}bM-{0EOv#DnMD RppXCn002ovPDHLkV1mg6@QDBb diff --git a/src/conversations/res/drawable-xxhdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-xxhdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index 20d015751f5e7a7654fecd4d1beb6ccdb1033f8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXoKN!06}c;uuoF`1ZV^7jvON>&JQp zm*xkIOkLACniS#=UAm>$D(CP);GQF^cC>4buxhJZg0$ntc##tO*11-DT24+#+IO9Q zzh?2&)W~TY&&!&|UA_h3|*nY@Hy z!WqLL29IYFnhYw%JtC||eNJ5rlJ2TI8%z59KCw$4?_AOhW%Vv;zGLZD#LD^KGR7mI zN$5#PlhBj}`ioYXUN8>qHNBu2*lTjZYQ2le(&dd@(R)}5*hEA_A|AJJnx0;fcBVtl imEBd(5#+G2och=Q?sSz#RHy+1n8DN4&t;ucLK6T>dYn`M diff --git a/src/conversations/res/drawable-xxhdpi/main_logo.png b/src/conversations/res/drawable-xxhdpi/main_logo.png deleted file mode 100644 index cc091c437a05eeac10cd0e823a10a8667707d642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52900 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 Xv(lV)_-ZWP00000NkvXXu0mjfeH2;0 diff --git a/src/conversations/res/drawable-xxhdpi/splash_logo.png b/src/conversations/res/drawable-xxhdpi/splash_logo.png deleted file mode 100644 index 83c2abe6a7bb0d1ec76c00b6c991bc312b7b57e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36548 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 diff --git a/src/conversations/res/drawable-xxxhdpi/ic_unarchive_white_24dp.png b/src/conversations/res/drawable-xxxhdpi/ic_unarchive_white_24dp.png deleted file mode 100644 index a789520baa7f4b65fd73ae78a57ec50b9d645e3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 503 zcmV9JZFUK03OixFK?s74p2SYCAYR}p1?>_^(85!gQmq9eh^_{-&k=SI_HVTg zh?@Ooznyspp8wN-!>=89()iz$2!_W(zjkExyoapP1JK?6aWn z7F@3dm~h4roiV8cct+cOVyBz&mbRxg01s(5V4Wa(uWz#a0m;&wUU1(`Z22Ye?}7v+GT zWU46#Bx{5K0}L?000Rs#zyP5!14IyLtN{IfOJf9xXotoI5b?(}CV+^)Ok)9v_{TH` zfQbK0*#RQ1m@)%IY%pa7h}dw-2oO;)Wdn#PoH7AKbeOULM0A`o07Pst4Gj>n7+Ap}a$4Sn!<>CMU002ovPDHLkV1mEb(=Px3 diff --git a/src/conversations/res/drawable-xxxhdpi/main_logo.png b/src/conversations/res/drawable-xxxhdpi/main_logo.png deleted file mode 100644 index 3e6ddd877c5a8b673923e80982a8c76c92f558cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74056 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 diff --git a/src/conversations/res/drawable-xxxhdpi/splash_logo.png b/src/conversations/res/drawable-xxxhdpi/splash_logo.png deleted file mode 100644 index 349070ba2635f2f10f88b3a329b43587d0fdad6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50538 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
ePU?mLXs>w&%qn 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 - - - - - - - - - - - - - - - - - - - - -