diff --git a/app/src/main/java/com/example/bondoman/LoginActivity.kt b/app/src/main/java/com/example/bondoman/LoginActivity.kt index 2eaeb2e0f2d40f68590b3a847a4c086fc2a6d9ff..f7bf5ed918a19c98abf89248fe3ccb537d01a2ea 100644 --- a/app/src/main/java/com/example/bondoman/LoginActivity.kt +++ b/app/src/main/java/com/example/bondoman/LoginActivity.kt @@ -9,24 +9,50 @@ import android.content.Intent import android.widget.Toast import android.annotation.SuppressLint import android.util.Log +import android.view.View +import android.widget.RelativeLayout +import androidx.lifecycle.lifecycleScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import com.example.bondoman.models.LoginRequest +import com.example.bondoman.services.ConnectivityObserver +import com.example.bondoman.services.NetworkSensing import com.example.bondoman.utils.RetrofitInstance import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach import org.json.JSONException import org.json.JSONObject class LoginActivity : AppCompatActivity() { + private lateinit var networkSensing: NetworkSensing @SuppressLint("CommitPrefEdits") -// @OptIn(DelicateCoroutinesApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login) - val buttonLogin = findViewById<Button>(R.id.buttonLogin) -// val editTextEmail = findViewById<EditText>(R.id.emailAddress) -// val editTextPassword = findViewById<EditText>(R.id.password) + val editTextEmail = findViewById<EditText>(R.id.emailAddress) + val editTextPassword = findViewById<EditText>(R.id.password) + val connectionLost = findViewById<RelativeLayout>(R.id.conn_lost) + networkSensing = NetworkSensing(this) + networkSensing.observe() + .onEach { state -> + when (state) { + ConnectivityObserver.NetworkState.CONNECTED -> { + editTextEmail.visibility = View.VISIBLE + editTextPassword.visibility = View.VISIBLE + buttonLogin.visibility = View.VISIBLE + connectionLost.visibility = View.GONE + } + ConnectivityObserver.NetworkState.DISCONNECTED -> { + editTextEmail.visibility = View.GONE + editTextPassword.visibility = View.GONE + buttonLogin.visibility = View.GONE + connectionLost.visibility = View.VISIBLE + } + } + } + .launchIn(lifecycleScope) buttonLogin.setOnClickListener { // val email = editTextEmail.text.toString() diff --git a/app/src/main/java/com/example/bondoman/LogoutFragment.kt b/app/src/main/java/com/example/bondoman/LogoutFragment.kt deleted file mode 100644 index 2861f8e5d055e30495ee65df4e2fc49882b0fa6e..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/example/bondoman/LogoutFragment.kt +++ /dev/null @@ -1,55 +0,0 @@ -package com.example.bondoman -import android.content.Context.MODE_PRIVATE -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.Button -import androidx.fragment.app.Fragment -import android.content.Intent -import android.widget.EditText -import com.example.bondoman.services.RandomizeTransaction - -class LogoutFragment : Fragment() { - - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - val view = inflater.inflate(R.layout.fragment_logout, container, false) - - view.findViewById<Button>(R.id.logoutButton).setOnClickListener { - logout() - } - - view.findViewById<Button>(R.id.randomButton).setOnClickListener { - val listRandomText = listOf("MacBook Pro", "MacBook Air", "Mac Mini", "Mac Pro", "iMac") - val randomText = listRandomText.random() - - val randomizeTransactionIntent = Intent(requireContext(), RandomizeTransaction::class.java) - randomizeTransactionIntent.putExtra("transactionName", randomText) - randomizeTransactionIntent.setAction("com.example.bondoman.services.RandomizeTransaction") - requireContext().sendBroadcast(randomizeTransactionIntent) - } - return view - } - - private fun logout() { - clearUserSession() - val loginIntent = Intent(requireContext(), LoginActivity::class.java) - loginIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK - startActivity(loginIntent) - } - - private fun clearUserSession() { - val sharedPreferences = requireContext().getSharedPreferences("sharedPrefs", MODE_PRIVATE) - - val editor = sharedPreferences.edit() - editor.clear() - editor.apply() - } - - fun updateEditText(randomText: String?) { - view?.findViewById<EditText>(R.id.transactionName)?.setText(randomText) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/MainActivity.kt b/app/src/main/java/com/example/bondoman/MainActivity.kt index b20941219f4930c3a1c71405e8073b3214fffae0..026b0b5c225ab54b797f02d3f81d7807067fb9c0 100644 --- a/app/src/main/java/com/example/bondoman/MainActivity.kt +++ b/app/src/main/java/com/example/bondoman/MainActivity.kt @@ -30,7 +30,6 @@ import org.greenrobot.eventbus.EventBus class MainActivity : AppCompatActivity() { private lateinit var service: Intent - private lateinit var networkSensing: NetworkSensing private lateinit var transactionButton: ImageButton private lateinit var graphButton: ImageButton private lateinit var settingButton: ImageButton @@ -43,7 +42,6 @@ class MainActivity : AppCompatActivity() { setContentView(R.layout.activity_main) service = Intent(this, JWTExpiry::class.java) startService(service) - networkSensing = NetworkSensing(this) database = TransactionDB.getInstance(this) if (!database.isOpen) { @@ -106,27 +104,6 @@ class MainActivity : AppCompatActivity() { navbar.visibility = View.VISIBLE } } - networkSensing.observe() - .onEach { state -> - when (state) { - ConnectivityObserver.NetworkState.CONNECTED -> { - Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show() - } - ConnectivityObserver.NetworkState.DISCONNECTED -> { - runOnUiThread { - AlertDialog.Builder(this) - .setTitle("Network Status") - .setMessage("Disconnected") - .setPositiveButton("OK") { dialog, _ -> - dialog.dismiss() - } - .show() - } - } - } - } - .launchIn(lifecycleScope) - } override fun onSupportNavigateUp(): Boolean { val navController = findNavController(R.id.nav_host_fragment) diff --git a/app/src/main/java/com/example/bondoman/ScanFragment.kt b/app/src/main/java/com/example/bondoman/ScanFragment.kt index 3b30d62792bfa71fe7997d3ae104918ed46f7ce0..cca6b5e589e08f7dde91ac09a26923b70b1b3981 100644 --- a/app/src/main/java/com/example/bondoman/ScanFragment.kt +++ b/app/src/main/java/com/example/bondoman/ScanFragment.kt @@ -30,6 +30,7 @@ import android.view.Surface import android.view.TextureView import android.view.View import android.view.ViewGroup +import android.widget.FrameLayout import android.widget.ImageButton import android.widget.ImageView import android.widget.LinearLayout @@ -40,11 +41,16 @@ import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController +import com.example.bondoman.services.ConnectivityObserver +import com.example.bondoman.services.NetworkSensing import com.example.bondoman.utils.RetrofitInstance import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import okhttp3.MediaType import okhttp3.MultipartBody @@ -76,6 +82,7 @@ class ScanFragment : Fragment() { private var job: Job? = null private var cameraDevice: CameraDevice? = null + private lateinit var networkSensing: NetworkSensing override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -104,6 +111,38 @@ class ScanFragment : Fragment() { graphButton.isSelected = false settingButton.isSelected = false + val frameLayoutScan = view.findViewById<FrameLayout>(R.id.FrameLayout) + val imageConn = view.findViewById<ImageView>(R.id.image_conn) + val textConn = view.findViewById<TextView>(R.id.title_conn) + val descConn = view.findViewById<TextView>(R.id.message_conn) + val scanFragment = view.findViewById<RelativeLayout>(R.id.scan_fragment) + + networkSensing = NetworkSensing(requireContext()) + networkSensing.observe() + .onEach { state -> + when (state) { + ConnectivityObserver.NetworkState.CONNECTED -> { + imageConn.visibility = View.GONE + textConn.visibility = View.GONE + descConn.visibility = View.GONE + frameLayoutScan.visibility = View.VISIBLE + galleryButton.visibility = View.VISIBLE + captureButton.visibility = View.VISIBLE + scanFragment.setBackgroundColor(Color.parseColor("#1B1A55")) + } + ConnectivityObserver.NetworkState.DISCONNECTED -> { + imageConn.visibility = View.VISIBLE + textConn.visibility = View.VISIBLE + descConn.visibility = View.VISIBLE + frameLayoutScan.visibility = View.GONE + galleryButton.visibility = View.GONE + captureButton.visibility = View.GONE + scanFragment.setBackgroundColor(resources.getColor(R.color.white)) + } + } + } + .launchIn(lifecycleScope) + return view } diff --git a/app/src/main/java/com/example/bondoman/services/RandomizeTransaction.kt b/app/src/main/java/com/example/bondoman/services/RandomizeTransaction.kt index 33326fac8b2fa315b70fb46be966b5dd2efd3afa..aebe2d6766ea1359109b63fc1a324e8276ee2fc5 100644 --- a/app/src/main/java/com/example/bondoman/services/RandomizeTransaction.kt +++ b/app/src/main/java/com/example/bondoman/services/RandomizeTransaction.kt @@ -3,13 +3,7 @@ import android.content.BroadcastReceiver import android.content.Context import android.content.Intent - import android.os.Handler - import android.os.Looper import android.util.Log - import android.widget.EditText - import androidx.appcompat.app.AppCompatActivity - import com.example.bondoman.LogoutFragment - import com.example.bondoman.R import org.greenrobot.eventbus.EventBus class RandomizeTransaction : BroadcastReceiver() { diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 728d070e4b98f421fc5dc2e7d4d842b64b07b4e8..fe450f733aef6427bfe67e1b92abf1f9439a7ff3 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -19,6 +19,7 @@ <RelativeLayout + android:id="@+id/conn_lost" android:layout_width="match_parent" android:layout_height="0dp" android:gravity="center" @@ -26,8 +27,7 @@ app:layout_constraintTop_toBottomOf="@id/login_page" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:visibility="invisible"> + app:layout_constraintBottom_toBottomOf="parent"> <ImageView diff --git a/app/src/main/res/layout/fragment_scan.xml b/app/src/main/res/layout/fragment_scan.xml index 90ccbe6eefecbcc8c160d85013b5bff03a425823..753bb2876340608faf1c95f8ed40d6bf9e20e726 100644 --- a/app/src/main/res/layout/fragment_scan.xml +++ b/app/src/main/res/layout/fragment_scan.xml @@ -1,10 +1,37 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/scan_fragment" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:background="#1B1A55"> + <ImageView + android:id="@+id/image_conn" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:src="@drawable/rainbow_off" /> + + <TextView + android:id="@+id/title_conn" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/image_conn" + android:layout_centerHorizontal="true" + android:layout_marginTop="10dp" + android:text="Connection Lost" + android:textAppearance="?attr/textAppearanceHeadline6" /> + + <TextView + android:id="@+id/message_conn" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@id/title_conn" + android:layout_centerHorizontal="true" + android:layout_marginTop="8dp" + android:text="Please check your internet connection and try again." + android:textAppearance="?attr/textAppearanceBody2" /> <FrameLayout android:id="@+id/FrameLayout" @@ -36,7 +63,6 @@ android:background="@drawable/effect_rounded_edge"/> </FrameLayout> - <ImageButton android:layout_width="80dp" android:layout_height="80dp" @@ -85,6 +111,9 @@ android:layout_marginEnd="100dp" android:visibility="invisible"/> - - -</RelativeLayout> \ No newline at end of file +</RelativeLayout> +<!--android:id="@+id/scan_conn_lost"--> +<!--android:layout_width="match_parent"--> +<!--android:layout_height="match_parent"--> +<!--android:gravity="center"--> +<!--android:padding="16dp">--> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_scanner.xml b/app/src/main/res/layout/fragment_scanner.xml deleted file mode 100644 index f9f6f43af94a315b6bbd229046e3ef86f98ac26d..0000000000000000000000000000000000000000 --- a/app/src/main/res/layout/fragment_scanner.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent"> - - <SurfaceView - android:id="@+id/surface_view" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingStart="20dp" - android:paddingTop="20dp" - android:paddingEnd="20dp" - android:paddingBottom="20dp" /> - -</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/popup_connection_lost.xml b/app/src/main/res/layout/popup_connection_lost.xml index a9bccb36dc97da40993b83eb09046ed3075739b3..1ac9708d84e79d5184b19cf27c70cdc5781a264b 100644 --- a/app/src/main/res/layout/popup_connection_lost.xml +++ b/app/src/main/res/layout/popup_connection_lost.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/scan_conn_lost" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"