Skip to content

Commit

Permalink
Merge pull request #681 from anthonycr/preferences-refactor
Browse files Browse the repository at this point in the history
Preferences refactor
  • Loading branch information
anthonycr committed Feb 26, 2018
2 parents dcc31cf + d412ab8 commit b735766
Show file tree
Hide file tree
Showing 38 changed files with 616 additions and 805 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Expand Up @@ -11,6 +11,7 @@ android:
- 'android-sdk-license-.+'
- '.*intel.+'
before_install:
- yes | sdkmanager "platforms;android-27"
- chmod +x gradlew
- git submodule update --init --recursive
install:
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/acr/browser/lightning/BrowserApp.kt
Expand Up @@ -5,7 +5,7 @@ import acr.browser.lightning.database.bookmark.BookmarkRepository
import acr.browser.lightning.di.AppComponent
import acr.browser.lightning.di.AppModule
import acr.browser.lightning.di.DaggerAppComponent
import acr.browser.lightning.preference.PreferenceManager
import acr.browser.lightning.preference.DeveloperPreferences
import acr.browser.lightning.utils.FileUtils
import acr.browser.lightning.utils.MemoryLeakUtils
import android.app.Activity
Expand All @@ -27,7 +27,7 @@ import javax.inject.Named

class BrowserApp : Application() {

@Inject internal lateinit var preferenceManager: PreferenceManager
@Inject internal lateinit var developerPreferences: DeveloperPreferences
@Inject internal lateinit var bookmarkModel: BookmarkRepository
@Inject @field:Named("database") internal lateinit var databaseScheduler: Scheduler

Expand Down Expand Up @@ -76,7 +76,7 @@ class BrowserApp : Application() {
}
}

if (preferenceManager.useLeakCanary && !isRelease) {
if (developerPreferences.useLeakCanary && !isRelease) {
LeakCanary.install(this)
}
if (!isRelease && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Expand Down
Expand Up @@ -17,7 +17,7 @@ class IncognitoActivity : BrowserActivity() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.createInstance(this@IncognitoActivity)
}
cookieManager.setAcceptCookie(preferences.incognitoCookiesEnabled)
cookieManager.setAcceptCookie(userPreferences.incognitoCookiesEnabled)
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/java/acr/browser/lightning/MainActivity.kt
Expand Up @@ -17,7 +17,7 @@ class MainActivity : BrowserActivity() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
CookieSyncManager.createInstance(this@MainActivity)
}
cookieManager.setAcceptCookie(preferences.cookiesEnabled)
cookieManager.setAcceptCookie(userPreferences.cookiesEnabled)
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
Expand Down
Expand Up @@ -10,7 +10,7 @@ import acr.browser.lightning.constant.SCHEME_HOMEPAGE
import acr.browser.lightning.controller.UIController
import acr.browser.lightning.html.bookmark.BookmarkPage
import acr.browser.lightning.html.homepage.StartPage
import acr.browser.lightning.preference.PreferenceManager
import acr.browser.lightning.preference.UserPreferences
import acr.browser.lightning.ssl.SSLState
import acr.browser.lightning.utils.UrlUtils
import acr.browser.lightning.view.LightningView
Expand All @@ -32,7 +32,7 @@ import javax.inject.Inject
class BrowserPresenter(private val view: BrowserView, private val isIncognito: Boolean) {

@Inject internal lateinit var application: Application
@Inject internal lateinit var preferences: PreferenceManager
@Inject internal lateinit var userPreferences: UserPreferences
private val tabsModel: TabsManager
private var currentTab: LightningView? = null
private var shouldClose: Boolean = false
Expand Down Expand Up @@ -140,7 +140,7 @@ class BrowserPresenter(private val view: BrowserView, private val isIncognito: B
}

private fun mapHomepageToCurrentUrl(): String {
val homepage = preferences.homepage
val homepage = userPreferences.homepage

return when (homepage) {
SCHEME_HOMEPAGE -> "$FILE${StartPage.getStartPageFile(application)}"
Expand All @@ -159,7 +159,7 @@ class BrowserPresenter(private val view: BrowserView, private val isIncognito: B
val tabToDelete = tabsModel.getTabAtPosition(position) ?: return

if (!UrlUtils.isSpecialUrl(tabToDelete.url) && !isIncognito) {
preferences.savedUrl = tabToDelete.url
userPreferences.savedUrl = tabToDelete.url
}

val isShown = tabToDelete.isShown
Expand Down
@@ -1,7 +1,7 @@
package acr.browser.lightning.browser

import acr.browser.lightning.R
import acr.browser.lightning.preference.PreferenceManager
import acr.browser.lightning.preference.UserPreferences
import acr.browser.lightning.utils.UrlUtils
import acr.browser.lightning.utils.Utils
import android.app.Application
Expand All @@ -11,7 +11,7 @@ import javax.inject.Inject
* A UI model for the search box.
*/
class SearchBoxModel @Inject constructor(
private val preferences: PreferenceManager,
private val userPreferences: UserPreferences,
application: Application
) {

Expand Down Expand Up @@ -39,7 +39,7 @@ class SearchBoxModel @Inject constructor(
when {
UrlUtils.isSpecialUrl(url) -> return ""
isLoading -> return url
else -> when (preferences.urlBoxContentChoice) {
else -> when (userPreferences.urlBoxContentChoice) {
1 -> {
// URL, show the entire URL
return url
Expand Down
Expand Up @@ -7,7 +7,7 @@ import acr.browser.lightning.html.bookmark.BookmarkPage
import acr.browser.lightning.html.download.DownloadsPage
import acr.browser.lightning.html.history.HistoryPage
import acr.browser.lightning.html.homepage.StartPage
import acr.browser.lightning.preference.PreferenceManager
import acr.browser.lightning.preference.UserPreferences
import acr.browser.lightning.search.SearchEngineProvider
import acr.browser.lightning.utils.FileUtils
import acr.browser.lightning.utils.UrlUtils
Expand Down Expand Up @@ -49,7 +49,7 @@ class TabsManager {
private var isInitialized = false
private val postInitializationWorkList = ArrayList<() -> Unit>()

@Inject internal lateinit var preferenceManager: PreferenceManager
@Inject internal lateinit var userPreferences: UserPreferences
@Inject internal lateinit var app: Application
@Inject internal lateinit var searchEngineProvider: SearchEngineProvider
@Inject @field:Named("database") internal lateinit var databaseScheduler: Scheduler
Expand Down Expand Up @@ -110,7 +110,7 @@ class TabsManager {

Log.d(TAG, "URL from intent: $url")
currentTab = null
if (preferenceManager.restoreLostTabsEnabled) {
if (userPreferences.restoreLostTabsEnabled) {
restoreLostTabs(url, activity, subscriber)
} else {
if (!TextUtils.isEmpty(url)) {
Expand Down
Expand Up @@ -27,6 +27,7 @@ import acr.browser.lightning.html.history.HistoryPage
import acr.browser.lightning.interpolator.BezierDecelerateInterpolator
import acr.browser.lightning.network.NetworkConnectivityModel
import acr.browser.lightning.notifications.IncognitoNotification
import acr.browser.lightning.preference.UserPreferences
import acr.browser.lightning.reading.activity.ReadingActivity
import acr.browser.lightning.search.SearchEngineProvider
import acr.browser.lightning.search.SuggestionsAdapter
Expand Down Expand Up @@ -227,15 +228,15 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr
val actionBar = requireNotNull(supportActionBar)

//TODO make sure dark theme flag gets set correctly
isDarkTheme = preferences.useTheme != 0 || isIncognito()
isDarkTheme = userPreferences.useTheme != 0 || isIncognito()
iconColor = if (isDarkTheme) ThemeUtils.getIconDarkThemeColor(this) else ThemeUtils.getIconLightThemeColor(this)
disabledIconColor = if (isDarkTheme) {
ContextCompat.getColor(this, R.color.icon_dark_theme_disabled)
} else {
ContextCompat.getColor(this, R.color.icon_light_theme_disabled)
}
shouldShowTabsInDrawer = preferences.getShowTabsInDrawer(!isTablet)
swapBookmarksAndTabs = preferences.bookmarksAndTabsSwapped
shouldShowTabsInDrawer = userPreferences.showTabsInDrawer
swapBookmarksAndTabs = userPreferences.bookmarksAndTabsSwapped

// initialize background ColorDrawable
val primaryColor = ThemeUtils.getPrimaryColor(this)
Expand Down Expand Up @@ -590,8 +591,8 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr

private fun initializePreferences() {
val currentView = tabsManager.currentTab
isFullScreen = preferences.fullScreenEnabled
val colorMode = preferences.colorModeEnabled && !isDarkTheme
isFullScreen = userPreferences.fullScreenEnabled
val colorMode = userPreferences.colorModeEnabled && !isDarkTheme

webPageBitmap?.let { webBitmap ->
if (!isIncognito() && !colorMode && !isDarkTheme) {
Expand All @@ -612,7 +613,7 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr
// TODO layout transition causing memory leak
// content_frame.setLayoutTransition(new LayoutTransition());

setFullscreen(preferences.hideStatusBarEnabled, false)
setFullscreen(userPreferences.hideStatusBarEnabled, false)

val currentSearchEngine = searchEngineProvider.getCurrentSearchEngine()
searchText = currentSearchEngine.queryUrl
Expand Down Expand Up @@ -1042,12 +1043,15 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr
}

override fun newTabButtonLongClicked() {
preferences.savedUrl?.let {
newTab(it, true)
val savedUrl = userPreferences.savedUrl

if (savedUrl != "") {
newTab(savedUrl, true)

Utils.showSnackbar(this, R.string.deleted_tab)
}
preferences.savedUrl = null

userPreferences.savedUrl = ""
}

override fun bookmarkButtonClicked() {
Expand Down Expand Up @@ -1107,19 +1111,19 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr

protected fun performExitCleanUp() {
val currentTab = tabsManager.currentTab
if (preferences.clearCacheExit && currentTab != null && !isIncognito()) {
if (userPreferences.clearCacheExit && currentTab != null && !isIncognito()) {
WebUtils.clearCache(currentTab.webView)
Log.d(TAG, "Cache Cleared")
}
if (preferences.clearHistoryExitEnabled && !isIncognito()) {
if (userPreferences.clearHistoryExitEnabled && !isIncognito()) {
WebUtils.clearHistory(this, historyModel, databaseScheduler)
Log.d(TAG, "History Cleared")
}
if (preferences.clearCookiesExitEnabled && !isIncognito()) {
if (userPreferences.clearCookiesExitEnabled && !isIncognito()) {
WebUtils.clearCookies(this)
Log.d(TAG, "Cookies Cleared")
}
if (preferences.clearWebStorageExitEnabled && !isIncognito()) {
if (userPreferences.clearWebStorageExitEnabled && !isIncognito()) {
WebUtils.clearWebStorage()
Log.d(TAG, "WebStorage Cleared")
} else if (isIncognito()) {
Expand Down Expand Up @@ -1216,7 +1220,7 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr
}

protected fun saveOpenTabs() {
if (preferences.restoreLostTabsEnabled) {
if (userPreferences.restoreLostTabsEnabled) {
tabsManager.saveState()
}
}
Expand Down Expand Up @@ -1249,7 +1253,7 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr
override fun onResume() {
super.onResume()
Log.d(TAG, "onResume")
if (swapBookmarksAndTabs != preferences.bookmarksAndTabsSwapped) {
if (swapBookmarksAndTabs != userPreferences.bookmarksAndTabsSwapped) {
restart()
}

Expand Down Expand Up @@ -1697,7 +1701,7 @@ abstract class BrowserActivity : ThemableBrowserActivity(), BrowserView, UIContr
Log.e(TAG, "WebView is not allowed to keep the screen on")
}

setFullscreen(preferences.hideStatusBarEnabled, false)
setFullscreen(userPreferences.hideStatusBarEnabled, false)
if (fullscreenContainerView != null) {
val parent = fullscreenContainerView?.parent as ViewGroup
parent.removeView(fullscreenContainerView)
Expand Down
Expand Up @@ -2,7 +2,7 @@ package acr.browser.lightning.browser.activity

import acr.browser.lightning.BrowserApp
import acr.browser.lightning.R
import acr.browser.lightning.preference.PreferenceManager
import acr.browser.lightning.preference.UserPreferences
import acr.browser.lightning.utils.ThemeUtils
import android.content.Intent
import android.content.res.Configuration
Expand All @@ -15,16 +15,16 @@ import javax.inject.Inject
abstract class ThemableBrowserActivity : AppCompatActivity() {

// TODO reduce protected visibility
@Inject protected lateinit var preferences: PreferenceManager
@Inject protected lateinit var userPreferences: UserPreferences

private var themeId: Int = 0
private var showTabsInDrawer: Boolean = false
private var shouldRunOnResumeActions = false

override fun onCreate(savedInstanceState: Bundle?) {
BrowserApp.appComponent.inject(this)
themeId = preferences.useTheme
showTabsInDrawer = preferences.getShowTabsInDrawer(!isTablet)
themeId = userPreferences.useTheme
showTabsInDrawer = userPreferences.showTabsInDrawer

// set the theme
if (themeId == 1) {
Expand All @@ -39,7 +39,7 @@ abstract class ThemableBrowserActivity : AppCompatActivity() {

private fun resetPreferences() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (preferences.useBlackStatusBar) {
if (userPreferences.useBlackStatusBar) {
window.statusBarColor = Color.BLACK
} else {
window.statusBarColor = ThemeUtils.getStatusBarColor(this)
Expand Down Expand Up @@ -67,8 +67,8 @@ abstract class ThemableBrowserActivity : AppCompatActivity() {
super.onResume()
resetPreferences()
shouldRunOnResumeActions = true
val themePreference = preferences.useTheme
val drawerTabs = preferences.getShowTabsInDrawer(!isTablet)
val themePreference = userPreferences.useTheme
val drawerTabs = userPreferences.showTabsInDrawer
if (themeId != themePreference || showTabsInDrawer != drawerTabs) {
restart()
}
Expand Down
Expand Up @@ -12,7 +12,7 @@ import acr.browser.lightning.database.HistoryItem
import acr.browser.lightning.database.bookmark.BookmarkRepository
import acr.browser.lightning.dialog.LightningDialogBuilder
import acr.browser.lightning.favicon.FaviconModel
import acr.browser.lightning.preference.PreferenceManager
import acr.browser.lightning.preference.UserPreferences
import acr.browser.lightning.reading.activity.ReadingActivity
import acr.browser.lightning.utils.ThemeUtils
import android.app.Activity
Expand Down Expand Up @@ -52,7 +52,7 @@ class BookmarksFragment : Fragment(), View.OnClickListener, View.OnLongClickList
// Dialog builder
@Inject internal lateinit var bookmarksDialogBuilder: LightningDialogBuilder

@Inject internal lateinit var preferenceManager: PreferenceManager
@Inject internal lateinit var userPreferences: UserPreferences

@Inject internal lateinit var faviconModel: FaviconModel

Expand Down Expand Up @@ -86,7 +86,7 @@ class BookmarksFragment : Fragment(), View.OnClickListener, View.OnLongClickList

uiController = context as UIController
isIncognito = arguments?.getBoolean(INCOGNITO_MODE, false) == true
val darkTheme = preferenceManager.useTheme != 0 || isIncognito
val darkTheme = userPreferences.useTheme != 0 || isIncognito
webPageBitmap = ThemeUtils.getThemedBitmap(context, R.drawable.ic_webpage, darkTheme)
folderBitmap = ThemeUtils.getThemedBitmap(context, R.drawable.ic_folder, darkTheme)
iconColor = if (darkTheme) {
Expand Down Expand Up @@ -175,7 +175,7 @@ class BookmarksFragment : Fragment(), View.OnClickListener, View.OnLongClickList

fun reinitializePreferences() {
val activity = activity ?: return
val darkTheme = preferenceManager.useTheme != 0 || isIncognito
val darkTheme = userPreferences.useTheme != 0 || isIncognito
webPageBitmap = ThemeUtils.getThemedBitmap(activity, R.drawable.ic_webpage, darkTheme)
folderBitmap = ThemeUtils.getThemedBitmap(activity, R.drawable.ic_folder, darkTheme)
iconColor = if (darkTheme)
Expand Down
Expand Up @@ -7,7 +7,7 @@ import acr.browser.lightning.browser.TabsView
import acr.browser.lightning.browser.fragment.anim.HorizontalItemAnimator
import acr.browser.lightning.browser.fragment.anim.VerticalItemAnimator
import acr.browser.lightning.controller.UIController
import acr.browser.lightning.preference.PreferenceManager
import acr.browser.lightning.preference.UserPreferences
import acr.browser.lightning.utils.DrawableUtils
import acr.browser.lightning.utils.ThemeUtils
import acr.browser.lightning.utils.Utils
Expand Down Expand Up @@ -51,7 +51,7 @@ class TabsFragment : Fragment(), View.OnClickListener, View.OnLongClickListener,
private var tabsAdapter: LightningViewAdapter? = null
private lateinit var uiController: UIController

@Inject internal lateinit var preferences: PreferenceManager
@Inject internal lateinit var userPreferences: UserPreferences

init {
BrowserApp.appComponent.inject(this)
Expand All @@ -64,8 +64,8 @@ class TabsFragment : Fragment(), View.OnClickListener, View.OnLongClickListener,
uiController = activity as UIController
isIncognito = arguments?.getBoolean(IS_INCOGNITO, false) == true
showInNavigationDrawer = arguments?.getBoolean(VERTICAL_MODE, true) == true
darkTheme = preferences.useTheme != 0 || isIncognito
colorMode = preferences.colorModeEnabled
darkTheme = userPreferences.useTheme != 0 || isIncognito
colorMode = userPreferences.colorModeEnabled
colorMode = colorMode and !darkTheme

iconColor = if (darkTheme) {
Expand Down Expand Up @@ -156,8 +156,8 @@ class TabsFragment : Fragment(), View.OnClickListener, View.OnLongClickListener,

fun reinitializePreferences() {
val activity = activity ?: return
darkTheme = preferences.useTheme != 0 || isIncognito
colorMode = preferences.colorModeEnabled
darkTheme = userPreferences.useTheme != 0 || isIncognito
colorMode = userPreferences.colorModeEnabled
colorMode = colorMode and !darkTheme
iconColor = if (darkTheme) {
ThemeUtils.getIconDarkThemeColor(activity)
Expand Down

0 comments on commit b735766

Please sign in to comment.