From 26821632fd139360cc061d0e0beb7c869bfd1293 Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Sat, 8 May 2021 19:54:10 +0200 Subject: [PATCH] Styling ImageButtons & replace onStart with onResume in ServiceBoundActivity --- .../java/sushi/hardcore/aira/ChatActivity.kt | 20 ++++--- .../java/sushi/hardcore/aira/MainActivity.kt | 5 +- .../hardcore/aira/ServiceBoundActivity.kt | 10 ++-- .../aira/background_service/AIRAService.kt | 54 ++++++++++--------- app/src/main/res/layout/activity_chat.xml | 20 ++++--- app/src/main/res/layout/activity_main.xml | 8 ++- app/src/main/res/layout/adapter_chat_file.xml | 12 ++--- app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/dimens.xml | 4 ++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/values/styles.xml | 5 ++ 11 files changed, 84 insertions(+), 56 deletions(-) create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/src/main/java/sushi/hardcore/aira/ChatActivity.kt b/app/src/main/java/sushi/hardcore/aira/ChatActivity.kt index b85b47f..4c05e19 100644 --- a/app/src/main/java/sushi/hardcore/aira/ChatActivity.kt +++ b/app/src/main/java/sushi/hardcore/aira/ChatActivity.kt @@ -307,20 +307,28 @@ class ChatActivity : ServiceBoundActivity() { } } - override fun onStart() { - super.onStart() + override fun onResume() { + super.onResume() if (isServiceInitialized()) { airaService.setSeen(sessionId, true) } } + override fun onPause() { + super.onPause() + lastLoadedMessageOffset = 0 + } + private fun onClickSaveFile(fileName: String, rawUuid: ByteArray) { - FileUtils.openFileForDownload(this, fileName)?.apply { - AIRADatabase.loadFile(rawUuid)?.let { - write(it) + val buffer = AIRADatabase.loadFile(rawUuid) + if (buffer == null) { + Toast.makeText(this, R.string.loadFile_failed, Toast.LENGTH_SHORT).show() + } else { + FileUtils.openFileForDownload(this, fileName)?.apply { + write(buffer) + close() Toast.makeText(this@ChatActivity, R.string.file_saved, Toast.LENGTH_SHORT).show() } - close() } } } \ No newline at end of file diff --git a/app/src/main/java/sushi/hardcore/aira/MainActivity.kt b/app/src/main/java/sushi/hardcore/aira/MainActivity.kt index 5ddc703..6e55a17 100644 --- a/app/src/main/java/sushi/hardcore/aira/MainActivity.kt +++ b/app/src/main/java/sushi/hardcore/aira/MainActivity.kt @@ -21,7 +21,6 @@ import sushi.hardcore.aira.databinding.ActivityMainBinding import sushi.hardcore.aira.databinding.DialogIpAddressesBinding import sushi.hardcore.aira.utils.FileUtils import sushi.hardcore.aira.utils.StringUtils -import java.lang.StringBuilder import java.net.NetworkInterface class MainActivity : ServiceBoundActivity() { @@ -235,8 +234,8 @@ class MainActivity : ServiceBoundActivity() { } } - override fun onStop() { - super.onStop() + override fun onPause() { + super.onPause() if (isServiceInitialized()) { airaService.isAppInBackground = true } diff --git a/app/src/main/java/sushi/hardcore/aira/ServiceBoundActivity.kt b/app/src/main/java/sushi/hardcore/aira/ServiceBoundActivity.kt index 6e98cf3..19d35d7 100644 --- a/app/src/main/java/sushi/hardcore/aira/ServiceBoundActivity.kt +++ b/app/src/main/java/sushi/hardcore/aira/ServiceBoundActivity.kt @@ -1,5 +1,6 @@ package sushi.hardcore.aira +import android.content.Context import android.content.Intent import android.content.ServiceConnection import androidx.appcompat.app.AppCompatActivity @@ -14,8 +15,8 @@ open class ServiceBoundActivity: AppCompatActivity() { return ::airaService.isInitialized } - override fun onStop() { - super.onStop() + override fun onPause() { + super.onPause() if (::airaService.isInitialized) { airaService.isAppInBackground = true airaService.uiCallbacks = null @@ -23,10 +24,11 @@ open class ServiceBoundActivity: AppCompatActivity() { } } - override fun onStart() { - super.onStart() + override fun onResume() { + super.onResume() if (!::serviceIntent.isInitialized) { serviceIntent = Intent(this, AIRAService::class.java) } + bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE) } } \ No newline at end of file diff --git a/app/src/main/java/sushi/hardcore/aira/background_service/AIRAService.kt b/app/src/main/java/sushi/hardcore/aira/background_service/AIRAService.kt index 266a580..e315e8f 100644 --- a/app/src/main/java/sushi/hardcore/aira/background_service/AIRAService.kt +++ b/app/src/main/java/sushi/hardcore/aira/background_service/AIRAService.kt @@ -282,35 +282,37 @@ class AIRAService : Service() { try { val session = Session(socket, outgoing) if (session.doHandshake()) { - var isActuallyNewSession = true - for (s in sessions.values) { - if (s.peerPublicKey.contentEquals(session.peerPublicKey)) { - isActuallyNewSession = false - } - } - if (isActuallyNewSession && !session.peerPublicKey.contentEquals(AIRADatabase.getIdentityPublicKey())) { - var sessionId: Int? = null - for ((i, contact) in contacts) { - if (contact.publicKey.contentEquals(session.peerPublicKey)){ - sessions[i] = session - sessionId = i + synchronized(this) { + var isActuallyNewSession = true + for (s in sessions.values) { + if (s.peerPublicKey.contentEquals(session.peerPublicKey)) { + isActuallyNewSession = false } } - if (sessionId == null) { - sessions[sessionCounter] = session - savedMsgs[sessionCounter] = mutableListOf() - sessionId = sessionCounter - sessionCounter++ + if (isActuallyNewSession && !session.peerPublicKey.contentEquals(AIRADatabase.getIdentityPublicKey())) { + var sessionId: Int? = null + for ((i, contact) in contacts) { + if (contact.publicKey.contentEquals(session.peerPublicKey)){ + sessions[i] = session + sessionId = i + } + } + if (sessionId == null) { + sessions[sessionCounter] = session + savedMsgs[sessionCounter] = mutableListOf() + sessionId = sessionCounter + sessionCounter++ + } + session.configureBlocking(false) + val key = session.register(selector, SelectionKey.OP_READ) + sessionIdByKey[key] = sessionId + uiCallbacks?.onNewSession(sessionId, session.ip) + if (!isContact(sessionId)) { + session.encryptAndSend(Protocol.askName()) + } + } else { + session.close() } - session.configureBlocking(false) - val key = session.register(selector, SelectionKey.OP_READ) - sessionIdByKey[key] = sessionId - uiCallbacks?.onNewSession(sessionId, session.ip) - if (!isContact(sessionId)) { - session.encryptAndSend(Protocol.askName()) - } - } else { - session.close() } } else { session.close() diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml index 24154f8..44ed997 100644 --- a/app/src/main/res/layout/activity_chat.xml +++ b/app/src/main/res/layout/activity_chat.xml @@ -24,10 +24,13 @@ + app:layout_constraintStart_toEndOf="@id/image_trust_level" + app:layout_constraintEnd_toStartOf="@+id/button_send"/> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 62330d1..bc9c965 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -56,7 +56,6 @@ android:maxLines="1" android:imeOptions="actionGo" android:hint="@string/add_peer_ip" - android:layout_marginEnd="10dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -64,11 +63,10 @@ + android:paddingStart="6dp" + android:paddingVertical="5dp"> + android:layout_width="@dimen/image_button_size" + android:layout_height="@dimen/image_button_size" + android:src="@drawable/ic_save" + style="@style/ImageButton"/> #3845A3 #ffffff #66666666 + #00000000 \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..bd7a48a --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,4 @@ + + + 30dp + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b231b5a..38bffe1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -75,4 +75,5 @@ Another file transfer is already in progress Settings Log out + File extraction failed diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0e1d01e..8f9bbee 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,6 +13,11 @@ 15dp 15dp +