mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Remove BaseActivity and BaseScreen
This commit is contained in:
@@ -16,7 +16,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License along
|
* You should have received a copy of the GNU General Public License along
|
||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package org.isoron.androidbase.activities
|
package org.isoron.androidbase
|
||||||
|
|
||||||
import javax.inject.*
|
import javax.inject.*
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com>
|
* Copyright (C) 2016-2020 Álinson Santos Xavier <isoron@gmail.com>
|
||||||
*
|
*
|
||||||
* This file is part of Loop Habit Tracker.
|
* This file is part of Loop Habit Tracker.
|
||||||
*
|
*
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.isoron.androidbase.activities;
|
package org.isoron.androidbase;
|
||||||
|
|
||||||
import android.content.*;
|
import android.content.*;
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@
|
|||||||
* You should have received a copy of the GNU General Public License along
|
* You should have received a copy of the GNU General Public License along
|
||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
package org.isoron.androidbase.activities
|
package org.isoron.androidbase
|
||||||
|
|
||||||
import javax.inject.*
|
import javax.inject.*
|
||||||
|
|
||||||
@@ -18,9 +18,9 @@
|
|||||||
*/
|
*/
|
||||||
package org.isoron.androidbase
|
package org.isoron.androidbase
|
||||||
|
|
||||||
import org.isoron.androidbase.activities.BaseActivity
|
import android.app.*
|
||||||
|
|
||||||
class BaseExceptionHandler(private val activity: BaseActivity) : Thread.UncaughtExceptionHandler {
|
class BaseExceptionHandler(private val activity: Activity) : Thread.UncaughtExceptionHandler {
|
||||||
|
|
||||||
private val originalHandler: Thread.UncaughtExceptionHandler? =
|
private val originalHandler: Thread.UncaughtExceptionHandler? =
|
||||||
Thread.getDefaultUncaughtExceptionHandler()
|
Thread.getDefaultUncaughtExceptionHandler()
|
||||||
|
|||||||
@@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com>
|
|
||||||
*
|
|
||||||
* This file is part of Loop Habit Tracker.
|
|
||||||
*
|
|
||||||
* Loop Habit Tracker is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation, either version 3 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* Loop Habit Tracker is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
||||||
* more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package org.isoron.androidbase.activities
|
|
||||||
|
|
||||||
import android.R.anim
|
|
||||||
import android.content.*
|
|
||||||
import android.os.*
|
|
||||||
import android.view.*
|
|
||||||
import androidx.appcompat.app.*
|
|
||||||
import org.isoron.androidbase.*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base class for all activities in the application.
|
|
||||||
*
|
|
||||||
* This class delegates the responsibilities of an Android activity to other classes. For example,
|
|
||||||
* callbacks related to menus are forwarded to a []BaseMenu], while callbacks related to activity
|
|
||||||
* results are forwarded to a [BaseScreen].
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* A BaseActivity also installs an [java.lang.Thread.UncaughtExceptionHandler] to the main thread.
|
|
||||||
* By default, this handler is an instance of BaseExceptionHandler, which logs the exception to the
|
|
||||||
* disk before the application crashes. To the default handler, you should override the method
|
|
||||||
* getExceptionHandler.
|
|
||||||
*/
|
|
||||||
abstract class BaseActivity : AppCompatActivity() {
|
|
||||||
private var screen: BaseScreen? = null
|
|
||||||
|
|
||||||
fun restartWithFade(cls: Class<*>?) {
|
|
||||||
Handler().postDelayed({
|
|
||||||
finish()
|
|
||||||
overridePendingTransition(anim.fade_in, anim.fade_out)
|
|
||||||
startActivity(Intent(this, cls))
|
|
||||||
}, 500) // HACK: Let the menu disappear first
|
|
||||||
}
|
|
||||||
|
|
||||||
fun setScreen(screen: BaseScreen?) {
|
|
||||||
this.screen = screen
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showDialog(dialog: AppCompatDialogFragment, tag: String?) {
|
|
||||||
dialog.show(supportFragmentManager, tag)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showDialog(dialog: AppCompatDialog) {
|
|
||||||
dialog.show()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onActivityResult(request: Int, result: Int, data: Intent?) {
|
|
||||||
val screen = screen
|
|
||||||
if(screen == null) super.onActivityResult(request, result, data)
|
|
||||||
else screen.onResult(request, result, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
Thread.setDefaultUncaughtExceptionHandler(getExceptionHandler())
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getExceptionHandler() = BaseExceptionHandler(this)
|
|
||||||
|
|
||||||
override fun onResume() {
|
|
||||||
super.onResume()
|
|
||||||
screen?.reattachDialogs()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com>
|
|
||||||
*
|
|
||||||
* This file is part of Loop Habit Tracker.
|
|
||||||
*
|
|
||||||
* Loop Habit Tracker is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation, either version 3 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* Loop Habit Tracker is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
||||||
* more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.isoron.androidbase.activities;
|
|
||||||
|
|
||||||
import dagger.*;
|
|
||||||
|
|
||||||
@Module
|
|
||||||
public class BaseActivityModule
|
|
||||||
{
|
|
||||||
private BaseActivity activity;
|
|
||||||
|
|
||||||
public BaseActivityModule(BaseActivity activity)
|
|
||||||
{
|
|
||||||
this.activity = activity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Provides
|
|
||||||
public BaseActivity getBaseActivity()
|
|
||||||
{
|
|
||||||
return activity;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (C) 2016 Álinson Santos Xavier <isoron@gmail.com>
|
|
||||||
*
|
|
||||||
* This file is part of Loop Habit Tracker.
|
|
||||||
*
|
|
||||||
* Loop Habit Tracker is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by the
|
|
||||||
* Free Software Foundation, either version 3 of the License, or (at your
|
|
||||||
* option) any later version.
|
|
||||||
*
|
|
||||||
* Loop Habit Tracker is distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
|
||||||
* more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along
|
|
||||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
package org.isoron.androidbase.activities
|
|
||||||
|
|
||||||
import android.content.*
|
|
||||||
import android.graphics.*
|
|
||||||
import android.graphics.drawable.*
|
|
||||||
import android.view.*
|
|
||||||
import android.widget.*
|
|
||||||
import androidx.annotation.*
|
|
||||||
import androidx.appcompat.app.*
|
|
||||||
import androidx.appcompat.view.ActionMode
|
|
||||||
import androidx.appcompat.widget.Toolbar
|
|
||||||
import androidx.core.content.*
|
|
||||||
import com.google.android.material.snackbar.*
|
|
||||||
import org.isoron.androidbase.*
|
|
||||||
import org.isoron.androidbase.utils.*
|
|
||||||
import org.isoron.androidbase.utils.ColorUtils.mixColors
|
|
||||||
import org.isoron.androidbase.utils.InterfaceUtils.dpToPixels
|
|
||||||
import java.io.*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Base class for all screens in the application.
|
|
||||||
*
|
|
||||||
* Screens are responsible for deciding what root views and what menus should be attached to the
|
|
||||||
* main window. They are also responsible for showing other screens and for receiving their results.
|
|
||||||
*/
|
|
||||||
open class BaseScreen(@JvmField protected var activity: BaseActivity) {
|
|
||||||
|
|
||||||
private var snackbar: Snackbar? = null
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when another Activity has finished, and has returned some result.
|
|
||||||
*
|
|
||||||
* @param requestCode the request code originally supplied to startActivityForResult.
|
|
||||||
* @param resultCode the result code sent by the other activity.
|
|
||||||
* @param data an Intent containing extra data sent by the other
|
|
||||||
* activity.
|
|
||||||
* @see {@link android.app.Activity.onActivityResult
|
|
||||||
*/
|
|
||||||
open fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called after activity has been recreated, and the dialogs should be
|
|
||||||
* reattached to their controllers.
|
|
||||||
*/
|
|
||||||
open fun reattachDialogs() {}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shows a message on the screen.
|
|
||||||
*
|
|
||||||
* @param stringId the string resource id for this message.
|
|
||||||
*/
|
|
||||||
fun showMessage(@StringRes stringId: Int?, rootView: View?) {
|
|
||||||
var snackbar = this.snackbar
|
|
||||||
if (stringId == null || rootView == null) return
|
|
||||||
if (snackbar == null) {
|
|
||||||
snackbar = Snackbar.make(rootView, stringId, Snackbar.LENGTH_SHORT)
|
|
||||||
val tvId = R.id.snackbar_text
|
|
||||||
val tv = snackbar.view.findViewById<TextView>(tvId)
|
|
||||||
tv.setTextColor(Color.WHITE)
|
|
||||||
this.snackbar = snackbar
|
|
||||||
}
|
|
||||||
snackbar.setText(stringId)
|
|
||||||
snackbar.show()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showSendEmailScreen(@StringRes toId: Int, @StringRes subjectId: Int, content: String?) {
|
|
||||||
val to = activity.getString(toId)
|
|
||||||
val subject = activity.getString(subjectId)
|
|
||||||
activity.startActivity(Intent().apply {
|
|
||||||
action = Intent.ACTION_SEND
|
|
||||||
type = "message/rfc822"
|
|
||||||
putExtra(Intent.EXTRA_EMAIL, arrayOf(to))
|
|
||||||
putExtra(Intent.EXTRA_SUBJECT, subject)
|
|
||||||
putExtra(Intent.EXTRA_TEXT, content)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
fun showSendFileScreen(archiveFilename: String) {
|
|
||||||
val file = File(archiveFilename)
|
|
||||||
val fileUri = FileProvider.getUriForFile(activity, "org.isoron.uhabits", file)
|
|
||||||
activity.startActivity(Intent().apply {
|
|
||||||
action = Intent.ACTION_SEND
|
|
||||||
type = "application/zip"
|
|
||||||
putExtra(Intent.EXTRA_STREAM, fileUri)
|
|
||||||
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -33,9 +33,7 @@ import androidx.test.uiautomator.*;
|
|||||||
import junit.framework.*;
|
import junit.framework.*;
|
||||||
|
|
||||||
import org.isoron.androidbase.*;
|
import org.isoron.androidbase.*;
|
||||||
import org.isoron.androidbase.activities.*;
|
|
||||||
import org.isoron.androidbase.utils.*;
|
import org.isoron.androidbase.utils.*;
|
||||||
import org.isoron.uhabits.core.database.*;
|
|
||||||
import org.isoron.uhabits.core.models.*;
|
import org.isoron.uhabits.core.models.*;
|
||||||
import org.isoron.uhabits.core.preferences.*;
|
import org.isoron.uhabits.core.preferences.*;
|
||||||
import org.isoron.uhabits.core.tasks.*;
|
import org.isoron.uhabits.core.tasks.*;
|
||||||
|
|||||||
@@ -20,11 +20,10 @@
|
|||||||
package org.isoron.uhabits
|
package org.isoron.uhabits
|
||||||
|
|
||||||
import dagger.*
|
import dagger.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.activities.*
|
import org.isoron.uhabits.activities.*
|
||||||
import org.isoron.uhabits.activities.habits.list.*
|
import org.isoron.uhabits.activities.habits.list.*
|
||||||
import org.isoron.uhabits.activities.habits.list.views.*
|
import org.isoron.uhabits.activities.habits.list.views.*
|
||||||
import org.isoron.uhabits.activities.habits.show.*
|
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
||||||
import org.mockito.Mockito.*
|
import org.mockito.Mockito.*
|
||||||
|
|
||||||
|
|||||||
@@ -20,25 +20,25 @@
|
|||||||
package org.isoron.uhabits.activities
|
package org.isoron.uhabits.activities
|
||||||
|
|
||||||
import android.app.*
|
import android.app.*
|
||||||
|
import android.content.*
|
||||||
import android.content.res.Configuration.*
|
import android.content.res.Configuration.*
|
||||||
import android.os.Build.VERSION.*
|
import android.os.Build.VERSION.*
|
||||||
import androidx.core.content.*
|
import androidx.core.content.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
import org.isoron.uhabits.core.ui.*
|
import org.isoron.uhabits.core.ui.*
|
||||||
import javax.inject.*
|
|
||||||
|
|
||||||
@ActivityScope
|
@ActivityScope
|
||||||
class AndroidThemeSwitcher
|
class AndroidThemeSwitcher
|
||||||
constructor(
|
constructor(
|
||||||
private val activity: Activity,
|
@ActivityContext val context: Context,
|
||||||
preferences: Preferences
|
preferences: Preferences
|
||||||
) : ThemeSwitcher(preferences) {
|
) : ThemeSwitcher(preferences) {
|
||||||
|
|
||||||
override fun getSystemTheme(): Int {
|
override fun getSystemTheme(): Int {
|
||||||
if(SDK_INT < 29) return THEME_LIGHT;
|
if (SDK_INT < 29) return THEME_LIGHT;
|
||||||
val uiMode = activity.resources.configuration.uiMode
|
val uiMode = context.resources.configuration.uiMode
|
||||||
return if ((uiMode and UI_MODE_NIGHT_MASK) == UI_MODE_NIGHT_YES) {
|
return if ((uiMode and UI_MODE_NIGHT_MASK) == UI_MODE_NIGHT_YES) {
|
||||||
THEME_DARK;
|
THEME_DARK;
|
||||||
} else {
|
} else {
|
||||||
@@ -47,25 +47,18 @@ constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun applyDarkTheme() {
|
override fun applyDarkTheme() {
|
||||||
activity.setTheme(R.style.AppBaseThemeDark)
|
context.setTheme(R.style.AppBaseThemeDark)
|
||||||
activity.window.navigationBarColor =
|
(context as Activity).window.navigationBarColor =
|
||||||
ContextCompat.getColor(activity, R.color.grey_900)
|
ContextCompat.getColor(context, R.color.grey_900)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun applyLightTheme() {
|
override fun applyLightTheme() {
|
||||||
activity.setTheme(R.style.AppBaseTheme)
|
context.setTheme(R.style.AppBaseTheme)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun applyPureBlackTheme() {
|
override fun applyPureBlackTheme() {
|
||||||
activity.setTheme(R.style.AppBaseThemeDark_PureBlack)
|
context.setTheme(R.style.AppBaseThemeDark_PureBlack)
|
||||||
activity.window.navigationBarColor =
|
(context as Activity).window.navigationBarColor =
|
||||||
ContextCompat.getColor(activity, R.color.black)
|
ContextCompat.getColor(context, R.color.black)
|
||||||
}
|
|
||||||
|
|
||||||
fun getDialogTheme(): Int {
|
|
||||||
return when {
|
|
||||||
isNightMode -> R.style.DarkDialogWithTitle
|
|
||||||
else -> R.style.DialogWithTitle
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,11 +21,12 @@ package org.isoron.uhabits.activities
|
|||||||
|
|
||||||
import android.content.*
|
import android.content.*
|
||||||
import android.os.*
|
import android.os.*
|
||||||
import org.isoron.androidbase.activities.*
|
import androidx.appcompat.app.*
|
||||||
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
|
|
||||||
abstract class HabitsActivity : BaseActivity() {
|
abstract class HabitsActivity : AppCompatActivity() {
|
||||||
lateinit var component: HabitsActivityComponent
|
lateinit var component: HabitsActivityComponent
|
||||||
lateinit var appComponent: HabitsApplicationComponent
|
lateinit var appComponent: HabitsApplicationComponent
|
||||||
|
|
||||||
@@ -43,8 +44,6 @@ abstract class HabitsActivity : BaseActivity() {
|
|||||||
component = DaggerHabitsActivityComponent
|
component = DaggerHabitsActivityComponent
|
||||||
.builder()
|
.builder()
|
||||||
.activityContextModule(ActivityContextModule(this))
|
.activityContextModule(ActivityContextModule(this))
|
||||||
.baseActivityModule(BaseActivityModule(this))
|
|
||||||
.habitModule(HabitModule(habit))
|
|
||||||
.habitsApplicationComponent(appComponent)
|
.habitsApplicationComponent(appComponent)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
|||||||
@@ -20,20 +20,17 @@
|
|||||||
package org.isoron.uhabits.activities
|
package org.isoron.uhabits.activities
|
||||||
|
|
||||||
import dagger.*
|
import dagger.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.*
|
||||||
import org.isoron.uhabits.activities.about.*
|
|
||||||
import org.isoron.uhabits.activities.common.dialogs.*
|
import org.isoron.uhabits.activities.common.dialogs.*
|
||||||
import org.isoron.uhabits.activities.habits.list.*
|
import org.isoron.uhabits.activities.habits.list.*
|
||||||
import org.isoron.uhabits.activities.habits.list.views.*
|
import org.isoron.uhabits.activities.habits.list.views.*
|
||||||
import org.isoron.uhabits.activities.habits.show.*
|
|
||||||
import org.isoron.uhabits.core.ui.*
|
import org.isoron.uhabits.core.ui.*
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
||||||
|
|
||||||
@ActivityScope
|
@ActivityScope
|
||||||
@Component(modules = arrayOf(
|
@Component(modules = arrayOf(
|
||||||
ActivityContextModule::class,
|
ActivityContextModule::class,
|
||||||
BaseActivityModule::class,
|
|
||||||
HabitsActivityModule::class,
|
HabitsActivityModule::class,
|
||||||
ListHabitsModule::class,
|
ListHabitsModule::class,
|
||||||
HabitModule::class
|
HabitModule::class
|
||||||
|
|||||||
@@ -19,8 +19,9 @@
|
|||||||
|
|
||||||
package org.isoron.uhabits.activities
|
package org.isoron.uhabits.activities
|
||||||
|
|
||||||
|
import android.content.*
|
||||||
import dagger.*
|
import dagger.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
import org.isoron.uhabits.core.ui.*
|
import org.isoron.uhabits.core.ui.*
|
||||||
|
|
||||||
@@ -29,9 +30,10 @@ class HabitsActivityModule {
|
|||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@ActivityScope
|
@ActivityScope
|
||||||
fun getThemeSwitcher(activity: BaseActivity,
|
fun getThemeSwitcher(
|
||||||
prefs: Preferences
|
@ActivityContext context: Context,
|
||||||
): ThemeSwitcher {
|
prefs: Preferences
|
||||||
return AndroidThemeSwitcher(activity, prefs)
|
): ThemeSwitcher {
|
||||||
|
return AndroidThemeSwitcher(context, prefs)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ package org.isoron.uhabits.activities.common.dialogs;
|
|||||||
|
|
||||||
import android.content.*;
|
import android.content.*;
|
||||||
|
|
||||||
import org.isoron.androidbase.activities.*;
|
import org.isoron.androidbase.*;
|
||||||
import org.isoron.androidbase.utils.*;
|
import org.isoron.androidbase.utils.*;
|
||||||
import org.isoron.uhabits.R;
|
import org.isoron.uhabits.R;
|
||||||
import org.isoron.uhabits.core.models.*;
|
import org.isoron.uhabits.core.models.*;
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ import androidx.appcompat.app.*;
|
|||||||
|
|
||||||
import com.google.auto.factory.*;
|
import com.google.auto.factory.*;
|
||||||
|
|
||||||
import org.isoron.androidbase.activities.*;
|
import org.isoron.androidbase.*;
|
||||||
import org.isoron.uhabits.*;
|
|
||||||
import org.isoron.uhabits.core.ui.callbacks.*;
|
import org.isoron.uhabits.core.ui.callbacks.*;
|
||||||
|
import org.isoron.uhabits.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dialog that asks the user confirmation before executing a delete operation.
|
* Dialog that asks the user confirmation before executing a delete operation.
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ import androidx.appcompat.app.*;
|
|||||||
|
|
||||||
import com.google.auto.factory.*;
|
import com.google.auto.factory.*;
|
||||||
|
|
||||||
import org.isoron.androidbase.activities.*;
|
import org.isoron.androidbase.*;
|
||||||
import org.isoron.uhabits.*;
|
|
||||||
import org.isoron.uhabits.core.ui.callbacks.*;
|
import org.isoron.uhabits.core.ui.callbacks.*;
|
||||||
|
import org.isoron.uhabits.R;
|
||||||
|
|
||||||
@AutoFactory(allowSubclasses = true)
|
@AutoFactory(allowSubclasses = true)
|
||||||
public class ConfirmSyncKeyDialog extends AlertDialog
|
public class ConfirmSyncKeyDialog extends AlertDialog
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ import android.view.*
|
|||||||
import android.view.WindowManager.LayoutParams.*
|
import android.view.WindowManager.LayoutParams.*
|
||||||
import android.view.inputmethod.*
|
import android.view.inputmethod.*
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.androidbase.utils.*
|
import org.isoron.androidbase.utils.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
||||||
import javax.inject.*
|
import javax.inject.*
|
||||||
|
|
||||||
|
|||||||
@@ -19,10 +19,11 @@
|
|||||||
|
|
||||||
package org.isoron.uhabits.activities.habits.list
|
package org.isoron.uhabits.activities.habits.list
|
||||||
|
|
||||||
|
import android.content.*
|
||||||
import android.os.*
|
import android.os.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.activities.*
|
import org.isoron.uhabits.activities.*
|
||||||
import org.isoron.uhabits.activities.habits.list.views.*
|
import org.isoron.uhabits.activities.habits.list.views.*
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
@@ -31,6 +32,7 @@ import org.isoron.uhabits.core.tasks.*
|
|||||||
import org.isoron.uhabits.core.ui.ThemeSwitcher.*
|
import org.isoron.uhabits.core.ui.ThemeSwitcher.*
|
||||||
import org.isoron.uhabits.core.utils.*
|
import org.isoron.uhabits.core.utils.*
|
||||||
import org.isoron.uhabits.database.*
|
import org.isoron.uhabits.database.*
|
||||||
|
import org.isoron.uhabits.utils.*
|
||||||
|
|
||||||
class ListHabitsActivity : HabitsActivity() {
|
class ListHabitsActivity : HabitsActivity() {
|
||||||
|
|
||||||
@@ -57,8 +59,7 @@ class ListHabitsActivity : HabitsActivity() {
|
|||||||
adapter = component.habitCardListAdapter
|
adapter = component.habitCardListAdapter
|
||||||
taskRunner = appComponent.taskRunner
|
taskRunner = appComponent.taskRunner
|
||||||
menu = component.listHabitsMenu
|
menu = component.listHabitsMenu
|
||||||
|
Thread.setDefaultUncaughtExceptionHandler(BaseExceptionHandler(this))
|
||||||
setScreen(screen)
|
|
||||||
component.listHabitsBehavior.onStartup()
|
component.listHabitsBehavior.onStartup()
|
||||||
setContentView(rootView)
|
setContentView(rootView)
|
||||||
}
|
}
|
||||||
@@ -98,4 +99,9 @@ class ListHabitsActivity : HabitsActivity() {
|
|||||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||||
return menu.onItemSelected(item)
|
return menu.onItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onActivityResult(request: Int, result: Int, data: Intent?) {
|
||||||
|
super.onActivityResult(request, result, data)
|
||||||
|
screen.onResult(request, result, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,9 +19,11 @@
|
|||||||
|
|
||||||
package org.isoron.uhabits.activities.habits.list
|
package org.isoron.uhabits.activities.habits.list
|
||||||
|
|
||||||
|
import android.content.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import org.isoron.androidbase.activities.*
|
import androidx.appcompat.app.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.androidbase.*
|
||||||
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
import org.isoron.uhabits.core.ui.*
|
import org.isoron.uhabits.core.ui.*
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
||||||
@@ -29,11 +31,12 @@ import javax.inject.*
|
|||||||
|
|
||||||
@ActivityScope
|
@ActivityScope
|
||||||
class ListHabitsMenu @Inject constructor(
|
class ListHabitsMenu @Inject constructor(
|
||||||
private val activity: BaseActivity,
|
@ActivityContext context: Context,
|
||||||
private val preferences: Preferences,
|
private val preferences: Preferences,
|
||||||
private val themeSwitcher: ThemeSwitcher,
|
private val themeSwitcher: ThemeSwitcher,
|
||||||
private val behavior: ListHabitsMenuBehavior
|
private val behavior: ListHabitsMenuBehavior
|
||||||
) {
|
) {
|
||||||
|
val activity = (context as AppCompatActivity)
|
||||||
|
|
||||||
fun onCreate(inflater: MenuInflater, menu: Menu) {
|
fun onCreate(inflater: MenuInflater, menu: Menu) {
|
||||||
menu.clear()
|
menu.clear()
|
||||||
|
|||||||
@@ -20,13 +20,10 @@
|
|||||||
package org.isoron.uhabits.activities.habits.list
|
package org.isoron.uhabits.activities.habits.list
|
||||||
|
|
||||||
import android.content.*
|
import android.content.*
|
||||||
import android.os.Build.VERSION.*
|
|
||||||
import android.os.Build.VERSION_CODES.*
|
|
||||||
import androidx.appcompat.widget.Toolbar
|
|
||||||
import android.view.ViewGroup.LayoutParams.*
|
import android.view.ViewGroup.LayoutParams.*
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.common.views.*
|
import org.isoron.uhabits.activities.common.views.*
|
||||||
import org.isoron.uhabits.activities.habits.list.views.*
|
import org.isoron.uhabits.activities.habits.list.views.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
|
|||||||
@@ -23,10 +23,11 @@ import android.app.*
|
|||||||
import android.content.*
|
import android.content.*
|
||||||
import android.util.*
|
import android.util.*
|
||||||
import androidx.annotation.*
|
import androidx.annotation.*
|
||||||
|
import androidx.appcompat.app.*
|
||||||
import dagger.*
|
import dagger.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.androidbase.utils.*
|
import org.isoron.androidbase.utils.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.common.dialogs.*
|
import org.isoron.uhabits.activities.common.dialogs.*
|
||||||
import org.isoron.uhabits.activities.habits.edit.*
|
import org.isoron.uhabits.activities.habits.edit.*
|
||||||
import org.isoron.uhabits.activities.habits.list.views.*
|
import org.isoron.uhabits.activities.habits.list.views.*
|
||||||
@@ -54,8 +55,7 @@ const val REQUEST_SETTINGS = 107
|
|||||||
@ActivityScope
|
@ActivityScope
|
||||||
class ListHabitsScreen
|
class ListHabitsScreen
|
||||||
@Inject constructor(
|
@Inject constructor(
|
||||||
activity: BaseActivity,
|
@ActivityContext val context: Context,
|
||||||
rootView: ListHabitsRootView,
|
|
||||||
private val commandRunner: CommandRunner,
|
private val commandRunner: CommandRunner,
|
||||||
private val intentFactory: IntentFactory,
|
private val intentFactory: IntentFactory,
|
||||||
private val themeSwitcher: ThemeSwitcher,
|
private val themeSwitcher: ThemeSwitcher,
|
||||||
@@ -68,12 +68,13 @@ class ListHabitsScreen
|
|||||||
private val colorPickerFactory: ColorPickerDialogFactory,
|
private val colorPickerFactory: ColorPickerDialogFactory,
|
||||||
private val numberPickerFactory: NumberPickerFactory,
|
private val numberPickerFactory: NumberPickerFactory,
|
||||||
private val behavior: Lazy<ListHabitsBehavior>
|
private val behavior: Lazy<ListHabitsBehavior>
|
||||||
) : BaseScreen(activity),
|
) : CommandRunner.Listener,
|
||||||
CommandRunner.Listener,
|
|
||||||
ListHabitsBehavior.Screen,
|
ListHabitsBehavior.Screen,
|
||||||
ListHabitsMenuBehavior.Screen,
|
ListHabitsMenuBehavior.Screen,
|
||||||
ListHabitsSelectionMenuBehavior.Screen {
|
ListHabitsSelectionMenuBehavior.Screen {
|
||||||
|
|
||||||
|
val activity = (context as AppCompatActivity)
|
||||||
|
|
||||||
fun onAttached() {
|
fun onAttached() {
|
||||||
commandRunner.addListener(this)
|
commandRunner.addListener(this)
|
||||||
if(activity.intent.action == "android.intent.action.VIEW") {
|
if(activity.intent.action == "android.intent.action.VIEW") {
|
||||||
@@ -98,7 +99,7 @@ class ListHabitsScreen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
when (requestCode) {
|
when (requestCode) {
|
||||||
REQUEST_OPEN_DOCUMENT -> onOpenDocumentResult(resultCode, data)
|
REQUEST_OPEN_DOCUMENT -> onOpenDocumentResult(resultCode, data)
|
||||||
REQUEST_SETTINGS -> onSettingsResult(resultCode)
|
REQUEST_SETTINGS -> onSettingsResult(resultCode)
|
||||||
@@ -142,15 +143,15 @@ class ListHabitsScreen
|
|||||||
|
|
||||||
override fun showSelectHabitTypeDialog() {
|
override fun showSelectHabitTypeDialog() {
|
||||||
val dialog = HabitTypeDialog()
|
val dialog = HabitTypeDialog()
|
||||||
activity.showDialog(dialog, "habitType")
|
dialog.show(activity.supportFragmentManager, "habitType")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun showDeleteConfirmationScreen(callback: OnConfirmedCallback) {
|
override fun showDeleteConfirmationScreen(callback: OnConfirmedCallback) {
|
||||||
activity.showDialog(confirmDeleteDialogFactory.create(callback))
|
confirmDeleteDialogFactory.create(callback).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun showEditHabitsScreen(habits: List<Habit>) {
|
override fun showEditHabitsScreen(habits: List<Habit>) {
|
||||||
val intent = intentFactory.startEditActivity(activity!!, habits[0])
|
val intent = intentFactory.startEditActivity(activity, habits[0])
|
||||||
activity.startActivity(intent)
|
activity.startActivity(intent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,7 +191,11 @@ class ListHabitsScreen
|
|||||||
override fun showSendBugReportToDeveloperScreen(log: String) {
|
override fun showSendBugReportToDeveloperScreen(log: String) {
|
||||||
val to = R.string.bugReportTo
|
val to = R.string.bugReportTo
|
||||||
val subject = R.string.bugReportSubject
|
val subject = R.string.bugReportSubject
|
||||||
showSendEmailScreen(to, subject, log)
|
activity.showSendEmailScreen(to, subject, log)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun showSendFileScreen(filename: String) {
|
||||||
|
activity.showSendFileScreen(filename)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun showSettingsScreen() {
|
override fun showSettingsScreen() {
|
||||||
@@ -202,7 +207,7 @@ class ListHabitsScreen
|
|||||||
callback: OnColorPickedCallback) {
|
callback: OnColorPickedCallback) {
|
||||||
val picker = colorPickerFactory.create(defaultColor)
|
val picker = colorPickerFactory.create(defaultColor)
|
||||||
picker.setListener(callback)
|
picker.setListener(callback)
|
||||||
activity.showDialog(picker, "picker")
|
picker.show(activity.supportFragmentManager, "picker")
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun showNumberPicker(value: Double,
|
override fun showNumberPicker(value: Double,
|
||||||
@@ -212,7 +217,7 @@ class ListHabitsScreen
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun showConfirmInstallSyncKey(callback: OnConfirmedCallback) {
|
override fun showConfirmInstallSyncKey(callback: OnConfirmedCallback) {
|
||||||
activity.showDialog(confirmSyncKeyDialogFactory.create(callback))
|
confirmSyncKeyDialogFactory.create(callback).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
@StringRes
|
@StringRes
|
||||||
@@ -244,7 +249,7 @@ class ListHabitsScreen
|
|||||||
|
|
||||||
private fun onExportDB() {
|
private fun onExportDB() {
|
||||||
taskRunner.execute(exportDBFactory.create { filename ->
|
taskRunner.execute(exportDBFactory.create { filename ->
|
||||||
if (filename != null) showSendFileScreen(filename)
|
if (filename != null) activity.showSendFileScreen(filename)
|
||||||
else activity.showMessage(R.string.could_not_export)
|
else activity.showMessage(R.string.could_not_export)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,11 +19,13 @@
|
|||||||
|
|
||||||
package org.isoron.uhabits.activities.habits.list
|
package org.isoron.uhabits.activities.habits.list
|
||||||
|
|
||||||
|
import android.content.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
|
import androidx.appcompat.app.*
|
||||||
import androidx.appcompat.view.ActionMode
|
import androidx.appcompat.view.ActionMode
|
||||||
import dagger.*
|
import dagger.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.habits.list.views.*
|
import org.isoron.uhabits.activities.habits.list.views.*
|
||||||
import org.isoron.uhabits.core.commands.*
|
import org.isoron.uhabits.core.commands.*
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
@@ -34,7 +36,7 @@ import javax.inject.*
|
|||||||
|
|
||||||
@ActivityScope
|
@ActivityScope
|
||||||
class ListHabitsSelectionMenu @Inject constructor(
|
class ListHabitsSelectionMenu @Inject constructor(
|
||||||
private val activity: BaseActivity,
|
@ActivityContext context: Context,
|
||||||
private val listAdapter: HabitCardListAdapter,
|
private val listAdapter: HabitCardListAdapter,
|
||||||
var commandRunner: CommandRunner,
|
var commandRunner: CommandRunner,
|
||||||
private val prefs: Preferences,
|
private val prefs: Preferences,
|
||||||
@@ -43,6 +45,8 @@ class ListHabitsSelectionMenu @Inject constructor(
|
|||||||
private val notificationTray: NotificationTray
|
private val notificationTray: NotificationTray
|
||||||
) : ActionMode.Callback {
|
) : ActionMode.Callback {
|
||||||
|
|
||||||
|
val activity = (context as AppCompatActivity)
|
||||||
|
|
||||||
var activeActionMode: ActionMode? = null
|
var activeActionMode: ActionMode? = null
|
||||||
|
|
||||||
fun onSelectionStart() {
|
fun onSelectionStart() {
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ import android.text.*
|
|||||||
import android.view.*
|
import android.view.*
|
||||||
import android.view.View.MeasureSpec.*
|
import android.view.View.MeasureSpec.*
|
||||||
import com.google.auto.factory.*
|
import com.google.auto.factory.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
import org.isoron.uhabits.core.models.Checkmark.*
|
import org.isoron.uhabits.core.models.Checkmark.*
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ package org.isoron.uhabits.activities.habits.list.views
|
|||||||
|
|
||||||
import android.content.*
|
import android.content.*
|
||||||
import com.google.auto.factory.*
|
import com.google.auto.factory.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
import org.isoron.uhabits.core.models.Checkmark.*
|
import org.isoron.uhabits.core.models.Checkmark.*
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ import android.view.*;
|
|||||||
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
import org.isoron.androidbase.activities.*;
|
import org.isoron.androidbase.*;
|
||||||
import org.isoron.uhabits.activities.habits.list.*;
|
import org.isoron.uhabits.activities.habits.list.*;
|
||||||
import org.isoron.uhabits.core.models.*;
|
import org.isoron.uhabits.core.models.*;
|
||||||
import org.isoron.uhabits.core.preferences.*;
|
import org.isoron.uhabits.core.preferences.*;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
package org.isoron.uhabits.activities.habits.list.views
|
package org.isoron.uhabits.activities.habits.list.views
|
||||||
|
|
||||||
import dagger.*
|
import dagger.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.activities.habits.list.*
|
import org.isoron.uhabits.activities.habits.list.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
||||||
|
|||||||
@@ -21,13 +21,12 @@ package org.isoron.uhabits.activities.habits.list.views
|
|||||||
|
|
||||||
import android.content.*
|
import android.content.*
|
||||||
import android.os.*
|
import android.os.*
|
||||||
import androidx.appcompat.widget.*
|
|
||||||
import androidx.recyclerview.widget.*
|
import androidx.recyclerview.widget.*
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper.*
|
import androidx.recyclerview.widget.ItemTouchHelper.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import com.google.auto.factory.*
|
import com.google.auto.factory.*
|
||||||
import dagger.*
|
import dagger.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.R
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.common.views.*
|
import org.isoron.uhabits.activities.common.views.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ import android.view.*
|
|||||||
import android.view.ViewGroup.LayoutParams.*
|
import android.view.ViewGroup.LayoutParams.*
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
import com.google.auto.factory.*
|
import com.google.auto.factory.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.activities.common.views.*
|
import org.isoron.uhabits.activities.common.views.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
import org.isoron.uhabits.core.ui.screens.habits.list.*
|
||||||
|
|||||||
@@ -25,10 +25,10 @@ import android.text.*
|
|||||||
import android.view.*
|
import android.view.*
|
||||||
import android.view.View.*
|
import android.view.View.*
|
||||||
import com.google.auto.factory.*
|
import com.google.auto.factory.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.androidbase.utils.*
|
import org.isoron.androidbase.utils.*
|
||||||
import org.isoron.androidbase.utils.InterfaceUtils.getDimension
|
import org.isoron.androidbase.utils.InterfaceUtils.getDimension
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.R
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
import org.isoron.uhabits.utils.*
|
import org.isoron.uhabits.utils.*
|
||||||
import java.text.*
|
import java.text.*
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ package org.isoron.uhabits.activities.habits.list.views
|
|||||||
|
|
||||||
import android.content.*
|
import android.content.*
|
||||||
import com.google.auto.factory.*
|
import com.google.auto.factory.*
|
||||||
import org.isoron.androidbase.activities.*
|
import org.isoron.androidbase.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
import org.isoron.uhabits.core.preferences.*
|
import org.isoron.uhabits.core.preferences.*
|
||||||
import org.isoron.uhabits.core.utils.*
|
import org.isoron.uhabits.core.utils.*
|
||||||
|
|||||||
@@ -20,14 +20,14 @@ package org.isoron.uhabits.activities.settings
|
|||||||
|
|
||||||
import android.os.*
|
import android.os.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import org.isoron.androidbase.activities.*
|
import androidx.appcompat.app.*
|
||||||
import org.isoron.uhabits.*
|
import org.isoron.uhabits.*
|
||||||
import org.isoron.uhabits.activities.*
|
import org.isoron.uhabits.activities.*
|
||||||
import org.isoron.uhabits.core.models.*
|
import org.isoron.uhabits.core.models.*
|
||||||
import org.isoron.uhabits.databinding.*
|
import org.isoron.uhabits.databinding.*
|
||||||
import org.isoron.uhabits.utils.*
|
import org.isoron.uhabits.utils.*
|
||||||
|
|
||||||
class SettingsActivity : BaseActivity() {
|
class SettingsActivity : AppCompatActivity() {
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
val component = (application as HabitsApplication).component
|
val component = (application as HabitsApplication).component
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import android.app.*
|
|||||||
import android.content.*
|
import android.content.*
|
||||||
import android.graphics.*
|
import android.graphics.*
|
||||||
import android.graphics.drawable.*
|
import android.graphics.drawable.*
|
||||||
import android.util.*
|
import android.os.*
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import android.view.ViewGroup.LayoutParams.*
|
import android.view.ViewGroup.LayoutParams.*
|
||||||
import android.widget.*
|
import android.widget.*
|
||||||
@@ -109,11 +109,35 @@ fun Activity.showSendFileScreen(archiveFilename: String) {
|
|||||||
fun Activity.startActivitySafely(intent: Intent) {
|
fun Activity.startActivitySafely(intent: Intent) {
|
||||||
try {
|
try {
|
||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
} catch(e: ActivityNotFoundException) {
|
} catch (e: ActivityNotFoundException) {
|
||||||
this.showMessage(R.string.activity_not_found)
|
this.showMessage(R.string.activity_not_found)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Activity.showSendEmailScreen(@StringRes toId: Int, @StringRes subjectId: Int, content: String?) {
|
||||||
|
val to = this.getString(toId)
|
||||||
|
val subject = this.getString(subjectId)
|
||||||
|
this.startActivity(Intent().apply {
|
||||||
|
action = Intent.ACTION_SEND
|
||||||
|
type = "message/rfc822"
|
||||||
|
putExtra(Intent.EXTRA_EMAIL, arrayOf(to))
|
||||||
|
putExtra(Intent.EXTRA_SUBJECT, subject)
|
||||||
|
putExtra(Intent.EXTRA_TEXT, content)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Activity.restartWithFade(cls: Class<*>?) {
|
||||||
|
Handler().postDelayed(
|
||||||
|
{
|
||||||
|
finish()
|
||||||
|
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out)
|
||||||
|
startActivity(Intent(this, cls))
|
||||||
|
},
|
||||||
|
500,
|
||||||
|
) // HACK: Let the menu disappear first
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
fun View.setupToolbar(
|
fun View.setupToolbar(
|
||||||
toolbar: Toolbar,
|
toolbar: Toolbar,
|
||||||
title: String,
|
title: String,
|
||||||
|
|||||||
Reference in New Issue
Block a user