diff --git a/resources.qrc b/resources.qrc
index 235a56bc2..c36f54360 100644
--- a/resources.qrc
+++ b/resources.qrc
@@ -395,6 +395,7 @@
ui/views/App/Calls/IncomingCall.qml
ui/views/App/Calls/OutgoingCall.qml
ui/views/App/Calls/ZrtpTokenAuthentication.qml
+ ui/views/App/Main/+5.9/MainWindowMenuBar.qml
ui/views/App/Main/Assistant/ActivateLinphoneSipAccountWithEmail.qml
ui/views/App/Main/Assistant/ActivateLinphoneSipAccountWithPhoneNumber.qml
ui/views/App/Main/Assistant/AssistantAbstractView.qml
@@ -419,6 +420,7 @@
ui/views/App/Main/Dialogs/ManageAccounts.qml
ui/views/App/Main/Home.qml
ui/views/App/Main/InviteFriends.qml
+ ui/views/App/Main/+mac/MainWindowMenuBar.qml
ui/views/App/Main/MainWindow.js
ui/views/App/Main/MainWindowMenuBar.qml
ui/views/App/Main/MainWindow.qml
diff --git a/src/app/App.cpp b/src/app/App.cpp
index ed87fbf7f..15fd5ae5d 100644
--- a/src/app/App.cpp
+++ b/src/app/App.cpp
@@ -23,6 +23,7 @@
#include
#include
#include
+#include
#include
#include
#include
@@ -197,8 +198,15 @@ void App::initContentApp () {
// Init engine content.
mEngine = new QQmlApplicationEngine();
- // Provide `+custom` folders for custom components.
- (new QQmlFileSelector(mEngine, mEngine))->setExtraSelectors(QStringList("custom"));
+ // Provide `+custom` folders for custom components and `5.9` for old components.
+ // TODO: Remove 5.9 support in 6 months. (~ July 2018).
+ {
+ QStringList selectors("custom");
+ const QVersionNumber &version = QLibraryInfo::version();
+ if (version.majorVersion() == 5 && version.minorVersion() == 9)
+ selectors.push_back("5.9");
+ (new QQmlFileSelector(mEngine, mEngine))->setExtraSelectors(selectors);
+ }
qInfo() << QStringLiteral("Activated selectors:") << QQmlFileSelector::get(mEngine)->selector()->allSelectors();
// Set modules paths.
diff --git a/ui/views/App/Main/+5.9/MainWindowMenuBar.qml b/ui/views/App/Main/+5.9/MainWindowMenuBar.qml
new file mode 100644
index 000000000..48a0dde3b
--- /dev/null
+++ b/ui/views/App/Main/+5.9/MainWindowMenuBar.qml
@@ -0,0 +1,79 @@
+import QtQuick 2.7
+
+// Experimental.
+import Qt.labs.platform 1.0
+
+import Linphone 1.0
+
+// =============================================================================
+
+Item {
+ function open () {
+ menu.open()
+ }
+
+ // ---------------------------------------------------------------------------
+ // Shortcuts.
+ // ---------------------------------------------------------------------------
+
+ Shortcut {
+ id: settingsShortcut
+
+ sequence: 'Ctrl+P'
+
+ onActivated: App.smartShowWindow(App.getSettingsWindow())
+ }
+
+ Shortcut {
+ id: quitShortcut
+
+ context: Qt.ApplicationShortcut
+ sequence: StandardKey.Quit
+
+ onActivated: Qt.quit()
+ }
+
+ Shortcut {
+ id: aboutShortcut
+
+ sequence: StandardKey.HelpContents
+
+ onActivated: {
+ window.detachVirtualWindow()
+ window.attachVirtualWindow(Qt.resolvedUrl('Dialogs/About.qml'))
+ }
+ }
+
+ // ---------------------------------------------------------------------------
+ // Menu.
+ // ---------------------------------------------------------------------------
+
+ MenuBar {
+ Menu {
+ id: menu
+
+ MenuItem {
+ role: MenuItem.PreferencesRole
+ shortcut: settingsShortcut.sequence
+ text: qsTr('settings')
+
+ onTriggered: settingsShortcut.onActivated()
+ }
+
+ MenuItem {
+ role: MenuItem.AboutRole
+ text: qsTr('about')
+
+ onTriggered: aboutShortcut.onActivated()
+ }
+
+ MenuItem {
+ role: MenuItem.QuitRole
+ shortcut: quitShortcut.sequence
+ text: qsTr('quit')
+
+ onTriggered: quitShortcut.onActivated()
+ }
+ }
+ }
+}
diff --git a/ui/views/App/Main/+mac/MainWindowMenuBar.qml b/ui/views/App/Main/+mac/MainWindowMenuBar.qml
new file mode 100644
index 000000000..48a0dde3b
--- /dev/null
+++ b/ui/views/App/Main/+mac/MainWindowMenuBar.qml
@@ -0,0 +1,79 @@
+import QtQuick 2.7
+
+// Experimental.
+import Qt.labs.platform 1.0
+
+import Linphone 1.0
+
+// =============================================================================
+
+Item {
+ function open () {
+ menu.open()
+ }
+
+ // ---------------------------------------------------------------------------
+ // Shortcuts.
+ // ---------------------------------------------------------------------------
+
+ Shortcut {
+ id: settingsShortcut
+
+ sequence: 'Ctrl+P'
+
+ onActivated: App.smartShowWindow(App.getSettingsWindow())
+ }
+
+ Shortcut {
+ id: quitShortcut
+
+ context: Qt.ApplicationShortcut
+ sequence: StandardKey.Quit
+
+ onActivated: Qt.quit()
+ }
+
+ Shortcut {
+ id: aboutShortcut
+
+ sequence: StandardKey.HelpContents
+
+ onActivated: {
+ window.detachVirtualWindow()
+ window.attachVirtualWindow(Qt.resolvedUrl('Dialogs/About.qml'))
+ }
+ }
+
+ // ---------------------------------------------------------------------------
+ // Menu.
+ // ---------------------------------------------------------------------------
+
+ MenuBar {
+ Menu {
+ id: menu
+
+ MenuItem {
+ role: MenuItem.PreferencesRole
+ shortcut: settingsShortcut.sequence
+ text: qsTr('settings')
+
+ onTriggered: settingsShortcut.onActivated()
+ }
+
+ MenuItem {
+ role: MenuItem.AboutRole
+ text: qsTr('about')
+
+ onTriggered: aboutShortcut.onActivated()
+ }
+
+ MenuItem {
+ role: MenuItem.QuitRole
+ shortcut: quitShortcut.sequence
+ text: qsTr('quit')
+
+ onTriggered: quitShortcut.onActivated()
+ }
+ }
+ }
+}
diff --git a/ui/views/App/Main/MainWindowMenuBar.qml b/ui/views/App/Main/MainWindowMenuBar.qml
index 48a0dde3b..e32b8fe31 100644
--- a/ui/views/App/Main/MainWindowMenuBar.qml
+++ b/ui/views/App/Main/MainWindowMenuBar.qml
@@ -1,7 +1,5 @@
import QtQuick 2.7
-
-// Experimental.
-import Qt.labs.platform 1.0
+import QtQuick.Controls 2.3
import Linphone 1.0
@@ -48,32 +46,25 @@ Item {
// Menu.
// ---------------------------------------------------------------------------
- MenuBar {
- Menu {
- id: menu
+ Menu {
+ id: menu
- MenuItem {
- role: MenuItem.PreferencesRole
- shortcut: settingsShortcut.sequence
- text: qsTr('settings')
+ MenuItem {
+ text: qsTr('settings')
- onTriggered: settingsShortcut.onActivated()
- }
+ onTriggered: settingsShortcut.onActivated()
+ }
- MenuItem {
- role: MenuItem.AboutRole
- text: qsTr('about')
+ MenuItem {
+ text: qsTr('about')
- onTriggered: aboutShortcut.onActivated()
- }
+ onTriggered: aboutShortcut.onActivated()
+ }
- MenuItem {
- role: MenuItem.QuitRole
- shortcut: quitShortcut.sequence
- text: qsTr('quit')
+ MenuItem {
+ text: qsTr('quit')
- onTriggered: quitShortcut.onActivated()
- }
+ onTriggered: quitShortcut.onActivated()
}
}
}