1 package jp.sourceforge.gokigen.memoma
3 import android.Manifest
4 import android.app.Dialog
5 import android.content.Intent
6 import android.content.pm.PackageManager
7 import android.os.Bundle
8 import android.util.Log
9 import android.view.Menu
10 import android.view.MenuItem
11 import android.view.Window
12 import android.widget.Toast
13 import androidx.appcompat.app.AppCompatActivity
14 import androidx.core.app.ActivityCompat
15 import androidx.core.content.ContextCompat
16 import jp.sourceforge.gokigen.memoma.io.MeMoMaDataInOutManager
21 class Main : AppCompatActivity()
23 private lateinit var listener: MeMoMaListener // イベント処理クラス
25 public override fun onCreate(savedInstanceState: Bundle?)
27 super.onCreate(savedInstanceState)
30 listener = MeMoMaListener(this, MeMoMaDataInOutManager(this))
32 // タイトルにプログレスバーを出せるようにする
33 supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
36 supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY)
39 setContentView(R.layout.main)
44 listener.prepareListener()
53 if (!allPermissionsGranted())
55 ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS)
63 Log.v(TAG, " START MEMOMA...");
69 override fun onCreateOptionsMenu(menu: Menu): Boolean
73 val menu0 = listener.onCreateOptionsMenu(menu)
74 return (super.onCreateOptionsMenu(menu0))
86 override fun onOptionsItemSelected(item: MenuItem): Boolean
90 return listener.onOptionsItemSelected(item)
102 override fun onPrepareOptionsMenu(menu: Menu): Boolean
106 listener.onPrepareOptionsMenu(menu)
107 return (super.onPrepareOptionsMenu(menu))
115 private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all {
116 ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED
121 public override fun onPause()
126 // 動作を止めるようイベント処理クラスに指示する
129 catch (ex: Exception)
138 public override fun onResume()
143 // 動作準備するようイベント処理クラスに指示する
144 listener.prepareToStart()
145 listener.updateContentList()
147 catch (ex: Exception)
156 override fun onDestroy()
160 listener.finishListener()
172 override fun onSaveInstanceState(outState: Bundle)
176 super.onSaveInstanceState(outState)
177 if (::listener.isInitialized)
179 // ここでActivityの情報を覚える
180 listener.onSaveInstanceState(outState)
192 override fun onRestoreInstanceState(savedInstanceState: Bundle)
194 super.onRestoreInstanceState(savedInstanceState)
197 if (::listener.isInitialized)
199 // ここでActivityの情報を展開する
200 listener.onRestoreInstanceState(savedInstanceState)
213 override fun onCreateDialog(id: Int): Dialog?
215 return listener.onCreateDialog(id)
222 override fun onPrepareDialog(id: Int, dialog: Dialog)
226 listener.onPrepareDialog(id, dialog)
237 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
239 super.onActivityResult(requestCode, resultCode, data)
242 // 子画面からもらった情報の応答処理をイベント処理クラスに依頼する
243 listener.onActivityResult(requestCode, resultCode, data)
245 catch (ex: Exception)
251 override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray)
253 super.onRequestPermissionsResult(requestCode, permissions, grantResults)
254 if (requestCode == REQUEST_CODE_PERMISSIONS)
256 if (!allPermissionsGranted())
258 Toast.makeText(this, getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show()
264 const val APP_NAMESPACE = "gokigen"
265 private val TAG = Main::class.java.simpleName
266 private const val REQUEST_CODE_PERMISSIONS = 10
267 private val REQUIRED_PERMISSIONS = arrayOf(
268 Manifest.permission.READ_EXTERNAL_STORAGE,
269 Manifest.permission.WRITE_EXTERNAL_STORAGE,