From 2d8cf78839adfcc376809a6d694b34109eed6865 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Mon, 20 Mar 2017 10:52:54 +0100 Subject: [PATCH] feat(ui/views/App/Main/MainWindow): use a logic file --- linphone-desktop/resources.qrc | 1 + .../scripts/LinphoneUtils/linphone-utils.js | 2 + .../ui/views/App/Main/MainWindow.js | 66 ++++++++++++++++++ .../ui/views/App/Main/MainWindow.qml | 67 +++---------------- 4 files changed, 79 insertions(+), 57 deletions(-) create mode 100644 linphone-desktop/ui/views/App/Main/MainWindow.js diff --git a/linphone-desktop/resources.qrc b/linphone-desktop/resources.qrc index 49481aec7..fa2f74d20 100644 --- a/linphone-desktop/resources.qrc +++ b/linphone-desktop/resources.qrc @@ -324,6 +324,7 @@ ui/views/App/Main/Conversation.qml ui/views/App/Main/Home.qml ui/views/App/Main/InviteFriends.qml + ui/views/App/Main/MainWindow.js ui/views/App/Main/MainWindowMenuBar.qml ui/views/App/Main/MainWindow.qml ui/views/App/ManageAccountsWindow.qml diff --git a/linphone-desktop/ui/scripts/LinphoneUtils/linphone-utils.js b/linphone-desktop/ui/scripts/LinphoneUtils/linphone-utils.js index de2bf980f..732f6d404 100644 --- a/linphone-desktop/ui/scripts/LinphoneUtils/linphone-utils.js +++ b/linphone-desktop/ui/scripts/LinphoneUtils/linphone-utils.js @@ -6,6 +6,8 @@ .import 'qrc:/ui/scripts/Utils/utils.js' as Utils +// ============================================================================= + // Returns the username of a contact object or URI string. function getContactUsername (contact) { return Utils.isString(contact) diff --git a/linphone-desktop/ui/views/App/Main/MainWindow.js b/linphone-desktop/ui/views/App/Main/MainWindow.js new file mode 100644 index 000000000..20f609586 --- /dev/null +++ b/linphone-desktop/ui/views/App/Main/MainWindow.js @@ -0,0 +1,66 @@ +// ============================================================================= +// `MainWindow.qml` Logic. +// ============================================================================= + +.import QtQuick.Window 2.2 as Window + +.import 'qrc:/ui/scripts/Utils/utils.js' as Utils + +// ============================================================================= + +function lockView (info) { + window._lockedInfo = info +} + +function unlockView () { + window._lockedInfo = undefined +} + +function setView (view, props) { + function apply (view, props) { + if (window.visibility === Window.Minimized) { + window.visibility = Window.AutomaticVisibility + } else { + window.setVisible(true) + } + + collapse.setCollapsed(true) + updateSelectedEntry(view, props) + window._currentView = view + contentLoader.setSource(view + '.qml', props || {}) + } + + var lockedInfo = window._lockedInfo + if (!lockedInfo) { + apply(view, props) + return + } + + Utils.openConfirmDialog(window, { + descriptionText: lockedInfo.descriptionText, + exitHandler: function (status) { + if (status) { + unlockView() + apply(view, props) + } else { + updateSelectedEntry(window._currentView, props) + } + }, + title: lockedInfo.title + }) +} + +// ----------------------------------------------------------------------------- + +function updateSelectedEntry (view, props) { + if (view === 'Home' || view === 'Contacts') { + menu.setSelectedEntry(view === 'Home' ? 0 : 1) + timeline.resetSelectedEntry() + } else if (view === 'Conversation') { + menu.resetSelectedEntry() + timeline.setSelectedEntry(props.sipAddress) + } else if (view === 'ContactEdit') { + menu.resetSelectedEntry() + timeline.resetSelectedEntry() + } +} diff --git a/linphone-desktop/ui/views/App/Main/MainWindow.qml b/linphone-desktop/ui/views/App/Main/MainWindow.qml index d4b7076e7..0c6e2c240 100644 --- a/linphone-desktop/ui/views/App/Main/MainWindow.qml +++ b/linphone-desktop/ui/views/App/Main/MainWindow.qml @@ -1,7 +1,6 @@ import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.3 -import QtQuick.Window 2.2 // Explicit import to support Toolbar. import QtQuick.Controls 1.4 as Controls1 @@ -12,6 +11,8 @@ import Utils 1.0 import App.Styles 1.0 +import 'MainWindow.js' as Logic + // ============================================================================= Controls1.ApplicationWindow { @@ -23,64 +24,15 @@ Controls1.ApplicationWindow { // --------------------------------------------------------------------------- function lockView (info) { - _lockedInfo = info + Logic.lockView(info) } function unlockView () { - _lockedInfo = undefined + Logic.unlockView(info) } function setView (view, props) { - if (!_lockedInfo) { - _setView(view, props) - return - } - - Utils.openConfirmDialog(window, { - descriptionText: _lockedInfo.descriptionText, - exitHandler: function (status) { - if (status) { - unlockView() - _setView(view, props) - } else { - _updateSelectedEntry(_currentView, props) - } - }, - title: _lockedInfo.title - }) - } - - // --------------------------------------------------------------------------- - - function _updateSelectedEntry (view, props) { - if (view === 'Home' || view === 'Contacts') { - menu.setSelectedEntry(view === 'Home' ? 0 : 1) - timeline.resetSelectedEntry() - } else if (view === 'Conversation') { - menu.resetSelectedEntry() - timeline.setSelectedEntry(props.sipAddress) - } else if (view === 'ContactEdit') { - menu.resetSelectedEntry() - timeline.resetSelectedEntry() - } - } - - function _forceView (view, props) { - collapse.setCollapsed(true) - - _updateSelectedEntry(view, props) - _currentView = view - contentLoader.setSource(view + '.qml', props || {}) - } - - function _setView (view, props) { - if (window.visibility === Window.Minimized) { - window.visibility = Window.AutomaticVisibility - } else { - window.setVisible(true) - } - - _forceView(view, props) + Logic.setView(view, props) } // --------------------------------------------------------------------------- @@ -105,10 +57,6 @@ Controls1.ApplicationWindow { // --------------------------------------------------------------------------- - Component.onCompleted: Utils.setTimeout(window, 0, function () { - _forceView('Home') - }) - onActiveFocusItemChanged: activeFocusItem == null && smartSearchBar.hideMenu() // --------------------------------------------------------------------------- @@ -151,6 +99,8 @@ Controls1.ApplicationWindow { target: window targetHeight: MainWindowStyle.minimumHeight visible: Qt.platform.os !== 'linux' + + Component.onCompleted: setCollapsed(true) } AccountStatus { @@ -193,6 +143,7 @@ Controls1.ApplicationWindow { id: smartSearchBar Layout.fillWidth: true + entryHeight: MainWindowStyle.searchBox.entryHeight maxMenuHeight: MainWindowStyle.searchBox.maxHeight placeholderText: qsTr('mainSearchBarPlaceholder') @@ -269,6 +220,8 @@ Controls1.ApplicationWindow { Layout.fillHeight: true Layout.fillWidth: true + + source: 'Home.qml' } } }