feat: add the Add favorite popup
This commit is contained in:
parent
7242409bfa
commit
ff0a96c02b
|
@ -0,0 +1,69 @@
|
||||||
|
import QtQuick 2.13
|
||||||
|
import QtQuick.Controls 2.13
|
||||||
|
import QtQuick.Layouts 1.13
|
||||||
|
import "../../../imports"
|
||||||
|
import "../../../shared"
|
||||||
|
|
||||||
|
ModalPopup {
|
||||||
|
property string urlError: ""
|
||||||
|
property string nameError: ""
|
||||||
|
|
||||||
|
id: popup
|
||||||
|
width: 480
|
||||||
|
height: 480
|
||||||
|
|
||||||
|
onOpened: {
|
||||||
|
urlInput.forceActiveFocus(Qt.MouseFocusReason)
|
||||||
|
}
|
||||||
|
|
||||||
|
function validate() {
|
||||||
|
urlError = ""
|
||||||
|
if (!urlInput.text) {
|
||||||
|
urlError = qsTr("Please enter a URL")
|
||||||
|
} else if (!Utils.isURL(urlInput.text)) {
|
||||||
|
urlError = qsTr("This fields needs to be a valid URL")
|
||||||
|
}
|
||||||
|
|
||||||
|
nameError = !nameInput.text ? qsTr("Please enter a Name") : ""
|
||||||
|
|
||||||
|
return !urlError && !nameError
|
||||||
|
}
|
||||||
|
|
||||||
|
title: qsTr("Add favorite")
|
||||||
|
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
spacing: Style.current.padding
|
||||||
|
|
||||||
|
Input {
|
||||||
|
id: urlInput
|
||||||
|
label: qsTr("URL")
|
||||||
|
placeholderText: qsTr("Paste URL")
|
||||||
|
pasteFromClipboard: true
|
||||||
|
validationError: popup.urlError
|
||||||
|
}
|
||||||
|
|
||||||
|
Input {
|
||||||
|
id: nameInput
|
||||||
|
label: qsTr("Name")
|
||||||
|
placeholderText: qsTr("Name the website")
|
||||||
|
validationError: popup.nameError
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
footer: StyledButton {
|
||||||
|
id: addBtn
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: Style.current.smallPadding
|
||||||
|
label: qsTr("Add")
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
onClicked: {
|
||||||
|
if (!validate()) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
browserModel.addBookmark(urlInput.text, nameInput.text)
|
||||||
|
popup.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -91,6 +91,10 @@ Rectangle {
|
||||||
standardButtons: StandardButton.Ok
|
standardButtons: StandardButton.Ok
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AddFavoriteModal {
|
||||||
|
id: addFavoriteModal
|
||||||
|
}
|
||||||
|
|
||||||
QtObject {
|
QtObject {
|
||||||
id: provider
|
id: provider
|
||||||
WebChannel.id: "backend"
|
WebChannel.id: "backend"
|
||||||
|
@ -637,8 +641,7 @@ Rectangle {
|
||||||
id: addBookmarkBtn
|
id: addBookmarkBtn
|
||||||
text: qsTr("Add favorite")
|
text: qsTr("Add favorite")
|
||||||
onClicked: {
|
onClicked: {
|
||||||
// TODO add a popup
|
addFavoriteModal.open()
|
||||||
browserModel.addBookmark("https://dap.ps/", "dap.ps")
|
|
||||||
}
|
}
|
||||||
anchors.left: bookmarkList.right
|
anchors.left: bookmarkList.right
|
||||||
anchors.leftMargin: bookmarkList.spacing
|
anchors.leftMargin: bookmarkList.spacing
|
||||||
|
|
|
@ -150,6 +150,10 @@ QtObject {
|
||||||
return (/^[a-z0-9\-]+$/.test(channelName))
|
return (/^[a-z0-9\-]+$/.test(channelName))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isURL(text) {
|
||||||
|
return (/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)/.test(text))
|
||||||
|
}
|
||||||
|
|
||||||
function isSpace(c) {
|
function isSpace(c) {
|
||||||
return (/( |\t|\n|\r)/.test(c))
|
return (/( |\t|\n|\r)/.test(c))
|
||||||
}
|
}
|
||||||
|
|
|
@ -121,6 +121,7 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||||
!isEmpty(target.path): INSTALLS += target
|
!isEmpty(target.path): INSTALLS += target
|
||||||
|
|
||||||
DISTFILES += \
|
DISTFILES += \
|
||||||
|
app/AppLayouts/Browser/AddFavoriteModal.qml \
|
||||||
app/AppLayouts/Browser/BrowserConnectionModal.qml \
|
app/AppLayouts/Browser/BrowserConnectionModal.qml \
|
||||||
app/AppLayouts/Browser/BrowserHeader.qml \
|
app/AppLayouts/Browser/BrowserHeader.qml \
|
||||||
app/AppLayouts/Browser/BrowserSettingsMenu.qml \
|
app/AppLayouts/Browser/BrowserSettingsMenu.qml \
|
||||||
|
|
Loading…
Reference in New Issue