client-qml: add initial commit

Change-Id: I32bfdd2a618aa7ac6181da2697e241667b010aab
diff --git a/src/wizardview/components/ImportFromBackupPage.qml b/src/wizardview/components/ImportFromBackupPage.qml
new file mode 100644
index 0000000..bd7d26e
--- /dev/null
+++ b/src/wizardview/components/ImportFromBackupPage.qml
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2020 by Savoir-faire Linux
+ * Author: Yang Wang <yang.wang@savoirfairelinux.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick 2.14
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.14
+import Qt.labs.platform 1.1
+
+import "../../constant"
+import "../../commoncomponents"
+
+ColumnLayout {
+    property alias text_passwordFromBackupEditAlias: passwordFromBackupEdit.text
+    property string fileImportBtnText: qsTr("Archive(none)")
+
+    signal importFromFile_Dialog_Accepted(string fileDir)
+
+    function clearAllTextFields() {
+        passwordFromBackupEdit.clear()
+        fileImportBtnText = qsTr("Archive(none)")
+    }
+
+    JamiFileDialog {
+        id: importFromFile_Dialog
+
+        mode: JamiFileDialog.OpenFile
+        title: qsTr("Open File")
+        folder: StandardPaths.writableLocation(StandardPaths.HomeLocation) + "/Desktop"
+
+        nameFilters: [qsTr("Jami archive files") + " (*.gz)", qsTr(
+                "All files") + " (*)"]
+
+        onAccepted: {
+            importFromFile_Dialog_Accepted(file)
+        }
+    }
+
+    Layout.fillWidth: true
+    Layout.fillHeight: true
+
+    Item {
+        Layout.alignment: Qt.AlignHCenter
+        Layout.fillWidth: true
+        Layout.fillHeight: true
+    }
+
+    ColumnLayout {
+        Layout.alignment: Qt.AlignCenter
+        Layout.maximumWidth: 366
+
+        spacing: 12
+
+        RowLayout {
+            Layout.fillWidth: true
+            Layout.maximumHeight: 24
+            spacing: 0
+
+            Item {
+                Layout.alignment: Qt.AlignVCenter
+                Layout.fillWidth: true
+                Layout.fillHeight: true
+            }
+
+            Label {
+                id: importFromBackupLabel
+                Layout.minimumHeight: 24
+                Layout.minimumWidth: 234
+                text: qsTr("Import from backup")
+                font.pointSize: 13
+                font.kerning: true
+                horizontalAlignment: Qt.AlignLeft
+                verticalAlignment: Qt.AlignVCenter
+            }
+
+            HoverableRadiusButton {
+                id: backupInfoBtn
+
+                buttonImageHeight: height
+                buttonImageWidth: width
+
+                Layout.alignment: Qt.AlignVCenter
+                Layout.minimumWidth: 24
+                Layout.preferredWidth: 24
+                Layout.maximumWidth: 24
+
+                Layout.minimumHeight: 24
+                Layout.preferredHeight: 24
+                Layout.maximumHeight: 24
+
+                radius: height / 2
+                icon.source: "/images/icons/info-24px.svg"
+                icon.height: 24
+                icon.width: 24
+
+                backgroundColor: JamiTheme.releaseColor
+                onClicked: {
+                    backupInfoLabel.visible = !backupInfoLabel.visible
+                }
+            }
+            Item {
+                Layout.alignment: Qt.AlignVCenter
+                Layout.fillWidth: true
+                Layout.fillHeight: true
+            }
+        }
+
+        HoverableGradientButton {
+            id: fileImportBtn
+
+            Layout.alignment: Qt.AlignHCenter
+            Layout.maximumWidth: 256
+            Layout.preferredWidth: 256
+
+            Layout.maximumHeight: 30
+            Layout.preferredHeight: 30
+            Layout.minimumHeight: 30
+
+            text: fileImportBtnText
+            font.pointSize: 10
+            font.kerning: true
+
+            radius: height / 2
+            backgroundColor: JamiTheme.releaseColor
+
+            onClicked: {
+                importFromFile_Dialog.open()
+            }
+        }
+
+        InfoLineEdit {
+            id: passwordFromBackupEdit
+
+            Layout.alignment: Qt.AlignHCenter
+
+            selectByMouse: true
+            echoMode: TextInput.Password
+            placeholderText: qsTr("Password")
+        }
+
+        Label {
+            id: backupInfoLabel
+
+            Layout.alignment: Qt.AlignHCenter
+            Layout.maximumWidth: 366
+            Layout.preferredWidth: 366
+
+            text: qsTr("You can obtain an archive by clicking on \"Export account\" in the account settings. This will create a .gz file on your device.")
+            wrapMode: Text.WordWrap
+            horizontalAlignment: Text.AlignHCenter
+            verticalAlignment: Text.AlignVCenter
+
+            visible: false
+        }
+    }
+
+    Item {
+        Layout.alignment: Qt.AlignHCenter
+        Layout.fillWidth: true
+        Layout.fillHeight: true
+    }
+}