From 9a8182b00e170377d5642959dc3b9105d2dab504 Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 23 May 2019 18:13:55 +0200 Subject: [PATCH] Import UI update --- .../android/ui/activity/ImportActivity.kt | 44 ++++++++++++----- .../components/PokerAnalyticsActivity.kt | 1 + .../android/ui/fragment/ImportFragment.kt | 48 +++++++++++++++++++ 3 files changed, 81 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt index f01fbd7a..fc86d727 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/ImportActivity.kt @@ -1,7 +1,9 @@ package net.pokeranalytics.android.ui.activity import android.Manifest +import android.content.Context import android.content.Intent +import android.content.pm.PackageManager import android.os.Bundle import android.os.PersistableBundle import androidx.core.app.ActivityCompat @@ -9,11 +11,31 @@ import io.realm.Realm import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.fragment.ImportFragment -import net.pokeranalytics.android.util.csv.CSVImporter import timber.log.Timber class ImportActivity : PokerAnalyticsActivity() { + enum class IntentKey(val keyName: String) { + FILE_PATH("filepath") + } + + companion object { + + /** + * Create a new instance for result + */ + fun newInstance(context: Context, filePath: String) { + context.startActivity(getIntent(context, filePath)) + } + + private fun getIntent(context: Context, filePath: String) : Intent { + val intent = Intent(context, ImportActivity::class.java) + intent.putExtra(ImportActivity.IntentKey.FILE_PATH.keyName, filePath) + return intent + } + } + + override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { super.onCreate(savedInstanceState, persistentState) @@ -37,20 +59,19 @@ class ImportActivity : PokerAnalyticsActivity() { val fragmentTransaction = supportFragmentManager.beginTransaction() val fragment = ImportFragment() + val filePath = intent.getStringExtra(ImportActivity.IntentKey.FILE_PATH.keyName) + fragment.setData(filePath) + fragmentTransaction.add(R.id.container, fragment) fragmentTransaction.commit() } - private fun csv() { - - val path = "sdcard/Download/RunGoodSessions1.csv" - val csv = CSVImporter(path) - csv.start() - - ActivityCompat.requestPermissions( - this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), PERMISSION_REQUEST_ACCESS_FINE_LOCATION - ) - + private fun requestPermission() { + if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) { + ActivityCompat.requestPermissions( + this, arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), PERMISSION_REQUEST_ACCESS_FINE_LOCATION + ) + } } override fun onNewIntent(intent: Intent?) { @@ -64,7 +85,6 @@ class ImportActivity : PokerAnalyticsActivity() { override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) - } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt index 151cfdd6..77b324f0 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/PokerAnalyticsActivity.kt @@ -20,6 +20,7 @@ open class PokerAnalyticsActivity : AppCompatActivity() { companion object { const val PERMISSION_REQUEST_ACCESS_FINE_LOCATION = 1000 + const val PERMISSION_REQUEST_READ_EXTERNAL_STORAGE = 1001 const val PLAY_SERVICES_RESOLUTION_REQUEST = 2000 } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt index f1bc88b4..fc084b97 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt @@ -1,11 +1,59 @@ package net.pokeranalytics.android.ui.fragment +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.async +import kotlinx.coroutines.launch +import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.fragment.components.RealmFragment +import net.pokeranalytics.android.util.csv.CSVImporter +import timber.log.Timber +import java.util.* +import kotlin.coroutines.CoroutineContext class ImportFragment : RealmFragment() { + val coroutineContext: CoroutineContext + get() = Dispatchers.Main + private lateinit var filePath: String + fun setData(path: String) { + this.filePath = path + } + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + super.onCreateView(inflater, container, savedInstanceState) + return inflater.inflate(R.layout.fragment_import, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + this.startImport() + } + + fun startImport() { + + GlobalScope.launch(coroutineContext) { + + val test = GlobalScope.async { + val s = Date() + Timber.d(">>> start...") + + val csv = CSVImporter(filePath) + csv.start() + + val e = Date() + val duration = (e.time - s.time) / 1000.0 + Timber.d(">>> Import ended in $duration seconds") + + } + test.await() + } + } } \ No newline at end of file