status-desktop/ui/app/AppLayouts/Browser/popups/AddFavoriteModal.qml

174 lines
5.0 KiB
QML
Raw Normal View History

2020-10-29 15:19:27 +00:00
import QtQuick 2.13
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import QtGraphicalEffects 1.13
import utils 1.0
import shared.controls 1.0
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import StatusQ.Controls.Validators 0.1
import shared 1.0
import shared.popups 1.0
import "../stores"
2020-10-29 15:19:27 +00:00
// TODO: replace with StatusModal
2020-10-29 15:19:27 +00:00
ModalPopup {
property string ogUrl
property string ogName
property bool modifiyModal: false
2020-10-29 20:07:52 +00:00
property bool toolbarMode: false
2020-10-29 15:19:27 +00:00
id: popup
2020-10-29 20:07:52 +00:00
width: toolbarMode ? 345 : 480
height: toolbarMode ? 400 : 480
2020-10-29 20:07:52 +00:00
modal: !toolbarMode
background: Rectangle {
id: bgPopup
color: Style.current.background
radius: Style.current.radius
layer.enabled: true
layer.effect: DropShadow{
width: bgPopup.width
height: bgPopup.height
x: bgPopup.x
y: bgPopup.y + 10
visible: bgPopup.visible
source: bgPopup
horizontalOffset: 0
verticalOffset: 5
radius: 10
samples: 15
color: Style.current.dropShadow
}
}
2020-10-29 15:19:27 +00:00
onOpened: {
urlInput.input.text = ogUrl
nameInput.input.text = ogName
urlInput.input.forceActiveFocus(Qt.MouseFocusReason)
2020-10-29 15:19:27 +00:00
}
onClosed: {
reset()
}
function reset() {
modifiyModal = false
2020-10-29 20:07:52 +00:00
toolbarMode = false
urlInput.reset()
nameInput.reset()
ogUrl = ""
ogName = ""
x = Math.round(((parent ? parent.width : 0) - width) / 2)
y = Math.round(((parent ? parent.height : 0) - height) / 2)
}
title: modifiyModal ?
2020-10-29 20:07:52 +00:00
toolbarMode ?
2021-02-18 16:36:05 +00:00
//% "Favorite added"
qsTrId("favorite-added") :
//% "Edit"
qsTrId("edit")
//% "Add favorite"
: qsTrId("add-favorite")
2020-10-29 15:19:27 +00:00
Column {
width: parent.width
spacing: Style.current.padding
StatusInput {
2020-10-29 15:19:27 +00:00
id: urlInput
anchors.left: parent.left
anchors.right: parent.right
leftPadding: 0
rightPadding: 0
label: qsTr("URL")
input.text: ogUrl
input.placeholderText: qsTr("Paste URL")
input.component: StatusButton {
anchors.verticalCenter: parent.verticalCenter
border.width: 1
border.color: Theme.palette.primaryColor1
size: StatusBaseButton.Size.Tiny
text: qsTr("Paste")
onClicked: {
text = qsTr("Pasted")
urlInput.input.edit.paste()
}
}
validators: [
StatusUrlValidator {
errorMessage: qsTr("Please enter a valid URL")
}
]
2020-10-29 15:19:27 +00:00
}
StatusInput {
2020-10-29 15:19:27 +00:00
id: nameInput
anchors.left: parent.left
anchors.right: parent.right
leftPadding: 0
rightPadding: 0
label: qsTr("Name")
input.text: ogName
input.placeholderText: qsTr("Name of the website")
validators: [
StatusMinLengthValidator {
errorMessage: qsTr("Please enter a name")
minLength: 1
}
]
2020-10-29 15:19:27 +00:00
}
}
footer: Item {
width: parent.width
height: removeBtn.height
StatusButton {
id: removeBtn
anchors.right: addBtn.left
anchors.rightMargin: Style.current.padding
visible: popup.modifiyModal
2021-02-18 16:36:05 +00:00
//% "Remove"
text: qsTrId("remove")
anchors.bottom: parent.bottom
type: StatusBaseButton.Type.Danger
onClicked: {
BookmarksStore.deleteBookmark(popup.ogUrl)
popup.close()
2020-10-29 15:19:27 +00:00
}
}
2020-10-29 15:19:27 +00:00
StatusButton {
id: addBtn
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
text: popup.modifiyModal ?
2021-02-18 16:36:05 +00:00
//% "Done"
qsTrId("done") :
//% "Add"
qsTrId("add")
anchors.bottom: parent.bottom
enabled: nameInput.valid && urlInput.valid
onClicked: {
if (!popup.modifiyModal) {
// remove "add favorite" button at the end, add new bookmark, add "add favorite" button back
BookmarksStore.deleteBookmark(" ")
BookmarksStore.addBookmark(urlInput.input.text, nameInput.input.text)
BookmarksStore.addBookmark(" ", qsTr("Add Favorite"))
} else if (popup.ogName !== nameInput.input.text || popup.ogUrl !== urlInput.input.text) {
BookmarksStore.updateBookmark(popup.ogUrl, urlInput.input.text, nameInput.input.text)
}
popup.close()
}
2020-10-29 15:19:27 +00:00
}
}
}