diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/DatabaseFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/DatabaseFragment.kt index f02d504ec..e59b48871 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/DatabaseFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/DatabaseFragment.kt @@ -2,16 +2,16 @@ package com.kunzisoft.keepass.activities.fragments import android.os.Bundle import android.view.View +import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import com.kunzisoft.keepass.activities.legacy.DatabaseRetrieval import com.kunzisoft.keepass.activities.legacy.resetAppTimeoutWhenViewTouchedOrFocused -import com.kunzisoft.keepass.activities.stylish.StylishFragment import com.kunzisoft.keepass.database.ContextualDatabase import com.kunzisoft.keepass.database.element.binary.BinaryData import com.kunzisoft.keepass.tasks.ActionRunnable import com.kunzisoft.keepass.viewmodels.DatabaseViewModel -abstract class DatabaseFragment : StylishFragment(), DatabaseRetrieval { +abstract class DatabaseFragment : Fragment(), DatabaseRetrieval { private val mDatabaseViewModel: DatabaseViewModel by activityViewModels() protected var mDatabase: ContextualDatabase? = null diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt index 5ba31059e..d796d048b 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryEditFragment.kt @@ -77,12 +77,11 @@ class EntryEditFragment: DatabaseFragment() { super.onCreateView(inflater, container, savedInstanceState) // Retrieve the textColor to tint the icon - val taIconColor = contextThemed?.theme?.obtainStyledAttributes(intArrayOf(android.R.attr.textColor)) + val taIconColor = context?.obtainStyledAttributes(intArrayOf(android.R.attr.textColor)) mIconColor = taIconColor?.getColor(0, Color.BLACK) ?: Color.BLACK taIconColor?.recycle() - return inflater.cloneInContext(contextThemed) - .inflate(R.layout.fragment_entry_edit, container, false) + return inflater.inflate(R.layout.fragment_entry_edit, container, false) } override fun onViewCreated(view: View, diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryFragment.kt index a9352ba0d..a9de1526c 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryFragment.kt @@ -59,8 +59,7 @@ class EntryFragment: DatabaseFragment() { savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) - return inflater.cloneInContext(contextThemed) - .inflate(R.layout.fragment_entry, container, false) + return inflater.inflate(R.layout.fragment_entry, container, false) } override fun onViewCreated(view: View, diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryHistoryFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryHistoryFragment.kt index a270e8e90..0beaa2bb6 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryHistoryFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/EntryHistoryFragment.kt @@ -4,16 +4,16 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.kunzisoft.keepass.R -import com.kunzisoft.keepass.activities.stylish.StylishFragment import com.kunzisoft.keepass.adapters.EntryHistoryAdapter import com.kunzisoft.keepass.model.EntryInfo import com.kunzisoft.keepass.viewmodels.EntryViewModel -class EntryHistoryFragment: StylishFragment() { +class EntryHistoryFragment: Fragment() { private lateinit var historyContainerView: View private lateinit var historyListView: RecyclerView @@ -28,8 +28,7 @@ class EntryHistoryFragment: StylishFragment() { ): View? { super.onCreateView(inflater, container, savedInstanceState) - return inflater.cloneInContext(contextThemed) - .inflate(R.layout.fragment_entry_history, container, false) + return inflater.inflate(R.layout.fragment_entry_history, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt index d57693c4a..d71919e78 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/GroupFragment.kt @@ -181,9 +181,9 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen mRecycleBinEnable = database?.isRecycleBinEnabled == true mRecycleBin = database?.recycleBin - contextThemed?.let { context -> + context?.let { context -> database?.let { database -> - mAdapter = NodesAdapter(contextThemed ?: context, database).apply { + mAdapter = NodesAdapter(context, database).apply { setOnNodeClickListener(object : NodesAdapter.NodeClickCallback { override fun onNodeClick(database: ContextualDatabase, node: Node) { if (mCurrentGroup?.isVirtual == false @@ -241,8 +241,7 @@ class GroupFragment : DatabaseFragment(), SortDialogFragment.SortSelectionListen override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { super.onCreateView(inflater, container, savedInstanceState) // To apply theme - return inflater.cloneInContext(contextThemed) - .inflate(R.layout.fragment_nodes, container, false) + return inflater.inflate(R.layout.fragment_nodes, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/IconFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/IconFragment.kt index e84da4cc5..929015b30 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/IconFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/IconFragment.kt @@ -59,7 +59,7 @@ abstract class IconFragment : DatabaseFragment(), super.onViewCreated(view, savedInstanceState) // Retrieve the textColor to tint the icon - val ta = contextThemed?.obtainStyledAttributes(intArrayOf(android.R.attr.textColor)) + val ta = context?.obtainStyledAttributes(intArrayOf(android.R.attr.textColor)) val tintColor = ta?.getColor(0, Color.BLACK) ?: Color.BLACK ta?.recycle() diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PassphraseGeneratorFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PassphraseGeneratorFragment.kt index a8a978ad8..09820bd8a 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PassphraseGeneratorFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PassphraseGeneratorFragment.kt @@ -73,7 +73,7 @@ class PassphraseGeneratorFragment : DatabaseFragment() { minSliderWordCount = resources.getInteger(R.integer.passphrase_generator_word_count_min) maxSliderWordCount = resources.getInteger(R.integer.passphrase_generator_word_count_max) - contextThemed?.let { context -> + context?.let { context -> passphraseCopyView?.visibility = if(PreferencesUtil.allowCopyProtectedFields(context)) View.VISIBLE else View.GONE val clipboardHelper = ClipboardHelper(context) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt index cb7e89d1a..e3c1c08e8 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/fragments/PasswordGeneratorFragment.kt @@ -94,7 +94,7 @@ class PasswordGeneratorFragment : DatabaseFragment() { atLeastOneCompound = view.findViewById(R.id.atLeastOne_filter) excludeAmbiguousCompound = view.findViewById(R.id.excludeAmbiguous_filter) - contextThemed?.let { context -> + context?.let { context -> passwordCopyView?.visibility = if(PreferencesUtil.allowCopyProtectedFields(context)) View.VISIBLE else View.GONE val clipboardHelper = ClipboardHelper(context) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/stylish/StylishFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/stylish/StylishFragment.kt deleted file mode 100644 index f977b7db3..000000000 --- a/app/src/main/java/com/kunzisoft/keepass/activities/stylish/StylishFragment.kt +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright 2019 Jeremy Jamet / Kunzisoft. - * - * This file is part of KeePassDX. - * - * KeePassDX 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. - * - * KeePassDX 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 KeePassDX. If not, see . - * - */ -package com.kunzisoft.keepass.activities.stylish - -import android.content.Context -import android.graphics.Color -import android.os.Build -import android.os.Bundle -import android.util.Log -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.appcompat.view.ContextThemeWrapper -import androidx.core.view.WindowInsetsControllerCompat -import androidx.fragment.app.Fragment -import com.google.android.material.color.DynamicColors - -abstract class StylishFragment : Fragment() { - - protected var contextThemed: Context? = null - - override fun onAttach(context: Context) { - super.onAttach(context) - - contextThemed = if (Stylish.isDynamic(context)) { - DynamicColors.wrapContextIfAvailable(context) - } else { - ContextThemeWrapper(context, Stylish.getThemeId(context)) - } - } - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - // To fix status bar color, only useful before dynamic Material You - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - val window = requireActivity().window - val defaultColor = Color.BLACK - val windowInset = WindowInsetsControllerCompat(window, window.decorView) - try { - val taStatusBarColor = - contextThemed?.theme?.obtainStyledAttributes(intArrayOf(android.R.attr.statusBarColor)) - window.statusBarColor = - taStatusBarColor?.getColor(0, defaultColor) ?: defaultColor - taStatusBarColor?.recycle() - } catch (e: Exception) { - Log.e(TAG, "Unable to retrieve theme : status bar color", e) - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - try { - val taWindowStatusLight = - contextThemed?.theme?.obtainStyledAttributes(intArrayOf(android.R.attr.windowLightStatusBar)) - windowInset.isAppearanceLightStatusBars = taWindowStatusLight - ?.getBoolean(0, false) == true - taWindowStatusLight?.recycle() - } catch (e: Exception) { - Log.e(TAG, "Unable to retrieve theme : window light status bar", e) - } - } - try { - val taNavigationBarColor = - contextThemed?.theme?.obtainStyledAttributes(intArrayOf(android.R.attr.navigationBarColor)) - window.navigationBarColor = - taNavigationBarColor?.getColor(0, defaultColor) ?: defaultColor - taNavigationBarColor?.recycle() - } catch (e: Exception) { - Log.e(TAG, "Unable to retrieve theme : navigation bar color", e) - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) { - try { - val taWindowLightNavigationBar = - contextThemed?.theme?.obtainStyledAttributes(intArrayOf(android.R.attr.windowLightNavigationBar)) - windowInset.isAppearanceLightNavigationBars = taWindowLightNavigationBar - ?.getBoolean(0, false) == true - taWindowLightNavigationBar?.recycle() - } catch (e: Exception) { - Log.e(TAG, "Unable to retrieve theme : navigation light navigation bar", e) - } - } - } - } - return super.onCreateView(inflater, container, savedInstanceState) - } - - override fun onDetach() { - contextThemed = null - super.onDetach() - } - - companion object { - private val TAG = StylishFragment::class.java.simpleName - } -} diff --git a/app/src/main/java/com/kunzisoft/keepass/adapters/NodesAdapter.kt b/app/src/main/java/com/kunzisoft/keepass/adapters/NodesAdapter.kt index 8eb46ad33..e5638cd37 100644 --- a/app/src/main/java/com/kunzisoft/keepass/adapters/NodesAdapter.kt +++ b/app/src/main/java/com/kunzisoft/keepass/adapters/NodesAdapter.kt @@ -118,27 +118,27 @@ class NodesAdapter ( this.mNodeSortedListCallback = NodeSortedListCallback() this.mNodeSortedList = SortedList(Node::class.java, mNodeSortedListCallback) - val taColorSurfaceContainer = context.theme.obtainStyledAttributes(intArrayOf(R.attr.colorSurfaceContainer)) + val taColorSurfaceContainer = context.obtainStyledAttributes(intArrayOf(R.attr.colorSurfaceContainer)) this.mColorSurfaceContainer = taColorSurfaceContainer.getColor(0, Color.BLACK) taColorSurfaceContainer.recycle() // Retrieve the color to tint the icon - val taTextColorPrimary = context.theme.obtainStyledAttributes(intArrayOf(android.R.attr.textColorPrimary)) + val taTextColorPrimary = context.obtainStyledAttributes(intArrayOf(android.R.attr.textColorPrimary)) this.mTextColorPrimary = taTextColorPrimary.getColor(0, Color.BLACK) taTextColorPrimary.recycle() // To get text color - val taTextColor = context.theme.obtainStyledAttributes(intArrayOf(android.R.attr.textColor)) + val taTextColor = context.obtainStyledAttributes(intArrayOf(android.R.attr.textColor)) this.mTextColor = taTextColor.getColor(0, Color.BLACK) taTextColor.recycle() // To get text color secondary - val taTextColorSecondary = context.theme.obtainStyledAttributes(intArrayOf(android.R.attr.textColorSecondary)) + val taTextColorSecondary = context.obtainStyledAttributes(intArrayOf(android.R.attr.textColorSecondary)) this.mTextColorSecondary = taTextColorSecondary.getColor(0, Color.BLACK) taTextColorSecondary.recycle() // To get background color for selection - val taColorSecondary = context.theme.obtainStyledAttributes(intArrayOf(R.attr.colorSecondary)) + val taColorSecondary = context.obtainStyledAttributes(intArrayOf(R.attr.colorSecondary)) this.mColorSecondary = taColorSecondary.getColor(0, Color.GRAY) taColorSecondary.recycle() // To get text color for selection - val taColorOnSecondary = context.theme.obtainStyledAttributes(intArrayOf(R.attr.colorOnSecondary)) + val taColorOnSecondary = context.obtainStyledAttributes(intArrayOf(R.attr.colorOnSecondary)) this.mColorOnSecondary = taColorOnSecondary.getColor(0, Color.WHITE) taColorOnSecondary.recycle() } diff --git a/app/src/main/java/com/kunzisoft/keepass/adapters/TemplatesSelectorAdapter.kt b/app/src/main/java/com/kunzisoft/keepass/adapters/TemplatesSelectorAdapter.kt index 54d056711..57e7a2d83 100644 --- a/app/src/main/java/com/kunzisoft/keepass/adapters/TemplatesSelectorAdapter.kt +++ b/app/src/main/java/com/kunzisoft/keepass/adapters/TemplatesSelectorAdapter.kt @@ -16,7 +16,7 @@ import com.kunzisoft.keepass.icons.IconDrawableFactory class TemplatesSelectorAdapter( - context: Context, + private val context: Context, private var templates: List