Commit c9d27e37 authored by Ronan Abhamon's avatar Ronan Abhamon

feat(app): toolbar in progress

parent 2b46a4c5
...@@ -394,6 +394,41 @@ Server url not configured.</translation> ...@@ -394,6 +394,41 @@ Server url not configured.</translation>
<translation>auto</translation> <translation>auto</translation>
</message> </message>
</context> </context>
<context>
<name>MainWindowMenuBar</name>
<message>
<source>tools</source>
<translation>Tools</translation>
</message>
<message>
<source>help</source>
<translation>Help</translation>
</message>
<message>
<source>options</source>
<translation>Options</translation>
</message>
<message>
<source>settings</source>
<translation>Settings</translation>
</message>
<message>
<source>accountAssistant</source>
<translation>Account assistant</translation>
</message>
<message>
<source>audioAssistant</source>
<translation>Audio Assistant</translation>
</message>
<message>
<source>debugWindow</source>
<translation>Debug window</translation>
</message>
<message>
<source>about</source>
<translation>About</translation>
</message>
</context>
<context> <context>
<name>ManageAccounts</name> <name>ManageAccounts</name>
<message> <message>
......
...@@ -393,6 +393,41 @@ Url du serveur non configurée.</translation> ...@@ -393,6 +393,41 @@ Url du serveur non configurée.</translation>
<translation>auto</translation> <translation>auto</translation>
</message> </message>
</context> </context>
<context>
<name>MainWindowMenuBar</name>
<message>
<source>tools</source>
<translation>Outils</translation>
</message>
<message>
<source>help</source>
<translation>Aide</translation>
</message>
<message>
<source>options</source>
<translation>Options</translation>
</message>
<message>
<source>settings</source>
<translation>Paramètres</translation>
</message>
<message>
<source>accountAssistant</source>
<translation>Assistant de compte</translation>
</message>
<message>
<source>audioAssistant</source>
<translation>Assistant audio</translation>
</message>
<message>
<source>debugWindow</source>
<translation>Fenêtre de debug</translation>
</message>
<message>
<source>about</source>
<translation>À propos</translation>
</message>
</context>
<context> <context>
<name>ManageAccounts</name> <name>ManageAccounts</name>
<message> <message>
......
...@@ -303,6 +303,7 @@ ...@@ -303,6 +303,7 @@
<file>ui/views/App/Main/Contacts.qml</file> <file>ui/views/App/Main/Contacts.qml</file>
<file>ui/views/App/Main/Conversation.qml</file> <file>ui/views/App/Main/Conversation.qml</file>
<file>ui/views/App/Main/Home.qml</file> <file>ui/views/App/Main/Home.qml</file>
<file>ui/views/App/Main/MainWindowMenuBar.qml</file>
<file>ui/views/App/Main/MainWindow.qml</file> <file>ui/views/App/Main/MainWindow.qml</file>
<file>ui/views/App/ManageAccounts.qml</file> <file>ui/views/App/ManageAccounts.qml</file>
<file>ui/views/App/qmldir</file> <file>ui/views/App/qmldir</file>
......
...@@ -6,6 +6,8 @@ import Common 1.0 ...@@ -6,6 +6,8 @@ import Common 1.0
// ============================================================================= // =============================================================================
QtObject { QtObject {
property color color: Colors.k
property QtObject contact: QtObject { property QtObject contact: QtObject {
property int height: 60 property int height: 60
......
...@@ -45,6 +45,11 @@ ColumnLayout { ...@@ -45,6 +45,11 @@ ColumnLayout {
spacing: 0 spacing: 0
Rectangle {
anchors.fill: parent
color: TimelineStyle.color
}
SmartConnect { SmartConnect {
Component.onCompleted: { Component.onCompleted: {
// Handle if current entry was moved in timeline. // Handle if current entry was moved in timeline.
......
...@@ -2,6 +2,9 @@ import QtQuick 2.7 ...@@ -2,6 +2,9 @@ import QtQuick 2.7
import QtQuick.Controls 2.0 import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
// Explicit import to support Toolbar.
import QtQuick.Controls 1.4 as Controls1
import Common 1.0 import Common 1.0
import Linphone 1.0 import Linphone 1.0
import Utils 1.0 import Utils 1.0
...@@ -10,7 +13,7 @@ import App.Styles 1.0 ...@@ -10,7 +13,7 @@ import App.Styles 1.0
// ============================================================================= // =============================================================================
ApplicationWindow { Controls1.ApplicationWindow {
id: window id: window
property string _currentView: '' property string _currentView: ''
...@@ -84,145 +87,160 @@ ApplicationWindow { ...@@ -84,145 +87,160 @@ ApplicationWindow {
onActiveFocusItemChanged: activeFocusItem == null && smartSearchBar.hideMenu() onActiveFocusItemChanged: activeFocusItem == null && smartSearchBar.hideMenu()
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Toolbar properties. // Mernu bar.
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
header: ToolBar { menuBar: MainWindowMenuBar {}
background: MainWindowStyle.toolBar.background
height: MainWindowStyle.toolBar.height
RowLayout { ColumnLayout {
anchors { anchors.fill: parent
fill: parent spacing: 0
leftMargin: MainWindowStyle.toolBar.leftMargin
rightMargin: MainWindowStyle.toolBar.rightMargin
}
spacing: MainWindowStyle.toolBar.spacing
Collapse { // -------------------------------------------------------------------------
id: collapse // Toolbar properties.
// -------------------------------------------------------------------------
Layout.fillHeight: parent.height ToolBar {
target: window Layout.fillWidth: true
targetHeight: MainWindowStyle.minimumHeight Layout.preferredHeight: MainWindowStyle.toolBar.height
}
AccountStatus { background: MainWindowStyle.toolBar.background
id: accountStatus
Layout.fillHeight: parent.height RowLayout {
Layout.preferredWidth: MainWindowStyle.accountStatus.width anchors {
fill: parent
leftMargin: MainWindowStyle.toolBar.leftMargin
rightMargin: MainWindowStyle.toolBar.rightMargin
}
spacing: MainWindowStyle.toolBar.spacing
account: AccountSettingsModel Collapse {
id: collapse
TooltipArea { Layout.fillHeight: parent.height
text: AccountSettingsModel.sipAddress target: window
targetHeight: MainWindowStyle.minimumHeight
} }
onClicked: Utils.openWindow('ManageAccounts', window) AccountStatus {
} id: accountStatus
Layout.fillHeight: parent.height
Layout.preferredWidth: MainWindowStyle.accountStatus.width
Column { account: AccountSettingsModel
width: MainWindowStyle.autoAnswerStatus.width
Icon { TooltipArea {
icon: SettingsModel.autoAnswerStatus text: AccountSettingsModel.sipAddress
? 'auto_answer' }
: ''
iconSize: MainWindowStyle.autoAnswerStatus.iconSize onClicked: Utils.openWindow('ManageAccounts', window)
} }
Text { Column {
clip: true width: MainWindowStyle.autoAnswerStatus.width
font {
pointSize: MainWindowStyle.autoAnswerStatus.text.fontSize Icon {
icon: SettingsModel.autoAnswerStatus
? 'auto_answer'
: ''
iconSize: MainWindowStyle.autoAnswerStatus.iconSize
}
Text {
clip: true
font {
pointSize: MainWindowStyle.autoAnswerStatus.text.fontSize
}
text: qsTr('autoAnswerStatus')
width: parent.width
color: MainWindowStyle.autoAnswerStatus.text.color
} }
text: qsTr('autoAnswerStatus')
width: parent.width
color: MainWindowStyle.autoAnswerStatus.text.color
} }
}
SmartSearchBar { SmartSearchBar {
id: smartSearchBar id: smartSearchBar
Layout.fillWidth: true Layout.fillWidth: true
entryHeight: MainWindowStyle.searchBox.entryHeight entryHeight: MainWindowStyle.searchBox.entryHeight
maxMenuHeight: MainWindowStyle.searchBox.maxHeight maxMenuHeight: MainWindowStyle.searchBox.maxHeight
placeholderText: qsTr('mainSearchBarPlaceholder') placeholderText: qsTr('mainSearchBarPlaceholder')
model: SmartSearchBarModel {} model: SmartSearchBarModel {}
onAddContact: window.setView('ContactEdit', { onAddContact: window.setView('ContactEdit', {
sipAddress: sipAddress sipAddress: sipAddress
}) })
onLaunchCall: CallsListModel.launchAudioCall(sipAddress) onLaunchCall: CallsListModel.launchAudioCall(sipAddress)
onLaunchChat: window.setView('Conversation', { onLaunchChat: window.setView('Conversation', {
sipAddress: sipAddress sipAddress: sipAddress
}) })
onLaunchVideoCall: CallsListModel.launchVideoCall(sipAddress) onLaunchVideoCall: CallsListModel.launchVideoCall(sipAddress)
onEntryClicked: window.setView(entry.contact ? 'ContactEdit' : 'Conversation', { onEntryClicked: window.setView(entry.contact ? 'ContactEdit' : 'Conversation', {
sipAddress: entry.sipAddress sipAddress: entry.sipAddress
}) })
}
} }
} }
}
// ---------------------------------------------------------------------------
// Content.
// ---------------------------------------------------------------------------
RowLayout { // -------------------------------------------------------------------------
anchors.fill: parent // Content.
spacing: 0 // -------------------------------------------------------------------------
// Main menu. RowLayout {
ColumnLayout {
Layout.fillHeight: true Layout.fillHeight: true
Layout.maximumWidth: MainWindowStyle.menu.width Layout.fillWidth: true
Layout.preferredWidth: MainWindowStyle.menu.width
spacing: 0 spacing: 0
Menu { // Main menu.
id: menu ColumnLayout {
Layout.maximumWidth: MainWindowStyle.menu.width
Layout.preferredWidth: MainWindowStyle.menu.width
entryHeight: MainWindowStyle.menu.entryHeight spacing: 0
entryWidth: MainWindowStyle.menu.width
entries: [{ Menu {
entryName: qsTr('homeEntry'), id: menu
icon: 'home'
}, {
entryName: qsTr('contactsEntry'),
icon: 'contact'
}]
onEntrySelected: !entry ? setView('Home') : setView('Contacts') entryHeight: MainWindowStyle.menu.entryHeight
} entryWidth: MainWindowStyle.menu.width
// History. entries: [{
Timeline { entryName: qsTr('homeEntry'),
id: timeline icon: 'home'
}, {
entryName: qsTr('contactsEntry'),
icon: 'contact'
}]
Layout.fillHeight: true onEntrySelected: !entry ? setView('Home') : setView('Contacts')
Layout.fillWidth: true }
model: TimelineModel
// History.
Timeline {
id: timeline
Layout.fillHeight: true
Layout.fillWidth: true
model: TimelineModel
onEntrySelected: setView('Conversation', { sipAddress: entry }) onEntrySelected: setView('Conversation', { sipAddress: entry })
}
} }
}
// Main content. // Main content.
Loader { Loader {
id: contentLoader id: contentLoader
Layout.fillHeight: true Layout.fillHeight: true
Layout.fillWidth: true Layout.fillWidth: true
Component.onCompleted: setView('Home') Component.onCompleted: setView('Home')
}
} }
} }
} }
import QtQuick 2.7
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
// ============================================================================
MenuBar {
style: MenuBarStyle {
background: Rectangle {
anchors.fill: parent
color: '#E8E8E7'
}
itemDelegate: Rectangle {
implicitHeight: text.height + 8
implicitWidth: text.width + 18
color: 'transparent'
Text {
id: text
anchors.centerIn: parent
font: root.font
text: formatMnemonic(styleData.text, styleData.underlineMnemonic)
color: styleData.open ? '#FE5E00' : '#515557'
}
}
}
// --------------------------------------------------------------------------
Menu {
title: qsTr('options')
MenuItem {
text: qsTr('settings')
}
}
Menu {
title: qsTr('tools')
MenuItem {
text: qsTr('accountAssistant')
}
MenuItem {
text: qsTr('audioAssistant')
}
MenuSeparator {}
MenuItem {
text: qsTr('debugWindow')
}
}
Menu {
title: qsTr('help')
MenuItem {
text: qsTr('about')
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment