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()
146 catch (ex: Exception)
155 override fun onDestroy()
159 listener.finishListener()
171 override fun onSaveInstanceState(outState: Bundle)
175 super.onSaveInstanceState(outState)
176 if (::listener.isInitialized)
178 // ここでActivityの情報を覚える
179 listener.onSaveInstanceState(outState)
191 override fun onRestoreInstanceState(savedInstanceState: Bundle)
193 super.onRestoreInstanceState(savedInstanceState)
196 if (::listener.isInitialized)
198 // ここでActivityの情報を展開する
199 listener.onRestoreInstanceState(savedInstanceState)
212 override fun onCreateDialog(id: Int): Dialog
214 return listener.onCreateDialog(id)
221 override fun onPrepareDialog(id: Int, dialog: Dialog)
225 listener.onPrepareDialog(id, dialog)
236 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?)
238 super.onActivityResult(requestCode, resultCode, data)
241 // 子画面からもらった情報の応答処理をイベント処理クラスに依頼する
242 listener.onActivityResult(requestCode, resultCode, data)
244 catch (ex: Exception)
250 override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray)
252 super.onRequestPermissionsResult(requestCode, permissions, grantResults)
253 if (requestCode == REQUEST_CODE_PERMISSIONS)
255 if (!allPermissionsGranted())
257 Toast.makeText(this, getString(R.string.permission_not_granted), Toast.LENGTH_SHORT).show()
263 const val APP_NAMESPACE = "gokigen"
264 private val TAG = Main::class.java.simpleName
265 private const val REQUEST_CODE_PERMISSIONS = 10
266 private val REQUIRED_PERMISSIONS = arrayOf(
267 Manifest.permission.READ_EXTERNAL_STORAGE,