diff --git a/app/src/main/java/mozilla/lockbox/action/DataStoreAction.kt b/app/src/main/java/mozilla/lockbox/action/DataStoreAction.kt index 355ec9f7b..a783e4265 100644 --- a/app/src/main/java/mozilla/lockbox/action/DataStoreAction.kt +++ b/app/src/main/java/mozilla/lockbox/action/DataStoreAction.kt @@ -6,7 +6,6 @@ package mozilla.lockbox.action -import mozilla.appservices.logins.ServerPassword import mozilla.lockbox.model.SyncCredentials sealed class DataStoreAction( @@ -17,14 +16,6 @@ sealed class DataStoreAction( object Unlock : DataStoreAction(TelemetryEventMethod.unlock, TelemetryEventObject.datastore) object Reset : DataStoreAction(TelemetryEventMethod.reset, TelemetryEventObject.datastore) object Sync : DataStoreAction(TelemetryEventMethod.sync, TelemetryEventObject.datastore) - data class Touch(val id: String) : DataStoreAction(TelemetryEventMethod.touch, TelemetryEventObject.datastore) - - data class UpdateCredentials(val syncCredentials: SyncCredentials) : - DataStoreAction(TelemetryEventMethod.update_credentials, TelemetryEventObject.datastore) - - data class Delete(val item: ServerPassword?) : - DataStoreAction(TelemetryEventMethod.delete, TelemetryEventObject.delete_credential) - - data class Edit(val itemId: Int) : DataStoreAction(TelemetryEventMethod.edit, TelemetryEventObject.edit_credential) + data class UpdateCredentials(val syncCredentials: SyncCredentials) : DataStoreAction(TelemetryEventMethod.update_credentials, TelemetryEventObject.datastore) } diff --git a/app/src/main/java/mozilla/lockbox/action/DialogAction.kt b/app/src/main/java/mozilla/lockbox/action/DialogAction.kt index 7cb3dd55f..b08d3cec7 100644 --- a/app/src/main/java/mozilla/lockbox/action/DialogAction.kt +++ b/app/src/main/java/mozilla/lockbox/action/DialogAction.kt @@ -6,7 +6,6 @@ package mozilla.lockbox.action -import mozilla.appservices.logins.ServerPassword import mozilla.lockbox.R import mozilla.lockbox.flux.Action import mozilla.lockbox.model.DialogViewModel @@ -16,7 +15,6 @@ sealed class DialogAction( val positiveButtonActionList: List = emptyList(), val negativeButtonActionList: List = emptyList() ) : RouteAction(TelemetryEventMethod.show, TelemetryEventObject.dialog) { - object SecurityDisclaimer : DialogAction( DialogViewModel( R.string.no_device_security_title, @@ -24,9 +22,8 @@ sealed class DialogAction( R.string.set_up_security_button, R.string.cancel ), - listOf(SystemSetting(SettingIntent.Security)) + listOf(RouteAction.SystemSetting(SettingIntent.Security)) ) - object UnlinkDisclaimer : DialogAction( DialogViewModel( R.string.disconnect_disclaimer_title, @@ -37,34 +34,17 @@ sealed class DialogAction( ), listOf(LifecycleAction.UserReset) ) - object OnboardingSecurityDialog : DialogAction( - DialogViewModel( - R.string.secure_your_device, - R.string.device_security_description, - R.string.set_up_now, - R.string.skip_button - ), - listOf( - SystemSetting(SettingIntent.Security), - Login - ), - listOf(Login) - ) - - data class DeleteConfirmationDialog( - val item: ServerPassword? - ) : DialogAction( - DialogViewModel( - R.string.delete_this_login, - R.string.delete_description, - R.string.delete, - R.string.cancel, - R.color.red - ), - listOf( - DataStoreAction.Delete(item), - ItemList + DialogViewModel( + R.string.secure_your_device, + R.string.device_security_description, + R.string.set_up_now, + R.string.skip_button + ), + listOf( + RouteAction.SystemSetting(SettingIntent.Security), + RouteAction.Login + ), + listOf(RouteAction.Login) ) - ) } \ No newline at end of file diff --git a/app/src/main/java/mozilla/lockbox/action/ItemDetailAction.kt b/app/src/main/java/mozilla/lockbox/action/ItemDetailAction.kt index 8a5752644..633d0d5b9 100644 --- a/app/src/main/java/mozilla/lockbox/action/ItemDetailAction.kt +++ b/app/src/main/java/mozilla/lockbox/action/ItemDetailAction.kt @@ -6,18 +6,10 @@ package mozilla.lockbox.action -import androidx.annotation.StringRes -import mozilla.lockbox.R - sealed class ItemDetailAction( override val eventMethod: TelemetryEventMethod, override val eventObject: TelemetryEventObject ) : TelemetryAction { data class TogglePassword(val displayed: Boolean) : ItemDetailAction(TelemetryEventMethod.tap, TelemetryEventObject.reveal_password) - - enum class EditItemMenu(@StringRes val titleId: Int) { - EDIT(R.string.edit), - DELETE(R.string.delete) - } } diff --git a/app/src/main/java/mozilla/lockbox/action/SettingAction.kt b/app/src/main/java/mozilla/lockbox/action/SettingAction.kt index ebd98c53c..02fe7c688 100644 --- a/app/src/main/java/mozilla/lockbox/action/SettingAction.kt +++ b/app/src/main/java/mozilla/lockbox/action/SettingAction.kt @@ -41,7 +41,7 @@ class Setting { val ms: Long = this.seconds * 1000 } - enum class ItemListSort(@StringRes val titleId: Int, @StringRes val valueId: Int) { + enum class ItemListSort(val titleId: Int, val valueId: Int) { ALPHABETICALLY(R.string.all_logins_a_z, R.string.sort_menu_az), RECENTLY_USED(R.string.all_logins_recent, R.string.sort_menu_recent) } diff --git a/app/src/main/java/mozilla/lockbox/action/TelemetryAction.kt b/app/src/main/java/mozilla/lockbox/action/TelemetryAction.kt index 4cecde244..f13a00602 100644 --- a/app/src/main/java/mozilla/lockbox/action/TelemetryAction.kt +++ b/app/src/main/java/mozilla/lockbox/action/TelemetryAction.kt @@ -17,7 +17,7 @@ interface TelemetryAction : Action { val extras: Map? get() = null - fun createEvent(category: String = "action"): TelemetryEvent { + open fun createEvent(category: String = "action"): TelemetryEvent { val evt = TelemetryEvent.create( category, eventMethod.name, @@ -53,9 +53,7 @@ enum class TelemetryEventMethod { autofill_multiple, autofill_cancel, autofill_error, - autofill_filter, - delete, - edit + autofill_filter } enum class TelemetryEventObject { @@ -95,8 +93,5 @@ enum class TelemetryEventObject { filter, back, dialog, - datastore, - delete_credential, - edit_credential, - entry_kebab + datastore } diff --git a/app/src/main/java/mozilla/lockbox/adapter/DeleteItemAdapter.kt b/app/src/main/java/mozilla/lockbox/adapter/DeleteItemAdapter.kt deleted file mode 100644 index 44639b3ce..000000000 --- a/app/src/main/java/mozilla/lockbox/adapter/DeleteItemAdapter.kt +++ /dev/null @@ -1,45 +0,0 @@ -package mozilla.lockbox.adapter - -import android.content.Context -import android.view.View -import android.view.ViewGroup -import android.widget.ArrayAdapter -import android.widget.TextView -import mozilla.lockbox.R -import mozilla.lockbox.action.ItemDetailAction - -class DeleteItemAdapter( - context: Context, - textViewResourceId: Int, - val values: ArrayList -) : ArrayAdapter(context, textViewResourceId, values) { - - private var selectedIndex = -1 - - fun setSelection(position: Int) { - selectedIndex = position - notifyDataSetChanged() - } - - override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { - val label = super.getView(position, convertView, parent) as TextView - label.setTextAppearance(R.style.TextAppearanceWidgetEventToolbarTitle) - label.setTextColor(label.resources.getColor(R.color.text_white, null)) - label.setBackgroundColor(label.resources.getColor(R.color.color_primary, null)) - label.text = context.resources.getString(values[position].titleId) - label.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_menu_kebab, 0) - - return label - } - - override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View { - val label = super.getDropDownView(position, convertView, parent) as TextView - label.setTextAppearance(R.style.TextAppearanceSortMenuItem) - label.text = context.resources.getString(values[position].titleId) - label.background = context.resources.getDrawable(R.drawable.button_pressed_white, null) - val padding = label.resources.getDimensionPixelSize(R.dimen.sort_item_padding) - label.setPadding(padding, padding, padding, padding) - - return label - } -} \ No newline at end of file diff --git a/app/src/main/java/mozilla/lockbox/adapter/SectionedAdapter.kt b/app/src/main/java/mozilla/lockbox/adapter/SectionedAdapter.kt index 4770341f5..2c318b96f 100644 --- a/app/src/main/java/mozilla/lockbox/adapter/SectionedAdapter.kt +++ b/app/src/main/java/mozilla/lockbox/adapter/SectionedAdapter.kt @@ -73,6 +73,7 @@ class SectionedAdapter( else baseAdapter.getItemViewType(sectionedPositionToPosition(position)) + 1 } + class Section(internal var firstPosition: Int, @StringRes title: Int) { internal var sectionedPosition: Int = 0 @StringRes var title: Int diff --git a/app/src/main/java/mozilla/lockbox/extensions/view/AlertDialog+.kt b/app/src/main/java/mozilla/lockbox/extensions/view/AlertDialog+.kt index 5456e6c64..8b0a0fd58 100644 --- a/app/src/main/java/mozilla/lockbox/extensions/view/AlertDialog+.kt +++ b/app/src/main/java/mozilla/lockbox/extensions/view/AlertDialog+.kt @@ -12,7 +12,6 @@ import androidx.annotation.StringRes import androidx.appcompat.app.AlertDialog import io.reactivex.Observable import io.reactivex.ObservableEmitter -import kotlinx.android.synthetic.main.list_cell_setting_toggle.* import mozilla.lockbox.R import mozilla.lockbox.model.DialogViewModel @@ -26,7 +25,7 @@ object AlertDialogHelper { viewModel: DialogViewModel ): Observable { return Observable.create { emitter -> - val builder = AlertDialog.Builder(context, R.style.DeleteDialogStyle) + val builder = AlertDialog.Builder(context, R.style.AlertDialogStyle) viewModel.title?.let { val titleString = context.getString(it) @@ -63,6 +62,7 @@ object AlertDialogHelper { setUpDismissal(builder, emitter) val dialog = builder.create() + dialog.show() val defaultColor = context.getColor(R.color.violet_70) diff --git a/app/src/main/java/mozilla/lockbox/presenter/ItemDetailPresenter.kt b/app/src/main/java/mozilla/lockbox/presenter/ItemDetailPresenter.kt index c0e34f2ac..c406ea958 100644 --- a/app/src/main/java/mozilla/lockbox/presenter/ItemDetailPresenter.kt +++ b/app/src/main/java/mozilla/lockbox/presenter/ItemDetailPresenter.kt @@ -16,7 +16,6 @@ import mozilla.lockbox.R import mozilla.lockbox.action.AppWebPageAction import mozilla.lockbox.action.ClipboardAction import mozilla.lockbox.action.DataStoreAction -import mozilla.lockbox.action.DialogAction import mozilla.lockbox.action.ItemDetailAction import mozilla.lockbox.action.RouteAction import mozilla.lockbox.extensions.filterNotNull @@ -34,12 +33,10 @@ interface ItemDetailView { val togglePasswordClicks: Observable val hostnameClicks: Observable val learnMoreClicks: Observable - val kebabMenuClicks: Observable var isPasswordVisible: Boolean fun updateItem(item: ItemDetailViewModel) fun showToastNotification(@StringRes strId: Int) fun handleNetworkError(networkErrorVisibility: Boolean) - val menuItemSelection: Observable // val retryNetworkConnectionClicks: Observable } @@ -83,13 +80,6 @@ class ItemDetailPresenter( } } - view.menuItemSelection - .map { - DialogAction.DeleteConfirmationDialog(credentials) - } - .subscribe(dispatcher::dispatch) - .addTo(compositeDisposable) - this.view.learnMoreClicks .map { AppWebPageAction.FaqEdit } .subscribe(dispatcher::dispatch) @@ -127,8 +117,8 @@ class ItemDetailPresenter( private fun handleClicks(clicks: Observable, withServerPassword: (ServerPassword) -> Unit) { clicks.subscribe { - this.credentials?.let { password -> withServerPassword(password) } - } + this.credentials?.let { password -> withServerPassword(password) } + } .addTo(compositeDisposable) } } \ No newline at end of file diff --git a/app/src/main/java/mozilla/lockbox/presenter/ItemListPresenter.kt b/app/src/main/java/mozilla/lockbox/presenter/ItemListPresenter.kt index be4b5edf4..add63e718 100644 --- a/app/src/main/java/mozilla/lockbox/presenter/ItemListPresenter.kt +++ b/app/src/main/java/mozilla/lockbox/presenter/ItemListPresenter.kt @@ -51,7 +51,6 @@ interface ItemListView { val isRefreshing: Boolean fun stopRefreshing() fun showToastNotification(@StringRes strId: Int) - fun showDeleteToastNotification(text: String) } @ExperimentalCoroutinesApi @@ -168,13 +167,6 @@ class ItemListPresenter( .subscribe(view::handleNetworkError) .addTo(compositeDisposable) - dataStore.deletedItem - .subscribe { - val event = it.get() ?: return@subscribe - view.showDeleteToastNotification(event.formSubmitURL ?: event.hostname) - } - .addTo(compositeDisposable) - // TODO: make this more robust to retry loading the correct page again (loadUrl) // view.retryNetworkConnectionClicks.subscribe { // dispatcher.dispatch(NetworkAction.CheckConnectivity) diff --git a/app/src/main/java/mozilla/lockbox/store/DataStore.kt b/app/src/main/java/mozilla/lockbox/store/DataStore.kt index bc6e8f762..2af739f1c 100644 --- a/app/src/main/java/mozilla/lockbox/store/DataStore.kt +++ b/app/src/main/java/mozilla/lockbox/store/DataStore.kt @@ -32,6 +32,7 @@ import mozilla.lockbox.support.DataStoreSupport import mozilla.lockbox.support.FxASyncDataStoreSupport import mozilla.lockbox.support.Optional import mozilla.lockbox.support.TimingSupport +import mozilla.lockbox.support.asOptional import java.util.concurrent.TimeUnit import kotlin.coroutines.CoroutineContext @@ -61,12 +62,10 @@ open class DataStore( private val stateSubject = ReplayRelay.createWithSize(1) private val syncStateSubject = BehaviorRelay.createDefault(SyncState.NotSyncing) private val listSubject: BehaviorRelay> = BehaviorRelay.createDefault(emptyList()) - private val deletedItemSubject = ReplayRelay.create>() open val state: Observable = stateSubject open val syncState: Observable = syncStateSubject open val list: Observable> get() = listSubject - open val deletedItem: Observable> get() = deletedItemSubject private val exceptionHandler: CoroutineExceptionHandler get() = CoroutineExceptionHandler { _, e -> @@ -108,7 +107,6 @@ open class DataStore( is DataStoreAction.Touch -> touch(action.id) is DataStoreAction.Reset -> reset() is DataStoreAction.UpdateCredentials -> updateCredentials(action.syncCredentials) - is DataStoreAction.Delete -> deleteCredentials(action.item) } } .addTo(compositeDisposable) @@ -121,26 +119,6 @@ open class DataStore( setupAutoLock() } - private fun deleteCredentials(item: ServerPassword?) { - try { - if (item != null) { - backend.delete(item.id) - .asSingle(coroutineContext) - .subscribe() - .addTo(compositeDisposable) - sync() - deletedItemSubject.accept(Consumable(item)) - } - } catch (loginsStorageException: LoginsStorageException) { - log.error("Exception: ", loginsStorageException) - } - } - - private fun editEntry() { - // TODO -// dispatcher.dispatch(RouteAction.ItemList) - } - private fun shutdown() { // rather than calling `close`, which will make the `AsyncLoginsStorage` instance unusable, // we use the `ensureLocked` method to close the database connection. @@ -166,10 +144,8 @@ open class DataStore( open fun get(id: String): Observable> { return list.map { items -> - Optional( - items.findLast { item -> item.id == id } - ) - } + items.findLast { item -> item.id == id }.asOptional() + } } private fun touch(id: String) { diff --git a/app/src/main/java/mozilla/lockbox/support/Consumable.kt b/app/src/main/java/mozilla/lockbox/support/Consumable.kt deleted file mode 100644 index 36e56bb07..000000000 --- a/app/src/main/java/mozilla/lockbox/support/Consumable.kt +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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 mozilla.lockbox.support - -class Consumable(private val value: T) { - private var consumed = false - - fun get(): T? { - return if (consumed) { - null - } else { - consumed = true - value - } - } -} \ No newline at end of file diff --git a/app/src/main/java/mozilla/lockbox/support/Optional.kt b/app/src/main/java/mozilla/lockbox/support/Optional.kt index d996697c7..a6a28a059 100644 --- a/app/src/main/java/mozilla/lockbox/support/Optional.kt +++ b/app/src/main/java/mozilla/lockbox/support/Optional.kt @@ -7,4 +7,4 @@ package mozilla.lockbox.support data class Optional(val value: T?) -fun T?.asOptional(): Optional = Optional(this) \ No newline at end of file +fun T?.asOptional() = Optional(this) diff --git a/app/src/main/java/mozilla/lockbox/view/DialogFragment.kt b/app/src/main/java/mozilla/lockbox/view/DialogFragment.kt index e49809616..47777befb 100644 --- a/app/src/main/java/mozilla/lockbox/view/DialogFragment.kt +++ b/app/src/main/java/mozilla/lockbox/view/DialogFragment.kt @@ -7,10 +7,10 @@ package mozilla.lockbox.view import android.os.Bundle -import android.view.View import androidx.annotation.StringRes -import mozilla.lockbox.flux.Presenter import androidx.fragment.app.DialogFragment as AndroidDialogFragment +import android.view.View +import mozilla.lockbox.flux.Presenter open class DialogFragment : AndroidDialogFragment() { lateinit var presenter: Presenter diff --git a/app/src/main/java/mozilla/lockbox/view/ItemDetailFragment.kt b/app/src/main/java/mozilla/lockbox/view/ItemDetailFragment.kt index ccb45de10..eeb2908e8 100644 --- a/app/src/main/java/mozilla/lockbox/view/ItemDetailFragment.kt +++ b/app/src/main/java/mozilla/lockbox/view/ItemDetailFragment.kt @@ -8,26 +8,22 @@ package mozilla.lockbox.view import android.os.Bundle import android.text.InputType +import androidx.annotation.StringRes import android.text.method.PasswordTransformationMethod import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.AdapterView import android.widget.EditText -import android.widget.Spinner import android.widget.TextView import android.widget.Toast -import androidx.annotation.StringRes import com.jakewharton.rxbinding2.view.clicks import io.reactivex.Observable -import io.reactivex.subjects.PublishSubject import kotlinx.android.synthetic.main.fragment_item_detail.* import kotlinx.android.synthetic.main.fragment_item_detail.view.* +import kotlinx.android.synthetic.main.include_backable.* import kotlinx.coroutines.ExperimentalCoroutinesApi import mozilla.lockbox.R -import mozilla.lockbox.action.ItemDetailAction -import mozilla.lockbox.adapter.DeleteItemAdapter import mozilla.lockbox.model.ItemDetailViewModel import mozilla.lockbox.presenter.ItemDetailPresenter import mozilla.lockbox.presenter.ItemDetailView @@ -49,15 +45,6 @@ class ItemDetailFragment : BackableFragment(), ItemDetailView { return inflater.inflate(R.layout.fragment_item_detail, container, false) } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - setupKebabMenu(view) - } - - private lateinit var spinner: Spinner - private lateinit var itemAdapter: DeleteItemAdapter - private var userSelection = false - private val errorHelper = NetworkErrorHelper() override val usernameCopyClicks: Observable @@ -75,9 +62,6 @@ class ItemDetailFragment : BackableFragment(), ItemDetailView { override val learnMoreClicks: Observable get() = view!!.detailLearnMore.clicks() - override val kebabMenuClicks: Observable - get() = view!!.toolbar.kebabMenu.clicks() - override var isPasswordVisible: Boolean = false set(value) { assertOnUiThread() @@ -85,39 +69,6 @@ class ItemDetailFragment : BackableFragment(), ItemDetailView { updatePasswordVisibility(value) } - private var _menuItemSelection = PublishSubject.create() - override val menuItemSelection: Observable = _menuItemSelection - - private val menuOptions: Array - get() = ItemDetailAction.EditItemMenu.values() - - private fun setupKebabMenu(view: View) { - val sortList = ArrayList() - sortList.add(ItemDetailAction.EditItemMenu.EDIT) - sortList.add(ItemDetailAction.EditItemMenu.DELETE) - spinner = view.kebabMenu - itemAdapter = DeleteItemAdapter(context!!, android.R.layout.simple_spinner_item, sortList) - spinner.adapter = itemAdapter - spinner.setPopupBackgroundResource(R.drawable.sort_menu_bg) - - // added because different events can trigger onItemSelectedListener - spinner.setOnTouchListener { _, _ -> - userSelection = true - false - } - spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { - override fun onNothingSelected(parent: AdapterView<*>?) { - } - - override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { - if (userSelection) { - itemAdapter.setSelection(position) - _menuItemSelection.onNext(menuOptions[position]) - } - } - } - } - private fun updatePasswordVisibility(visible: Boolean) { if (visible) { inputPassword.transformationMethod = null @@ -130,10 +81,7 @@ class ItemDetailFragment : BackableFragment(), ItemDetailView { override fun updateItem(item: ItemDetailViewModel) { assertOnUiThread() - toolbar.elevation = resources.getDimension(R.dimen.larger_toolbar_elevation) toolbar.title = item.title - toolbar.entryTitle.text = item.title - toolbar.entryTitle.gravity = Gravity.CENTER_VERTICAL inputLayoutHostname.isHintAnimationEnabled = false inputLayoutUsername.isHintAnimationEnabled = false diff --git a/app/src/main/java/mozilla/lockbox/view/ItemListFragment.kt b/app/src/main/java/mozilla/lockbox/view/ItemListFragment.kt index 1f88012ac..736971bd6 100644 --- a/app/src/main/java/mozilla/lockbox/view/ItemListFragment.kt +++ b/app/src/main/java/mozilla/lockbox/view/ItemListFragment.kt @@ -80,12 +80,12 @@ class ItemListFragment : Fragment(), ItemListView { setupToolbar(view.navToolbar, view.appDrawer) setupNavigationView(navController, view.navView) setupListView(view.entriesView) - setupSortDropdown(view) + setupSpinner(view) view.refreshContainer.setColorSchemeResources(R.color.refresh_violet) super.onViewCreated(view, savedInstanceState) } - private fun setupSortDropdown(view: View) { + private fun setupSpinner(view: View) { val sortList = ArrayList() sortList.add(Setting.ItemListSort.ALPHABETICALLY) sortList.add(Setting.ItemListSort.RECENTLY_USED) @@ -231,27 +231,13 @@ class ItemListFragment : Fragment(), ItemListView { override fun showToastNotification(@StringRes strId: Int) { assertOnUiThread() - val toast = setUpToast(strId = strId) - toast.show() - } - - override fun showDeleteToastNotification(text: String) { - assertOnUiThread() - val toast = setUpToast(text = text) - toast.show() - } - - private fun setUpToast(@StringRes strId: Int? = null, text: String? = null): Toast { val toast = Toast(activity) - toast.duration = Toast.LENGTH_SHORT toast.view = layoutInflater.inflate(R.layout.toast_view, this.view as ViewGroup, false) toast.setGravity(Gravity.FILL_HORIZONTAL or Gravity.BOTTOM, 0, 0) - - val view = toast.view.findViewById(R.id.message) as TextView - view.text = text?.plus(" deleted.") ?: resources.getString(strId!!) - - return toast + val v = toast.view.findViewById(R.id.message) as TextView + v.text = resources.getString(strId) + toast.show() } // override val retryNetworkConnectionClicks: Observable diff --git a/app/src/main/res/drawable-hdpi/ic_menu_kebab.png b/app/src/main/res/drawable-hdpi/ic_menu_kebab.png deleted file mode 100644 index 5b74b5185..000000000 Binary files a/app/src/main/res/drawable-hdpi/ic_menu_kebab.png and /dev/null differ diff --git a/app/src/main/res/drawable-mdpi/ic_menu_kebab.png b/app/src/main/res/drawable-mdpi/ic_menu_kebab.png deleted file mode 100644 index bdc15e1c0..000000000 Binary files a/app/src/main/res/drawable-mdpi/ic_menu_kebab.png and /dev/null differ diff --git a/app/src/main/res/drawable-v24/ic_menu_kebab.xml b/app/src/main/res/drawable-v24/ic_menu_kebab.xml deleted file mode 100644 index 7951714a0..000000000 --- a/app/src/main/res/drawable-v24/ic_menu_kebab.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - diff --git a/app/src/main/res/drawable-xhdpi/ic_menu_kebab.png b/app/src/main/res/drawable-xhdpi/ic_menu_kebab.png deleted file mode 100644 index 1d5e4f567..000000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_menu_kebab.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_menu_kebab.png b/app/src/main/res/drawable-xxhdpi/ic_menu_kebab.png deleted file mode 100644 index 0d761ea0d..000000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_menu_kebab.png and /dev/null differ diff --git a/app/src/main/res/drawable/button_pressed_white.xml b/app/src/main/res/drawable/button_pressed_white.xml deleted file mode 100644 index 21fbf8d54..000000000 --- a/app/src/main/res/drawable/button_pressed_white.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_item_detail.xml b/app/src/main/res/layout/fragment_item_detail.xml index 1a50549a5..1b9dfa791 100644 --- a/app/src/main/res/layout/fragment_item_detail.xml +++ b/app/src/main/res/layout/fragment_item_detail.xml @@ -14,6 +14,7 @@ android:id="@+id/fragment_item_detail" android:background="@color/background_grey" > + - - - - - - - 96dp 40dp 4dp - 8dp 90dp 216dp 318dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 269943906..7365ea44c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -259,14 +259,4 @@ - - - More options - - Delete - - Delete this login? - - This will delete the login from both Lockwise and Firefox. - Edit diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index c1734bb62..3c0904f0a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -103,20 +103,8 @@ @color/violet_70 @style/AlertButtonStyle -