Skip to content

Commit

Permalink
feat(app): try to support menu bar between qt 5.9 and qt 5.10
Browse files Browse the repository at this point in the history
  • Loading branch information
Wescoeur committed Jan 22, 2018
1 parent b59e8c2 commit 5dd0161
Show file tree
Hide file tree
Showing 5 changed files with 184 additions and 25 deletions.
2 changes: 2 additions & 0 deletions resources.qrc
Expand Up @@ -395,6 +395,7 @@
<file>ui/views/App/Calls/IncomingCall.qml</file>
<file>ui/views/App/Calls/OutgoingCall.qml</file>
<file>ui/views/App/Calls/ZrtpTokenAuthentication.qml</file>
<file>ui/views/App/Main/+5.9/MainWindowMenuBar.qml</file>
<file>ui/views/App/Main/Assistant/ActivateLinphoneSipAccountWithEmail.qml</file>
<file>ui/views/App/Main/Assistant/ActivateLinphoneSipAccountWithPhoneNumber.qml</file>
<file>ui/views/App/Main/Assistant/AssistantAbstractView.qml</file>
Expand All @@ -419,6 +420,7 @@
<file>ui/views/App/Main/Dialogs/ManageAccounts.qml</file>
<file>ui/views/App/Main/Home.qml</file>
<file>ui/views/App/Main/InviteFriends.qml</file>
<file>ui/views/App/Main/+mac/MainWindowMenuBar.qml</file>
<file>ui/views/App/Main/MainWindow.js</file>
<file>ui/views/App/Main/MainWindowMenuBar.qml</file>
<file>ui/views/App/Main/MainWindow.qml</file>
Expand Down
12 changes: 10 additions & 2 deletions src/app/App.cpp
Expand Up @@ -23,6 +23,7 @@
#include <QCommandLineParser>
#include <QDir>
#include <QFileSelector>
#include <QLibraryInfo>
#include <QMenu>
#include <QQmlFileSelector>
#include <QSystemTrayIcon>
Expand Down Expand Up @@ -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.
Expand Down
79 changes: 79 additions & 0 deletions 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()
}
}
}
}
79 changes: 79 additions & 0 deletions 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()
}
}
}
}
37 changes: 14 additions & 23 deletions 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

Expand Down Expand Up @@ -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()
}
}
}

0 comments on commit 5dd0161

Please sign in to comment.