mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-21 21:58:06 +00:00
142 lines
3.7 KiB
QML
142 lines
3.7 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Layouts 1.3
|
|
import QtQuick.Controls
|
|
import Linphone
|
|
import UtilsCpp 1.0
|
|
import SettingsCpp 1.0
|
|
|
|
ApplicationWindow {
|
|
id: mainWindow
|
|
width: 1512 * DefaultStyle.dp
|
|
height: 982 * DefaultStyle.dp
|
|
visible: true
|
|
title: qsTr("Linphone")
|
|
// TODO : handle this bool when security mode is implemented
|
|
property bool firstConnection: true
|
|
|
|
color: "transparent"
|
|
|
|
// TODO : use this to make the border transparent
|
|
// flags: Qt.Window | Qt.FramelessWindowHint | Qt.WindowTitleHint
|
|
// menuBar: Rectangle {
|
|
// width: parent.width
|
|
// height: 40 * DefaultStyle.dp
|
|
// color: DefaultStyle.grey_100
|
|
// }
|
|
|
|
function goToNewCall() {
|
|
mainWindowStackView.replace(mainPage, StackView.Immediate)
|
|
mainWindowStackView.currentItem.goToNewCall()
|
|
}
|
|
function transferCallSucceed() {
|
|
mainWindowStackView.replace(mainPage, StackView.Immediate)
|
|
mainWindowStackView.currentItem.transferCallSucceed()
|
|
}
|
|
|
|
Component {
|
|
id: popupComp
|
|
InformationPopup{}
|
|
}
|
|
function showInformationPopup(title, description, isSuccess) {
|
|
var infoPopup = popupComp.createObject(popupLayout, {"title": title, "description": description, "isSuccess": isSuccess})
|
|
infoPopup.index = popupLayout.popupList.length
|
|
popupLayout.popupList.push(infoPopup)
|
|
infoPopup.open()
|
|
}
|
|
|
|
|
|
ColumnLayout {
|
|
id: popupLayout
|
|
anchors.fill: parent
|
|
Layout.alignment: Qt.AlignBottom
|
|
property int nextY: mainWindow.height
|
|
property list<Popup> popupList
|
|
property int popupCount: popupList.length
|
|
spacing: 15
|
|
onPopupCountChanged: {
|
|
nextY = mainWindow.height
|
|
for(var i = 0; i < popupCount; ++i) {
|
|
popupList[i].y = nextY - popupList[i].height
|
|
nextY = nextY - popupList[i].height - 15
|
|
}
|
|
}
|
|
}
|
|
|
|
AccountProxy {
|
|
// TODO : change this so it does not display the main page for one second
|
|
// when we fail trying to connect the first account (account is added and
|
|
// removed shortly after)
|
|
id: accountProxy
|
|
}
|
|
StackView {
|
|
id: mainWindowStackView
|
|
anchors.fill: parent
|
|
initialItem: accountProxy.haveAccount ? mainPage : SettingsCpp.getFirstLaunch() ? welcomePage : loginPage
|
|
}
|
|
Component {
|
|
id: welcomePage
|
|
WelcomePage {
|
|
onStartButtonPressed: {
|
|
mainWindowStackView.replace(loginPage)// Replacing the first item will destroy the old.
|
|
SettingsCpp.setFirstLaunch(false)
|
|
}
|
|
}
|
|
}
|
|
Component {
|
|
id: loginPage
|
|
LoginPage {
|
|
showBackButton: accountProxy.haveAccount
|
|
onGoBack: mainWindowStackView.replace(mainPage)
|
|
onUseSIPButtonClicked: mainWindowStackView.push(sipLoginPage)
|
|
onGoToRegister: mainWindowStackView.replace(registerPage)
|
|
onConnectionSucceed: {
|
|
mainWindowStackView.replace(mainPage)
|
|
}
|
|
}
|
|
}
|
|
Component {
|
|
id: sipLoginPage
|
|
SIPLoginPage {
|
|
onGoBack: mainWindowStackView.pop()
|
|
onGoToRegister: mainWindowStackView.replace(registerPage)
|
|
|
|
onConnectionSucceed: {
|
|
mainWindowStackView.replace(mainPage)
|
|
}
|
|
}
|
|
}
|
|
Component {
|
|
id: registerPage
|
|
RegisterPage {
|
|
onReturnToLogin: mainWindowStackView.replace(loginPage)
|
|
onRegisterCalled: (countryCode, phoneNumber, email) => {
|
|
mainWindowStackView.push(checkingPage, {"phoneNumber": phoneNumber, "email": email})
|
|
}
|
|
}
|
|
}
|
|
Component {
|
|
id: checkingPage
|
|
RegisterCheckingPage {
|
|
onReturnToRegister: mainWindowStackView.pop()
|
|
}
|
|
}
|
|
Component {
|
|
id: securityModePage
|
|
SecurityModePage {
|
|
id: securePage
|
|
onModeSelected: (index) => {
|
|
// TODO : connect to cpp part when ready
|
|
var selectedMode = index == 0 ? "chiffrement" : "interoperable"
|
|
console.debug("[SelectMode]User: User selected mode " + selectedMode)
|
|
mainWindowStackView.replace(mainPage)
|
|
}
|
|
}
|
|
}
|
|
Component {
|
|
id: mainPage
|
|
MainLayout {
|
|
onAddAccountRequest: mainWindowStackView.replace(loginPage)
|
|
// StackView.onActivated: connectionSecured(0) // TODO : connect to cpp part when ready
|
|
}
|
|
}
|
|
}
|