diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt b/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt index 1c360ef..48111e0 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/activity/MainActivity.kt @@ -1,9 +1,12 @@ package jackall.overlaymulticounter.activity import android.arch.lifecycle.ViewModelProviders +import android.content.Intent import android.databinding.DataBindingUtil import android.graphics.Typeface +import android.net.Uri import android.os.Bundle +import android.provider.Settings import android.support.v7.app.AppCompatActivity import com.getkeepsafe.taptargetview.TapTarget import com.getkeepsafe.taptargetview.TapTargetView @@ -12,8 +15,10 @@ import jackall.overlaymulticounter.R import jackall.overlaymulticounter.common.PreferenceKeys import jackall.overlaymulticounter.common.PreferenceNames +import jackall.overlaymulticounter.contract.MainContract import jackall.overlaymulticounter.databinding.ActivityMainBinding import jackall.overlaymulticounter.db.CounterRealmHelper +import jackall.overlaymulticounter.service.MainService import jackall.overlaymulticounter.utils.AdUtil import jackall.overlaymulticounter.utils.MySharedPref import jackall.overlaymulticounter.viewmodel.MainViewModel @@ -21,7 +26,7 @@ import kotlinx.android.synthetic.main.activity_main.view.* -class MainActivity : AppCompatActivity() { +class MainActivity : AppCompatActivity(), MainContract { lateinit var binding: ActivityMainBinding lateinit var mainViewModel: MainViewModel @@ -30,7 +35,7 @@ super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) - mainViewModel = ViewModelProviders.of(this, MainViewModel.Factory()).get(MainViewModel::class.java) + mainViewModel = ViewModelProviders.of(this, MainViewModel.Factory(this as MainContract)).get(MainViewModel::class.java) binding.mainViewModel = mainViewModel lifecycle.addObserver(mainViewModel) @@ -75,4 +80,17 @@ }) } } + + override fun startService() { + startService(Intent(this, MainService::class.java)) + } + + override fun stopService() { + stopService(Intent(this, MainService::class.java)) + } + + override fun openSetting() { + val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:jackall.overlaymulticounter")) + startActivityForResult(intent, 0) + } } diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/contract/MainContract.kt b/app/src/main/kotlin/jackall/overlaymulticounter/contract/MainContract.kt new file mode 100644 index 0000000..ba3d588 --- /dev/null +++ b/app/src/main/kotlin/jackall/overlaymulticounter/contract/MainContract.kt @@ -0,0 +1,10 @@ +package jackall.overlaymulticounter.contract + +/** + * Created by matsumoto_k on 2017/11/10. + */ +interface MainContract { + fun openSetting() + fun startService() + fun stopService() +} \ No newline at end of file diff --git a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt index 6955adc..436f8b1 100644 --- a/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt +++ b/app/src/main/kotlin/jackall/overlaymulticounter/viewmodel/MainViewModel.kt @@ -20,6 +20,7 @@ import jackall.overlaymulticounter.R import jackall.overlaymulticounter.adapter.CounterAdapter import jackall.overlaymulticounter.contract.CounterContract +import jackall.overlaymulticounter.contract.MainContract import jackall.overlaymulticounter.db.CounterRealmHelper import jackall.overlaymulticounter.service.MainService import jackall.overlaymulticounter.utils.AdUtil @@ -31,7 +32,7 @@ /** * Created by matsumoto_k on 2017/11/10. */ -class MainViewModel : LifecycleViewModel(), LifecycleObserver, CounterContract { +class MainViewModel(val contract: MainContract) : LifecycleViewModel(), LifecycleObserver, CounterContract { var counterAdapter: CounterAdapter var counterRealmHelper = CounterRealmHelper() var realmChangeListener: OrderedRealmCollectionChangeListener> @@ -59,19 +60,15 @@ if (RuntimePermissionUtil.checkOverlayPermission(view.context)) { AdUtil.startInterstitialAd(view.context) if (ServiceUtil.isMainServiceRunning(view.context)) { - val intent = Intent(view.context, MainService::class.java) - view.context.stopService(intent) + contract.stopService() } else { - val intent = Intent(view.context, MainService::class.java) - view.context.startService(intent) - (view.context as Activity).finish() + contract.startService() } } else { AlertDialog.Builder(view.context) .setMessage(view.context.getString(R.string.permit_overlay)) .setPositiveButton(view.context.getString(R.string.setting), DialogInterface.OnClickListener { dialog, which -> - val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:jackall.overlaymulticounter")) - (view.context as Activity).startActivityForResult(intent, 0) + contract.openSetting() }) .setNegativeButton(view.context.getString(R.string.cancel), null) .show() @@ -121,9 +118,9 @@ counterRealmHelper.close() } - class Factory() : ViewModelProvider.NewInstanceFactory() { + class Factory(val contract: MainContract) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T { - return MainViewModel() as T + return MainViewModel(contract) as T } }