diff options
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/activities')
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() } } |