package jackall.moncalc.viewmodel
import android.app.Activity
import android.app.AlertDialog
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.content.DialogInterface
import android.content.Intent
import android.databinding.ObservableField
import android.net.Uri
import android.provider.Settings
import android.view.View
import jackall.moncalc.R
import jackall.moncalc.service.MainService
import jackall.moncalc.utils.RuntimePermissionUtil
import jackall.moncalc.utils.ServiceUtil.Companion.isMainServiceRunning
/**
* MainActivityのViewModel.
*
* Created by matsumoto_k on 2017/11/01.
*/
class MainViewModel(val activity: Activity) : LifecycleViewModel() {
val serviceButtonText = ObservableField<String>("")
val serviceIntent by lazy {
val intent = Intent(activity, MainService::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
intent
}
init {
if (isMainServiceRunning(activity)) {
serviceButtonText.set(activity.resources.getString(R.string.stop_service))
} else {
serviceButtonText.set(activity.resources.getString(R.string.start_service))
}
}
class Factory(val context: Activity) : ViewModelProvider.NewInstanceFactory() {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return MainViewModel(context) as T
}
}
fun onClickServiceButton(view: View) {
if (RuntimePermissionUtil.checkOverlayPermission(activity)) {
if (!isMainServiceRunning(activity)) {
activity.startService(serviceIntent)
serviceButtonText.set(activity.resources.getString(R.string.stop_service))
} else {
activity.stopService(serviceIntent)
serviceButtonText.set(activity.resources.getString(R.string.start_service))
}
} else {
AlertDialog.Builder(activity)
.setMessage("常駐機能を使用するには権限の許可が必要です。")
.setPositiveButton("設定", DialogInterface.OnClickListener { dialog, which ->
val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:jackall.moncalc"))
activity.startActivityForResult(intent, 2)
})
.setNegativeButton("許可しない", null)
.show()
}
}
}