aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/activities
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt29
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/BaseActivity.kt23
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt72
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/DebugActivity.kt17
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt44
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/IntroActivity.kt30
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt15
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/SelectorActivity.kt7
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt41
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/TabCustomizerActivity.kt14
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt17
11 files changed, 205 insertions, 104 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt
index 74d876cb..bbf8f812 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt
@@ -50,16 +50,20 @@ import com.pitchedapps.frost.R
import com.pitchedapps.frost.injectors.ThemeProvider
import com.pitchedapps.frost.prefs.Prefs
import com.pitchedapps.frost.utils.L
-import org.koin.android.ext.android.inject
-import org.koin.core.component.inject
+import dagger.hilt.android.AndroidEntryPoint
+import javax.inject.Inject
/**
* Created by Allan Wang on 2017-06-26.
*/
+@AndroidEntryPoint
class AboutActivity : AboutActivityBase(null) {
- private val prefs: Prefs by inject()
- private val themeProvider: ThemeProvider by inject()
+ @Inject
+ lateinit var prefs: Prefs
+
+ @Inject
+ lateinit var themeProvider: ThemeProvider
override fun Configs.buildConfigs() {
textColor = themeProvider.textColor
@@ -144,7 +148,8 @@ class AboutActivity : AboutActivityBase(null) {
}
}
- class AboutLinks : AbstractItem<AboutLinks.ViewHolder>(),
+ class AboutLinks :
+ AbstractItem<AboutLinks.ViewHolder>(),
ThemableIItem by ThemableIItemDelegate() {
override fun getViewHolder(v: View): ViewHolder = ViewHolder(v)
@@ -186,12 +191,14 @@ class AboutActivity : AboutActivityBase(null) {
)
images =
- (icons.map { (icon, onClick) -> c.drawable(icon) to onClick } + iicons.map { (icon, onClick) ->
- icon.toDrawable(
- c,
- 32
- ) to onClick
- }).mapIndexed { i, (icon, onClick) ->
+ (
+ icons.map { (icon, onClick) -> c.drawable(icon) to onClick } + iicons.map { (icon, onClick) ->
+ icon.toDrawable(
+ c,
+ 32
+ ) to onClick
+ }
+ ).mapIndexed { i, (icon, onClick) ->
ImageView(c).apply {
layoutParams = ViewGroup.LayoutParams(size, size)
id = 109389 + i
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseActivity.kt
index 0553086c..36e44936 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseActivity.kt
@@ -24,18 +24,27 @@ import com.pitchedapps.frost.contracts.VideoViewHolder
import com.pitchedapps.frost.facebook.FbCookie
import com.pitchedapps.frost.injectors.ThemeProvider
import com.pitchedapps.frost.prefs.Prefs
-import com.pitchedapps.frost.utils.setFrostTheme
-import org.koin.android.ext.android.inject
-import org.koin.core.component.inject
+import com.pitchedapps.frost.utils.ActivityThemer
+import dagger.hilt.android.AndroidEntryPoint
+import javax.inject.Inject
/**
* Created by Allan Wang on 2017-06-12.
*/
+@AndroidEntryPoint
abstract class BaseActivity : KauBaseActivity() {
- val fbCookie: FbCookie by inject()
- val prefs: Prefs by inject()
- val themeProvider: ThemeProvider by inject()
+ @Inject
+ lateinit var fbCookie: FbCookie
+
+ @Inject
+ lateinit var prefs: Prefs
+
+ @Inject
+ lateinit var themeProvider: ThemeProvider
+
+ @Inject
+ lateinit var activityThemer: ActivityThemer
/**
* Inherited consumer to customize back press
@@ -51,7 +60,7 @@ abstract class BaseActivity : KauBaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- if (this !is WebOverlayActivityBase) setFrostTheme(themeProvider)
+ if (this !is WebOverlayActivityBase) activityThemer.setFrostTheme()
}
override fun onStop() {
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
index 394969cb..19e54f68 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/BaseMainActivity.kt
@@ -122,16 +122,22 @@ import com.pitchedapps.frost.utils.frostNavigationBar
import com.pitchedapps.frost.utils.launchLogin
import com.pitchedapps.frost.utils.launchNewTask
import com.pitchedapps.frost.utils.launchWebOverlay
-import com.pitchedapps.frost.utils.setFrostColors
import com.pitchedapps.frost.utils.urlEncode
import com.pitchedapps.frost.views.BadgedIcon
import com.pitchedapps.frost.views.FrostVideoViewer
import com.pitchedapps.frost.views.FrostViewPager
import com.pitchedapps.frost.widgets.NotificationWidget
-import kotlin.math.abs
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.android.AndroidEntryPoint
+import dagger.hilt.android.components.ActivityComponent
+import dagger.hilt.android.qualifiers.ActivityContext
+import dagger.hilt.android.scopes.ActivityScoped
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.launch
-import org.koin.android.ext.android.inject
+import javax.inject.Inject
+import kotlin.math.abs
/**
* Created by Allan Wang on 20/12/17.
@@ -139,9 +145,13 @@ import org.koin.android.ext.android.inject
* Most of the logic that is unrelated to handling fragments
*/
@UseExperimental(ExperimentalCoroutinesApi::class)
-abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
+@AndroidEntryPoint
+abstract class BaseMainActivity :
+ BaseActivity(),
+ MainActivityContract,
FileChooserContract by FileChooserDelegate(),
- VideoViewHolder, SearchViewHolder {
+ VideoViewHolder,
+ SearchViewHolder {
/**
* Note that tabs themselves are initialized through a coroutine during onCreate
@@ -150,8 +160,12 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
override val frameWrapper: FrameLayout get() = drawerWrapperBinding.mainContainer
lateinit var drawerWrapperBinding: ActivityMainDrawerWrapperBinding
lateinit var contentBinding: ActivityMainContentBinding
- val cookieDao: CookieDao by inject()
- val genericDao: GenericDao by inject()
+
+ @Inject
+ lateinit var cookieDao: CookieDao
+
+ @Inject
+ lateinit var genericDao: GenericDao
interface ActivityMainContentBinding {
val root: View
@@ -179,6 +193,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
contentBinding = when (prefs.mainActivityLayout) {
MainActivityLayout.TOP_BAR -> {
val binding = ActivityMainBinding.inflate(layoutInflater)
+ @SuppressLint("StaticFieldLeak")
object : ActivityMainContentBinding {
override val root: View = binding.root
override val toolbar: Toolbar = binding.toolbar
@@ -190,6 +205,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
MainActivityLayout.BOTTOM_BAR -> {
val binding = ActivityMainBottomTabsBinding.inflate(layoutInflater)
+ @SuppressLint("StaticFieldLeak")
object : ActivityMainContentBinding {
override val root: View = binding.root
override val toolbar: Toolbar = binding.toolbar
@@ -202,7 +218,7 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
}
drawerWrapperBinding.mainContainer.addView(contentBinding.root)
with(contentBinding) {
- setFrostColors {
+ activityThemer.setFrostColors {
toolbar(toolbar)
themeWindow = false
header(appbar)
@@ -333,15 +349,17 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
shouldShow = false
fab.backgroundTintList = ColorStateList.valueOf(themeProvider.headerColor.withMinAlpha(200))
fab.hide()
- appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
- if (!hasFab) return@OnOffsetChangedListener
- val percent = abs(verticalOffset.toFloat() / appBarLayout.totalScrollRange)
- val shouldShow = percent < 0.2
- if (this@BaseMainActivity.shouldShow != shouldShow) {
- this@BaseMainActivity.shouldShow = shouldShow
- fab.showIf(shouldShow)
+ appbar.addOnOffsetChangedListener(
+ AppBarLayout.OnOffsetChangedListener { appBarLayout, verticalOffset ->
+ if (!hasFab) return@OnOffsetChangedListener
+ val percent = abs(verticalOffset.toFloat() / appBarLayout.totalScrollRange)
+ val shouldShow = percent < 0.2
+ if (this@BaseMainActivity.shouldShow != shouldShow) {
+ this@BaseMainActivity.shouldShow = shouldShow
+ fab.showIf(shouldShow)
+ }
}
- })
+ )
}
override fun showFab(iicon: IIcon, clickEvent: () -> Unit) {
@@ -843,11 +861,13 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
this@SectionsPagerAdapter.pages.forEachIndexed { index, fbItem ->
tabs.addTab(
tabs.newTab()
- .setCustomView(BadgedIcon(this@BaseMainActivity).apply {
- iicon = fbItem.icon
- }.also {
- it.setAllAlpha(if (index == 0) SELECTED_TAB_ALPHA else UNSELECTED_TAB_ALPHA)
- })
+ .setCustomView(
+ BadgedIcon(this@BaseMainActivity).apply {
+ iicon = fbItem.icon
+ }.also {
+ it.setAllAlpha(if (index == 0) SELECTED_TAB_ALPHA else UNSELECTED_TAB_ALPHA)
+ }
+ )
)
}
lastPosition = 0
@@ -921,3 +941,13 @@ abstract class BaseMainActivity : BaseActivity(), MainActivityContract,
const val UNSELECTED_TAB_ALPHA = 128f
}
}
+
+@Module
+@InstallIn(ActivityComponent::class)
+object MainActivityModule {
+ @Provides
+ @ActivityScoped
+ fun contract(@ActivityContext context: Context): MainActivityContract =
+ (context as? BaseMainActivity)
+ ?: throw IllegalArgumentException("${context::class.java.simpleName} does not implement MainActivityContract")
+}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/DebugActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/DebugActivity.kt
index 935b88c9..4d2af123 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/DebugActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/DebugActivity.kt
@@ -31,19 +31,20 @@ import com.pitchedapps.frost.databinding.ActivityDebugBinding
import com.pitchedapps.frost.facebook.FbItem
import com.pitchedapps.frost.injectors.JsActions
import com.pitchedapps.frost.injectors.ThemeProvider
+import com.pitchedapps.frost.utils.ActivityThemer
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.utils.createFreshDir
-import com.pitchedapps.frost.utils.setFrostColors
+import dagger.hilt.android.AndroidEntryPoint
+import kotlinx.coroutines.CoroutineExceptionHandler
import java.io.File
+import javax.inject.Inject
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
-import kotlinx.coroutines.CoroutineExceptionHandler
-import org.koin.android.ext.android.inject
-import org.koin.core.component.inject
/**
* Created by Allan Wang on 05/01/18.
*/
+@AndroidEntryPoint
class DebugActivity : KauBaseActivity() {
companion object {
@@ -53,7 +54,11 @@ class DebugActivity : KauBaseActivity() {
fun baseDir(context: Context) = File(context.externalCacheDir, "offline_debug")
}
- private val themeProvider: ThemeProvider by inject()
+ @Inject
+ lateinit var activityThemer: ActivityThemer
+
+ @Inject
+ lateinit var themeProvider: ThemeProvider
lateinit var binding: ActivityDebugBinding
@@ -72,7 +77,7 @@ class DebugActivity : KauBaseActivity() {
}
setTitle(R.string.debug_frost)
- setFrostColors {
+ activityThemer.setFrostColors {
toolbar(toolbar)
}
debugWebview.loadUrl(FbItem.FEED.url)
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
index 7b8ee4d3..c5b8bdaa 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/ImageActivity.kt
@@ -61,33 +61,40 @@ import com.pitchedapps.frost.services.LocalService
import com.pitchedapps.frost.utils.ARG_COOKIE
import com.pitchedapps.frost.utils.ARG_IMAGE_URL
import com.pitchedapps.frost.utils.ARG_TEXT
+import com.pitchedapps.frost.utils.ActivityThemer
import com.pitchedapps.frost.utils.frostDownload
import com.pitchedapps.frost.utils.frostSnackbar
import com.pitchedapps.frost.utils.frostUriFromFile
import com.pitchedapps.frost.utils.isIndirectImageUrl
import com.pitchedapps.frost.utils.logFrostEvent
-import com.pitchedapps.frost.utils.setFrostColors
-import java.io.File
-import java.io.FileNotFoundException
-import java.io.IOException
-import kotlin.math.abs
-import kotlin.math.max
+import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineExceptionHandler
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
-import org.koin.android.ext.android.inject
-import org.koin.core.component.inject
+import java.io.File
+import java.io.FileNotFoundException
+import java.io.IOException
+import javax.inject.Inject
+import kotlin.math.abs
+import kotlin.math.max
/**
* Created by Allan Wang on 2017-07-15.
*/
+@AndroidEntryPoint
class ImageActivity : KauBaseActivity() {
- private val prefs: Prefs by inject()
- private val themeProvider: ThemeProvider by inject()
+ @Inject
+ lateinit var activityThemer: ActivityThemer
+
+ @Inject
+ lateinit var prefs: Prefs
+
+ @Inject
+ lateinit var themeProvider: ThemeProvider
@Volatile
internal var errorRef: Throwable? = null
@@ -219,12 +226,12 @@ class ImageActivity : KauBaseActivity() {
setState(FabStates.SHARE)
}
imagePhoto.setOnImageEventListener(object :
- SubsamplingScaleImageView.DefaultOnImageEventListener() {
- override fun onImageLoadError(e: Exception) {
- loadError(e)
- }
- })
- setFrostColors {
+ SubsamplingScaleImageView.DefaultOnImageEventListener() {
+ override fun onImageLoadError(e: Exception) {
+ loadError(e)
+ }
+ })
+ activityThemer.setFrostColors {
themeWindow = false
}
dragHelper = ViewDragHelper.create(imageDrag, ViewDragCallback()).apply {
@@ -394,7 +401,7 @@ internal enum class FabStates(
} catch (e: Exception) {
activity.errorRef = e
e.logFrostEvent("Image share failed")
- activity.frostSnackbar(R.string.image_share_failed)
+ activity.frostSnackbar(R.string.image_share_failed, activity.themeProvider)
}
}
};
@@ -409,7 +416,8 @@ internal enum class FabStates(
*
*/
fun update(fab: FloatingActionButton, themeProvider: ThemeProvider) {
- val tint = if (backgroundTint != Int.MAX_VALUE) backgroundTint else themeProvider.accentColor
+ val tint =
+ if (backgroundTint != Int.MAX_VALUE) backgroundTint else themeProvider.accentColor
val iconColor = iconColorProvider(themeProvider)
if (fab.isHidden) {
fab.setIcon(iicon, color = iconColor)
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/IntroActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/IntroActivity.kt
index f06c3a37..817eebe1 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/IntroActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/IntroActivity.kt
@@ -48,14 +48,15 @@ import com.pitchedapps.frost.intro.IntroFragmentWelcome
import com.pitchedapps.frost.intro.IntroTabContextFragment
import com.pitchedapps.frost.intro.IntroTabTouchFragment
import com.pitchedapps.frost.prefs.Prefs
+import com.pitchedapps.frost.utils.ActivityThemer
import com.pitchedapps.frost.utils.cookies
import com.pitchedapps.frost.utils.launchNewTask
import com.pitchedapps.frost.utils.loadAssets
-import com.pitchedapps.frost.utils.setFrostTheme
import com.pitchedapps.frost.widgets.NotificationWidget
+import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch
-import org.koin.android.ext.android.inject
+import javax.inject.Inject
/**
* Created by Allan Wang on 2017-07-25.
@@ -63,11 +64,21 @@ import org.koin.android.ext.android.inject
* A beautiful intro activity
* Phone showcases are drawn via layers
*/
-class IntroActivity : KauBaseActivity(), ViewPager.PageTransformer,
+@AndroidEntryPoint
+class IntroActivity :
+ KauBaseActivity(),
+ ViewPager.PageTransformer,
ViewPager.OnPageChangeListener {
- private val prefs: Prefs by inject()
- private val themeProvider: ThemeProvider by inject()
+ @Inject
+ lateinit var prefs: Prefs
+
+ @Inject
+ lateinit var themeProvider: ThemeProvider
+
+ @Inject
+ lateinit var activityThemer: ActivityThemer
+
lateinit var binding: ActivityIntroBinding
private var barHasNext = true
@@ -114,7 +125,7 @@ class IntroActivity : KauBaseActivity(), ViewPager.PageTransformer,
indicator.invalidate()
}
fragments.forEach { it.themeFragment() }
- setFrostTheme(themeProvider, true)
+ activityThemer.setFrostTheme(forceTransparent = true)
}
/**
@@ -157,7 +168,12 @@ class IntroActivity : KauBaseActivity(), ViewPager.PageTransformer,
if (f != null)
ValueAnimator.ofFloat(0f, 1f).apply {
addUpdateListener {
- f.setTint(themeProvider.textColor.blendWith(Color.WHITE, it.animatedValue as Float))
+ f.setTint(
+ themeProvider.textColor.blendWith(
+ Color.WHITE,
+ it.animatedValue as Float
+ )
+ )
}
duration = 600
start()
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt
index 5cbbfafe..949f1ddd 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt
@@ -45,11 +45,9 @@ import com.pitchedapps.frost.utils.frostEvent
import com.pitchedapps.frost.utils.frostJsoup
import com.pitchedapps.frost.utils.launchNewTask
import com.pitchedapps.frost.utils.logFrostEvent
-import com.pitchedapps.frost.utils.setFrostColors
import com.pitchedapps.frost.utils.uniqueOnly
import com.pitchedapps.frost.web.LoginWebView
-import java.net.UnknownHostException
-import kotlin.coroutines.resume
+import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.channels.Channel
@@ -58,19 +56,24 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlinx.coroutines.withContext
import kotlinx.coroutines.withTimeout
-import org.koin.android.ext.android.inject
+import java.net.UnknownHostException
+import javax.inject.Inject
+import kotlin.coroutines.resume
/**
* Created by Allan Wang on 2017-06-01.
*/
+@AndroidEntryPoint
class LoginActivity : BaseActivity() {
+ @Inject
+ lateinit var cookieDao: CookieDao
+
private val toolbar: Toolbar by bindView(R.id.toolbar)
private val web: LoginWebView by bindView(R.id.login_webview)
private val swipeRefresh: SwipeRefreshLayout by bindView(R.id.swipe_refresh)
private val textview: AppCompatTextView by bindView(R.id.textview)
private val profile: ImageView by bindView(R.id.profile)
- private val cookieDao: CookieDao by inject()
private lateinit var profileLoader: RequestManager
private val refreshChannel = Channel<Boolean>(10)
@@ -80,7 +83,7 @@ class LoginActivity : BaseActivity() {
setContentView(R.layout.activity_login)
setSupportActionBar(toolbar)
setTitle(R.string.kau_login)
- setFrostColors {
+ activityThemer.setFrostColors {
toolbar(toolbar)
}
profileLoader = GlideApp.with(profile)
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/SelectorActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/SelectorActivity.kt
index 33215c7e..a891c7c9 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/SelectorActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/SelectorActivity.kt
@@ -29,7 +29,6 @@ import com.mikepenz.fastadapter.listeners.ClickEventHook
import com.pitchedapps.frost.R
import com.pitchedapps.frost.utils.cookies
import com.pitchedapps.frost.utils.launchNewTask
-import com.pitchedapps.frost.utils.setFrostColors
import com.pitchedapps.frost.views.AccountItem
import kotlinx.coroutines.launch
@@ -48,8 +47,8 @@ class SelectorActivity : BaseActivity() {
setContentView(R.layout.activity_selector)
recycler.layoutManager = GridLayoutManager(this, 2)
recycler.adapter = adapter
- adapter.add(cookies().map { AccountItem(it) })
- adapter.add(AccountItem(null)) // add account
+ adapter.add(cookies().map { AccountItem(it, themeProvider) })
+ adapter.add(AccountItem(null, themeProvider)) // add account
adapter.addEventHook(object : ClickEventHook<AccountItem>() {
override fun onBind(viewHolder: RecyclerView.ViewHolder): View? =
(viewHolder as? AccountItem.ViewHolder)?.itemView
@@ -67,7 +66,7 @@ class SelectorActivity : BaseActivity() {
}
}
})
- setFrostColors {
+ activityThemer.setFrostColors {
text(text)
background(container)
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt
index 9ce16ec7..bce3aa48 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/SettingsActivity.kt
@@ -49,6 +49,7 @@ import com.pitchedapps.frost.settings.getFeedPrefs
import com.pitchedapps.frost.settings.getNotificationPrefs
import com.pitchedapps.frost.settings.getSecurityPrefs
import com.pitchedapps.frost.settings.sendDebug
+import com.pitchedapps.frost.utils.ActivityThemer
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.utils.REQUEST_REFRESH
import com.pitchedapps.frost.utils.REQUEST_RESTART
@@ -57,20 +58,31 @@ import com.pitchedapps.frost.utils.frostChangelog
import com.pitchedapps.frost.utils.frostNavigationBar
import com.pitchedapps.frost.utils.launchNewTask
import com.pitchedapps.frost.utils.loadAssets
-import com.pitchedapps.frost.utils.setFrostTheme
+import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch
-import org.koin.android.ext.android.inject
+import javax.inject.Inject
/**
* Created by Allan Wang on 2017-06-06.
*/
+@AndroidEntryPoint
class SettingsActivity : KPrefActivity() {
- val fbCookie: FbCookie by inject()
- val notifDao: NotificationDao by inject()
- val prefs: Prefs by inject()
- val themeProvider: ThemeProvider by inject()
+ @Inject
+ lateinit var fbCookie: FbCookie
+
+ @Inject
+ lateinit var prefs: Prefs
+
+ @Inject
+ lateinit var themeProvider: ThemeProvider
+
+ @Inject
+ lateinit var notifDao: NotificationDao
+
+ @Inject
+ lateinit var activityThemer: ActivityThemer
private var resultFlag = Activity.RESULT_CANCELED
@@ -175,9 +187,12 @@ class SettingsActivity : KPrefActivity() {
descRes = R.string.about_frost_desc
iicon = GoogleMaterial.Icon.gmd_info
onClick = {
- startActivityForResult<AboutActivity>(9, bundleBuilder = {
- withSceneTransitionAnimation(this@SettingsActivity)
- })
+ startActivityForResult<AboutActivity>(
+ 9,
+ bundleBuilder = {
+ withSceneTransitionAnimation(this@SettingsActivity)
+ }
+ )
}
}
@@ -218,7 +233,7 @@ class SettingsActivity : KPrefActivity() {
@SuppressLint("MissingSuperCall")
override fun onCreate(savedInstanceState: Bundle?) {
- setFrostTheme(themeProvider, true)
+ activityThemer.setFrostTheme(forceTransparent = true)
super.onCreate(savedInstanceState)
animate = prefs.animate
themeExterior(false)
@@ -227,7 +242,11 @@ class SettingsActivity : KPrefActivity() {
fun themeExterior(animate: Boolean = true) {
if (animate) bgCanvas.fade(themeProvider.bgColor)
else bgCanvas.set(themeProvider.bgColor)
- if (animate) toolbarCanvas.ripple(themeProvider.headerColor, RippleCanvas.MIDDLE, RippleCanvas.END)
+ if (animate) toolbarCanvas.ripple(
+ themeProvider.headerColor,
+ RippleCanvas.MIDDLE,
+ RippleCanvas.END
+ )
else toolbarCanvas.set(themeProvider.headerColor)
frostNavigationBar(prefs, themeProvider)
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/TabCustomizerActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/TabCustomizerActivity.kt
index f2827397..adf543df 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/TabCustomizerActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/TabCustomizerActivity.kt
@@ -42,18 +42,20 @@ import com.pitchedapps.frost.db.saveTabs
import com.pitchedapps.frost.facebook.FbItem
import com.pitchedapps.frost.iitems.TabIItem
import com.pitchedapps.frost.utils.L
-import com.pitchedapps.frost.utils.setFrostColors
-import java.util.Collections
+import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.launch
-import org.koin.android.ext.android.inject
+import java.util.Collections
+import javax.inject.Inject
/**
* Created by Allan Wang on 26/11/17.
*/
+@AndroidEntryPoint
class TabCustomizerActivity : BaseActivity() {
- private val genericDao: GenericDao by inject()
+ @Inject
+ lateinit var genericDao: GenericDao
private val adapter = FastItemAdapter<TabIItem>()
@@ -85,7 +87,7 @@ class TabCustomizerActivity : BaseActivity() {
val remaining = FbItem.values().filter { it.name[0] != '_' }.toMutableList()
remaining.removeAll(tabs)
tabs.addAll(remaining)
- adapter.set(tabs.map(::TabIItem))
+ adapter.set(tabs.map { TabIItem(it, themeProvider) })
bindSwapper(adapter, tabRecycler)
@@ -107,7 +109,7 @@ class TabCustomizerActivity : BaseActivity() {
fabCancel.setIcon(GoogleMaterial.Icon.gmd_close, themeProvider.iconColor)
fabCancel.backgroundTintList = ColorStateList.valueOf(themeProvider.accentColor)
fabCancel.setOnClickListener { finish() }
- setFrostColors {
+ activityThemer.setFrostColors {
themeWindow = true
}
}
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt
index 42d84eb7..689d9a65 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/WebOverlayActivity.kt
@@ -67,7 +67,6 @@ import com.pitchedapps.frost.utils.ARG_USER_ID
import com.pitchedapps.frost.utils.BiometricUtils
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.utils.frostSnackbar
-import com.pitchedapps.frost.utils.setFrostColors
import com.pitchedapps.frost.views.FrostContentWeb
import com.pitchedapps.frost.views.FrostVideoViewer
import com.pitchedapps.frost.views.FrostWebView
@@ -156,9 +155,12 @@ class WebOverlayDesktopActivity : WebOverlayActivityBase(USER_AGENT_DESKTOP_CONS
class WebOverlayActivity : WebOverlayActivityBase()
@UseExperimental(ExperimentalCoroutinesApi::class)
-abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT) : BaseActivity(),
- ActivityContract, FrostContentContainer,
- VideoViewHolder, FileChooserContract by FileChooserDelegate() {
+abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT) :
+ BaseActivity(),
+ ActivityContract,
+ FrostContentContainer,
+ VideoViewHolder,
+ FileChooserContract by FileChooserDelegate() {
override val frameWrapper: FrameLayout by bindView(R.id.frame_wrapper)
val toolbar: Toolbar by bindView(R.id.overlay_toolbar)
@@ -202,10 +204,11 @@ abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT
setSupportActionBar(toolbar)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
- toolbar.navigationIcon = GoogleMaterial.Icon.gmd_close.toDrawable(this, 16, themeProvider.iconColor)
+ toolbar.navigationIcon =
+ GoogleMaterial.Icon.gmd_close.toDrawable(this, 16, themeProvider.iconColor)
toolbar.setNavigationOnClickListener { finishSlideOut() }
- setFrostColors {
+ activityThemer.setFrostColors {
toolbar(toolbar)
themeWindow = false
}
@@ -228,7 +231,7 @@ abstract class WebOverlayActivityBase(private val userAgent: String = USER_AGENT
authDefer.await()
reloadBase(true)
if (prefs.firstWebOverlay) {
- coordinator.frostSnackbar(R.string.web_overlay_swipe_hint) {
+ coordinator.frostSnackbar(R.string.web_overlay_swipe_hint, themeProvider) {
duration = BaseTransientBottomBar.LENGTH_INDEFINITE
setAction(R.string.kau_got_it) { dismiss() }
}