Copione merged onto master
commit
beb974db89
|
@ -553,11 +553,11 @@ private fun assertWelcomeHeader() =
|
|||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
|
||||
private fun assertGetTheMostHeader() =
|
||||
onView(allOf(withText("Get the most out of Firefox Preview.")))
|
||||
onView(allOf(withText("Start syncing bookmarks, passwords, and more with your Firefox account.")))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
|
||||
private fun assertAccountsSignInButton() =
|
||||
onView(ViewMatchers.withResourceName("turn_on_sync_button"))
|
||||
onView(ViewMatchers.withResourceName("fxa_sign_in_button"))
|
||||
.check(matches(withEffectiveVisibility(Visibility.VISIBLE)))
|
||||
|
||||
private fun assertGetToKnowHeader() =
|
||||
|
|
|
@ -120,7 +120,6 @@ class AddonsManagementFragment : Fragment(R.layout.fragment_add_ons_management)
|
|||
addonNameTextColor = ThemeManager.resolveAttribute(R.attr.primaryText, context),
|
||||
addonSummaryTextColor = ThemeManager.resolveAttribute(R.attr.secondaryText, context),
|
||||
sectionsTypeFace = ResourcesCompat.getFont(context, R.font.metropolis_semibold),
|
||||
addonBackgroundIconColor = ThemeManager.resolveAttribute(R.attr.inset, requireContext()),
|
||||
addonAllowPrivateBrowsingLabelDrawableRes = R.drawable.ic_add_on_private_browsing_label
|
||||
)
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import mozilla.components.browser.state.selector.findTab
|
|||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.concept.storage.BookmarksStorage
|
||||
import mozilla.components.support.ktx.android.content.getColorFromAttr
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.browser.browsingmode.BrowsingMode
|
||||
|
|
|
@ -6,6 +6,9 @@ package org.mozilla.fenix.ext
|
|||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Build
|
||||
import android.provider.Settings
|
||||
import android.view.ContextThemeWrapper
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
@ -89,3 +92,21 @@ fun Context.getStringWithArgSafe(@StringRes resId: Int, formatArg: String): Stri
|
|||
*/
|
||||
val Context.accessibilityManager: AccessibilityManager get() =
|
||||
getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
|
||||
|
||||
/**
|
||||
* Used to navigate to system notifications settings for app
|
||||
*/
|
||||
fun Context.navigateToNotificationsSettings() {
|
||||
val intent = Intent()
|
||||
intent.let {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
it.action = Settings.ACTION_APP_NOTIFICATION_SETTINGS
|
||||
it.putExtra(Settings.EXTRA_APP_PACKAGE, this.packageName)
|
||||
} else {
|
||||
it.action = "android.settings.APP_NOTIFICATION_SETTINGS"
|
||||
it.putExtra("app_package", this.packageName)
|
||||
it.putExtra("app_uid", this.applicationInfo.uid)
|
||||
}
|
||||
}
|
||||
startActivity(intent)
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import mozilla.components.concept.sync.AccountObserver
|
|||
import mozilla.components.concept.sync.AuthType
|
||||
import mozilla.components.concept.sync.OAuthAccount
|
||||
import mozilla.components.support.ktx.android.content.getColorFromAttr
|
||||
import org.mozilla.fenix.FeatureFlags
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.settings
|
||||
|
|
|
@ -31,9 +31,9 @@ class OnboardingAutomaticSignInViewHolder(
|
|||
private val headerText = view.header_text
|
||||
|
||||
init {
|
||||
view.turn_on_sync_button.setOnClickListener {
|
||||
view.fxa_sign_in_button.setOnClickListener {
|
||||
scope.launch {
|
||||
onClick(it.turn_on_sync_button)
|
||||
onClick(it.fxa_sign_in_button)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,40 +5,40 @@
|
|||
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
|
||||
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.navigation.Navigation
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import kotlinx.android.synthetic.main.onboarding_manual_signin.view.*
|
||||
import mozilla.components.support.ktx.android.content.getDrawableWithTint
|
||||
import mozilla.components.support.ktx.android.view.putCompoundDrawablesRelativeWithIntrinsicBounds
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.ext.addUnderline
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.home.HomeFragmentDirections
|
||||
import org.mozilla.fenix.onboarding.OnboardingController
|
||||
import org.mozilla.fenix.onboarding.OnboardingInteractor
|
||||
|
||||
class OnboardingManualSignInViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
|
||||
private val headerText = view.header_text
|
||||
|
||||
init {
|
||||
view.turn_on_sync_button.setOnClickListener {
|
||||
val interactor = OnboardingInteractor(OnboardingController(itemView.context))
|
||||
|
||||
view.fxa_sign_in_button.setOnClickListener {
|
||||
it.context.components.analytics.metrics.track(Event.OnboardingManualSignIn)
|
||||
|
||||
val directions = HomeFragmentDirections.actionGlobalTurnOnSync()
|
||||
Navigation.findNavController(view).navigate(directions)
|
||||
}
|
||||
|
||||
view.learn_more.addUnderline()
|
||||
view.learn_more.setOnClickListener {
|
||||
interactor.onLearnMoreClicked()
|
||||
}
|
||||
}
|
||||
|
||||
fun bind() {
|
||||
val context = itemView.context
|
||||
|
||||
val appName = context.getString(R.string.app_name)
|
||||
headerText.text = context.getString(R.string.onboarding_firefox_account_header, appName)
|
||||
val icon = context.getDrawableWithTint(
|
||||
R.drawable.ic_onboarding_firefox_accounts,
|
||||
ContextCompat.getColor(context, R.color.white_color)
|
||||
)
|
||||
headerText.putCompoundDrawablesRelativeWithIntrinsicBounds(start = icon)
|
||||
headerText.text = context.getString(R.string.onboarding_firefox_account_header)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
|
|
@ -16,7 +16,13 @@ import mozilla.components.lib.state.Store
|
|||
* @property size The size in bytes of the download item
|
||||
* @property contentType The type of file the download is
|
||||
*/
|
||||
data class DownloadItem(val id: Long, val fileName: String?, val filePath: String, val size: String, val contentType: String?)
|
||||
data class DownloadItem(
|
||||
val id: Long,
|
||||
val fileName: String?,
|
||||
val filePath: String,
|
||||
val size: String,
|
||||
val contentType: String?
|
||||
)
|
||||
|
||||
/**
|
||||
* The [Store] for holding the [DownloadFragmentState] and applying [DownloadFragmentAction]s.
|
||||
|
|
|
@ -15,13 +15,9 @@ class DownloadInteractor(
|
|||
downloadController.handleOpen(item)
|
||||
}
|
||||
|
||||
override fun select(item: DownloadItem) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
override fun select(item: DownloadItem) { /* noop */ }
|
||||
|
||||
override fun deselect(item: DownloadItem) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
override fun deselect(item: DownloadItem) { /* noop */ }
|
||||
|
||||
override fun onBackPressed(): Boolean {
|
||||
return downloadController.handleBackPressed()
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
|
||||
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
@ -9,8 +7,10 @@ package org.mozilla.fenix.library.downloads
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.SimpleItemAnimator
|
||||
import kotlinx.android.synthetic.main.component_downloads.*
|
||||
import kotlinx.android.synthetic.main.component_downloads.view.*
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import org.mozilla.fenix.R
|
||||
|
@ -56,10 +56,11 @@ class DownloadView(
|
|||
|
||||
fun update(state: DownloadFragmentState) {
|
||||
|
||||
view.swipe_refresh.isEnabled =
|
||||
state.mode === DownloadFragmentState.Mode.Normal
|
||||
view.swipe_refresh.isEnabled = false
|
||||
mode = state.mode
|
||||
|
||||
updateEmptyState(state.items.isNotEmpty())
|
||||
|
||||
downloadAdapter.updateMode(state.mode)
|
||||
downloadAdapter.updateDownloads(state.items)
|
||||
|
||||
|
@ -68,6 +69,14 @@ class DownloadView(
|
|||
)
|
||||
}
|
||||
|
||||
fun updateEmptyState(userHasDownloads: Boolean) {
|
||||
download_list.isVisible = userHasDownloads
|
||||
download_empty_view.isVisible = !userHasDownloads
|
||||
if (!userHasDownloads) {
|
||||
download_empty_view.announceForAccessibility(context.getString(R.string.download_empty_message))
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed(): Boolean {
|
||||
return interactor.onBackPressed()
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.onboarding
|
||||
|
||||
import android.content.Context
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
|
||||
class OnboardingController(
|
||||
private val context: Context
|
||||
) {
|
||||
fun handleLearnMoreClicked() {
|
||||
(context as HomeActivity).openToBrowserAndLoad(
|
||||
searchTermOrURL = SupportUtils.getFirefoxAccountSumoUrl(),
|
||||
newTab = true,
|
||||
from = BrowserDirection.FromHome
|
||||
)
|
||||
}
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.onboarding
|
||||
|
||||
class OnboardingInteractor(private val onboardingController: OnboardingController) {
|
||||
|
||||
/**
|
||||
* Called when the user clicks the learn more link
|
||||
* @param url the url the suggestion was providing
|
||||
*/
|
||||
fun onLearnMoreClicked() = onboardingController.handleLearnMoreClicked()
|
||||
}
|
|
@ -5,10 +5,14 @@
|
|||
package org.mozilla.fenix.searchdialog
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.DialogInterface
|
||||
import android.graphics.Typeface
|
||||
import android.os.Bundle
|
||||
import android.text.style.StyleSpan
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatDialogFragment
|
||||
import androidx.constraintlayout.widget.ConstraintProperties.BOTTOM
|
||||
import androidx.constraintlayout.widget.ConstraintProperties.PARENT_ID
|
||||
|
@ -16,14 +20,26 @@ import androidx.constraintlayout.widget.ConstraintProperties.TOP
|
|||
import androidx.constraintlayout.widget.ConstraintSet
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import kotlinx.android.synthetic.main.fragment_search.view.*
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.*
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.pill_wrapper
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.qr_scan_button
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.toolbar
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.view.*
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.view.search_engines_shortcut_button
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.view.qr_scan_button
|
||||
import kotlinx.android.synthetic.main.fragment_search_dialog.view.toolbar
|
||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
|
||||
import mozilla.components.feature.qr.QrFeature
|
||||
import mozilla.components.lib.state.ext.consumeFrom
|
||||
import mozilla.components.support.base.feature.UserInteractionHandler
|
||||
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
|
||||
import mozilla.components.support.ktx.android.content.hasCamera
|
||||
import mozilla.components.support.ktx.android.content.res.getSpanned
|
||||
import mozilla.components.support.ktx.android.view.hideKeyboard
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.toolbar.ToolbarPosition
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
import org.mozilla.fenix.ext.settings
|
||||
|
@ -42,6 +58,9 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|||
private lateinit var store: SearchDialogFragmentStore
|
||||
private lateinit var toolbarView: ToolbarView
|
||||
private lateinit var awesomeBarView: AwesomeBarView
|
||||
private var firstUpdate = true
|
||||
|
||||
private val qrFeature = ViewBoundFeatureWrapper<QrFeature>()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -101,7 +120,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|||
awesomeBarView = AwesomeBarView(
|
||||
requireContext(),
|
||||
interactor,
|
||||
view.awesomeBar
|
||||
view.awesome_bar
|
||||
)
|
||||
|
||||
return view
|
||||
|
@ -111,6 +130,101 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
setupConstraints(view)
|
||||
|
||||
search_wrapper.setOnClickListener {
|
||||
it.hideKeyboard()
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
|
||||
view.search_engines_shortcut_button.setOnClickListener {
|
||||
interactor.onSearchShortcutsButtonClicked()
|
||||
}
|
||||
|
||||
qr_scan_button.visibility = if (context?.hasCamera() == true) View.VISIBLE else View.GONE
|
||||
|
||||
qr_scan_button.setOnClickListener {
|
||||
if (!requireContext().hasCamera()) { return@setOnClickListener }
|
||||
|
||||
toolbarView.view.clearFocus()
|
||||
requireComponents.analytics.metrics.track(Event.QRScannerOpened)
|
||||
qrFeature.get()?.scan(R.id.search_wrapper)
|
||||
}
|
||||
|
||||
qrFeature.set(
|
||||
createQrFeature(),
|
||||
owner = this,
|
||||
view = view
|
||||
)
|
||||
|
||||
consumeFrom(store) {
|
||||
val shouldShowAwesomebar =
|
||||
!firstUpdate &&
|
||||
it.query.isNotBlank() ||
|
||||
it.showSearchShortcuts
|
||||
|
||||
awesome_bar?.visibility = if (shouldShowAwesomebar) View.VISIBLE else View.INVISIBLE
|
||||
toolbarView.update(it)
|
||||
awesomeBarView.update(it)
|
||||
firstUpdate = false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed(): Boolean {
|
||||
return when {
|
||||
qrFeature.onBackPressed() -> {
|
||||
toolbarView.view.edit.focus()
|
||||
view?.qr_scan_button?.isChecked = false
|
||||
toolbarView.view.requestFocus()
|
||||
true
|
||||
}
|
||||
else -> {
|
||||
view?.hideKeyboard()
|
||||
dismissAllowingStateLoss()
|
||||
true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun createQrFeature(): QrFeature {
|
||||
return QrFeature(
|
||||
requireContext(),
|
||||
fragmentManager = childFragmentManager,
|
||||
onNeedToRequestPermissions = { permissions ->
|
||||
requestPermissions(permissions, REQUEST_CODE_CAMERA_PERMISSIONS)
|
||||
},
|
||||
onScanResult = { result ->
|
||||
qr_scan_button.isChecked = false
|
||||
activity?.let {
|
||||
AlertDialog.Builder(it).apply {
|
||||
val spannable = resources.getSpanned(
|
||||
R.string.qr_scanner_confirmation_dialog_message,
|
||||
getString(R.string.app_name) to StyleSpan(Typeface.BOLD),
|
||||
result to StyleSpan(Typeface.ITALIC)
|
||||
)
|
||||
setMessage(spannable)
|
||||
setNegativeButton(R.string.qr_scanner_dialog_negative) { dialog: DialogInterface, _ ->
|
||||
requireComponents.analytics.metrics.track(Event.QRScannerNavigationDenied)
|
||||
dialog.cancel()
|
||||
}
|
||||
setPositiveButton(R.string.qr_scanner_dialog_positive) { dialog: DialogInterface, _ ->
|
||||
requireComponents.analytics.metrics.track(Event.QRScannerNavigationAllowed)
|
||||
(activity as HomeActivity)
|
||||
.openToBrowserAndLoad(
|
||||
searchTermOrURL = result,
|
||||
newTab = store.state.tabId == null,
|
||||
from = BrowserDirection.FromSearch
|
||||
)
|
||||
dialog.dismiss()
|
||||
}
|
||||
create()
|
||||
}.show()
|
||||
requireComponents.analytics.metrics.track(Event.QRScannerPromptDisplayed)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun setupConstraints(view: View) {
|
||||
if (view.context.settings().toolbarPosition == ToolbarPosition.BOTTOM) {
|
||||
ConstraintSet().apply {
|
||||
clone(search_wrapper)
|
||||
|
@ -118,31 +232,17 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|||
clear(toolbar.id, TOP)
|
||||
connect(toolbar.id, BOTTOM, PARENT_ID, BOTTOM)
|
||||
|
||||
clear(awesomeBar.id, TOP)
|
||||
clear(awesomeBar.id, BOTTOM)
|
||||
connect(awesomeBar.id, TOP, PARENT_ID, TOP)
|
||||
connect(awesomeBar.id, BOTTOM, toolbar.id, TOP)
|
||||
clear(awesome_bar.id, TOP)
|
||||
clear(pill_wrapper.id, BOTTOM)
|
||||
connect(awesome_bar.id, TOP, PARENT_ID, TOP)
|
||||
connect(pill_wrapper.id, BOTTOM, toolbar.id, TOP)
|
||||
|
||||
applyTo(search_wrapper)
|
||||
}
|
||||
}
|
||||
|
||||
search_wrapper.setOnClickListener {
|
||||
it.hideKeyboard()
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
|
||||
consumeFrom(store) {
|
||||
awesomeBar?.visibility = if (it.query.isEmpty()) View.INVISIBLE else View.VISIBLE
|
||||
toolbarView.update(it)
|
||||
awesomeBarView.update(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed(): Boolean {
|
||||
view?.hideKeyboard()
|
||||
dismissAllowingStateLoss()
|
||||
|
||||
return true
|
||||
companion object {
|
||||
private const val REQUEST_CODE_CAMERA_PERMISSIONS = 1
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,7 @@ import org.mozilla.fenix.ext.application
|
|||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.getPreferenceKey
|
||||
import org.mozilla.fenix.ext.metrics
|
||||
import org.mozilla.fenix.ext.navigateToNotificationsSettings
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
|
@ -271,10 +272,7 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
SettingsFragmentDirections.actionSettingsFragmentToDeleteBrowsingDataOnQuitFragment()
|
||||
}
|
||||
resources.getString(R.string.pref_key_notifications) -> {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
|
||||
startActivity(intent)
|
||||
}
|
||||
context?.navigateToNotificationsSettings()
|
||||
null
|
||||
}
|
||||
resources.getString(R.string.pref_key_customize) -> {
|
||||
|
@ -359,10 +357,6 @@ class SettingsFragment : PreferenceFragmentCompat() {
|
|||
findPreference<Preference>(
|
||||
getPreferenceKey(R.string.pref_key_debug_settings)
|
||||
)?.isVisible = requireContext().settings().showSecretDebugMenuThisSession
|
||||
|
||||
findPreference<Preference>(
|
||||
getPreferenceKey(R.string.pref_key_notifications)
|
||||
)?.isVisible = requireContext().settings().showNotificationsSetting
|
||||
}
|
||||
|
||||
private fun getClickListenerForMakeDefaultBrowser(): Preference.OnPreferenceClickListener {
|
||||
|
|
|
@ -74,6 +74,10 @@ object SupportUtils {
|
|||
return "https://support.mozilla.org/$langTag/kb/$escapedTopic"
|
||||
}
|
||||
|
||||
fun getFirefoxAccountSumoUrl(): String {
|
||||
return "https://support.mozilla.org/kb/access-mozilla-services-firefox-account"
|
||||
}
|
||||
|
||||
fun getMozillaPageUrl(page: MozillaPage, locale: Locale = Locale.getDefault()): String {
|
||||
val path = page.path
|
||||
val langTag = getLanguageTag(locale)
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="40dp"
|
||||
android:height="40dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M17.6655,14.2092C16.1843,12.4998 14.1333,14.8 11.9997,14.8C9.8675,14.8 7.8151,12.4998 6.3339,14.2092C5.9139,14.6936 5.8803,15.3992 6.2401,15.9284C7.4959,17.7764 9.5959,19 11.9997,19C14.4035,19 16.5035,17.7764 17.7593,15.9284C18.1205,15.3992 18.0855,14.6936 17.6655,14.2092M16.25,9.25C16.25,6.9026 14.3474,5 12,5C9.6526,5 7.75,6.9026 7.75,9.25C7.75,11.5974 9.6526,13.5 12,13.5C14.3474,13.5 16.25,11.5974 16.25,9.25Z" />
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,22C6.4772,22 2,17.5228 2,12C2,6.4772 6.4772,2 12,2C17.5228,2 22,6.4772 22,12C21.9939,17.5203 17.5203,21.9939 12,22L12,22ZM12,4C7.5817,4 4,7.5817 4,12C4,16.4183 7.5817,20 12,20C16.4183,20 20,16.4183 20,12C19.995,7.5838 16.4162,4.005 12,4Z" />
|
||||
</vector>
|
|
@ -30,7 +30,7 @@
|
|||
app:layout_constraintTop_toTopOf="parent"/>
|
||||
<mozilla.components.browser.awesomebar.BrowserAwesomeBar
|
||||
xmlns:mozac="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/awesomeBar"
|
||||
android:id="@+id/awesome_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:fadingEdge="horizontal"
|
||||
|
@ -39,11 +39,40 @@
|
|||
android:requiresFadingEdge="vertical"
|
||||
android:background="?attr/foundation"
|
||||
android:visibility="invisible"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@+id/pill_wrapper"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/toolbar"
|
||||
mozac:awesomeBarChipBackgroundColor="@color/photonGreen50"
|
||||
mozac:awesomeBarDescriptionTextColor="?secondaryText"
|
||||
mozac:awesomeBarTitleTextColor="?primaryText" />
|
||||
<LinearLayout
|
||||
android:id="@+id/pill_wrapper"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/search_fragment_pill_height"
|
||||
android:background="?foundation"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="@dimen/search_fragment_pill_padding_start"
|
||||
android:paddingTop="@dimen/search_fragment_pill_padding_vertical"
|
||||
android:paddingEnd="@dimen/search_fragment_pill_padding_end"
|
||||
android:paddingBottom="@dimen/search_fragment_pill_padding_vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent">
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/qr_scan_button"
|
||||
style="@style/search_pill"
|
||||
android:layout_marginEnd="@dimen/search_fragment_scan_button_margin_end"
|
||||
android:textOff="@string/search_scan_button"
|
||||
android:textOn="@string/search_scan_button"
|
||||
app:drawableStartCompat="@drawable/ic_qr" />
|
||||
|
||||
<ToggleButton
|
||||
android:id="@+id/search_engines_shortcut_button"
|
||||
style="@style/search_pill"
|
||||
android:textOff="@string/search_engine_button"
|
||||
android:textOn="@string/search_engine_button"
|
||||
app:drawableStartCompat="@drawable/ic_search" />
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
tools:text="@string/onboarding_firefox_account_auto_signin_header_2" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/turn_on_sync_button"
|
||||
android:id="@+id/fxa_sign_in_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/onboarding_card"
|
||||
|
@ -11,22 +12,51 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/avatar_icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingEnd="12dp"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/ic_onboarding_avatar_anonymous_large"
|
||||
tools:ignore="RtlSymmetry" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/header_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="14dp"
|
||||
android:drawablePadding="12dp"
|
||||
android:textAppearance="@style/Header16TextStyle"
|
||||
android:lineSpacingExtra="8sp"
|
||||
android:textColor="@color/neutral_text"
|
||||
app:drawableTint="@color/white_color"
|
||||
tools:text="@string/onboarding_firefox_account_header" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@id/avatar_icon"
|
||||
android:layout_marginStart="52dp"
|
||||
tools:text="@string/onboarding_firefox_account_header"
|
||||
/>
|
||||
|
||||
<org.mozilla.fenix.utils.LinkTextView
|
||||
android:id="@+id/learn_more"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:text="@string/onboarding_manual_sign_in_learn_more"
|
||||
android:textAppearance="@style/Header16TextStyle"
|
||||
android:textColor="@color/neutral_text"
|
||||
app:layout_constraintStart_toStartOf="@id/header_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/header_text"
|
||||
tools:textColor="@color/neutral_text" />
|
||||
|
||||
<Button
|
||||
style="@style/NeutralButton"
|
||||
android:id="@+id/turn_on_sync_button"
|
||||
android:id="@+id/fxa_sign_in_button"
|
||||
android:background="@drawable/onboarding_padded_background"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="@string/onboarding_firefox_account_sign_in"
|
||||
app:layout_constraintTop_toBottomOf="@id/learn_more"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="parent"
|
||||
app:backgroundTint="@color/foundation_light_theme" />
|
||||
</LinearLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
|
||||
<!-- Tab tray multi select title in app bar. The first parameter is the number of tabs selected -->
|
||||
<string name="tab_tray_multi_select_title">%1$d esbillaes</string>
|
||||
<!-- Label of button in create collection dialog for creating a new collection -->
|
||||
<string name="tab_tray_add_new_collection">Amiestu d\'una coleción nueva</string>
|
||||
<!-- Label of editable text in create collection dialog for naming a new collection -->
|
||||
<string name="tab_tray_add_new_collection_name">Nome</string>
|
||||
|
||||
|
@ -247,6 +249,8 @@
|
|||
<string name="preferences_sign_in_description">Sincroniza los marcadores, l\'historial y muncho más cola to cuenta de Firefox</string>
|
||||
<!-- Preference shown instead of account display name while account profile information isn't available yet. -->
|
||||
<string name="preferences_account_default_name">Cuenta de Firefox</string>
|
||||
<!-- Preference text for account title when there was an error syncing FxA -->
|
||||
<string name="preferences_account_sync_error">Reconéutate pa siguir cola sincronización</string>
|
||||
<!-- Preference for language -->
|
||||
<string name="preferences_language">Llingua</string>
|
||||
<!-- Preference for data collection -->
|
||||
|
@ -364,6 +368,11 @@
|
|||
<!-- Header of the Turn on Sync preference view -->
|
||||
<string name="preferences_sync">Activación de Sync</string>
|
||||
|
||||
<!-- Preference for reconnecting to FxA sync -->
|
||||
<string name="preferences_sync_sign_in_to_reconnect">Aniciar sesión pa reconeutar</string>
|
||||
<!-- Preference for removing FxA account -->
|
||||
<string name="preferences_sync_remove_account">Desaniciar la cuenta</string>
|
||||
|
||||
<!-- Pairing Feature strings -->
|
||||
<!-- Instructions on how to access pairing -->
|
||||
<string name="pair_instructions_2"><![CDATA[Escania\'l códigu QR que s\'amuesa en <b>firefox.com/pair</b>]]></string>
|
||||
|
@ -473,6 +482,9 @@
|
|||
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
|
||||
<string name="pwa_site_controls_title_private">%1$s (en privao)</string>
|
||||
|
||||
<!-- Button in the current tab tray header in multiselect mode. Saved the selected tabs to a collection when pressed. -->
|
||||
<string name="tab_tray_save_to_collection">Guardar</string>
|
||||
|
||||
<!-- History -->
|
||||
<!-- Text for the button to clear all history -->
|
||||
<string name="history_delete_all">Desaniciar l\'historial</string>
|
||||
|
@ -659,6 +671,8 @@
|
|||
<string name="create_collection_save_to_collection_tab_selected">Esbillóse %d llingüeta</string>
|
||||
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
|
||||
<string name="create_collection_tabs_saved">¡Guardáronse les llingüetes!</string>
|
||||
<!-- Text shown in snackbar when one or multiple tabs have been saved in a new collection -->
|
||||
<string name="create_collection_tabs_saved_new_collection">¡Guardóse la coleición!</string>
|
||||
<!-- Text shown in snackbar when one tab has been saved in a collection -->
|
||||
<string name="create_collection_tab_saved">¡Guardóse la llingüeta!</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
|
||||
|
@ -690,6 +704,8 @@
|
|||
|
||||
<!-- An option from the share dialog to send link to all other sync devices -->
|
||||
<string name="sync_send_to_all">Unviar a tolos preseos</string>
|
||||
<!-- An option from the share dialog to reconnect to sync -->
|
||||
<string name="sync_reconnect">Reconexón con Sync</string>
|
||||
<!-- An option to connect additional devices -->
|
||||
<string name="sync_connect_device">Coneutar otru preséu</string>
|
||||
<!-- The dialog text shown when additional devices are not available -->
|
||||
|
|
|
@ -27,6 +27,16 @@
|
|||
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
|
||||
<string name="open_tab_tray_plural">%1$s ruwi\' ejaqon. Tachapa\' richin nak\'ëx ruwi\'.</string>
|
||||
|
||||
<!-- Tab tray multi select title in app bar. The first parameter is the number of tabs selected -->
|
||||
<string name="tab_tray_multi_select_title">%1$d xcha\'</string>
|
||||
<!-- Label of button in create collection dialog for creating a new collection -->
|
||||
<string name="tab_tray_add_new_collection">Titz\'aqatisäx k\'ak\'a\' mol</string>
|
||||
<!-- Label of editable text in create collection dialog for naming a new collection -->
|
||||
<string name="tab_tray_add_new_collection_name">B\'i\'aj</string>
|
||||
|
||||
<!-- Label of button in save to collection dialog for selecting a current collection -->
|
||||
<string name="tab_tray_select_collection">Ticha\' mol</string>
|
||||
|
||||
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
|
||||
<string name="about_content">%1$s b\'anon ruma Mozilla.</string>
|
||||
|
||||
|
@ -151,14 +161,10 @@
|
|||
<!-- Search Fragment -->
|
||||
<!-- Button in the search view that lets a user search by scanning a QR code -->
|
||||
<string name="search_scan_button">Tiwachib\'ëx</string>
|
||||
<!-- Button in the search view that lets a user search by using a shortcut -->
|
||||
<string name="search_shortcuts_button">Choj okem</string>
|
||||
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
|
||||
<string name="search_shortcuts_engine_settings">Runuk\'ulem kanob\'äl</string>
|
||||
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with">Tikanöx pa</string>
|
||||
<!-- Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with_2">Wakami tikanöx rik\'in:</string>
|
||||
<string name="search_engines_search_with">Wakami tikanöx rik\'in:</string>
|
||||
<!-- Button in the search view that lets a user navigate to the site in their clipboard -->
|
||||
<string name="awesomebar_clipboard_title">Titz\'ajb\'äl ri ximonel pa ri molwuj</string>
|
||||
<!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
|
||||
|
@ -270,8 +276,6 @@
|
|||
<string name="developer_tools_category">Taq rusamajib\'al nuk\'unel</string>
|
||||
<!-- Preference for developers -->
|
||||
<string name="preferences_remote_debugging">Näj chojmirisanem pa USB</string>
|
||||
<!-- Preference title for switch preference to show search shortcuts -->
|
||||
<string name="preferences_show_search_shortcuts">Kek\'ut retal pitz\'b\'äl richin nikanöx</string>
|
||||
<!-- Preference title for switch preference to show search suggestions -->
|
||||
<string name="preferences_show_search_suggestions">Kek\'ut pe ri taq chilab\'enïk richin yakanon</string>
|
||||
|
||||
|
@ -524,6 +528,9 @@
|
|||
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
|
||||
<string name="pwa_site_controls_title_private">%1$s (Ichinan Rub\'anikil)</string>
|
||||
|
||||
<!-- Button in the current tab tray header in multiselect mode. Saved the selected tabs to a collection when pressed. -->
|
||||
<string name="tab_tray_save_to_collection">Tiyak</string>
|
||||
|
||||
<!-- History -->
|
||||
<!-- Text for the button to clear all history -->
|
||||
<string name="history_delete_all">Tiyuj natab\'äl</string>
|
||||
|
@ -649,7 +656,7 @@
|
|||
<!-- Bookmark snackbar message on deletion
|
||||
The first parameter is the host part of the URL of the bookmark deleted, if any -->
|
||||
<string name="bookmark_deletion_snackbar_message">Xyuj %1$s</string>
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks -->
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message_2">Taq yaketal xeyuj</string>
|
||||
<!-- Bookmark undo button for deletion snackbar action -->
|
||||
<string name="bookmark_undo_deletion">TITZOLÏX</string>
|
||||
|
@ -1458,9 +1465,7 @@ Achi\'el: \nhttps://www.google.com/search?q=%s</string>
|
|||
<string name="saved_login_duplicate">K\'o chik jun tikirib\'äl molojri\'ïl rik\'in re b\'i\'aj re\'</string>
|
||||
|
||||
<!-- Synced Tabs -->
|
||||
<!-- Text displayed when user is not logged into a Firefox Account -->
|
||||
<string name="synced_tabs_connect_to_sync_account">Tok rik\'in jun Rub\'i\' Rutaqoya\'l Firefox</string>
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<string name="synced_tabs_connect_another_device">Tokisäx jun chik okisab\'äl</string>
|
||||
<!-- Text displayed asking user to re-authenticate -->
|
||||
<string name="synced_tabs_reauth">Tajuxub\'ej chik awi\'.</string>
|
||||
|
|
|
@ -39,6 +39,9 @@
|
|||
<!-- Content description for save to collection button while in multiselect mode in tab tray -->
|
||||
<string name="tab_tray_collection_button_multiselect_content_description">Αποθήκευση επιλεγμένων καρτελών στη συλλογή</string>
|
||||
|
||||
<!-- Content description announcement when exiting multiselect mode in tab tray -->
|
||||
<string name="tab_tray_exit_multiselect_content_description">Τέλος λειτουργίας πολλαπλής επιλογής</string>
|
||||
|
||||
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
|
||||
<string name="about_content">Το %1$s αναπτύσσεται από τη Mozilla.</string>
|
||||
|
||||
|
@ -231,6 +234,10 @@
|
|||
<string name="preferences_add_private_browsing_shortcut">Προσθήκη συντόμευσης ιδιωτικής περιήγησης</string>
|
||||
<!-- Preference for accessibility -->
|
||||
<string name="preferences_accessibility">Προσβασιμότητα</string>
|
||||
<!-- Preference to override the Firefox Account server -->
|
||||
<string name="preferences_override_fxa_server">Προσαρμοσμένος διακομιστής λογαριασμού Firefox</string>
|
||||
<!-- Preference to override the Sync token server -->
|
||||
<string name="preferences_override_sync_tokenserver">Προσαρμοσμένος διακομιστής Sync</string>
|
||||
<!-- Preference category for account information -->
|
||||
<string name="preferences_category_account">Λογαριασμός</string>
|
||||
<!-- Preference shown on banner to sign into account -->
|
||||
|
@ -305,6 +312,10 @@
|
|||
<!-- Label indicating that sync is in progress -->
|
||||
<string name="sync_syncing_in_progress">Συγχρονισμός…</string>
|
||||
|
||||
<!-- Label summary indicating that sync failed. The first parameter is the date stamp showing last time it succeeded -->
|
||||
<string name="sync_failed_summary">Αποτυχία συγχρονισμού. Τελευταία επιτυχία: %s</string>
|
||||
<!-- Label summary showing never synced -->
|
||||
<string name="sync_failed_never_synced_summary">Αποτυχία συγχρονισμού. Τελευταίος συγχρονισμός: ποτέ</string>
|
||||
<!-- Label summary the date we last synced. The first parameter is date stamp showing last time synced -->
|
||||
<string name="sync_last_synced_summary">Τελευταίος συγχρονισμός: %s</string>
|
||||
<!-- Label summary showing never synced -->
|
||||
|
@ -317,6 +328,8 @@
|
|||
<!-- Send Tab -->
|
||||
<!-- Name of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
|
||||
<string name="fxa_received_tab_channel_name">Ληφθείσες καρτέλες</string>
|
||||
<!-- Description of the "receive tabs" notification channel. Displayed in the "App notifications" system settings for the app -->
|
||||
<string name="fxa_received_tab_channel_description">Ειδοποιήσεις για καρτέλες που λαμβάνονται από άλλες συσκευές Firefox.</string>
|
||||
<!-- The body for these is the URL of the tab received -->
|
||||
<string name="fxa_tab_received_notification_name">Ελήφθη καρτέλα</string>
|
||||
<!-- When multiple tabs have been received -->
|
||||
|
@ -329,6 +342,8 @@
|
|||
<string name="preferences_tracking_protection_settings">Προστασία από καταγραφή</string>
|
||||
<!-- Preference switch for tracking protection -->
|
||||
<string name="preferences_tracking_protection">Προστασία από καταγραφή</string>
|
||||
<!-- Preference switch description for tracking protection -->
|
||||
<string name="preferences_tracking_protection_description">Φραγή περιεχομένου και σεναρίων που σας παρακολουθούν στο διαδίκτυο</string>
|
||||
<!-- Preference for tracking protection exceptions -->
|
||||
<string name="preferences_tracking_protection_exceptions">Εξαιρέσεις</string>
|
||||
<!-- Button in Exceptions Preference to turn on tracking protection for all sites (remove all exceptions) -->
|
||||
|
@ -358,6 +373,8 @@
|
|||
<!-- Turn On Sync Preferences -->
|
||||
<!-- Header of the Turn on Sync preference view -->
|
||||
<string name="preferences_sync">Ενεργοποίηση Sync</string>
|
||||
<!-- Preference for pairing -->
|
||||
<string name="preferences_sync_pair">Σάρωση κωδικού σύζευξης στο Firefox για υπολογιστή</string>
|
||||
<!-- Preference for account login -->
|
||||
<string name="preferences_sync_sign_in">Σύνδεση</string>
|
||||
|
||||
|
@ -612,8 +629,13 @@
|
|||
<string name="bookmark_invalid_url_error">Άκυρο URL</string>
|
||||
<!-- Bookmark screen message for empty bookmarks folder -->
|
||||
<string name="bookmarks_empty_message">Κανένας σελιδοδείκτης εδώ</string>
|
||||
<!-- Bookmark snackbar message on deletion
|
||||
The first parameter is the host part of the URL of the bookmark deleted, if any -->
|
||||
<string name="bookmark_deletion_snackbar_message">Το %1$s διαγράφηκε</string>
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message_2">Οι σελιδοδείκτες διαγράφηκαν</string>
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks including folders-->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message_3">Διαγραφή επιλεγμένων φακέλων</string>
|
||||
<!-- Bookmark undo button for deletion snackbar action -->
|
||||
<string name="bookmark_undo_deletion">ΑΝΑΙΡΕΣΗ</string>
|
||||
|
||||
|
@ -857,6 +879,10 @@
|
|||
<string name="preferences_delete_browsing_data_button">Διαγραφή δεδομένων περιήγησης</string>
|
||||
<!-- Title for the Delete browsing data on quit preference -->
|
||||
<string name="preferences_delete_browsing_data_on_quit">Διαγραφή δεδομένων περιήγησης στην έξοδο</string>
|
||||
<!-- Summary for the Delete browsing data on quit preference. "Quit" translation should match delete_browsing_data_on_quit_action translation. -->
|
||||
<string name="preference_summary_delete_browsing_data_on_quit">Διαγράφει αυτόματα τα δεδομένα περιήγησης όταν επιλέγετε "Έξοδος" από το κύριο μενού</string>
|
||||
<!-- Summary for the Delete browsing data on quit preference. "Quit" translation should match delete_browsing_data_on_quit_action translation. -->
|
||||
<string name="preference_summary_delete_browsing_data_on_quit_2">Διαγράφει αυτόματα τα δεδομένα περιήγησης όταν επιλέγετε \"Quit\" από το κύριο μενού</string>
|
||||
<!-- Action item in menu for the Delete browsing data on quit feature -->
|
||||
<string name="delete_browsing_data_on_quit_action">Έξοδος</string>
|
||||
|
||||
|
@ -1079,6 +1105,8 @@
|
|||
<!-- About page Your rights link text -->
|
||||
<string name="about_your_rights">Τα δικαιώματά σας</string>
|
||||
|
||||
<!-- About page link text to open open source licenses screen -->
|
||||
<string name="about_open_source_licenses">Βιβλιοθήκες ανοιχτού κώδικα που χρησιμοποιούμε</string>
|
||||
<!-- About page link text to open what's new link -->
|
||||
<string name="about_whats_new">Τι νέο υπάρχει στο %s</string>
|
||||
<!-- Open source licenses page title
|
||||
|
@ -1176,6 +1204,8 @@
|
|||
<string name="preferences_passwords_saved_logins_password">Κωδικός πρόσβασης</string>
|
||||
<!-- Message displayed in security prompt to reenter a secret pin to access saved logins -->
|
||||
<string name="preferences_passwords_saved_logins_enter_pin">Εισάγετε ξανά το PIN σας</string>
|
||||
<!-- Message displayed in security prompt to access saved logins -->
|
||||
<string name="preferences_passwords_saved_logins_enter_pin_description">Ξεκλειδώστε για να δείτε τις αποθηκευμένες συνδέσεις σας</string>
|
||||
<!-- Message displayed when a connection is insecure and we detect the user is entering a password -->
|
||||
<string name="logins_insecure_connection_warning">Αυτή η σύνδεση δεν είναι ασφαλής. Οι λογαριασμοί που εισάγονται εδώ ενδέχεται να παραβιαστούν.</string>
|
||||
<!-- Learn more link that will link to a page with more information displayed when a connection is insecure and we detect the user is entering a password -->
|
||||
|
@ -1198,16 +1228,22 @@
|
|||
<string name="saved_login_copy_username">Αντιγραφή ονόματος χρήστη</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
|
||||
<string name="saved_login_copy_site">Αντιγραφή ιστοσελίδας</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins -->
|
||||
<string name="saved_login_open_site">Άνοιγμα σελίδας στο πρόγραμμα περιήγησης</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
|
||||
<string name="saved_login_reveal_password">Εμφάνιση κωδικού πρόσβασης</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
|
||||
<string name="saved_login_hide_password">Απόκρυψη κωδικού πρόσβασης</string>
|
||||
<!-- Message displayed in biometric prompt displayed for authentication before allowing users to view their logins -->
|
||||
<string name="logins_biometric_prompt_message">Ξεκλειδώστε για να δείτε τις αποθηκευμένες συνδέσεις σας</string>
|
||||
<!-- Negative button to ignore warning dialog if users have no device authentication set up -->
|
||||
<string name="logins_warning_dialog_later">Αργότερα</string>
|
||||
<!-- Positive button to send users to set up a pin of warning dialog if users have no device authentication set up -->
|
||||
<string name="logins_warning_dialog_set_up_now">Ρύθμιση τώρα</string>
|
||||
<!-- Title of PIN verification dialog to direct users to re-enter their device credentials to access their logins -->
|
||||
<string name="logins_biometric_prompt_message_pin">Ξεκλειδώστε τη συσκευή σας</string>
|
||||
<!-- Title for Accessibility Force Enable Zoom Preference -->
|
||||
<string name="preference_accessibility_force_enable_zoom">Ζουμ σε όλες τις ιστοσελίδες</string>
|
||||
<!-- Saved logins sorting strategy menu item -by name- (if selected, it will sort saved logins alphabetically) -->
|
||||
<string name="saved_logins_sort_strategy_alphabetically">Όνομα (Α-Ω)</string>
|
||||
<!-- Saved logins sorting strategy menu item -by last used- (if selected, it will sort saved logins by last used) -->
|
||||
|
@ -1236,14 +1272,20 @@
|
|||
|
||||
<!-- Placeholder text shown in the Search String TextField before a user enters text -->
|
||||
<string name="search_add_custom_engine_search_string_hint">Νήμα αναζήτησης προς χρήση</string>
|
||||
<!-- Description text for the Search String TextField. The %s is part of the string -->
|
||||
<string name="search_add_custom_engine_search_string_example">Αντικαταστήστε το ερώτημα με “%s”. Παράδειγμα:\nhttps://www.google.com/search?q=%s</string>
|
||||
<!-- Text for the button to learn more about adding a custom search engine -->
|
||||
<string name="search_add_custom_engine_learn_more_label">Μάθετε περισσότερα</string>
|
||||
|
||||
<!-- Accessibility description for the form in which details about the custom search engine are entered -->
|
||||
<string name="search_add_custom_engine_form_description">Λεπτομέρειες προσαρμοσμένης μηχανής αναζήτησης</string>
|
||||
<!-- Accessibility description for the 'Learn more' link -->
|
||||
<string name="search_add_custom_engine_learn_more_description">Σύνδεσμος "Μάθετε περισσότερα"</string>
|
||||
|
||||
<!-- Text shown when a user leaves the name field empty -->
|
||||
<string name="search_add_custom_engine_error_empty_name">Εισάγετε όνομα μηχανής αναζήτησης</string>
|
||||
<!-- Text shown when a user tries to add a search engine that already exists -->
|
||||
<string name="search_add_custom_engine_error_existing_name">Η μηχανή αναζήτησης με το όνομα “%s” υπάρχει ήδη.</string>
|
||||
<!-- Text shown when a user leaves the search string field empty -->
|
||||
<string name="search_add_custom_engine_error_empty_search_string">Εισάγετε νήμα αναζήτησης</string>
|
||||
<!-- Text shown when we aren't able to validate the custom search query. The first parameter is the url of the custom search engine -->
|
||||
|
@ -1252,8 +1294,15 @@
|
|||
<!-- Text shown when a user creates a new search engine -->
|
||||
<string name="search_add_custom_engine_success_message">Δημιουργήθηκε to %s</string>
|
||||
|
||||
<!-- Text shown when a user successfully edits a custom search engine -->
|
||||
<string name="search_edit_custom_engine_success_message">Το %s αποθηκεύτηκε</string>
|
||||
<!-- Text shown when a user successfully deletes a custom search engine -->
|
||||
<string name="search_delete_search_engine_success_message">Το %s διαγράφηκε</string>
|
||||
|
||||
<!-- Title text shown for the migration screen to the new browser. Placeholder replaced with app name -->
|
||||
<string name="migration_title">Καλώς ορίσατε στο νέο %s</string>
|
||||
<!-- Description text followed by a list of things migrating (e.g. Bookmarks, History). Placeholder replaced with app name-->
|
||||
<string name="migration_description">Σας περιμένει ένα πλήρως ανασχεδιασμένο πρόγραμμα περιήγησης, με βελτιωμένη απόδοση και λειτουργίες που θα σας βοηθήσουν να κάνετε περισσότερα στο διαδίκτυο.\n\nΠαρακαλούμε περιμένετε ενώ ενημερώνουμε το %s με το</string>
|
||||
<!-- Text on the disabled button while in progress. Placeholder replaced with app name -->
|
||||
<string name="migration_updating_app_button_text">Ενημέρωση του %s…</string>
|
||||
<!-- Text on the enabled button. Placeholder replaced with app name-->
|
||||
|
@ -1263,6 +1312,8 @@
|
|||
<!--Text on list of migrated items (e.g. Settings, History, etc.)-->
|
||||
<string name="migration_text_passwords">Κωδικοί πρόσβασης</string>
|
||||
|
||||
<!-- Heading for the instructions to allow a permission -->
|
||||
<string name="phone_feature_blocked_intro">Για να το επιτρέψετε:</string>
|
||||
<!-- First step for the allowing a permission -->
|
||||
<string name="phone_feature_blocked_step_settings">1. Μεταβείτε στις Ρυθμίσεις Android</string>
|
||||
<!-- Second step for the allowing a permission -->
|
||||
|
@ -1301,6 +1352,12 @@
|
|||
<string name="dialog_delete_positive">Διαγραφή</string>
|
||||
<!-- The saved login options menu description. -->
|
||||
<string name="login_options_menu">Επιλογές σύνδεσης</string>
|
||||
<!-- The editable text field for a login's web address. -->
|
||||
<string name="saved_login_hostname_description">Το επεξεργάσιμο πεδίο κειμένου της διεύθυνσης ιστού της σύνδεσης.</string>
|
||||
<!-- The editable text field for a login's username. -->
|
||||
<string name="saved_login_username_description">Το επεξεργάσιμο πεδίο κειμένου για το όνομα χρήστη της σύνδεσης.</string>
|
||||
<!-- The editable text field for a login's password. -->
|
||||
<string name="saved_login_password_description">Το επεξεργάσιμο πεδίο κειμένου για τον κωδικό πρόσβασης της σύνδεσης.</string>
|
||||
<!-- The button description to save changes to an edited login. -->
|
||||
<string name="save_changes_to_login">Αποθήκευση αλλαγών στη σύνδεση.</string>
|
||||
<!-- The button description to discard changes to an edited login. -->
|
||||
|
@ -1325,9 +1382,16 @@
|
|||
<!-- Text displayed when user has disabled tab syncing in Firefox Sync Account -->
|
||||
<string name="synced_tabs_enable_tab_syncing">Παρακαλούμε ενεργοποιήστε το συγχρονισμό καρτελών.</string>
|
||||
|
||||
<!-- Text displayed when user has no tabs that have been synced -->
|
||||
<string name="synced_tabs_no_tabs">Δεν έχετε καμία άλλη καρτέλα ανοικτή στο Firefox σε άλλες σας συσκευές.</string>
|
||||
<!-- Text displayed in the synced tabs screen when a user is not signed in to Firefox Sync describing Synced Tabs -->
|
||||
<string name="synced_tabs_sign_in_message">Δείτε μια λίστα καρτελών από τις άλλες συσκευές σας.</string>
|
||||
<!-- Text displayed on a button in the synced tabs screen to link users to sign in when a user is not signed in to Firefox Sync -->
|
||||
<string name="synced_tabs_sign_in_button">Σύνδεση στο Sync</string>
|
||||
|
||||
<!-- Top Sites -->
|
||||
<!-- Title text displayed in the dialog when top sites limit is reached. -->
|
||||
<string name="top_sites_max_limit_title">Έχετε φτάσει το ανώτατο όριο κορυφαίων ιστοσελίδων</string>
|
||||
<!-- Confirmation dialog button text when top sites limit is reached. -->
|
||||
<string name="top_sites_max_limit_confirmation_button">OK, το κατάλαβα</string>
|
||||
|
||||
|
|
|
@ -25,6 +25,29 @@
|
|||
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
|
||||
<string name="open_tab_tray_plural">%1$s iepen ljepblêden. Tik om tusken ljepblêden te wikseljen.</string>
|
||||
|
||||
<!-- Tab tray multi select title in app bar. The first parameter is the number of tabs selected -->
|
||||
<string name="tab_tray_multi_select_title">%1$d selektearre</string>
|
||||
<!-- Label of button in create collection dialog for creating a new collection -->
|
||||
<string name="tab_tray_add_new_collection">Nije kolleksje tafoegje</string>
|
||||
<!-- Label of editable text in create collection dialog for naming a new collection -->
|
||||
<string name="tab_tray_add_new_collection_name">Namme</string>
|
||||
<!-- Label of button in save to collection dialog for selecting a current collection -->
|
||||
<string name="tab_tray_select_collection">Kolleksje selektearje</string>
|
||||
<!-- Content description for close button while in multiselect mode in tab tray -->
|
||||
<string name="tab_tray_close_multiselect_content_description">Multiseleksjemodus ferlitte</string>
|
||||
<!-- Content description for save to collection button while in multiselect mode in tab tray -->
|
||||
<string name="tab_tray_collection_button_multiselect_content_description">Selektearre ljepblêden yn kolleksje bewarje</string>
|
||||
<!-- Content description for checkmark while tab is selected while in multiselect mode in tab tray. The first parameter is the title of the tab selected -->
|
||||
<string name="tab_tray_item_selected_multiselect_content_description">%1$s selektearre</string>
|
||||
<!-- Content description when tab is unselected while in multiselect mode in tab tray. The first parameter is the title of the tab unselected -->
|
||||
<string name="tab_tray_item_unselected_multiselect_content_description">Seleksje %1$s ûngedien makke</string>
|
||||
<!-- Content description announcement when exiting multiselect mode in tab tray -->
|
||||
<string name="tab_tray_exit_multiselect_content_description">Multiseleksjemodus ferlitten</string>
|
||||
<!-- Content description announcement when entering multiselect mode in tab tray -->
|
||||
<string name="tab_tray_enter_multiselect_content_description">Multiseleksjemodus aktivearre, selektearje ljepblêden om yn in kolleksje te bewarjen</string>
|
||||
<!-- Content description on checkmark while tab is selected in multiselect mode in tab tray -->
|
||||
<string name="tab_tray_multiselect_selected_content_description">Selektearre</string>
|
||||
|
||||
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
|
||||
<string name="about_content">%1$s is makke troch Mozilla.</string>
|
||||
|
||||
|
@ -150,8 +173,8 @@
|
|||
<!-- Search Fragment -->
|
||||
<!-- Button in the search view that lets a user search by scanning a QR code -->
|
||||
<string name="search_scan_button">Scanne</string>
|
||||
<!-- Button in the search view that lets a user search by using a shortcut -->
|
||||
<string name="search_engines_shortcut_button">Sykmasine</string>
|
||||
<!-- Button in the search view that lets a user change their search engine -->
|
||||
<string name="search_engine_button">Sykmasine</string>
|
||||
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
|
||||
<string name="search_shortcuts_engine_settings">Ynstellingen sykmasine</string>
|
||||
<!-- Header displayed when selecting a shortcut search engine -->
|
||||
|
@ -282,6 +305,8 @@
|
|||
<!-- Preference for open links in third party apps -->
|
||||
<string name="preferences_open_links_in_apps">Keppelingen iepenje yn apps</string>
|
||||
|
||||
<!-- Preference for open download with an external download manager app -->
|
||||
<string name="preferences_external_download_manager">Eksterne downloadbehearder</string>
|
||||
<!-- Preference for add_ons -->
|
||||
<string name="preferences_addons">Add-ons</string>
|
||||
|
||||
|
@ -510,6 +535,9 @@
|
|||
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
|
||||
<string name="pwa_site_controls_title_private">%1$s (priveemodus)</string>
|
||||
|
||||
<!-- Button in the current tab tray header in multiselect mode. Saved the selected tabs to a collection when pressed. -->
|
||||
<string name="tab_tray_save_to_collection">Bewarje</string>
|
||||
|
||||
<!-- History -->
|
||||
<!-- Text for the button to clear all history -->
|
||||
<string name="history_delete_all">Skiednis wiskje</string>
|
||||
|
@ -1431,9 +1459,7 @@
|
|||
<string name="saved_login_duplicate">Der bestiet al in oanmelding mei dy brûkersnamme</string>
|
||||
|
||||
<!-- Synced Tabs -->
|
||||
<!-- Text displayed when user is not logged into a Firefox Account -->
|
||||
<string name="synced_tabs_connect_to_sync_account">Ferbine mei in Firefox-account.</string>
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<string name="synced_tabs_connect_another_device">In oar apparaat ferbine.</string>
|
||||
<!-- Text displayed asking user to re-authenticate -->
|
||||
<string name="synced_tabs_reauth">Graach opnij autentisearje.</string>
|
||||
|
@ -1455,13 +1481,4 @@
|
|||
<!-- Confirmation dialog button text when top sites limit is reached. -->
|
||||
<string name="top_sites_max_limit_confirmation_button">OK, begrepen</string>
|
||||
|
||||
<!-- DEPRECATED STRINGS -->
|
||||
<!-- Button in the search view that lets a user search by using a shortcut -->
|
||||
<string name="search_shortcuts_button">Fluchkeppelingen</string>
|
||||
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with">Sykje mei</string>
|
||||
<!-- Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with_2">Diskear sykje mei:</string>
|
||||
<!-- Preference title for switch preference to show search shortcuts -->
|
||||
<string name="preferences_show_search_shortcuts">Sykfluchkeppelingen toane</string>
|
||||
</resources>
|
||||
|
|
|
@ -24,6 +24,29 @@
|
|||
<!-- Message announced to the user when tab tray is selected with 0 or 2+ tabs -->
|
||||
<string name="open_tab_tray_plural">%1$s tabs averts. Tutgar per midar tab.</string>
|
||||
|
||||
<!-- Tab tray multi select title in app bar. The first parameter is the number of tabs selected -->
|
||||
<string name="tab_tray_multi_select_title">%1$d tschernids</string>
|
||||
<!-- Label of button in create collection dialog for creating a new collection -->
|
||||
<string name="tab_tray_add_new_collection">Agiuntar ina nova collecziun</string>
|
||||
<!-- Label of editable text in create collection dialog for naming a new collection -->
|
||||
<string name="tab_tray_add_new_collection_name">Num</string>
|
||||
<!-- Label of button in save to collection dialog for selecting a current collection -->
|
||||
<string name="tab_tray_select_collection">Tscherner ina collecziun</string>
|
||||
<!-- Content description for close button while in multiselect mode in tab tray -->
|
||||
<string name="tab_tray_close_multiselect_content_description">Sortir dal modus da tscherna multipla</string>
|
||||
<!-- Content description for save to collection button while in multiselect mode in tab tray -->
|
||||
<string name="tab_tray_collection_button_multiselect_content_description">Memorisar ils tabs tschernids en ina collecziun</string>
|
||||
<!-- Content description for checkmark while tab is selected while in multiselect mode in tab tray. The first parameter is the title of the tab selected -->
|
||||
<string name="tab_tray_item_selected_multiselect_content_description">%1$s tschernì</string>
|
||||
<!-- Content description when tab is unselected while in multiselect mode in tab tray. The first parameter is the title of the tab unselected -->
|
||||
<string name="tab_tray_item_unselected_multiselect_content_description">%1$s betg tschernì</string>
|
||||
<!-- Content description announcement when exiting multiselect mode in tab tray -->
|
||||
<string name="tab_tray_exit_multiselect_content_description">Sortì dal modus da tscherna multipla</string>
|
||||
<!-- Content description announcement when entering multiselect mode in tab tray -->
|
||||
<string name="tab_tray_enter_multiselect_content_description">Avert il modus da tscherna multipla, tscherner ils tabs per als memorisar en ina collecziun</string>
|
||||
<!-- Content description on checkmark while tab is selected in multiselect mode in tab tray -->
|
||||
<string name="tab_tray_multiselect_selected_content_description">Tschernì</string>
|
||||
|
||||
<!-- About content. The first parameter is the name of the application. (For example: Fenix) -->
|
||||
<string name="about_content">%1$s vegn sviluppà da Mozilla.</string>
|
||||
|
||||
|
@ -144,14 +167,12 @@
|
|||
<!-- Search Fragment -->
|
||||
<!-- Button in the search view that lets a user search by scanning a QR code -->
|
||||
<string name="search_scan_button">Scannar</string>
|
||||
<!-- Button in the search view that lets a user search by using a shortcut -->
|
||||
<string name="search_shortcuts_button">Scursanidas</string>
|
||||
<!-- Button in the search view that lets a user change their search engine -->
|
||||
<string name="search_engine_button">Maschina da tschertgar</string>
|
||||
<!-- Button in the search view when shortcuts are displayed that takes a user to the search engine settings -->
|
||||
<string name="search_shortcuts_engine_settings">Parameters da la maschina da tschertgar</string>
|
||||
<!-- DEPRECATED: Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with">Tschertgar cun</string>
|
||||
<!-- Header displayed when selecting a shortcut search engine -->
|
||||
<string name="search_shortcuts_search_with_2">Questa giada, tschertgar cun:</string>
|
||||
<string name="search_engines_search_with">Questa giada, tschertgar cun:</string>
|
||||
<!-- Button in the search view that lets a user navigate to the site in their clipboard -->
|
||||
<string name="awesomebar_clipboard_title">Encollar la colliaziun en l\'archiv provisoric</string>
|
||||
<!-- Button in the search suggestions onboarding that allows search suggestions in private sessions -->
|
||||
|
@ -258,8 +279,8 @@
|
|||
<string name="developer_tools_category">Utensils per sviluppaders</string>
|
||||
<!-- Preference for developers -->
|
||||
<string name="preferences_remote_debugging">Debugging a distanza via USB</string>
|
||||
<!-- Preference title for switch preference to show search shortcuts -->
|
||||
<string name="preferences_show_search_shortcuts">Mussar las scursanidas per tschertgas</string>
|
||||
<!-- Preference title for switch preference to show search engines -->
|
||||
<string name="preferences_show_search_engines">Mussar las maschinas da tschertgar</string>
|
||||
<!-- Preference title for switch preference to show search suggestions -->
|
||||
<string name="preferences_show_search_suggestions">Mussar propostas da tschertga</string>
|
||||
<!-- Preference title for switch preference to show voice search button -->
|
||||
|
@ -277,6 +298,8 @@
|
|||
<string name="preferences_account_settings">Parameters dal conto</string>
|
||||
<!-- Preference for open links in third party apps -->
|
||||
<string name="preferences_open_links_in_apps">Avrir colliaziuns en apps</string>
|
||||
<!-- Preference for open download with an external download manager app -->
|
||||
<string name="preferences_external_download_manager">Administraziun da telechargiadas externa</string>
|
||||
<!-- Preference for add_ons -->
|
||||
<string name="preferences_addons">Supplements</string>
|
||||
|
||||
|
@ -505,6 +528,9 @@
|
|||
<!-- Postfix for private WebApp titles, placeholder is replaced with app name -->
|
||||
<string name="pwa_site_controls_title_private">%1$s (modus privat)</string>
|
||||
|
||||
<!-- Button in the current tab tray header in multiselect mode. Saved the selected tabs to a collection when pressed. -->
|
||||
<string name="tab_tray_save_to_collection">Memorisar</string>
|
||||
|
||||
<!-- History -->
|
||||
<!-- Text for the button to clear all history -->
|
||||
<string name="history_delete_all">Stizzar la cronologia</string>
|
||||
|
@ -570,6 +596,8 @@
|
|||
<string name="bookmark_select_folder">Tscherner in ordinatur</string>
|
||||
<!-- Confirmation message for a dialog confirming if the user wants to delete the selected folder -->
|
||||
<string name="bookmark_delete_folder_confirmation_dialog">Vuls ti propi stizzar quest ordinatur?</string>
|
||||
<!-- Confirmation message for a dialog confirming if the user wants to delete multiple items including folders. Parameter will be replaced by app name. -->
|
||||
<string name="bookmark_delete_multiple_folders_confirmation_dialog">%s vegn a stizzar ils elements tschernids.</string>
|
||||
<!-- Snackbar title shown after a folder has been deleted. This first parameter is the name of the deleted folder -->
|
||||
<string name="bookmark_delete_folder_snackbar">Stizzà %1$s</string>
|
||||
<!-- Screen title for adding a bookmarks folder -->
|
||||
|
@ -624,8 +652,10 @@
|
|||
<!-- Bookmark snackbar message on deletion
|
||||
The first parameter is the host part of the URL of the bookmark deleted, if any -->
|
||||
<string name="bookmark_deletion_snackbar_message">Stizzà %1$s</string>
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks -->
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks not including folders-->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message_2">Stizzà ils segnapaginas</string>
|
||||
<!-- Bookmark snackbar message on deleting multiple bookmarks including folders-->
|
||||
<string name="bookmark_deletion_multiple_snackbar_message_3">Stizzar ils ordinaturs tschernids</string>
|
||||
<!-- Bookmark undo button for deletion snackbar action -->
|
||||
<string name="bookmark_undo_deletion">REVOCAR</string>
|
||||
|
||||
|
@ -718,6 +748,8 @@
|
|||
<string name="create_collection_save_to_collection_tab_selected">%d tab tschernì</string>
|
||||
<!-- Text shown in snackbar when multiple tabs have been saved in a collection -->
|
||||
<string name="create_collection_tabs_saved">Memorisà ils tabs!</string>
|
||||
<!-- Text shown in snackbar when one or multiple tabs have been saved in a new collection -->
|
||||
<string name="create_collection_tabs_saved_new_collection">Memorisà la collecziun!</string>
|
||||
<!-- Text shown in snackbar when one tab has been saved in a collection -->
|
||||
<string name="create_collection_tab_saved">Memorisà il tab!</string>
|
||||
<!-- Content description (not visible, for screen readers etc.): button to close the collection creator -->
|
||||
|
@ -825,6 +857,10 @@
|
|||
<string name="qr_scanner_dialog_negative">REFUSAR</string>
|
||||
<!-- Tab collection deletion prompt dialog message. Placeholder will be replaced with the collection name -->
|
||||
<string name="tab_collection_dialog_message">Vuls ti propi stizzar %1$s?</string>
|
||||
<!-- Collection and tab deletion prompt dialog message. This will show when the last tab from a collection is deleted -->
|
||||
<string name="delete_tab_and_collection_dialog_message">Cun stizzar quest tab vegn l\'entira collecziun stizzada. Ti pos da tut temp crear novas collecziuns.</string>
|
||||
<!-- Collection and tab deletion prompt dialog title. Placeholder will be replaced with the collection name. This will show when the last tab from a collection is deleted -->
|
||||
<string name="delete_tab_and_collection_dialog_title">Stizzar %1$s?</string>
|
||||
<!-- Tab collection deletion prompt dialog option to delete the collection -->
|
||||
<string name="tab_collection_dialog_positive">Stizzar</string>
|
||||
<!-- Tab collection deletion prompt dialog option to cancel deleting the collection -->
|
||||
|
@ -1231,6 +1267,8 @@
|
|||
<string name="preferences_passwords_exceptions_description_empty">Las infurmaziuns d\'annunzia ed ils pleds-clav betg memorisads vegnan mussadas qua.</string>
|
||||
<!-- Description of list of login exceptions that we never save logins for -->
|
||||
<string name="preferences_passwords_exceptions_description">Las infurmaziuns d\'annunzia ed ils pleds-clav na vegnan betg memorisads per questas paginas.</string>
|
||||
<!-- Text on button to remove all saved login exceptions -->
|
||||
<string name="preferences_passwords_exceptions_remove_all">Stizzar tut las excepziuns</string>
|
||||
<!-- Hint for search box in logins list -->
|
||||
<string name="preferences_passwords_saved_logins_search">Tschertgar datas d\'annunzia</string>
|
||||
<!-- Option to sort logins list A-Z, alphabetically -->
|
||||
|
@ -1270,6 +1308,8 @@
|
|||
<string name="saved_login_copy_username">Copiar il num d\'utilisader</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to copy a site in logins -->
|
||||
<string name="saved_login_copy_site">Copiar la pagina</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to open a site in logins -->
|
||||
<string name="saved_login_open_site">Avrir la website en il navigatur</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to reveal a password in logins -->
|
||||
<string name="saved_login_reveal_password">Mussar il pled-clav</string>
|
||||
<!-- Content Description (for screenreaders etc) read for the button to hide a password in logins -->
|
||||
|
@ -1422,9 +1462,7 @@
|
|||
<string name="saved_login_duplicate">Datas d\'annunzia cun quest num d\'utilisader existan gia</string>
|
||||
|
||||
<!-- Synced Tabs -->
|
||||
<!-- Text displayed when user is not logged into a Firefox Account -->
|
||||
<string name="synced_tabs_connect_to_sync_account">Connectar cun in conto da Firefox.</string>
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<!-- Text displayed to ask user to connect another device as no devices found with account -->
|
||||
<string name="synced_tabs_connect_another_device">Colliar in auter apparat.</string>
|
||||
<!-- Text displayed asking user to re-authenticate -->
|
||||
<string name="synced_tabs_reauth">Re-autentifitgescha per plaschair.</string>
|
||||
|
|
|
@ -974,9 +974,10 @@
|
|||
<string name="onboarding_whats_new_description">Have questions about the redesigned %s? Want to know what’s changed?</string>
|
||||
<!-- text for underlined clickable link that is part of "what's new" onboarding card description that links to an FAQ -->
|
||||
<string name="onboarding_whats_new_description_linktext">Get answers here</string>
|
||||
<!-- text for the firefox account onboarding card header
|
||||
The first parameter is the name of the app (e.g. Firefox Preview) -->
|
||||
<string name="onboarding_firefox_account_header">Get the most out of %s.</string>
|
||||
<!-- text for the firefox account onboarding card header -->
|
||||
<string name="onboarding_firefox_account_header">Start syncing bookmarks, passwords, and more with your Firefox account.</string>
|
||||
<!-- Text for the button to learn more about signing in to your Firefox account -->
|
||||
<string name="onboarding_manual_sign_in_learn_more">Learn more</string>
|
||||
<!-- text for the firefox account onboarding card header when we detect you're already signed in to
|
||||
another Firefox browser. (The word `Firefox` should not be translated)
|
||||
The first parameter is the email of the detected user's account -->
|
||||
|
|
|
@ -65,7 +65,7 @@ class OnboardingAutomaticSignInViewHolderTest {
|
|||
"You are signed in as email@example.com on another Firefox browser on this phone. Would you like to sign in with this account?",
|
||||
view.header_text.text
|
||||
)
|
||||
assertTrue(view.turn_on_sync_button.isEnabled)
|
||||
assertTrue(view.fxa_sign_in_button.isEnabled)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -79,10 +79,10 @@ class OnboardingAutomaticSignInViewHolderTest {
|
|||
|
||||
val holder = OnboardingAutomaticSignInViewHolder(view, scope = this)
|
||||
holder.bind(account)
|
||||
holder.onClick(view.turn_on_sync_button)
|
||||
holder.onClick(view.fxa_sign_in_button)
|
||||
|
||||
assertEquals("Signing in…", view.turn_on_sync_button.text)
|
||||
assertFalse(view.turn_on_sync_button.isEnabled)
|
||||
assertEquals("Signing in…", view.fxa_sign_in_button.text)
|
||||
assertFalse(view.fxa_sign_in_button.isEnabled)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -96,10 +96,10 @@ class OnboardingAutomaticSignInViewHolderTest {
|
|||
|
||||
val holder = OnboardingAutomaticSignInViewHolder(view, scope = this)
|
||||
holder.bind(account)
|
||||
holder.onClick(view.turn_on_sync_button)
|
||||
holder.onClick(view.fxa_sign_in_button)
|
||||
|
||||
assertEquals("Yes, sign me in", view.turn_on_sync_button.text)
|
||||
assertTrue(view.turn_on_sync_button.isEnabled)
|
||||
assertEquals("Yes, sign me in", view.fxa_sign_in_button.text)
|
||||
assertTrue(view.fxa_sign_in_button.isEnabled)
|
||||
verify { snackbar.setText("Failed to sign-in") }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,9 +6,12 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.navigation.NavController
|
||||
import androidx.navigation.Navigation
|
||||
import io.mockk.Runs
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.unmockkStatic
|
||||
|
@ -22,20 +25,27 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.home.HomeFragmentDirections
|
||||
import org.mozilla.fenix.onboarding.OnboardingInteractor
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class OnboardingManualSignInViewHolderTest {
|
||||
|
||||
private lateinit var view: View
|
||||
private lateinit var navController: NavController
|
||||
private lateinit var interactor: OnboardingInteractor
|
||||
private lateinit var itemView: ViewGroup
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
view = LayoutInflater.from(testContext)
|
||||
.inflate(OnboardingManualSignInViewHolder.LAYOUT_ID, null)
|
||||
navController = mockk(relaxed = true)
|
||||
interactor = mockk(relaxUnitFun = true)
|
||||
itemView = mockk(relaxed = true)
|
||||
|
||||
mockkStatic(Navigation::class)
|
||||
every { itemView.context } returns testContext
|
||||
every { interactor.onLearnMoreClicked() } just Runs
|
||||
every { Navigation.findNavController(view) } returns navController
|
||||
}
|
||||
|
||||
|
@ -48,13 +58,16 @@ class OnboardingManualSignInViewHolderTest {
|
|||
fun `bind header text`() {
|
||||
OnboardingManualSignInViewHolder(view).bind()
|
||||
|
||||
assertEquals("Get the most out of Firefox Preview.", view.header_text.text)
|
||||
assertEquals(
|
||||
"Start syncing bookmarks, passwords, and more with your Firefox account.",
|
||||
view.header_text.text
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `navigate on click`() {
|
||||
OnboardingManualSignInViewHolder(view)
|
||||
view.turn_on_sync_button.performClick()
|
||||
view.fxa_sign_in_button.performClick()
|
||||
|
||||
verify { navController.navigate(HomeFragmentDirections.actionGlobalTurnOnSync()) }
|
||||
}
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
object AndroidComponents {
|
||||
const val VERSION = "54.0.20200818130156"
|
||||
const val VERSION = "56.0.20200819190136"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue