mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-24 10:35:19 +00:00
Re-organize files & delete unused code
This commit is contained in:
parent
ffc51f400f
commit
a9b5c269f6
@ -93,15 +93,15 @@
|
|||||||
android:value="false" />
|
android:value="false" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.LandingActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.LandingActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.RegisterActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.RegisterActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.RecoveryPhraseRestoreActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.RecoveryPhraseRestoreActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
@ -111,25 +111,25 @@
|
|||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.DisplayNameActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.DisplayNameActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.PNModeActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.PNModeActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.HomeActivity"
|
android:name="org.thoughtcrime.securesms.home.HomeActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:theme="@style/Theme.Session.DayNight.NoActionBar" />
|
android:theme="@style/Theme.Session.DayNight.NoActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.SettingsActivity"
|
android:name="org.thoughtcrime.securesms.preferences.SettingsActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:label="@string/activity_settings_title" />
|
android:label="@string/activity_settings_title" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.PathActivity"
|
android:name="org.thoughtcrime.securesms.home.PathActivity"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.QRCodeActivity"
|
android:name="org.thoughtcrime.securesms.loki.activities.QRCodeActivity"
|
||||||
@ -144,7 +144,7 @@
|
|||||||
android:name="org.thoughtcrime.securesms.loki.activities.CreateClosedGroupActivity"
|
android:name="org.thoughtcrime.securesms.loki.activities.CreateClosedGroupActivity"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.EditClosedGroupActivity"
|
android:name="org.thoughtcrime.securesms.groups.EditClosedGroupActivity"
|
||||||
android:label="@string/activity_edit_closed_group_title"
|
android:label="@string/activity_edit_closed_group_title"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
@ -153,20 +153,20 @@
|
|||||||
android:windowSoftInputMode="adjustResize"
|
android:windowSoftInputMode="adjustResize"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.SeedActivity"
|
android:name="org.thoughtcrime.securesms.onboarding.SeedActivity"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.SelectContactsActivity"
|
android:name="org.thoughtcrime.securesms.contacts.SelectContactsActivity"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.PrivacySettingsActivity"
|
android:name="org.thoughtcrime.securesms.preferences.PrivacySettingsActivity"
|
||||||
android:label="@string/activity_privacy_settings_title"
|
android:label="@string/activity_privacy_settings_title"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.NotificationSettingsActivity"
|
android:name="org.thoughtcrime.securesms.preferences.NotificationSettingsActivity"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.ChatSettingsActivity"
|
android:name="org.thoughtcrime.securesms.preferences.ChatSettingsActivity"
|
||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
@ -198,7 +198,7 @@
|
|||||||
<activity-alias
|
<activity-alias
|
||||||
android:name=".RoutingActivity"
|
android:name=".RoutingActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:targetActivity="org.thoughtcrime.securesms.loki.activities.HomeActivity">
|
android:targetActivity="org.thoughtcrime.securesms.home.HomeActivity">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
@ -215,14 +215,14 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2"
|
android:name="org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:parentActivityName="org.thoughtcrime.securesms.loki.activities.HomeActivity"
|
android:parentActivityName="org.thoughtcrime.securesms.home.HomeActivity"
|
||||||
android:theme="@style/Theme.Session.DayNight.FlatActionBar">
|
android:theme="@style/Theme.Session.DayNight.FlatActionBar">
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="android.support.PARENT_ACTIVITY"
|
android:name="android.support.PARENT_ACTIVITY"
|
||||||
android:value="org.thoughtcrime.securesms.loki.activities.HomeActivity" />
|
android:value="org.thoughtcrime.securesms.home.HomeActivity" />
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name="org.thoughtcrime.securesms.loki.activities.OpenGroupGuidelinesActivity"
|
android:name="org.thoughtcrime.securesms.groups.OpenGroupGuidelinesActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:theme="@style/Theme.TextSecure.DayNight" />
|
android:theme="@style/Theme.TextSecure.DayNight" />
|
||||||
<activity
|
<activity
|
||||||
|
@ -31,7 +31,6 @@ import androidx.multidex.MultiDexApplication;
|
|||||||
import org.conscrypt.Conscrypt;
|
import org.conscrypt.Conscrypt;
|
||||||
import org.session.libsession.avatars.AvatarHelper;
|
import org.session.libsession.avatars.AvatarHelper;
|
||||||
import org.session.libsession.messaging.MessagingModuleConfiguration;
|
import org.session.libsession.messaging.MessagingModuleConfiguration;
|
||||||
import org.session.libsession.messaging.contacts.Contact;
|
|
||||||
import org.session.libsession.messaging.sending_receiving.notifications.MessageNotifier;
|
import org.session.libsession.messaging.sending_receiving.notifications.MessageNotifier;
|
||||||
import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPollerV2;
|
import org.session.libsession.messaging.sending_receiving.pollers.ClosedGroupPollerV2;
|
||||||
import org.session.libsession.messaging.sending_receiving.pollers.Poller;
|
import org.session.libsession.messaging.sending_receiving.pollers.Poller;
|
||||||
@ -43,7 +42,6 @@ import org.session.libsession.utilities.TextSecurePreferences;
|
|||||||
import org.session.libsession.utilities.Util;
|
import org.session.libsession.utilities.Util;
|
||||||
import org.session.libsession.utilities.dynamiclanguage.DynamicLanguageContextWrapper;
|
import org.session.libsession.utilities.dynamiclanguage.DynamicLanguageContextWrapper;
|
||||||
import org.session.libsession.utilities.dynamiclanguage.LocaleParser;
|
import org.session.libsession.utilities.dynamiclanguage.LocaleParser;
|
||||||
import org.session.libsession.utilities.recipients.Recipient;
|
|
||||||
import org.session.libsignal.utilities.Log;
|
import org.session.libsignal.utilities.Log;
|
||||||
import org.session.libsignal.utilities.ThreadUtils;
|
import org.session.libsignal.utilities.ThreadUtils;
|
||||||
import org.signal.aesgcmprovider.AesGcmProvider;
|
import org.signal.aesgcmprovider.AesGcmProvider;
|
||||||
@ -60,15 +58,12 @@ import org.thoughtcrime.securesms.jobs.JobManagerFactories;
|
|||||||
import org.thoughtcrime.securesms.logging.AndroidLogger;
|
import org.thoughtcrime.securesms.logging.AndroidLogger;
|
||||||
import org.thoughtcrime.securesms.logging.PersistentLogger;
|
import org.thoughtcrime.securesms.logging.PersistentLogger;
|
||||||
import org.thoughtcrime.securesms.logging.UncaughtExceptionLogger;
|
import org.thoughtcrime.securesms.logging.UncaughtExceptionLogger;
|
||||||
import org.thoughtcrime.securesms.loki.activities.HomeActivity;
|
import org.thoughtcrime.securesms.home.HomeActivity;
|
||||||
import org.thoughtcrime.securesms.loki.api.BackgroundPollWorker;
|
import org.thoughtcrime.securesms.loki.api.BackgroundPollWorker;
|
||||||
import org.thoughtcrime.securesms.loki.api.LokiPushNotificationManager;
|
import org.thoughtcrime.securesms.loki.api.LokiPushNotificationManager;
|
||||||
import org.thoughtcrime.securesms.loki.api.OpenGroupManager;
|
import org.thoughtcrime.securesms.loki.api.OpenGroupManager;
|
||||||
import org.thoughtcrime.securesms.loki.database.LokiAPIDatabase;
|
import org.thoughtcrime.securesms.loki.database.LokiAPIDatabase;
|
||||||
import org.thoughtcrime.securesms.loki.database.LokiUserDatabase;
|
|
||||||
import org.thoughtcrime.securesms.loki.database.SessionContactDatabase;
|
|
||||||
import org.thoughtcrime.securesms.loki.utilities.Broadcaster;
|
import org.thoughtcrime.securesms.loki.utilities.Broadcaster;
|
||||||
import org.thoughtcrime.securesms.loki.utilities.ContactUtilities;
|
|
||||||
import org.thoughtcrime.securesms.loki.utilities.FcmUtils;
|
import org.thoughtcrime.securesms.loki.utilities.FcmUtils;
|
||||||
import org.thoughtcrime.securesms.loki.utilities.UiModeUtilities;
|
import org.thoughtcrime.securesms.loki.utilities.UiModeUtilities;
|
||||||
import org.thoughtcrime.securesms.notifications.DefaultMessageNotifier;
|
import org.thoughtcrime.securesms.notifications.DefaultMessageNotifier;
|
||||||
|
@ -10,7 +10,7 @@ import androidx.annotation.NonNull;
|
|||||||
|
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
import org.thoughtcrime.securesms.database.model.MessageRecord;
|
||||||
import org.thoughtcrime.securesms.loki.views.UserView;
|
import org.thoughtcrime.securesms.contacts.UserView;
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests;
|
import org.thoughtcrime.securesms.mms.GlideRequests;
|
||||||
import org.session.libsession.utilities.recipients.Recipient;
|
import org.session.libsession.utilities.recipients.Recipient;
|
||||||
import org.session.libsession.utilities.Conversions;
|
import org.session.libsession.utilities.Conversions;
|
||||||
|
@ -12,8 +12,8 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import org.session.libsignal.utilities.Log;
|
import org.session.libsignal.utilities.Log;
|
||||||
import org.thoughtcrime.securesms.loki.activities.HomeActivity;
|
import org.thoughtcrime.securesms.home.HomeActivity;
|
||||||
import org.thoughtcrime.securesms.loki.activities.LandingActivity;
|
import org.thoughtcrime.securesms.onboarding.LandingActivity;
|
||||||
import org.thoughtcrime.securesms.service.KeyCachingService;
|
import org.thoughtcrime.securesms.service.KeyCachingService;
|
||||||
import org.session.libsession.utilities.TextSecurePreferences;
|
import org.session.libsession.utilities.TextSecurePreferences;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ import androidx.appcompat.app.AppCompatActivity;
|
|||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.session.libsession.utilities.Address;
|
import org.session.libsession.utilities.Address;
|
||||||
import org.thoughtcrime.securesms.loki.activities.HomeActivity;
|
import org.thoughtcrime.securesms.home.HomeActivity;
|
||||||
import org.session.libsession.utilities.recipients.Recipient;
|
import org.session.libsession.utilities.recipients.Recipient;
|
||||||
import org.thoughtcrime.securesms.util.CommunicationActions;
|
import org.thoughtcrime.securesms.util.CommunicationActions;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.backup;
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
@ -9,17 +9,13 @@ import android.os.Bundle
|
|||||||
import android.provider.OpenableColumns
|
import android.provider.OpenableColumns
|
||||||
import android.text.Spannable
|
import android.text.Spannable
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.text.method.LinkMovementMethod
|
|
||||||
import android.text.style.ClickableSpan
|
import android.text.style.ClickableSpan
|
||||||
import android.text.style.StyleSpan
|
import android.text.style.StyleSpan
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.inputmethod.InputMethodManager
|
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.result.ActivityResult
|
import androidx.activity.result.ActivityResult
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.core.widget.addTextChangedListener
|
|
||||||
import androidx.databinding.DataBindingUtil
|
|
||||||
import androidx.lifecycle.AndroidViewModel
|
import androidx.lifecycle.AndroidViewModel
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
@ -28,9 +24,7 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.thoughtcrime.securesms.ApplicationContext
|
|
||||||
import org.thoughtcrime.securesms.BaseActionBarActivity
|
import org.thoughtcrime.securesms.BaseActionBarActivity
|
||||||
import org.thoughtcrime.securesms.backup.FullBackupImporter
|
|
||||||
import org.thoughtcrime.securesms.backup.FullBackupImporter.DatabaseDowngradeException
|
import org.thoughtcrime.securesms.backup.FullBackupImporter.DatabaseDowngradeException
|
||||||
import org.thoughtcrime.securesms.crypto.AttachmentSecretProvider
|
import org.thoughtcrime.securesms.crypto.AttachmentSecretProvider
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||||
@ -40,6 +34,7 @@ import org.thoughtcrime.securesms.loki.utilities.show
|
|||||||
import org.thoughtcrime.securesms.notifications.NotificationChannels
|
import org.thoughtcrime.securesms.notifications.NotificationChannels
|
||||||
import org.thoughtcrime.securesms.util.BackupUtil
|
import org.thoughtcrime.securesms.util.BackupUtil
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
|
import org.thoughtcrime.securesms.home.HomeActivity
|
||||||
|
|
||||||
class BackupRestoreActivity : BaseActionBarActivity() {
|
class BackupRestoreActivity : BaseActionBarActivity() {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.contacts
|
||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -40,8 +40,8 @@ class SelectContactsActivity : PassphraseRequiredActionBarActivity(), LoaderMana
|
|||||||
setContentView(R.layout.activity_select_contacts)
|
setContentView(R.layout.activity_select_contacts)
|
||||||
supportActionBar!!.title = resources.getString(R.string.activity_select_contacts_title)
|
supportActionBar!!.title = resources.getString(R.string.activity_select_contacts_title)
|
||||||
|
|
||||||
usersToExclude = intent.getStringArrayExtra(Companion.usersToExcludeKey)?.toSet() ?: setOf()
|
usersToExclude = intent.getStringArrayExtra(usersToExcludeKey)?.toSet() ?: setOf()
|
||||||
val emptyStateText = intent.getStringExtra(Companion.emptyStateTextKey)
|
val emptyStateText = intent.getStringExtra(emptyStateTextKey)
|
||||||
if (emptyStateText != null) {
|
if (emptyStateText != null) {
|
||||||
emptyStateMessageTextView.text = emptyStateText
|
emptyStateMessageTextView.text = emptyStateText
|
||||||
}
|
}
|
@ -1,10 +1,9 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.contacts
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import org.session.libsession.utilities.Address
|
import org.session.libsession.utilities.Address
|
||||||
import org.thoughtcrime.securesms.loki.views.UserView
|
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.contacts
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import org.thoughtcrime.securesms.loki.utilities.ContactUtilities
|
import org.thoughtcrime.securesms.loki.utilities.ContactUtilities
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.contacts
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
@ -72,7 +72,6 @@ import org.session.libsession.utilities.concurrent.SimpleTask
|
|||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
import org.session.libsession.utilities.recipients.RecipientModifiedListener
|
import org.session.libsession.utilities.recipients.RecipientModifiedListener
|
||||||
import org.session.libsignal.utilities.ListenableFuture
|
import org.session.libsignal.utilities.ListenableFuture
|
||||||
import org.session.libsignal.utilities.SettableFuture
|
|
||||||
import org.session.libsignal.utilities.guava.Optional
|
import org.session.libsignal.utilities.guava.Optional
|
||||||
import org.thoughtcrime.securesms.ApplicationContext
|
import org.thoughtcrime.securesms.ApplicationContext
|
||||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
||||||
@ -101,8 +100,8 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository
|
|||||||
import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil
|
import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil
|
||||||
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel
|
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel
|
||||||
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel.LinkPreviewState
|
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel.LinkPreviewState
|
||||||
import org.thoughtcrime.securesms.loki.activities.SelectContactsActivity
|
import org.thoughtcrime.securesms.contacts.SelectContactsActivity
|
||||||
import org.thoughtcrime.securesms.loki.activities.SelectContactsActivity.Companion.selectedContactsKey
|
import org.thoughtcrime.securesms.contacts.SelectContactsActivity.Companion.selectedContactsKey
|
||||||
import org.thoughtcrime.securesms.loki.utilities.ActivityDispatcher
|
import org.thoughtcrime.securesms.loki.utilities.ActivityDispatcher
|
||||||
import org.thoughtcrime.securesms.loki.utilities.MentionUtilities
|
import org.thoughtcrime.securesms.loki.utilities.MentionUtilities
|
||||||
import org.thoughtcrime.securesms.loki.utilities.push
|
import org.thoughtcrime.securesms.loki.utilities.push
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.conversation.v2.components
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.conversation.v2.components
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
@ -8,7 +8,7 @@ import android.widget.FrameLayout
|
|||||||
import kotlinx.android.synthetic.main.view_open_group_guidelines.view.*
|
import kotlinx.android.synthetic.main.view_open_group_guidelines.view.*
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
||||||
import org.thoughtcrime.securesms.loki.activities.OpenGroupGuidelinesActivity
|
import org.thoughtcrime.securesms.groups.OpenGroupGuidelinesActivity
|
||||||
import org.thoughtcrime.securesms.loki.utilities.push
|
import org.thoughtcrime.securesms.loki.utilities.push
|
||||||
|
|
||||||
class OpenGroupGuidelinesView : FrameLayout {
|
class OpenGroupGuidelinesView : FrameLayout {
|
||||||
|
@ -17,10 +17,9 @@ import android.widget.ImageView
|
|||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.thoughtcrime.securesms.conversation.v2.messages.VisibleMessageView
|
|
||||||
import org.thoughtcrime.securesms.loki.utilities.*
|
import org.thoughtcrime.securesms.loki.utilities.*
|
||||||
import org.thoughtcrime.securesms.loki.views.GlowViewUtilities
|
import org.thoughtcrime.securesms.util.GlowViewUtilities
|
||||||
import org.thoughtcrime.securesms.loki.views.InputBarButtonImageViewContainer
|
import org.thoughtcrime.securesms.util.InputBarButtonImageViewContainer
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
||||||
|
@ -38,9 +38,9 @@ import org.session.libsignal.utilities.toHexString
|
|||||||
import org.thoughtcrime.securesms.*
|
import org.thoughtcrime.securesms.*
|
||||||
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||||
import org.thoughtcrime.securesms.loki.activities.EditClosedGroupActivity
|
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity
|
||||||
import org.thoughtcrime.securesms.loki.activities.EditClosedGroupActivity.Companion.groupIDKey
|
import org.thoughtcrime.securesms.groups.EditClosedGroupActivity.Companion.groupIDKey
|
||||||
import org.thoughtcrime.securesms.loki.activities.SelectContactsActivity
|
import org.thoughtcrime.securesms.contacts.SelectContactsActivity
|
||||||
import org.thoughtcrime.securesms.loki.utilities.getColorWithID
|
import org.thoughtcrime.securesms.loki.utilities.getColorWithID
|
||||||
import org.thoughtcrime.securesms.util.BitmapUtil
|
import org.thoughtcrime.securesms.util.BitmapUtil
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.groups
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -19,7 +19,6 @@ import org.session.libsession.messaging.sending_receiving.groupSizeLimit
|
|||||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
||||||
|
|
||||||
import org.session.libsession.utilities.Address
|
import org.session.libsession.utilities.Address
|
||||||
import org.session.libsession.utilities.DistributionTypes
|
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||||
import org.thoughtcrime.securesms.loki.utilities.fadeIn
|
import org.thoughtcrime.securesms.loki.utilities.fadeIn
|
||||||
import org.thoughtcrime.securesms.loki.utilities.fadeOut
|
import org.thoughtcrime.securesms.loki.utilities.fadeOut
|
||||||
@ -27,6 +26,8 @@ import org.thoughtcrime.securesms.mms.GlideApp
|
|||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
||||||
|
import org.thoughtcrime.securesms.contacts.SelectContactsAdapter
|
||||||
|
import org.thoughtcrime.securesms.contacts.SelectContactsLoader
|
||||||
|
|
||||||
//TODO Refactor to avoid using kotlinx.android.synthetic
|
//TODO Refactor to avoid using kotlinx.android.synthetic
|
||||||
class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderManager.LoaderCallbacks<List<String>> {
|
class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderManager.LoaderCallbacks<List<String>> {
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.groups
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -33,6 +33,7 @@ import org.session.libsession.utilities.GroupUtil
|
|||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
import org.session.libsession.utilities.ThemeUtil
|
import org.session.libsession.utilities.ThemeUtil
|
||||||
import org.session.libsignal.utilities.toHexString
|
import org.session.libsignal.utilities.toHexString
|
||||||
|
import org.thoughtcrime.securesms.contacts.SelectContactsActivity
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
|
class EditClosedGroupActivity : PassphraseRequiredActionBarActivity() {
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.groups
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
@ -1,10 +1,10 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.groups
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import org.session.libsession.utilities.Address
|
import org.session.libsession.utilities.Address
|
||||||
import org.thoughtcrime.securesms.loki.views.UserView
|
import org.thoughtcrime.securesms.contacts.UserView
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.groups
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import kotlinx.android.synthetic.main.activity_open_group_guidelines.*
|
import kotlinx.android.synthetic.main.activity_open_group_guidelines.*
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.home
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.res.Resources
|
import android.content.res.Resources
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.home
|
||||||
|
|
||||||
import android.app.AlertDialog
|
import android.app.AlertDialog
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
@ -11,7 +11,6 @@ import android.text.Spannable
|
|||||||
import android.text.SpannableString
|
import android.text.SpannableString
|
||||||
import android.text.style.ForegroundColorSpan
|
import android.text.style.ForegroundColorSpan
|
||||||
import android.util.DisplayMetrics
|
import android.util.DisplayMetrics
|
||||||
import android.util.Log
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
@ -40,19 +39,19 @@ import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2
|
|||||||
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
|
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||||
import org.thoughtcrime.securesms.database.model.ThreadRecord
|
import org.thoughtcrime.securesms.database.model.ThreadRecord
|
||||||
|
import org.thoughtcrime.securesms.groups.CreateClosedGroupActivity
|
||||||
|
import org.thoughtcrime.securesms.loki.activities.*
|
||||||
import org.thoughtcrime.securesms.loki.api.OpenGroupManager
|
import org.thoughtcrime.securesms.loki.api.OpenGroupManager
|
||||||
import org.thoughtcrime.securesms.loki.dialogs.*
|
import org.thoughtcrime.securesms.loki.dialogs.*
|
||||||
import org.thoughtcrime.securesms.loki.protocol.MultiDeviceProtocol
|
import org.thoughtcrime.securesms.loki.protocol.MultiDeviceProtocol
|
||||||
import org.thoughtcrime.securesms.loki.utilities.*
|
import org.thoughtcrime.securesms.loki.utilities.*
|
||||||
import org.thoughtcrime.securesms.loki.views.ConversationView
|
import org.thoughtcrime.securesms.onboarding.SeedReminderViewDelegate
|
||||||
import org.thoughtcrime.securesms.loki.views.NewConversationButtonSetViewDelegate
|
|
||||||
import org.thoughtcrime.securesms.loki.views.SeedReminderViewDelegate
|
|
||||||
import org.thoughtcrime.securesms.mms.GlideApp
|
import org.thoughtcrime.securesms.mms.GlideApp
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||||
import org.thoughtcrime.securesms.util.DateUtils
|
import org.thoughtcrime.securesms.onboarding.SeedActivity
|
||||||
|
import org.thoughtcrime.securesms.preferences.SettingsActivity
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
|
||||||
|
|
||||||
class HomeActivity : PassphraseRequiredActionBarActivity(), ConversationClickListener, SeedReminderViewDelegate, NewConversationButtonSetViewDelegate {
|
class HomeActivity : PassphraseRequiredActionBarActivity(), ConversationClickListener, SeedReminderViewDelegate, NewConversationButtonSetViewDelegate {
|
||||||
private lateinit var glide: GlideRequests
|
private lateinit var glide: GlideRequests
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.home
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
@ -7,7 +7,6 @@ import android.view.ViewGroup
|
|||||||
import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter
|
import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||||
import org.thoughtcrime.securesms.database.model.ThreadRecord
|
import org.thoughtcrime.securesms.database.model.ThreadRecord
|
||||||
import org.thoughtcrime.securesms.loki.views.ConversationView
|
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||||
|
|
||||||
class HomeAdapter(context: Context, cursor: Cursor) : CursorRecyclerViewAdapter<HomeAdapter.ViewHolder>(context, cursor) {
|
class HomeAdapter(context: Context, cursor: Cursor) : CursorRecyclerViewAdapter<HomeAdapter.ViewHolder>(context, cursor) {
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.home
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.home
|
||||||
|
|
||||||
import android.animation.FloatEvaluator
|
import android.animation.FloatEvaluator
|
||||||
import android.animation.PointFEvaluator
|
import android.animation.PointFEvaluator
|
||||||
@ -17,6 +17,8 @@ import androidx.annotation.ColorRes
|
|||||||
import androidx.annotation.DrawableRes
|
import androidx.annotation.DrawableRes
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.thoughtcrime.securesms.loki.utilities.*
|
import org.thoughtcrime.securesms.loki.utilities.*
|
||||||
|
import org.thoughtcrime.securesms.util.GlowViewUtilities
|
||||||
|
import org.thoughtcrime.securesms.util.NewConversationButtonImageView
|
||||||
|
|
||||||
class NewConversationButtonSetView : RelativeLayout {
|
class NewConversationButtonSetView : RelativeLayout {
|
||||||
private var expandedButton: Button? = null
|
private var expandedButton: Button? = null
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.home
|
||||||
|
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -23,8 +23,8 @@ import org.session.libsession.snode.OnionRequestAPI
|
|||||||
import org.session.libsignal.utilities.Snode
|
import org.session.libsignal.utilities.Snode
|
||||||
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
|
||||||
import org.thoughtcrime.securesms.loki.utilities.*
|
import org.thoughtcrime.securesms.loki.utilities.*
|
||||||
import org.thoughtcrime.securesms.loki.views.GlowViewUtilities
|
import org.thoughtcrime.securesms.util.GlowViewUtilities
|
||||||
import org.thoughtcrime.securesms.loki.views.PathDotView
|
import org.thoughtcrime.securesms.util.PathDotView
|
||||||
|
|
||||||
class PathActivity : PassphraseRequiredActionBarActivity() {
|
class PathActivity : PassphraseRequiredActionBarActivity() {
|
||||||
private val broadcastReceivers = mutableListOf<BroadcastReceiver>()
|
private val broadcastReceivers = mutableListOf<BroadcastReceiver>()
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.home
|
||||||
|
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
@ -7,7 +7,7 @@ import android.view.View
|
|||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import kotlinx.android.synthetic.main.contact_selection_list_divider.view.*
|
import kotlinx.android.synthetic.main.contact_selection_list_divider.view.*
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
||||||
import org.thoughtcrime.securesms.loki.views.UserView
|
import org.thoughtcrime.securesms.contacts.UserView
|
||||||
import org.thoughtcrime.securesms.mms.GlideRequests
|
import org.thoughtcrime.securesms.mms.GlideRequests
|
||||||
import org.session.libsession.utilities.recipients.Recipient
|
import org.session.libsession.utilities.recipients.Recipient
|
||||||
|
|
||||||
|
@ -1,335 +0,0 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.res.ColorStateList
|
|
||||||
import android.graphics.Color
|
|
||||||
import android.graphics.PorterDuff
|
|
||||||
import android.graphics.drawable.AnimatedVectorDrawable
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.view.View
|
|
||||||
import android.view.View.OnTouchListener
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.widget.FrameLayout
|
|
||||||
import android.widget.ImageView
|
|
||||||
import android.widget.ProgressBar
|
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.annotation.ColorInt
|
|
||||||
import androidx.core.content.ContextCompat
|
|
||||||
import kotlinx.coroutines.*
|
|
||||||
import network.loki.messenger.R
|
|
||||||
import org.greenrobot.eventbus.EventBus
|
|
||||||
import org.greenrobot.eventbus.Subscribe
|
|
||||||
import org.greenrobot.eventbus.ThreadMode
|
|
||||||
import org.session.libsession.messaging.sending_receiving.attachments.AttachmentTransferProgress
|
|
||||||
import org.thoughtcrime.securesms.ApplicationContext
|
|
||||||
import org.session.libsession.messaging.sending_receiving.attachments.DatabaseAttachment
|
|
||||||
import org.thoughtcrime.securesms.audio.AudioSlidePlayer
|
|
||||||
import org.thoughtcrime.securesms.components.AnimatingToggle
|
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
|
||||||
import org.thoughtcrime.securesms.events.PartProgressEvent
|
|
||||||
import org.session.libsignal.utilities.Log
|
|
||||||
import org.thoughtcrime.securesms.loki.api.PrepareAttachmentAudioExtrasJob
|
|
||||||
import org.thoughtcrime.securesms.loki.utilities.getColorWithID
|
|
||||||
import org.thoughtcrime.securesms.mms.AudioSlide
|
|
||||||
import org.thoughtcrime.securesms.mms.SlideClickListener
|
|
||||||
import java.io.IOException
|
|
||||||
import java.util.*
|
|
||||||
import java.util.concurrent.TimeUnit
|
|
||||||
|
|
||||||
class MessageAudioView: FrameLayout, AudioSlidePlayer.Listener {
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private const val TAG = "AudioViewKt"
|
|
||||||
}
|
|
||||||
|
|
||||||
private val controlToggle: AnimatingToggle
|
|
||||||
private val container: ViewGroup
|
|
||||||
private val playButton: ImageView
|
|
||||||
private val pauseButton: ImageView
|
|
||||||
private val downloadButton: ImageView
|
|
||||||
private val downloadProgress: ProgressBar
|
|
||||||
private val seekBar: WaveformSeekBar
|
|
||||||
private val totalDuration: TextView
|
|
||||||
|
|
||||||
private var downloadListener: SlideClickListener? = null
|
|
||||||
private var audioSlidePlayer: AudioSlidePlayer? = null
|
|
||||||
|
|
||||||
/** Background coroutine scope that is available when the view is attached to a window. */
|
|
||||||
private var asyncCoroutineScope: CoroutineScope? = null
|
|
||||||
|
|
||||||
private val loadingAnimation: SeekBarLoadingAnimation
|
|
||||||
|
|
||||||
constructor(context: Context): this(context, null)
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?): this(context, attrs, 0)
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int): super(context, attrs, defStyleAttr) {
|
|
||||||
View.inflate(context, R.layout.message_audio_view, this)
|
|
||||||
container = findViewById(R.id.audio_widget_container)
|
|
||||||
controlToggle = findViewById(R.id.control_toggle)
|
|
||||||
playButton = findViewById(R.id.play)
|
|
||||||
pauseButton = findViewById(R.id.pause)
|
|
||||||
downloadButton = findViewById(R.id.download)
|
|
||||||
downloadProgress = findViewById(R.id.download_progress)
|
|
||||||
seekBar = findViewById(R.id.seek)
|
|
||||||
totalDuration = findViewById(R.id.total_duration)
|
|
||||||
|
|
||||||
playButton.setOnClickListener {
|
|
||||||
try {
|
|
||||||
Log.d(TAG, "playbutton onClick")
|
|
||||||
if (audioSlidePlayer != null) {
|
|
||||||
togglePlayToPause()
|
|
||||||
|
|
||||||
// Restart the playback if progress bar is nearly at the end.
|
|
||||||
val progress = if (seekBar.progress < 0.99f) seekBar.progress.toDouble() else 0.0
|
|
||||||
|
|
||||||
audioSlidePlayer!!.play(progress)
|
|
||||||
}
|
|
||||||
} catch (e: IOException) {
|
|
||||||
Log.w(TAG, e)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pauseButton.setOnClickListener {
|
|
||||||
Log.d(TAG, "pausebutton onClick")
|
|
||||||
if (audioSlidePlayer != null) {
|
|
||||||
togglePauseToPlay()
|
|
||||||
audioSlidePlayer!!.stop()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
seekBar.isEnabled = false
|
|
||||||
seekBar.progressChangeListener = object : WaveformSeekBar.ProgressChangeListener {
|
|
||||||
override fun onProgressChanged(waveformSeekBar: WaveformSeekBar, progress: Float, fromUser: Boolean) {
|
|
||||||
if (fromUser && audioSlidePlayer != null) {
|
|
||||||
synchronized(audioSlidePlayer!!) {
|
|
||||||
audioSlidePlayer!!.seekTo(progress.toDouble())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
playButton.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.play_icon))
|
|
||||||
pauseButton.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.pause_icon))
|
|
||||||
playButton.background = ContextCompat.getDrawable(context, R.drawable.ic_circle_fill_white_48dp)
|
|
||||||
pauseButton.background = ContextCompat.getDrawable(context, R.drawable.ic_circle_fill_white_48dp)
|
|
||||||
|
|
||||||
if (attrs != null) {
|
|
||||||
val typedArray = context.theme.obtainStyledAttributes(attrs, R.styleable.MessageAudioView, 0, 0)
|
|
||||||
setTint(typedArray.getColor(R.styleable.MessageAudioView_foregroundTintColor, Color.WHITE),
|
|
||||||
typedArray.getColor(R.styleable.MessageAudioView_waveformFillColor, Color.WHITE),
|
|
||||||
typedArray.getColor(R.styleable.MessageAudioView_waveformBackgroundColor, Color.WHITE))
|
|
||||||
container.setBackgroundColor(typedArray.getColor(R.styleable.MessageAudioView_widgetBackground, Color.TRANSPARENT))
|
|
||||||
typedArray.recycle()
|
|
||||||
}
|
|
||||||
|
|
||||||
loadingAnimation = SeekBarLoadingAnimation(this, seekBar)
|
|
||||||
loadingAnimation.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onAttachedToWindow() {
|
|
||||||
super.onAttachedToWindow()
|
|
||||||
if (!EventBus.getDefault().isRegistered(this)) EventBus.getDefault().register(this)
|
|
||||||
|
|
||||||
asyncCoroutineScope = CoroutineScope(Job() + Dispatchers.IO)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDetachedFromWindow() {
|
|
||||||
super.onDetachedFromWindow()
|
|
||||||
EventBus.getDefault().unregister(this)
|
|
||||||
|
|
||||||
// Cancel all the background operations.
|
|
||||||
asyncCoroutineScope!!.cancel()
|
|
||||||
asyncCoroutineScope = null
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setAudio(audio: AudioSlide, showControls: Boolean) {
|
|
||||||
when {
|
|
||||||
showControls && audio.isPendingDownload -> {
|
|
||||||
controlToggle.displayQuick(downloadButton)
|
|
||||||
seekBar.isEnabled = false
|
|
||||||
downloadButton.setOnClickListener { v -> downloadListener?.onClick(v, audio) }
|
|
||||||
if (downloadProgress.isIndeterminate) {
|
|
||||||
downloadProgress.isIndeterminate = false
|
|
||||||
downloadProgress.progress = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
(showControls && audio.transferState == AttachmentTransferProgress.TRANSFER_PROGRESS_STARTED) -> {
|
|
||||||
controlToggle.displayQuick(downloadProgress)
|
|
||||||
seekBar.isEnabled = false
|
|
||||||
downloadProgress.isIndeterminate = true
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
controlToggle.displayQuick(playButton)
|
|
||||||
seekBar.isEnabled = true
|
|
||||||
if (downloadProgress.isIndeterminate) {
|
|
||||||
downloadProgress.isIndeterminate = false
|
|
||||||
downloadProgress.progress = 100
|
|
||||||
}
|
|
||||||
|
|
||||||
// Post to make sure it executes only when the view is attached to a window.
|
|
||||||
post(::updateFromAttachmentAudioExtras)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
audioSlidePlayer = AudioSlidePlayer.createFor(context, audio, this)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun cleanup() {
|
|
||||||
if (audioSlidePlayer != null && pauseButton.visibility == View.VISIBLE) {
|
|
||||||
audioSlidePlayer!!.stop()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setDownloadClickListener(listener: SlideClickListener?) {
|
|
||||||
downloadListener = listener
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setTint(@ColorInt foregroundTint: Int, @ColorInt waveformFill: Int, @ColorInt waveformBackground: Int) {
|
|
||||||
playButton.backgroundTintList = ColorStateList.valueOf(resources.getColorWithID(R.color.white, context.theme))
|
|
||||||
playButton.imageTintList = ColorStateList.valueOf(resources.getColorWithID(R.color.black, context.theme))
|
|
||||||
pauseButton.backgroundTintList = ColorStateList.valueOf(resources.getColorWithID(R.color.white, context.theme))
|
|
||||||
pauseButton.imageTintList = ColorStateList.valueOf(resources.getColorWithID(R.color.black, context.theme))
|
|
||||||
|
|
||||||
downloadButton.setColorFilter(foregroundTint, PorterDuff.Mode.SRC_IN)
|
|
||||||
|
|
||||||
downloadProgress.backgroundTintList = ColorStateList.valueOf(resources.getColorWithID(R.color.white, context.theme))
|
|
||||||
downloadProgress.progressTintList = ColorStateList.valueOf(resources.getColorWithID(R.color.black, context.theme))
|
|
||||||
downloadProgress.indeterminateTintList = ColorStateList.valueOf(resources.getColorWithID(R.color.black, context.theme))
|
|
||||||
|
|
||||||
totalDuration.setTextColor(foregroundTint)
|
|
||||||
|
|
||||||
seekBar.barProgressColor = waveformFill
|
|
||||||
seekBar.barBackgroundColor = waveformBackground
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPlayerStart(player: AudioSlidePlayer) {
|
|
||||||
if (pauseButton.visibility != View.VISIBLE) {
|
|
||||||
togglePlayToPause()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPlayerStop(player: AudioSlidePlayer) {
|
|
||||||
if (playButton.visibility != View.VISIBLE) {
|
|
||||||
togglePauseToPlay()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPlayerProgress(player: AudioSlidePlayer, progress: Double, millis: Long) {
|
|
||||||
seekBar.progress = progress.toFloat()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setFocusable(focusable: Boolean) {
|
|
||||||
super.setFocusable(focusable)
|
|
||||||
playButton.isFocusable = focusable
|
|
||||||
pauseButton.isFocusable = focusable
|
|
||||||
seekBar.isFocusable = focusable
|
|
||||||
seekBar.isFocusableInTouchMode = focusable
|
|
||||||
downloadButton.isFocusable = focusable
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setClickable(clickable: Boolean) {
|
|
||||||
super.setClickable(clickable)
|
|
||||||
playButton.isClickable = clickable
|
|
||||||
pauseButton.isClickable = clickable
|
|
||||||
seekBar.isClickable = clickable
|
|
||||||
seekBar.setOnTouchListener(if (clickable) null else
|
|
||||||
OnTouchListener { _, _ -> return@OnTouchListener true }) // Suppress touch events.
|
|
||||||
downloadButton.isClickable = clickable
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setEnabled(enabled: Boolean) {
|
|
||||||
super.setEnabled(enabled)
|
|
||||||
playButton.isEnabled = enabled
|
|
||||||
pauseButton.isEnabled = enabled
|
|
||||||
downloadButton.isEnabled = enabled
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun togglePlayToPause() {
|
|
||||||
controlToggle.displayQuick(pauseButton)
|
|
||||||
val playToPauseDrawable = ContextCompat.getDrawable(context, R.drawable.play_to_pause_animation) as AnimatedVectorDrawable
|
|
||||||
pauseButton.setImageDrawable(playToPauseDrawable)
|
|
||||||
playToPauseDrawable.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun togglePauseToPlay() {
|
|
||||||
controlToggle.displayQuick(playButton)
|
|
||||||
val pauseToPlayDrawable = ContextCompat.getDrawable(context, R.drawable.pause_to_play_animation) as AnimatedVectorDrawable
|
|
||||||
playButton.setImageDrawable(pauseToPlayDrawable)
|
|
||||||
pauseToPlayDrawable.start()
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun obtainDatabaseAttachment(): DatabaseAttachment? {
|
|
||||||
audioSlidePlayer ?: return null
|
|
||||||
val attachment = audioSlidePlayer!!.audioSlide.asAttachment()
|
|
||||||
return if (attachment is DatabaseAttachment) attachment else null
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateFromAttachmentAudioExtras() {
|
|
||||||
val attachment = obtainDatabaseAttachment() ?: return
|
|
||||||
|
|
||||||
val audioExtras = DatabaseFactory.getAttachmentDatabase(context)
|
|
||||||
.getAttachmentAudioExtras(attachment.attachmentId)
|
|
||||||
|
|
||||||
// Schedule a job request if no audio extras were generated yet.
|
|
||||||
if (audioExtras == null) {
|
|
||||||
ApplicationContext.getInstance(context).jobManager
|
|
||||||
.add(PrepareAttachmentAudioExtrasJob(attachment.attachmentId))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
loadingAnimation.stop()
|
|
||||||
seekBar.sampleData = audioExtras.visualSamples
|
|
||||||
|
|
||||||
if (audioExtras.durationMs > 0) {
|
|
||||||
totalDuration.visibility = View.VISIBLE
|
|
||||||
totalDuration.text = String.format("%02d:%02d",
|
|
||||||
TimeUnit.MILLISECONDS.toMinutes(audioExtras.durationMs),
|
|
||||||
TimeUnit.MILLISECONDS.toSeconds(audioExtras.durationMs))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
|
|
||||||
fun onEvent(event: PartProgressEvent) {
|
|
||||||
if (audioSlidePlayer != null && event.attachment == audioSlidePlayer!!.audioSlide.asAttachment()) {
|
|
||||||
val progress = ((event.progress.toFloat() / event.total) * 100f).toInt()
|
|
||||||
downloadProgress.progress = progress
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
|
||||||
fun onEvent(event: PrepareAttachmentAudioExtrasJob.AudioExtrasUpdatedEvent) {
|
|
||||||
if (event.attachmentId == obtainDatabaseAttachment()?.attachmentId) {
|
|
||||||
updateFromAttachmentAudioExtras()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class SeekBarLoadingAnimation(
|
|
||||||
private val hostView: View,
|
|
||||||
private val seekBar: WaveformSeekBar): Runnable {
|
|
||||||
|
|
||||||
private var active = false
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private const val UPDATE_PERIOD = 250L // In milliseconds.
|
|
||||||
private val random = Random()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun start() {
|
|
||||||
stop()
|
|
||||||
active = true
|
|
||||||
hostView.postDelayed(this, UPDATE_PERIOD)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun stop() {
|
|
||||||
active = false
|
|
||||||
hostView.removeCallbacks(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun run() {
|
|
||||||
if (!active) return
|
|
||||||
|
|
||||||
// Generate a random samples with values up to the 50% of the maximum value.
|
|
||||||
seekBar.sampleData = ByteArray(PrepareAttachmentAudioExtrasJob.VISUAL_RMS_FRAMES)
|
|
||||||
{ (random.nextInt(127) - 64).toByte() }
|
|
||||||
hostView.postDelayed(this, UPDATE_PERIOD)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.view.View
|
|
||||||
import android.widget.*
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.GlobalScope
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
import network.loki.messenger.R
|
|
||||||
import org.session.libsession.utilities.OpenGroupUrlParser
|
|
||||||
import org.session.libsignal.utilities.Log
|
|
||||||
import org.thoughtcrime.securesms.loki.api.OpenGroupManager
|
|
||||||
import org.thoughtcrime.securesms.loki.protocol.MultiDeviceProtocol
|
|
||||||
import org.thoughtcrime.securesms.loki.utilities.OpenGroupUtilities
|
|
||||||
|
|
||||||
class OpenGroupInvitationView : FrameLayout {
|
|
||||||
private val joinButton: ImageView
|
|
||||||
private val openGroupIconContainer: RelativeLayout
|
|
||||||
private val openGroupIconImageView: ImageView
|
|
||||||
private val nameTextView: TextView
|
|
||||||
private val urlTextView: TextView
|
|
||||||
private var url: String = ""
|
|
||||||
|
|
||||||
constructor(context: Context): this(context, null)
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?): this(context, attrs, 0)
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int): super(context, attrs, defStyleAttr) {
|
|
||||||
View.inflate(context, R.layout.open_group_invitation_view, this)
|
|
||||||
joinButton = findViewById(R.id.join_open_group_button)
|
|
||||||
openGroupIconContainer = findViewById(R.id.open_group_icon_image_view_container)
|
|
||||||
openGroupIconImageView = findViewById(R.id.open_group_icon_image_view)
|
|
||||||
nameTextView = findViewById(R.id.name_text_view)
|
|
||||||
urlTextView = findViewById(R.id.url_text_view)
|
|
||||||
joinButton.setOnClickListener { joinOpenGroup(url) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setOpenGroup(name: String, url: String, isOutgoing: Boolean = false) {
|
|
||||||
nameTextView.text = name
|
|
||||||
urlTextView.text = OpenGroupUrlParser.trimQueryParameter(url)
|
|
||||||
this.url = url
|
|
||||||
joinButton.visibility = if (isOutgoing) View.GONE else View.VISIBLE
|
|
||||||
openGroupIconContainer.visibility = if (isOutgoing) View.VISIBLE else View.GONE
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun joinOpenGroup(url: String) {
|
|
||||||
val openGroup = OpenGroupUrlParser.parseUrl(url)
|
|
||||||
val builder = AlertDialog.Builder(context)
|
|
||||||
builder.setTitle(context.getString(R.string.ConversationActivity_join_open_group, nameTextView.text.toString()))
|
|
||||||
builder.setCancelable(true)
|
|
||||||
val message: String =
|
|
||||||
context.getString(R.string.ConversationActivity_join_open_group_confirmation_message, nameTextView.text.toString())
|
|
||||||
builder.setMessage(message)
|
|
||||||
builder.setPositiveButton(R.string.yes) { dialog, _ ->
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
try {
|
|
||||||
dialog.dismiss()
|
|
||||||
OpenGroupManager.add(openGroup.server, openGroup.room, openGroup.serverPublicKey, context)
|
|
||||||
MultiDeviceProtocol.forceSyncConfigurationNowIfNeeded(context)
|
|
||||||
} catch (e: Exception) {
|
|
||||||
Log.e("Loki", "Failed to join open group.", e)
|
|
||||||
Toast.makeText(context, R.string.activity_join_public_chat_error, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
builder.setNegativeButton(R.string.no, null)
|
|
||||||
builder.show()
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,315 +0,0 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
|
||||||
|
|
||||||
import android.animation.ValueAnimator
|
|
||||||
import android.content.Context
|
|
||||||
import android.graphics.Canvas
|
|
||||||
import android.graphics.Color
|
|
||||||
import android.graphics.Paint
|
|
||||||
import android.graphics.RectF
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.util.TypedValue
|
|
||||||
import android.view.MotionEvent
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewConfiguration
|
|
||||||
import android.view.animation.DecelerateInterpolator
|
|
||||||
import androidx.core.math.MathUtils
|
|
||||||
import network.loki.messenger.R
|
|
||||||
import org.session.libsession.utilities.byteToNormalizedFloat
|
|
||||||
import kotlin.math.abs
|
|
||||||
import kotlin.math.max
|
|
||||||
import kotlin.math.min
|
|
||||||
import kotlin.math.roundToInt
|
|
||||||
|
|
||||||
class WaveformSeekBar : View {
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
@JvmStatic
|
|
||||||
fun dp(context: Context, dp: Float): Float {
|
|
||||||
return TypedValue.applyDimension(
|
|
||||||
TypedValue.COMPLEX_UNIT_DIP,
|
|
||||||
dp,
|
|
||||||
context.resources.displayMetrics
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private val sampleDataHolder = SampleDataHolder(::invalidate)
|
|
||||||
/** An array of signed byte values representing the audio signal. */
|
|
||||||
var sampleData: ByteArray?
|
|
||||||
get() {
|
|
||||||
return sampleDataHolder.getSamples()
|
|
||||||
}
|
|
||||||
set(value) {
|
|
||||||
sampleDataHolder.setSamples(value)
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Indicates whether the user is currently interacting with the view and performing a seeking gesture. */
|
|
||||||
private var userSeeking = false
|
|
||||||
private var _progress: Float = 0f
|
|
||||||
/** In [0..1] range. */
|
|
||||||
var progress: Float
|
|
||||||
set(value) {
|
|
||||||
// Do not let to modify the progress value from the outside
|
|
||||||
// when the user is currently interacting with the view.
|
|
||||||
if (userSeeking) return
|
|
||||||
|
|
||||||
_progress = value
|
|
||||||
invalidate()
|
|
||||||
progressChangeListener?.onProgressChanged(this, _progress, false)
|
|
||||||
}
|
|
||||||
get() {
|
|
||||||
return _progress
|
|
||||||
}
|
|
||||||
|
|
||||||
var barBackgroundColor: Int = Color.LTGRAY
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
var barProgressColor: Int = Color.WHITE
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
var barGap: Float = dp(context, 2f)
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
var barWidth: Float = dp(context, 5f)
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
var barMinHeight: Float = barWidth
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
var barCornerRadius: Float = dp(context, 2.5f)
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
var barGravity: WaveGravity = WaveGravity.CENTER
|
|
||||||
set(value) {
|
|
||||||
field = value
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
var progressChangeListener: ProgressChangeListener? = null
|
|
||||||
|
|
||||||
private val barPaint = Paint(Paint.ANTI_ALIAS_FLAG)
|
|
||||||
private val barRect = RectF()
|
|
||||||
|
|
||||||
private var canvasWidth = 0
|
|
||||||
private var canvasHeight = 0
|
|
||||||
|
|
||||||
private var touchDownX = 0f
|
|
||||||
private var touchDownProgress: Float = 0f
|
|
||||||
private var scaledTouchSlop = ViewConfiguration.get(context).scaledTouchSlop
|
|
||||||
|
|
||||||
constructor(context: Context) : this(context, null)
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0)
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int)
|
|
||||||
: super(context, attrs, defStyleAttr) {
|
|
||||||
|
|
||||||
val typedAttrs = context.obtainStyledAttributes(attrs, R.styleable.WaveformSeekBar)
|
|
||||||
barWidth = typedAttrs.getDimension(R.styleable.WaveformSeekBar_bar_width, barWidth)
|
|
||||||
barGap = typedAttrs.getDimension(R.styleable.WaveformSeekBar_bar_gap, barGap)
|
|
||||||
barCornerRadius = typedAttrs.getDimension(
|
|
||||||
R.styleable.WaveformSeekBar_bar_corner_radius,
|
|
||||||
barCornerRadius)
|
|
||||||
barMinHeight =
|
|
||||||
typedAttrs.getDimension(R.styleable.WaveformSeekBar_bar_min_height, barMinHeight)
|
|
||||||
barBackgroundColor = typedAttrs.getColor(
|
|
||||||
R.styleable.WaveformSeekBar_bar_background_color,
|
|
||||||
barBackgroundColor)
|
|
||||||
barProgressColor =
|
|
||||||
typedAttrs.getColor(R.styleable.WaveformSeekBar_bar_progress_color, barProgressColor)
|
|
||||||
progress = typedAttrs.getFloat(R.styleable.WaveformSeekBar_progress, progress)
|
|
||||||
barGravity = WaveGravity.fromString(
|
|
||||||
typedAttrs.getString(R.styleable.WaveformSeekBar_bar_gravity))
|
|
||||||
|
|
||||||
typedAttrs.recycle()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
|
|
||||||
super.onSizeChanged(w, h, oldw, oldh)
|
|
||||||
canvasWidth = w
|
|
||||||
canvasHeight = h
|
|
||||||
invalidate()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onDraw(canvas: Canvas) {
|
|
||||||
super.onDraw(canvas)
|
|
||||||
|
|
||||||
val totalWidth = getAvailableWidth()
|
|
||||||
val barAmount = (totalWidth / (barWidth + barGap)).toInt()
|
|
||||||
|
|
||||||
var lastBarRight = paddingLeft.toFloat()
|
|
||||||
|
|
||||||
(0 until barAmount).forEach { barIdx ->
|
|
||||||
// Convert a signed byte to a [0..1] float.
|
|
||||||
val barValue = byteToNormalizedFloat(sampleDataHolder.computeBarValue(barIdx, barAmount))
|
|
||||||
|
|
||||||
val barHeight = max(barMinHeight, getAvailableHeight() * barValue)
|
|
||||||
|
|
||||||
val top: Float = when (barGravity) {
|
|
||||||
WaveGravity.TOP -> paddingTop.toFloat()
|
|
||||||
WaveGravity.CENTER -> paddingTop + getAvailableHeight() * 0.5f - barHeight * 0.5f
|
|
||||||
WaveGravity.BOTTOM -> canvasHeight - paddingBottom - barHeight
|
|
||||||
}
|
|
||||||
|
|
||||||
barRect.set(lastBarRight, top, lastBarRight + barWidth, top + barHeight)
|
|
||||||
|
|
||||||
barPaint.color = if (barRect.right <= totalWidth * progress)
|
|
||||||
barProgressColor else barBackgroundColor
|
|
||||||
|
|
||||||
canvas.drawRoundRect(barRect, barCornerRadius, barCornerRadius, barPaint)
|
|
||||||
|
|
||||||
lastBarRight = barRect.right + barGap
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onTouchEvent(event: MotionEvent): Boolean {
|
|
||||||
if (!isEnabled) return false
|
|
||||||
|
|
||||||
when (event.action) {
|
|
||||||
MotionEvent.ACTION_DOWN -> {
|
|
||||||
userSeeking = true
|
|
||||||
touchDownX = event.x
|
|
||||||
touchDownProgress = progress
|
|
||||||
updateProgress(event, false)
|
|
||||||
}
|
|
||||||
MotionEvent.ACTION_MOVE -> {
|
|
||||||
// Prevent any parent scrolling if the user scrolled more
|
|
||||||
// than scaledTouchSlop on horizontal axis.
|
|
||||||
if (abs(event.x - touchDownX) > scaledTouchSlop) {
|
|
||||||
parent.requestDisallowInterceptTouchEvent(true)
|
|
||||||
}
|
|
||||||
updateProgress(event, false)
|
|
||||||
}
|
|
||||||
MotionEvent.ACTION_UP -> {
|
|
||||||
userSeeking = false
|
|
||||||
updateProgress(event, true)
|
|
||||||
performClick()
|
|
||||||
}
|
|
||||||
MotionEvent.ACTION_CANCEL -> {
|
|
||||||
updateProgress(touchDownProgress, false)
|
|
||||||
userSeeking = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateProgress(event: MotionEvent, notify: Boolean) {
|
|
||||||
updateProgress(event.x / getAvailableWidth(), notify)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun updateProgress(progress: Float, notify: Boolean) {
|
|
||||||
_progress = MathUtils.clamp(progress, 0f, 1f)
|
|
||||||
invalidate()
|
|
||||||
|
|
||||||
if (notify) {
|
|
||||||
progressChangeListener?.onProgressChanged(this, _progress, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun performClick(): Boolean {
|
|
||||||
super.performClick()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getAvailableWidth() = canvasWidth - paddingLeft - paddingRight
|
|
||||||
private fun getAvailableHeight() = canvasHeight - paddingTop - paddingBottom
|
|
||||||
|
|
||||||
private class SampleDataHolder(private val invalidateDelegate: () -> Any) {
|
|
||||||
|
|
||||||
private var sampleDataFrom: ByteArray? = null
|
|
||||||
private var sampleDataTo: ByteArray? = null
|
|
||||||
private var progress = 1f // Mix between from and to values.
|
|
||||||
|
|
||||||
private var animation: ValueAnimator? = null
|
|
||||||
|
|
||||||
fun computeBarValue(barIdx: Int, barAmount: Int): Byte {
|
|
||||||
/** @return The array's value at the interpolated index. */
|
|
||||||
fun getSampleValue(sampleData: ByteArray?): Byte {
|
|
||||||
if (sampleData == null || sampleData.isEmpty())
|
|
||||||
return Byte.MIN_VALUE
|
|
||||||
else {
|
|
||||||
val sampleIdx = (barIdx * (sampleData.size / barAmount.toFloat())).toInt()
|
|
||||||
return sampleData[sampleIdx]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (progress == 1f) {
|
|
||||||
return getSampleValue(sampleDataTo)
|
|
||||||
}
|
|
||||||
|
|
||||||
val fromValue = getSampleValue(sampleDataFrom)
|
|
||||||
val toValue = getSampleValue(sampleDataTo)
|
|
||||||
val rawResultValue = fromValue * (1f - progress) + toValue * progress
|
|
||||||
return rawResultValue.roundToInt().toByte()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setSamples(sampleData: ByteArray?) {
|
|
||||||
/** @return a mix between [sampleDataFrom] and [sampleDataTo] arrays according to the current [progress] value. */
|
|
||||||
fun computeNewDataFromArray(): ByteArray? {
|
|
||||||
if (sampleDataTo == null) return null
|
|
||||||
if (sampleDataFrom == null) return sampleDataTo
|
|
||||||
|
|
||||||
val sampleSize = min(sampleDataFrom!!.size, sampleDataTo!!.size)
|
|
||||||
return ByteArray(sampleSize) { i -> computeBarValue(i, sampleSize) }
|
|
||||||
}
|
|
||||||
|
|
||||||
sampleDataFrom = computeNewDataFromArray()
|
|
||||||
sampleDataTo = sampleData
|
|
||||||
progress = 0f
|
|
||||||
|
|
||||||
animation?.cancel()
|
|
||||||
animation = ValueAnimator.ofFloat(0f, 1f).apply {
|
|
||||||
addUpdateListener { animation ->
|
|
||||||
progress = animation.animatedValue as Float
|
|
||||||
invalidateDelegate()
|
|
||||||
}
|
|
||||||
interpolator = DecelerateInterpolator(3f)
|
|
||||||
duration = 500
|
|
||||||
start()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getSamples(): ByteArray? {
|
|
||||||
return sampleDataTo
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
enum class WaveGravity {
|
|
||||||
TOP,
|
|
||||||
CENTER,
|
|
||||||
BOTTOM,
|
|
||||||
;
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
@JvmStatic
|
|
||||||
fun fromString(gravity: String?): WaveGravity = when (gravity) {
|
|
||||||
"1" -> TOP
|
|
||||||
"2" -> CENTER
|
|
||||||
else -> BOTTOM
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
interface ProgressChangeListener {
|
|
||||||
fun onProgressChanged(waveformSeekBar: WaveformSeekBar, progress: Float, fromUser: Boolean)
|
|
||||||
}
|
|
||||||
}
|
|
@ -16,7 +16,7 @@ import org.session.libsession.utilities.TextSecurePreferences;
|
|||||||
import org.session.libsession.utilities.Util;
|
import org.session.libsession.utilities.Util;
|
||||||
import org.session.libsession.utilities.recipients.Recipient;
|
import org.session.libsession.utilities.recipients.Recipient;
|
||||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||||
import org.thoughtcrime.securesms.loki.activities.HomeActivity;
|
import org.thoughtcrime.securesms.home.HomeActivity;
|
||||||
import org.thoughtcrime.securesms.loki.database.SessionContactDatabase;
|
import org.thoughtcrime.securesms.loki.database.SessionContactDatabase;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
|
@ -7,7 +7,7 @@ import android.content.Intent;
|
|||||||
import androidx.core.app.NotificationCompat;
|
import androidx.core.app.NotificationCompat;
|
||||||
|
|
||||||
import org.session.libsession.utilities.recipients.Recipient;
|
import org.session.libsession.utilities.recipients.Recipient;
|
||||||
import org.thoughtcrime.securesms.loki.activities.HomeActivity;
|
import org.thoughtcrime.securesms.home.HomeActivity;
|
||||||
import org.session.libsession.utilities.NotificationPrivacyPreference;
|
import org.session.libsession.utilities.NotificationPrivacyPreference;
|
||||||
import org.session.libsession.utilities.TextSecurePreferences;
|
import org.session.libsession.utilities.TextSecurePreferences;
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.animation.FloatEvaluator
|
import android.animation.FloatEvaluator
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -9,9 +9,7 @@ import org.thoughtcrime.securesms.BaseActionBarActivity
|
|||||||
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
|
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
|
||||||
import org.thoughtcrime.securesms.loki.utilities.push
|
import org.thoughtcrime.securesms.loki.utilities.push
|
||||||
import org.thoughtcrime.securesms.loki.utilities.setUpActionBarSessionLogo
|
import org.thoughtcrime.securesms.loki.utilities.setUpActionBarSessionLogo
|
||||||
import org.thoughtcrime.securesms.loki.views.FakeChatView
|
|
||||||
import org.thoughtcrime.securesms.service.KeyCachingService
|
import org.thoughtcrime.securesms.service.KeyCachingService
|
||||||
import org.thoughtcrime.securesms.util.Util
|
|
||||||
|
|
||||||
class LandingActivity : BaseActionBarActivity() {
|
class LandingActivity : BaseActionBarActivity() {
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
@ -35,6 +35,7 @@ import org.thoughtcrime.securesms.loki.fragments.ScanQRCodeWrapperFragmentDelega
|
|||||||
import org.thoughtcrime.securesms.loki.utilities.MnemonicUtilities
|
import org.thoughtcrime.securesms.loki.utilities.MnemonicUtilities
|
||||||
import org.thoughtcrime.securesms.loki.utilities.push
|
import org.thoughtcrime.securesms.loki.utilities.push
|
||||||
import org.thoughtcrime.securesms.loki.utilities.setUpActionBarSessionLogo
|
import org.thoughtcrime.securesms.loki.utilities.setUpActionBarSessionLogo
|
||||||
|
import org.thoughtcrime.securesms.onboarding.PNModeActivity
|
||||||
|
|
||||||
class LinkDeviceActivity : BaseActionBarActivity(), ScanQRCodeWrapperFragmentDelegate {
|
class LinkDeviceActivity : BaseActionBarActivity(), ScanQRCodeWrapperFragmentDelegate {
|
||||||
private val adapter = LinkDeviceActivityAdapter(this)
|
private val adapter = LinkDeviceActivityAdapter(this)
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.animation.ArgbEvaluator
|
import android.animation.ArgbEvaluator
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
@ -19,12 +19,13 @@ import network.loki.messenger.R
|
|||||||
import org.session.libsession.utilities.TextSecurePreferences
|
import org.session.libsession.utilities.TextSecurePreferences
|
||||||
import org.thoughtcrime.securesms.ApplicationContext
|
import org.thoughtcrime.securesms.ApplicationContext
|
||||||
import org.thoughtcrime.securesms.BaseActionBarActivity
|
import org.thoughtcrime.securesms.BaseActionBarActivity
|
||||||
|
import org.thoughtcrime.securesms.home.HomeActivity
|
||||||
import org.thoughtcrime.securesms.loki.utilities.disableClipping
|
import org.thoughtcrime.securesms.loki.utilities.disableClipping
|
||||||
import org.thoughtcrime.securesms.loki.utilities.getColorWithID
|
import org.thoughtcrime.securesms.loki.utilities.getColorWithID
|
||||||
import org.thoughtcrime.securesms.loki.utilities.setUpActionBarSessionLogo
|
import org.thoughtcrime.securesms.loki.utilities.setUpActionBarSessionLogo
|
||||||
import org.thoughtcrime.securesms.loki.utilities.show
|
import org.thoughtcrime.securesms.loki.utilities.show
|
||||||
import org.thoughtcrime.securesms.loki.views.GlowViewUtilities
|
import org.thoughtcrime.securesms.util.GlowViewUtilities
|
||||||
import org.thoughtcrime.securesms.loki.views.PNModeView
|
import org.thoughtcrime.securesms.util.PNModeView
|
||||||
|
|
||||||
class PNModeActivity : BaseActionBarActivity() {
|
class PNModeActivity : BaseActionBarActivity() {
|
||||||
private var selectedOptionView: PNModeView? = null
|
private var selectedOptionView: PNModeView? = null
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.onboarding
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.preferences
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.preferences
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.preferences
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import network.loki.messenger.R
|
import network.loki.messenger.R
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.preferences
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.activities
|
package org.thoughtcrime.securesms.preferences
|
||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.app.Activity
|
import android.app.Activity
|
@ -13,7 +13,7 @@ import androidx.core.app.NotificationCompat;
|
|||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
|
||||||
import org.session.libsignal.utilities.Log;
|
import org.session.libsignal.utilities.Log;
|
||||||
import org.thoughtcrime.securesms.loki.activities.HomeActivity;
|
import org.thoughtcrime.securesms.home.HomeActivity;
|
||||||
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||||
import org.session.libsignal.utilities.guava.Preconditions;
|
import org.session.libsignal.utilities.guava.Preconditions;
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ import org.thoughtcrime.securesms.ApplicationContext;
|
|||||||
import org.thoughtcrime.securesms.DatabaseUpgradeActivity;
|
import org.thoughtcrime.securesms.DatabaseUpgradeActivity;
|
||||||
import org.thoughtcrime.securesms.DummyActivity;
|
import org.thoughtcrime.securesms.DummyActivity;
|
||||||
import org.session.libsignal.utilities.Log;
|
import org.session.libsignal.utilities.Log;
|
||||||
import org.thoughtcrime.securesms.loki.activities.HomeActivity;
|
import org.thoughtcrime.securesms.home.HomeActivity;
|
||||||
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
import org.thoughtcrime.securesms.notifications.NotificationChannels;
|
||||||
import org.session.libsession.utilities.ServiceUtil;
|
import org.session.libsession.utilities.ServiceUtil;
|
||||||
import org.session.libsession.utilities.TextSecurePreferences;
|
import org.session.libsession.utilities.TextSecurePreferences;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package org.thoughtcrime.securesms.loki.views
|
package org.thoughtcrime.securesms.util
|
||||||
|
|
||||||
import android.animation.ArgbEvaluator
|
import android.animation.ArgbEvaluator
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
@ -19,7 +19,7 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:text="@string/activity_landing_title_2" />
|
android:text="@string/activity_landing_title_2" />
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.FakeChatView
|
<org.thoughtcrime.securesms.onboarding.FakeChatView
|
||||||
android:id="@+id/fakeChatView"
|
android:id="@+id/fakeChatView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/fake_chat_view_height"
|
android:layout_height="@dimen/fake_chat_view_height"
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
android:textColor="@color/text"
|
android:textColor="@color/text"
|
||||||
android:text="@string/activity_pn_mode_explanation" />
|
android:text="@string/activity_pn_mode_explanation" />
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.PNModeView
|
<org.thoughtcrime.securesms.util.PNModeView
|
||||||
android:id="@+id/fcmOptionView"
|
android:id="@+id/fcmOptionView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -67,9 +67,9 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:text="@string/activity_pn_mode_recommended_option_tag" />
|
android:text="@string/activity_pn_mode_recommended_option_tag" />
|
||||||
|
|
||||||
</org.thoughtcrime.securesms.loki.views.PNModeView>
|
</org.thoughtcrime.securesms.util.PNModeView>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.PNModeView
|
<org.thoughtcrime.securesms.util.PNModeView
|
||||||
android:id="@+id/backgroundPollingOptionView"
|
android:id="@+id/backgroundPollingOptionView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -96,7 +96,7 @@
|
|||||||
android:textColor="@color/text"
|
android:textColor="@color/text"
|
||||||
android:text="@string/activity_pn_mode_slow_mode_explanation" />
|
android:text="@string/activity_pn_mode_slow_mode_explanation" />
|
||||||
|
|
||||||
</org.thoughtcrime.securesms.loki.views.PNModeView>
|
</org.thoughtcrime.securesms.util.PNModeView>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
style="@style/Widget.Session.Button.Common.ProminentFilled"
|
style="@style/Widget.Session.Button.Common.ProminentFilled"
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.SeedReminderView
|
<org.thoughtcrime.securesms.onboarding.SeedReminderView
|
||||||
android:id="@+id/seedReminderView"
|
android:id="@+id/seedReminderView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
tools:context="org.thoughtcrime.securesms.loki.activities.EditClosedGroupActivity">
|
tools:context="org.thoughtcrime.securesms.groups.EditClosedGroupActivity">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/mainContentContainer"
|
android:id="@+id/mainContentContainer"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:context="org.thoughtcrime.securesms.loki.activities.HomeActivity">
|
tools:context="org.thoughtcrime.securesms.home.HomeActivity">
|
||||||
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
@ -53,7 +53,7 @@
|
|||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_centerVertical="true">
|
android:layout_centerVertical="true">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.PathStatusView
|
<org.thoughtcrime.securesms.home.PathStatusView
|
||||||
android:layout_width="@dimen/path_status_view_size"
|
android:layout_width="@dimen/path_status_view_size"
|
||||||
android:layout_height="@dimen/path_status_view_size"
|
android:layout_height="@dimen/path_status_view_size"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
@ -70,7 +70,7 @@
|
|||||||
android:background="?android:dividerHorizontal"
|
android:background="?android:dividerHorizontal"
|
||||||
android:elevation="1dp" />
|
android:elevation="1dp" />
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.SeedReminderView
|
<org.thoughtcrime.securesms.onboarding.SeedReminderView
|
||||||
android:id="@+id/seedReminderView"
|
android:id="@+id/seedReminderView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
@ -124,7 +124,7 @@
|
|||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.NewConversationButtonSetView
|
<org.thoughtcrime.securesms.home.NewConversationButtonSetView
|
||||||
android:id="@+id/newConversationButtonSet"
|
android:id="@+id/newConversationButtonSet"
|
||||||
android:layout_width="276dp"
|
android:layout_width="276dp"
|
||||||
android:layout_height="236dp"
|
android:layout_height="236dp"
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:text="@string/activity_landing_title_2" />
|
android:text="@string/activity_landing_title_2" />
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.FakeChatView
|
<org.thoughtcrime.securesms.onboarding.FakeChatView
|
||||||
android:id="@+id/fakeChatView"
|
android:id="@+id/fakeChatView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/fake_chat_view_height"
|
android:layout_height="@dimen/fake_chat_view_height"
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
android:textColor="@color/text"
|
android:textColor="@color/text"
|
||||||
android:text="@string/activity_pn_mode_explanation" />
|
android:text="@string/activity_pn_mode_explanation" />
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.PNModeView
|
<org.thoughtcrime.securesms.util.PNModeView
|
||||||
android:id="@+id/fcmOptionView"
|
android:id="@+id/fcmOptionView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -67,9 +67,9 @@
|
|||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:text="@string/activity_pn_mode_recommended_option_tag" />
|
android:text="@string/activity_pn_mode_recommended_option_tag" />
|
||||||
|
|
||||||
</org.thoughtcrime.securesms.loki.views.PNModeView>
|
</org.thoughtcrime.securesms.util.PNModeView>
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.PNModeView
|
<org.thoughtcrime.securesms.util.PNModeView
|
||||||
android:id="@+id/backgroundPollingOptionView"
|
android:id="@+id/backgroundPollingOptionView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
@ -96,7 +96,7 @@
|
|||||||
android:textColor="@color/text"
|
android:textColor="@color/text"
|
||||||
android:text="@string/activity_pn_mode_slow_mode_explanation" />
|
android:text="@string/activity_pn_mode_slow_mode_explanation" />
|
||||||
|
|
||||||
</org.thoughtcrime.securesms.loki.views.PNModeView>
|
</org.thoughtcrime.securesms.util.PNModeView>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
style="@style/Widget.Session.Button.Common.ProminentFilled"
|
style="@style/Widget.Session.Button.Common.ProminentFilled"
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
android:gravity="center_horizontal"
|
android:gravity="center_horizontal"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<org.thoughtcrime.securesms.loki.views.SeedReminderView
|
<org.thoughtcrime.securesms.onboarding.SeedReminderView
|
||||||
android:id="@+id/seedReminderView"
|
android:id="@+id/seedReminderView"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content" />
|
android:layout_height="wrap_content" />
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context="org.thoughtcrime.securesms.loki.activities.SettingsActivity"
|
tools:context="org.thoughtcrime.securesms.preferences.SettingsActivity"
|
||||||
tools:theme="@style/Theme.Session.DayNight.NoActionBar"
|
tools:theme="@style/Theme.Session.DayNight.NoActionBar"
|
||||||
tools:menu="@menu/settings_general">
|
tools:menu="@menu/settings_general">
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<org.thoughtcrime.securesms.loki.views.MentionCandidateView
|
<org.thoughtcrime.securesms.conversation.v2.components.MentionCandidateView
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="44dp"
|
android:layout_height="44dp"
|
||||||
@ -39,4 +39,4 @@
|
|||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:ellipsize="end" />
|
android:ellipsize="end" />
|
||||||
|
|
||||||
</org.thoughtcrime.securesms.loki.views.MentionCandidateView>
|
</org.thoughtcrime.securesms.conversation.v2.components.MentionCandidateView>
|
Loading…
Reference in New Issue
Block a user