From be41f0e7a65782af3ff35553b933415968014fcb Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Wed, 8 Sep 2021 10:31:38 -0400 Subject: [PATCH] misc: Qt 6.2.0 initial migration Remove unsupported QtQuick One component and it will be added back in the following patches Change-Id: Iad206a880096cf956a4220a81dca85a993721fbd --- CMakeLists.txt | 111 ++-- make-client.py | 42 +- qml.qrc | 7 +- qtquickcontrols2.conf | 9 + src/DaemonReconnectWindow.qml | 13 +- src/MainApplicationWindow.qml | 118 ++-- src/accountadapter.cpp | 12 +- src/avadapter.cpp | 6 +- src/calloverlaymodel.cpp | 3 +- .../AccountMigrationDialog.qml | 13 +- src/commoncomponents/Avatar.qml | 8 +- src/commoncomponents/BackButton.qml | 4 +- src/commoncomponents/BaseDialog.qml | 4 +- src/commoncomponents/BubbleLabel.qml | 4 +- src/commoncomponents/CustomBorder.qml | 2 +- src/commoncomponents/DaemonReconnectPopup.qml | 6 +- .../DataTransferMessageDelegate.qml | 10 +- src/commoncomponents/DeleteAccountDialog.qml | 6 +- src/commoncomponents/ElidedTextLabel.qml | 4 +- src/commoncomponents/GeneralWebEngineView.qml | 10 +- .../GeneratedMessageDelegate.qml | 6 +- src/commoncomponents/HalfPill.qml | 2 +- src/commoncomponents/JamiFileDialog.qml | 4 +- src/commoncomponents/JamiFlickable.qml | 50 ++ .../{ListViewJami.qml => JamiListView.qml} | 35 +- src/commoncomponents/JamiScrollBar.qml | 84 +++ src/commoncomponents/JamiSwitch.qml | 4 +- src/commoncomponents/LineEditContextMenu.qml | 2 +- src/commoncomponents/MaterialButton.qml | 6 +- src/commoncomponents/MaterialLineEdit.qml | 10 +- src/commoncomponents/MaterialToolTip.qml | 4 +- src/commoncomponents/MessageBubble.qml | 4 +- src/commoncomponents/ModalPopup.qml | 13 +- src/commoncomponents/PasswordDialog.qml | 4 +- src/commoncomponents/PhotoboothView.qml | 8 +- .../PreferenceItemDelegate.qml | 6 +- src/commoncomponents/PresenceIndicator.qml | 2 +- src/commoncomponents/PushButton.qml | 4 +- src/commoncomponents/ReadStatus.qml | 8 +- src/commoncomponents/ResponsiveImage.qml | 6 +- src/commoncomponents/SBSMessageBase.qml | 8 +- src/commoncomponents/Scaffold.qml | 4 +- src/commoncomponents/SettingParaCombobox.qml | 13 +- src/commoncomponents/SimpleMessageDialog.qml | 6 +- src/commoncomponents/SpinningAnimation.qml | 4 +- src/commoncomponents/TextMessageDelegate.qml | 8 +- src/commoncomponents/TypingDots.qml | 6 +- src/commoncomponents/UsernameLineEdit.qml | 4 +- .../contextmenu/BaseContextMenu.qml | 8 +- .../contextmenu/ContextMenuAutoLoader.qml | 2 +- .../contextmenu/GeneralMenuItem.qml | 30 +- .../contextmenu/GeneralMenuSeparator.qml | 4 +- .../emojipicker/EmojiPicker.qml | 12 +- src/constant/JamiQmlUtils.qml | 2 +- src/constant/JamiStrings.qml | 2 +- src/constant/JamiTheme.qml | 10 +- src/constant/MsgSeq.qml | 2 +- src/contactadapter.cpp | 36 +- src/contactadapter.h | 4 +- src/conversationlistmodel.cpp | 12 +- src/conversationlistmodelbase.cpp | 2 +- src/main.cpp | 16 +- src/mainapplication.cpp | 16 +- src/mainapplication.h | 16 +- src/mainview/MainView.qml | 28 +- src/mainview/components/AboutPopUp.qml | 297 ++++----- src/mainview/components/AccountComboBox.qml | 6 +- .../components/AccountComboBoxPopup.qml | 19 +- .../components/AccountItemDelegate.qml | 6 +- src/mainview/components/BadgeNotifier.qml | 2 +- src/mainview/components/CallActionBar.qml | 13 +- .../components/CallButtonDelegate.qml | 16 +- src/mainview/components/CallOverlay.qml | 2 +- src/mainview/components/CallStackView.qml | 4 +- .../components/CallViewContextMenu.qml | 2 +- src/mainview/components/ChatView.qml | 6 +- src/mainview/components/ChatViewFooter.qml | 4 +- src/mainview/components/ChatViewHeader.qml | 4 +- src/mainview/components/ContactPicker.qml | 10 +- .../components/ContactPickerItemDelegate.qml | 4 +- src/mainview/components/ContactSearchBar.qml | 8 +- .../components/ConversationAvatar.qml | 4 +- .../components/ConversationListView.qml | 12 +- .../ConversationSmartListContextMenu.qml | 2 +- .../components/FilesToSendContainer.qml | 21 +- .../components/FilesToSendDelegate.qml | 6 +- src/mainview/components/FilterTabButton.qml | 6 +- src/mainview/components/InitialCallPage.qml | 10 +- src/mainview/components/InvitationView.qml | 4 +- src/mainview/components/MainOverlay.qml | 4 +- src/mainview/components/MessageBar.qml | 4 +- .../components/MessageBarTextArea.qml | 14 +- src/mainview/components/MessageListView.qml | 8 +- src/mainview/components/OngoingCallPage.qml | 16 +- .../ParticipantCallInStatusDelegate.qml | 4 +- .../ParticipantCallInStatusView.qml | 12 +- .../components/ParticipantControlLayout.qml | 2 +- .../components/ParticipantOverlay.qml | 6 +- .../components/ParticipantOverlayButton.qml | 2 +- .../components/ParticipantOverlayMenu.qml | 6 +- src/mainview/components/ParticipantsLayer.qml | 2 +- .../components/PluginHandlerItemDelegate.qml | 6 +- .../components/PluginHandlerPicker.qml | 16 +- .../components/ProjectCreditsScrollView.qml | 56 +- src/mainview/components/ReadOnlyFooter.qml | 6 +- src/mainview/components/RecordBox.qml | 8 +- src/mainview/components/ScreenRubberBand.qml | 4 +- .../components/ScrollToBottomButton.qml | 7 +- src/mainview/components/SelectScreen.qml | 30 +- src/mainview/components/SidePanel.qml | 6 +- src/mainview/components/SidePanelTabBar.qml | 2 +- src/mainview/components/SipInputPanel.qml | 6 +- .../components/SmartListItemDelegate.qml | 10 +- src/mainview/components/UserProfile.qml | 4 +- src/mainview/components/WelcomePage.qml | 6 +- .../components/WelcomePageQrDialog.qml | 2 +- src/messagesadapter.cpp | 3 +- src/networkmanager.cpp | 4 - src/previewengine.cpp | 1 - src/previewengine.h | 2 - src/qmlregister.cpp | 2 +- src/quickimageproviderbase.h | 2 +- src/settingsview/SettingsView.qml | 15 +- .../components/AccountProfile.qml | 4 +- .../components/AdvancedCallSettings.qml | 6 +- .../components/AdvancedChatSettings.qml | 4 +- .../AdvancedConnectivitySettings.qml | 4 +- .../AdvancedJamiSecuritySettings.qml | 4 +- .../components/AdvancedMediaSettings.qml | 6 +- .../components/AdvancedNameServerSettings.qml | 4 +- .../components/AdvancedOpenDHTSettings.qml | 4 +- .../AdvancedPublicAddressSettings.qml | 4 +- .../components/AdvancedSDPSettings.qml | 4 +- .../AdvancedSIPSecuritySettings.qml | 6 +- .../components/AdvancedSettings.qml | 4 +- .../components/AdvancedVoiceMailSettings.qml | 6 +- src/settingsview/components/AudioSettings.qml | 4 +- src/settingsview/components/AvSettingPage.qml | 4 +- .../components/BannedContacts.qml | 6 +- .../components/ChatviewSettings.qml | 6 +- .../components/ContactItemDelegate.qml | 6 +- .../components/CurrentAccountSettings.qml | 8 +- .../components/DeviceItemDelegate.qml | 8 +- .../components/FileTransferSettings.qml | 6 +- .../components/GeneralSettingsPage.qml | 4 +- .../components/JamiUserIdentity.qml | 6 +- .../components/KeyBoardShortcutKey.qml | 46 -- .../components/KeyBoardShortcutTable.qml | 624 ------------------ src/settingsview/components/LevelMeter.qml | 8 +- .../components/LinkDeviceDialog.qml | 6 +- src/settingsview/components/LinkedDevices.qml | 8 +- src/settingsview/components/LogsView.qml | 10 +- .../components/MediaCodecDelegate.qml | 8 +- src/settingsview/components/MediaSettings.qml | 8 +- .../components/NameRegistrationDialog.qml | 6 +- .../components/PluginItemDelegate.qml | 6 +- .../components/PluginListPreferencesView.qml | 6 +- .../components/PluginListSettingsView.qml | 8 +- .../components/PluginSettingsPage.qml | 6 +- .../components/RecordingSettings.qml | 8 +- .../components/RevokeDevicePasswordDialog.qml | 6 +- .../components/SIPUserIdentity.qml | 4 +- .../components/SettingMaterialButton.qml | 4 +- .../components/SettingSpinBox.qml | 6 +- .../components/SettingsComboBox.qml | 4 +- .../components/SettingsHeader.qml | 6 +- .../components/SettingsMaterialLineEdit.qml | 4 +- src/settingsview/components/SettingsMenu.qml | 4 +- .../components/SystemSettings.qml | 8 +- src/settingsview/components/ToggleSwitch.qml | 6 +- .../components/TroubleshootSettings.qml | 6 +- .../components/UpdateSettings.qml | 8 +- src/settingsview/components/UserIdentity.qml | 4 +- src/settingsview/components/VideoSettings.qml | 8 +- src/updatemanager.cpp | 16 +- src/updatemanager.h | 2 +- src/utils.cpp | 21 +- src/utilsadapter.cpp | 6 +- src/wizardview/WizardView.qml | 12 +- .../AccountCreationStepIndicator.qml | 2 +- src/wizardview/components/BackupKeyPage.qml | 8 +- .../ConnectToAccountManagerPage.qml | 11 +- .../components/CreateAccountPage.qml | 6 +- .../components/CreateSIPAccountPage.qml | 6 +- .../components/ImportFromBackupPage.qml | 10 +- .../components/ImportFromDevicePage.qml | 8 +- src/wizardview/components/ProfilePage.qml | 6 +- src/wizardview/components/WelcomePage.qml | 4 +- tests/CMakeLists.txt | 4 +- tests/qml/main.cpp | 6 +- tests/qml/src/tst_ChatViewFooter.qml | 8 +- tests/qml/src/tst_FilesToSendContainer.qml | 8 +- tests/qml/src/tst_LocalAccount.qml | 4 +- tests/qml/src/tst_PresenceIndicator.qml | 4 +- tests/qml/src/tst_WizardView.qml | 4 +- tests/unittests/account_unittest.cpp | 2 +- tests/unittests/contact_unittest.cpp | 4 +- 197 files changed, 1107 insertions(+), 1664 deletions(-) create mode 100644 qtquickcontrols2.conf create mode 100644 src/commoncomponents/JamiFlickable.qml rename src/commoncomponents/{ListViewJami.qml => JamiListView.qml} (60%) create mode 100644 src/commoncomponents/JamiScrollBar.qml delete mode 100644 src/settingsview/components/KeyBoardShortcutKey.qml delete mode 100644 src/settingsview/components/KeyBoardShortcutTable.qml diff --git a/CMakeLists.txt b/CMakeLists.txt index 4b14330ce..3c9736da2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -153,27 +153,39 @@ set(COMMON_HEADERS ${SRC_DIR}/previewengine.h) set(QML_LIBS - Qt5::Quick - Qt5::QuickWidgets - Qt5::Network - Qt5::Svg - Qt5::Sql - Qt5::Concurrent - Qt5::QuickControls2 - Qt5::WebEngine - Qt5::Core - Qt5::WebEngineWidgets) + Qt::Quick + Qt::Network + Qt::NetworkAuth + Qt::Svg + Qt::Gui + Qt::Qml + Qt::QmlModels + Qt::Positioning + Qt::Sql + Qt::Concurrent + Qt::Core + Qt::Core5Compat + Qt::WebEngineCore + Qt::WebEngineQuick + Qt::WebChannel + Qt::WebEngineWidgets) set(QML_LIBS_LIST - Core - Concurrent Quick - QuickWidgets Network + NetworkAuth Svg + Gui + Qml + QmlModels + Positioning Sql - QuickControls2 - WebEngine + Concurrent + Core + Core5Compat + WebEngineCore + WebEngineQuick + WebChannel WebEngineWidgets) set(WINDOWS_SYS_LIBS Shell32.lib @@ -185,6 +197,14 @@ set(WINDOWS_SYS_LIBS Shell32.lib Crypt32.lib Strmiids.lib) +# Here we let find_package(<PackageName>...) try to find Qt 6, +# If it is found, find_package will succeed, and the CMake variable +# QT_VERSION_MAJOR will be defined 6. +find_package(QT NAMES Qt6 COMPONENTS ${QML_LIBS_LIST} REQUIRED) +if (${QT_VERSION_MAJOR} STRLESS 6) + message(FATAL_ERROR "We currently only support Qt6" ) +endif() + if(MSVC) # preprocessor defines add_definitions(-DUNICODE -DQT_NO_DEBUG -DNDEBUG) @@ -240,7 +260,7 @@ else() list(APPEND COMMON_HEADERS ${SRC_DIR}/dbuserrorhandler.h ${SRC_DIR}/xrectsel.h) - list(APPEND QML_LIBS Qt5::DBus) + list(APPEND QML_LIBS Qt::DBus) list(APPEND QML_LIBS_LIST DBus) find_package(PkgConfig REQUIRED) @@ -318,21 +338,16 @@ else() endif() # Qt find package -if(QT5_VER AND QT5_PATH) - string(REPLACE "." ";" VERSION_LIST ${QT5_VER}) - list(GET VERSION_LIST 0 QT5_VER_MAJOR) - list(GET VERSION_LIST 1 QT5_VER_MINOR) - list(GET VERSION_LIST 2 QT5_VER_PATCH) - - if((${QT5_VER_MAJOR} GREATER_EQUAL 5) AND (${QT5_VER_MINOR} GREATER_EQUAL 14)) - message(STATUS "Using custom Qt version") - find_package(Qt5 ${QT5_VER} REQUIRED COMPONENTS ${QML_LIBS_LIST} - PATHS ${QT5_PATH} NO_DEFAULT_PATH) - find_package(Qt5LinguistTools ${QT5_VER} PATHS ${QT5_PATH} NO_DEFAULT_PATH) - endif() +if(QT6_VER AND QT6_PATH) + message(STATUS "Using custom Qt version") + find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ${QML_LIBS_LIST} + PATHS ${QT6_PATH} NO_DEFAULT_PATH) + # Linguist tools is not required. + find_package(Qt${QT_VERSION_MAJOR} COMPONENTS LinguistTools + PATHS ${QT6_PATH} NO_DEFAULT_PATH) else() - find_package(Qt5 REQUIRED COMPONENTS ${QML_LIBS_LIST}) - find_package(Qt5LinguistTools) + find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS ${QML_LIBS_LIST}) + find_package(Qt${QT_VERSION_MAJOR}LinguistTools) endif() # common include @@ -340,19 +355,19 @@ include_directories(${PROJECT_SOURCE_DIR} ${SRC_DIR}) # common executable sources -add_executable(${PROJECT_NAME} - ${SRC_DIR}/main.cpp - ${COMMON_HEADERS} - ${COMMON_SOURCES} - ${QML_RESOURCES} - ${QML_RESOURCES_QML} - ${LRC_SRC_PATH}/webresource.qrc) +qt_add_executable(${PROJECT_NAME} MANUAL_FINALIZATION + ${SRC_DIR}/main.cpp + ${COMMON_HEADERS} + ${COMMON_SOURCES} + ${QML_RESOURCES} + ${QML_RESOURCES_QML} + ${LRC_SRC_PATH}/webresource.qrc) if(MSVC) # Makes it a GUI executable instead of a console application set_target_properties(${PROJECT_NAME} PROPERTIES WIN32_EXECUTABLE TRUE) - target_link_libraries(${PROJECT_NAME} + target_link_libraries(${PROJECT_NAME} PRIVATE ${QML_LIBS} ${QRENCODE_LIB} ${WINDOWS_SYS_LIBS}) @@ -367,14 +382,14 @@ if(MSVC) # executable icon target_sources(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/ico.rc) - target_link_libraries(${PROJECT_NAME} + target_link_libraries(${PROJECT_NAME} PRIVATE ${RINGCLIENT_STATIC_LIB} ${QTWRAPPER_LIB} ${DRING_LIB} ${GNUTLS_LIB}) # translations - if(Qt5LinguistTools_FOUND) + if(Qt${QT_VERSION_MAJOR}LinguistTools_FOUND) message("Releasing and copying translation files") file(MAKE_DIRECTORY "${JAMI_OUTPUT_DIRECTORY_RELEASE}/share/ring/translations/") file(MAKE_DIRECTORY "${JAMI_OUTPUT_DIRECTORY_RELEASE}/share/libringclient/translations/") @@ -384,8 +399,9 @@ if(MSVC) "${JAMI_OUTPUT_DIRECTORY_RELEASE}/share/ring/translations") set_source_files_properties(${TS_LRC_FILES} PROPERTIES OUTPUT_LOCATION "${JAMI_OUTPUT_DIRECTORY_RELEASE}/share/libringclient/translations") - qt5_add_translation(QM_CLIENT_FILES ${TS_CLIENT_FILES}) - qt5_add_translation(QM_LRC_FILES ${TS_LRC_FILES}) + + qt_add_translation(QM_CLIENT_FILES ${TS_CLIENT_FILES}) + qt_add_translation(QM_LRC_FILES ${TS_LRC_FILES}) target_sources(${PROJECT_NAME} PRIVATE ${QM_CLIENT_FILES}) target_sources(${PROJECT_NAME} PRIVATE ${QM_LRC_FILES}) endif() @@ -426,7 +442,7 @@ if(MSVC) # executable name set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "Jami") else() - target_link_libraries(${PROJECT_NAME} + target_link_libraries(${PROJECT_NAME} PRIVATE ${QML_LIBS} ${LRC_LIB_NAME} ${qrencode} @@ -516,12 +532,13 @@ else() endif() # translations - if(Qt5LinguistTools_FOUND) + if(Qt${QT_VERSION_MAJOR}LinguistTools_FOUND) message("Releasing and copying translation files") file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/") file(GLOB TS_FILES ${PROJECT_SOURCE_DIR}/translations/*.ts) set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "share/ring/translations") - qt5_add_translation(QM_FILES ${TS_FILES}) + + qt_add_translation(QM_FILES ${TS_FILES}) add_custom_target(translations ALL DEPENDS ${QM_FILES}) install(DIRECTORY "${CMAKE_BINARY_DIR}/share/ring/translations/" DESTINATION ${CMAKE_INSTALL_PREFIX}/share/ring/translations) @@ -537,6 +554,10 @@ else() COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) endif() + +qt_import_qml_plugins(${PROJECT_NAME}) +qt_finalize_executable(${PROJECT_NAME}) + # test if(ENABLE_TESTS) message("Add Jami tests") diff --git a/make-client.py b/make-client.py index 82c6be7e5..181a26f92 100644 --- a/make-client.py +++ b/make-client.py @@ -12,7 +12,7 @@ from enum import Enum # vs help win_sdk_default = '10.0.16299.0' win_toolset_default = '142' -qt_version_default = '5.15.0' +qt_version_default = '6.2.0' vs_where_path = os.path.join( os.environ['ProgramFiles(x86)'], 'Microsoft Visual Studio', 'Installer', 'vswhere.exe' @@ -22,6 +22,7 @@ host_is_64bit = (False, True)[platform.machine().endswith('64')] this_dir = os.path.dirname(os.path.realpath(__file__)) build_dir = os.path.join(this_dir, 'build') temp_path = os.environ['TEMP'] +openssl_include_dir = 'C:\\Qt\\Tools\\OpenSSL\\Win_x64\\include\\openssl' # project path jami_qt_project = os.path.join(build_dir, 'jami-qt.vcxproj') @@ -214,20 +215,37 @@ def build(arch, toolset, sdk_version, config_str, project_path_under_current_pat qt_dir = os.path.join("C:\\", 'Qt', qtver) cmake_gen = getCMakeGenerator(getLatestVSVersion()) - msvc_folder = 'msvc2019_64' + qt_major_version = getQtVersionNumber(qtver, QtVerison.Major) + qt_general_macro = 'Qt' + qt_major_version + msvc_folder = '\\msvc2019_64' + + qt_cmake_dir = qt_dir + msvc_folder + '\\lib\\cmake\\' + cmake_prefix_path = qt_dir + msvc_folder qt_cmake_dir = os.path.join(qt_dir, msvc_folder, 'lib', 'cmake') cmake_prefix_path = os.path.join(qt_dir, msvc_folder) cmake_options = [ '-DCMAKE_PREFIX_PATH=' + cmake_prefix_path, - '-DQt5_DIR=' + qt_cmake_dir + 'Qt5', - '-DQt5Core_DIR=' + qt_cmake_dir + 'Qt5Core', - '-DQt5Sql_DIR=' + qt_cmake_dir + 'Qt5Sql', - '-DQt5LinguistTools_DIR=' + qt_cmake_dir + 'Qt5LinguistTools', - '-DQt5Concurrent_DIR=' + qt_cmake_dir + 'Qt5Concurrent', - '-DQt5Gui_DIR=' + qt_cmake_dir + 'Qt5Gui', - '-DQt5Test_DIR=' + qt_cmake_dir + 'Qt5Test', - '-DQt5QuickTest_DIR=' + qt_cmake_dir + 'Qt5QuickTest', + '-DOPENSSL_INCLUDE_DIR=' + openssl_include_dir, + '-DQT_DIR=' + qt_dir + msvc_folder, + '-D' + qt_general_macro + '_DIR=' + qt_cmake_dir + qt_general_macro, + '-D' + qt_general_macro + 'Core_DIR=' + qt_cmake_dir + qt_general_macro + 'Core', + '-D' + qt_general_macro + 'Core5Compat_DIR=' + qt_cmake_dir + qt_general_macro + 'Core5Compat', + '-D' + qt_general_macro + 'WebEngineCore_DIR=' + qt_cmake_dir + qt_general_macro + 'WebEngineCore', + '-D' + qt_general_macro + 'WebEngineQuick_DIR=' + qt_cmake_dir + qt_general_macro + 'WebEngineQuick', + '-D' + qt_general_macro + 'WebChannel_DIR=' + qt_cmake_dir + qt_general_macro + 'WebChannel', + '-D' + qt_general_macro + 'WebEngineWidgets_DIR=' + qt_cmake_dir + qt_general_macro + 'WebEngineWidgets', + '-D' + qt_general_macro + 'Sql_DIR=' + qt_cmake_dir + qt_general_macro + 'Sql', + '-D' + qt_general_macro + 'LinguistTools_DIR=' + qt_cmake_dir + qt_general_macro + 'LinguistTools', + '-D' + qt_general_macro + 'Concurrent_DIR=' + qt_cmake_dir + qt_general_macro + 'Concurrent', + '-D' + qt_general_macro + 'Network_DIR=' + qt_cmake_dir + qt_general_macro + 'Network', + '-D' + qt_general_macro + 'NetworkAuth_DIR=' + qt_cmake_dir + qt_general_macro + 'NetworkAuth', + '-D' + qt_general_macro + 'Gui_DIR=' + qt_cmake_dir + qt_general_macro + 'Gui', + '-D' + qt_general_macro + 'Qml_DIR=' + qt_cmake_dir + qt_general_macro + 'Qml', + '-D' + qt_general_macro + 'QmlModels_DIR=' + qt_cmake_dir + qt_general_macro + 'QmlModels', + '-D' + qt_general_macro + 'Positioning_DIR=' + qt_cmake_dir + qt_general_macro + 'Positioning', + '-D' + qt_general_macro + 'Test_DIR=' + qt_cmake_dir + qt_general_macro + 'Test', + '-D' + qt_general_macro + 'QuickTest_DIR=' + qt_cmake_dir + qt_general_macro + 'QuickTest', '-DENABLE_TESTS=' + (str("ENABLE_TESTS") if test_building_type != TestBuilding.NoTests else ''), '-DCMAKE_SYSTEM_VERSION=' + sdk_version ] @@ -384,6 +402,10 @@ def main(): parsed_args = parse_args() + if int(getQtVersionNumber(parsed_args.qtver, QtVerison.Major)) < 6: + print('We currently only support Qt6') + sys.exit(1) + test_building_type = TestBuilding.NoTests if parsed_args.withtest: diff --git a/qml.qrc b/qml.qrc index 52bc9a41c..65342816f 100644 --- a/qml.qrc +++ b/qml.qrc @@ -10,7 +10,7 @@ <file>src/commoncomponents/PasswordDialog.qml</file> <file>src/commoncomponents/MaterialLineEdit.qml</file> <file>src/commoncomponents/PhotoboothView.qml</file> - <file>src/commoncomponents/ListViewJami.qml</file> + <file>src/commoncomponents/JamiListView.qml</file> <file>src/commoncomponents/DeleteAccountDialog.qml</file> <file>src/commoncomponents/CustomBorder.qml</file> <file>src/commoncomponents/PushButton.qml</file> @@ -41,8 +41,6 @@ <file>src/settingsview/components/AudioSettings.qml</file> <file>src/settingsview/components/VideoSettings.qml</file> <file>src/settingsview/components/GeneralSettingsPage.qml</file> - <file>src/settingsview/components/KeyBoardShortcutTable.qml</file> - <file>src/settingsview/components/KeyBoardShortcutKey.qml</file> <file>src/settingsview/components/PluginSettingsPage.qml</file> <file>src/settingsview/components/PluginListSettingsView.qml</file> <file>src/settingsview/components/PluginListPreferencesView.qml</file> @@ -172,5 +170,8 @@ <file>src/commoncomponents/DataTransferMessageDelegate.qml</file> <file>src/mainview/components/ScrollToBottomButton.qml</file> <file>src/commoncomponents/TypingDots.qml</file> + <file>src/commoncomponents/JamiScrollBar.qml</file> + <file>qtquickcontrols2.conf</file> + <file>src/commoncomponents/JamiFlickable.qml</file> </qresource> </RCC> diff --git a/qtquickcontrols2.conf b/qtquickcontrols2.conf new file mode 100644 index 000000000..ebea6bb72 --- /dev/null +++ b/qtquickcontrols2.conf @@ -0,0 +1,9 @@ +; This file can be edited to change the style of the application +; Read "Qt Quick Controls 2 Configuration File" for details: +; https://doc.qt.io/qt/qtquickcontrols2-configuration.html + +[Controls] +Style=Universal + +[Universal] +Theme=Light diff --git a/src/DaemonReconnectWindow.qml b/src/DaemonReconnectWindow.qml index da9fcfb29..9890ba288 100644 --- a/src/DaemonReconnectWindow.qml +++ b/src/DaemonReconnectWindow.qml @@ -16,11 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls.Universal 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 import net.jami.Models 1.1 @@ -33,8 +32,6 @@ ApplicationWindow { property bool connectionFailed: false property int preferredMargin: 15 - Universal.theme: Universal.Light - title: "Jami" width: 600 @@ -201,7 +198,7 @@ ApplicationWindow { } } - overlay.modal: ColorOverlay { + Overlay.modal: ColorOverlay { source: root.contentItem color: "transparent" diff --git a/src/MainApplicationWindow.qml b/src/MainApplicationWindow.qml index 6e2504c04..792e9ef8d 100644 --- a/src/MainApplicationWindow.qml +++ b/src/MainApplicationWindow.qml @@ -20,12 +20,11 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Window 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls.Universal 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Window +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -40,56 +39,19 @@ import "commoncomponents" ApplicationWindow { id: root - property ApplicationWindow appWindow : root - - // To facilitate reparenting of the callview during - // fullscreen mode, we need QQuickItem based object. - Item { - id: appContainer - anchors.fill: parent - } - property bool isFullScreen: false - visibility: !visible ? - Window.Hidden : (isFullScreen ? - Window.FullScreen : - Window.Windowed) - function toggleFullScreen() { - isFullScreen = !isFullScreen - } - enum LoadedSource { WizardView = 0, MainView, None } - Universal.theme: Universal.Light - - title: JamiStrings.appTitle + property ApplicationWindow appWindow : root + property bool isFullScreen: false - width: { - if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) - return JamiTheme.wizardViewMinWidth - return JamiTheme.mainViewPreferredWidth - } - height: { - if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) - return JamiTheme.wizardViewMinHeight - return JamiTheme.mainViewPreferredHeight - } - minimumWidth: { - if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) - return JamiTheme.wizardViewMinWidth - return JamiTheme.mainViewMinWidth - } - minimumHeight: { - if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) - return JamiTheme.wizardViewMinHeight - return JamiTheme.mainViewMinHeight + function toggleFullScreen() { + isFullScreen = !isFullScreen } - visible: mainApplicationLoader.status === Loader.Ready - function checkLoadedSource() { var sourceString = mainApplicationLoader.source.toString() @@ -123,7 +85,45 @@ ApplicationWindow { hide() } - AccountMigrationDialog{ + visibility: !visible ? + Window.Hidden : (isFullScreen ? + Window.FullScreen : + Window.Windowed) + + title: JamiStrings.appTitle + + width: { + if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) + return JamiTheme.wizardViewMinWidth + return JamiTheme.mainViewPreferredWidth + } + height: { + if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) + return JamiTheme.wizardViewMinHeight + return JamiTheme.mainViewPreferredHeight + } + minimumWidth: { + if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) + return JamiTheme.wizardViewMinWidth + return JamiTheme.mainViewMinWidth + } + minimumHeight: { + if (checkLoadedSource() === MainApplicationWindow.LoadedSource.WizardView) + return JamiTheme.wizardViewMinHeight + return JamiTheme.mainViewMinHeight + } + + visible: mainApplicationLoader.status === Loader.Ready + + // To facilitate reparenting of the callview during + // fullscreen mode, we need QQuickItem based object. + Item { + id: appContainer + + anchors.fill: parent + } + + AccountMigrationDialog { id: accountMigrationDialog visible: false @@ -165,17 +165,6 @@ ApplicationWindow { } } - overlay.modal: ColorOverlay { - source: root.contentItem - color: "transparent" - - // Color animation for overlay when pop up is shown. - ColorAnimation on color { - to: Qt.rgba(0, 0, 0, 0.33) - duration: 500 - } - } - Connections { target: LRCInstance @@ -220,6 +209,17 @@ ApplicationWindow { } } + Overlay.modal: ColorOverlay { + source: root.contentItem + color: "transparent" + + // Color animation for overlay when pop up is shown. + ColorAnimation on color { + to: Qt.rgba(0, 0, 0, 0.33) + duration: 500 + } + } + onClosing: root.close() onScreenChanged: JamiQmlUtils.mainApplicationScreen = root.screen diff --git a/src/accountadapter.cpp b/src/accountadapter.cpp index 07d2303d6..96a0e4167 100644 --- a/src/accountadapter.cpp +++ b/src/accountadapter.cpp @@ -144,7 +144,7 @@ AccountAdapter::createJamiAccount(QString registeredName, connectFailure(); - QtConcurrent::run([this, settings] { + auto futureResult = QtConcurrent::run([this, settings] { lrcInstance_->accountModel().createNewAccount(lrc::api::profile::Type::JAMI, settings["alias"].toString(), settings["archivePath"].toString(), @@ -189,7 +189,7 @@ AccountAdapter::createSIPAccount(const QVariantMap& settings) connectFailure(); - QtConcurrent::run([this, settings] { + auto futureResult = QtConcurrent::run([this, settings] { lrcInstance_->accountModel().createNewAccount(lrc::api::profile::Type::SIP, settings["alias"].toString(), settings["archivePath"].toString(), @@ -233,7 +233,7 @@ AccountAdapter::createJAMSAccount(const QVariantMap& settings) connectFailure(); - QtConcurrent::run([this, settings] { + auto futureResult = QtConcurrent::run([this, settings] { lrcInstance_->accountModel().connectToAccountManager(settings["username"].toString(), settings["password"].toString(), settings["manager"].toString()); @@ -278,7 +278,7 @@ AccountAdapter::setCurrAccDisplayName(const QString& text) void AccountAdapter::setCurrentAccountAvatarFile(const QString& source) { - QtConcurrent::run([this, source]() { + auto futureResult = QtConcurrent::run([this, source]() { QPixmap image; if (!image.load(source)) { qWarning() << "Not a valid image file"; @@ -298,7 +298,7 @@ AccountAdapter::setCurrentAccountAvatarFile(const QString& source) void AccountAdapter::setCurrentAccountAvatarBase64(const QString& data) { - QtConcurrent::run([this, data]() { + auto futureResult = QtConcurrent::run([this, data]() { auto accountId = lrcInstance_->get_currentAccountId(); lrcInstance_->accountModel().setAvatar(accountId, data); }); @@ -346,7 +346,7 @@ AccountAdapter::exportToFile(const QString& accountId, void AccountAdapter::setArchivePasswordAsync(const QString& accountID, const QString& password) { - QtConcurrent::run([this, accountID, password] { + auto futureResult = QtConcurrent::run([this, accountID, password] { auto config = lrcInstance_->accountModel().getAccountConfig(accountID); config.archivePassword = password; lrcInstance_->accountModel().setAccountConfig(accountID, config); diff --git a/src/avadapter.cpp b/src/avadapter.cpp index f0d5a430e..18ea405cd 100644 --- a/src/avadapter.cpp +++ b/src/avadapter.cpp @@ -129,7 +129,7 @@ AvAdapter::shareAllScreens() void AvAdapter::captureScreen(int screenNumber) { - QtConcurrent::run([this, screenNumber]() { + auto futureResult = QtConcurrent::run([this, screenNumber]() { QScreen* screen = QGuiApplication::screens().at(screenNumber); if (!screen) return; @@ -149,7 +149,7 @@ AvAdapter::captureScreen(int screenNumber) void AvAdapter::captureAllScreens() { - QtConcurrent::run([this]() { + auto futureResult = QtConcurrent::run([this]() { auto screens = QGuiApplication::screens(); QList<QPixmap> scrs; @@ -338,7 +338,7 @@ AvAdapter::getScreenNumber() const // Get display QString display_env {getenv("DISPLAY")}; if (!display_env.isEmpty()) { - auto list = display_env.split(':', QString::SplitBehavior::SkipEmptyParts); + auto list = display_env.split(':', Qt::SkipEmptyParts); // Should only be one display, so get the first one if (list.size() > 0) { display = list.at(0).toInt(); diff --git a/src/calloverlaymodel.cpp b/src/calloverlaymodel.cpp index c789504ac..cbe6247ad 100644 --- a/src/calloverlaymodel.cpp +++ b/src/calloverlaymodel.cpp @@ -344,10 +344,9 @@ CallOverlayModel::eventFilter(QObject* object, QEvent* event) { if (event->type() == QEvent::MouseMove) { auto mouseEvent = static_cast<QMouseEvent*>(event); - QPoint eventPos(mouseEvent->x(), mouseEvent->y()); auto windowItem = static_cast<QQuickWindow*>(object)->contentItem(); Q_FOREACH (const auto& item, watchedItems_) { - if (item->contains(windowItem->mapToItem(item, eventPos))) { + if (item->contains(windowItem->mapToItem(item, mouseEvent->pos()))) { Q_EMIT mouseMoved(item); } } diff --git a/src/commoncomponents/AccountMigrationDialog.qml b/src/commoncomponents/AccountMigrationDialog.qml index 04ddf73b8..ae5b14a04 100644 --- a/src/commoncomponents/AccountMigrationDialog.qml +++ b/src/commoncomponents/AccountMigrationDialog.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Window 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Window +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -194,7 +194,6 @@ Window { visible: false title: JamiStrings.authenticate - modality: Qt.WindowModal flags: Qt.WindowStaysOnTopHint width: 600 @@ -504,7 +503,7 @@ Window { onSpinnerDisplyStateChanged: { switch (spinnerDisplyState) { case "spinnerLabel_Regular": - background = Qt.createQmlObject("import QtQuick 2.15; + background = Qt.createQmlObject("import QtQuick; import \"qrc:/src/constant/\"; AnimatedImage { source: JamiResources.jami_eclipse_spinner_gif @@ -514,7 +513,7 @@ Window { mipmap: true}", spinnerLabel) break case "spinnerLabel_Failure": - background = Qt.createQmlObject("import QtQuick 2.15; + background = Qt.createQmlObject("import QtQuick; import \"qrc:/src/constant/\"; Image { anchors.fill: parent; diff --git a/src/commoncomponents/Avatar.qml b/src/commoncomponents/Avatar.qml index 64548cc83..258c807db 100644 --- a/src/commoncomponents/Avatar.qml +++ b/src/commoncomponents/Avatar.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Adapters 1.1 import net.jami.Constants 1.1 @@ -64,7 +64,7 @@ Item { } Connections { - target: ScreenInfo + target: CurrentScreenInfo function onDevicePixelRatioChanged() { image.updateSource() @@ -94,7 +94,7 @@ Item { } opacity: status === Image.Ready - scale: Math.min(opacity + 0.5, 1.0) + scale: Math.min(image.opacity + 0.5, 1.0) Behavior on opacity { NumberAnimation { diff --git a/src/commoncomponents/BackButton.qml b/src/commoncomponents/BackButton.qml index 39c6c74ca..be794a027 100644 --- a/src/commoncomponents/BackButton.qml +++ b/src/commoncomponents/BackButton.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 diff --git a/src/commoncomponents/BaseDialog.qml b/src/commoncomponents/BaseDialog.qml index 69c76819a..fba277166 100644 --- a/src/commoncomponents/BaseDialog.qml +++ b/src/commoncomponents/BaseDialog.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Dialogs 1.3 +import QtQuick +import QtQuick.Controls Dialog { id: root diff --git a/src/commoncomponents/BubbleLabel.qml b/src/commoncomponents/BubbleLabel.qml index 47e47c1de..3e78f1440 100644 --- a/src/commoncomponents/BubbleLabel.qml +++ b/src/commoncomponents/BubbleLabel.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 diff --git a/src/commoncomponents/CustomBorder.qml b/src/commoncomponents/CustomBorder.qml index 4db818911..08a9ee072 100644 --- a/src/commoncomponents/CustomBorder.qml +++ b/src/commoncomponents/CustomBorder.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick // Inspired by // https://stackoverflow.com/questions/16534489/qml-control-border-width-and-color-on-any-one-side-of-rectangle-element diff --git a/src/commoncomponents/DaemonReconnectPopup.qml b/src/commoncomponents/DaemonReconnectPopup.qml index ca1ca04e2..8753fd190 100644 --- a/src/commoncomponents/DaemonReconnectPopup.qml +++ b/src/commoncomponents/DaemonReconnectPopup.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Constants 1.1 import net.jami.Models 1.1 diff --git a/src/commoncomponents/DataTransferMessageDelegate.qml b/src/commoncomponents/DataTransferMessageDelegate.qml index 6e5fff3d7..87b0dd464 100644 --- a/src/commoncomponents/DataTransferMessageDelegate.qml +++ b/src/commoncomponents/DataTransferMessageDelegate.qml @@ -18,11 +18,11 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 -import QtWebEngine 1.10 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects +import QtWebEngine import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/commoncomponents/DeleteAccountDialog.qml b/src/commoncomponents/DeleteAccountDialog.qml index 40565d931..d908b8d68 100644 --- a/src/commoncomponents/DeleteAccountDialog.qml +++ b/src/commoncomponents/DeleteAccountDialog.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/commoncomponents/ElidedTextLabel.qml b/src/commoncomponents/ElidedTextLabel.qml index 1d9ff4e32..b62670fff 100644 --- a/src/commoncomponents/ElidedTextLabel.qml +++ b/src/commoncomponents/ElidedTextLabel.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 diff --git a/src/commoncomponents/GeneralWebEngineView.qml b/src/commoncomponents/GeneralWebEngineView.qml index b4cc533fa..546172232 100644 --- a/src/commoncomponents/GeneralWebEngineView.qml +++ b/src/commoncomponents/GeneralWebEngineView.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtWebEngine 1.10 -import QtWebChannel 1.15 +import QtQuick +import QtWebEngine +import QtWebChannel import net.jami.Adapters 1.1 import net.jami.Constants 1.1 @@ -50,14 +50,14 @@ WebEngineView { id: webViewChannel } - onNavigationRequested: { + onNavigationRequested: function (request) { if (request.navigationType === WebEngineView.LinkClickedNavigation) { MessagesAdapter.openUrl(request.url) request.action = WebEngineView.IgnoreRequest } } - onContextMenuRequested: { + onContextMenuRequested: function (request) { var needContextMenu = request.selectedText.length || request.isContentEditable if (!needContextMenu) request.accepted = true diff --git a/src/commoncomponents/GeneratedMessageDelegate.qml b/src/commoncomponents/GeneratedMessageDelegate.qml index b69335c2e..d5ef26fbe 100644 --- a/src/commoncomponents/GeneratedMessageDelegate.qml +++ b/src/commoncomponents/GeneratedMessageDelegate.qml @@ -18,9 +18,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/commoncomponents/HalfPill.qml b/src/commoncomponents/HalfPill.qml index a8f99fdbf..a8bb9c943 100644 --- a/src/commoncomponents/HalfPill.qml +++ b/src/commoncomponents/HalfPill.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick Item { id: root diff --git a/src/commoncomponents/JamiFileDialog.qml b/src/commoncomponents/JamiFileDialog.qml index 25b968b26..9a407bcfe 100644 --- a/src/commoncomponents/JamiFileDialog.qml +++ b/src/commoncomponents/JamiFileDialog.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import Qt.labs.platform 1.1 +import QtQuick +import Qt.labs.platform import net.jami.Constants 1.1 diff --git a/src/commoncomponents/JamiFlickable.qml b/src/commoncomponents/JamiFlickable.qml new file mode 100644 index 000000000..7e7045a9a --- /dev/null +++ b/src/commoncomponents/JamiFlickable.qml @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2020 by Savoir-faire Linux + * Author: Mingrui Zhang <mingrui.zhang@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 +import QtQuick.Controls + +import net.jami.Constants 1.1 + +Flickable { + id: root + + property bool attachedFlickableMoving: root.moving + property alias verticalHandleColor: verticalScrollBar.handleColor + property alias horizontalHandleColor: horizontalScrollBar.handleColor + + maximumFlickVelocity: 1024 + clip: true + + ScrollBar.vertical: JamiScrollBar { + id: verticalScrollBar + + attachedFlickableMoving: root.attachedFlickableMoving + } + ScrollBar.horizontal: JamiScrollBar { + id: horizontalScrollBar + + attachedFlickableMoving: root.attachedFlickableMoving + orientation: Qt.Horizontal + } + + Keys.onLeftPressed: horizontalScrollBar.decrease() + Keys.onRightPressed: horizontalScrollBar.increase() + Keys.onUpPressed: verticalScrollBar.decrease() + Keys.onDownPressed: verticalScrollBar.increase() +} diff --git a/src/commoncomponents/ListViewJami.qml b/src/commoncomponents/JamiListView.qml similarity index 60% rename from src/commoncomponents/ListViewJami.qml rename to src/commoncomponents/JamiListView.qml index 77db46589..2f88a8bb6 100644 --- a/src/commoncomponents/ListViewJami.qml +++ b/src/commoncomponents/JamiListView.qml @@ -1,6 +1,7 @@ /* * Copyright (C) 2019-2020 by Savoir-faire Linux * Author: Yang Wang <yang.wang@savoirfairelinux.com> + * Author: Mingrui Zhang <mingrui.zhang@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 @@ -16,32 +17,24 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 -Rectangle { - id: listViewBackground +ListView { + id: root - property alias model: listView.model - property alias delegate: listView.delegate - property alias currentIndex: listView.currentIndex + layer.mipmap: false + clip: true + maximumFlickVelocity: 1024 - border.width: 0 + ScrollBar.vertical: JamiScrollBar { + id: verticalScrollBar - color: JamiTheme.backgroundColor - - ListView { - id: listView - - anchors.fill: parent - - visible: listViewBackground.visible - layer.mipmap: false - clip: true - maximumFlickVelocity: 1024 - - ScrollBar.vertical: ScrollBar { } + attachedFlickableMoving: root.moving } + + Keys.onUpPressed: verticalScrollBar.decrease() + Keys.onDownPressed: verticalScrollBar.increase() } diff --git a/src/commoncomponents/JamiScrollBar.qml b/src/commoncomponents/JamiScrollBar.qml new file mode 100644 index 000000000..65455fe3e --- /dev/null +++ b/src/commoncomponents/JamiScrollBar.qml @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2020 by Savoir-faire Linux + * Author: Mingrui Zhang <mingrui.zhang@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 +import QtQuick.Controls + +import net.jami.Constants 1.1 + +// Assumed to be attached to Flickable +ScrollBar { + id: root + + property bool attachedFlickableMoving: false + property alias handleColor: scrollBarRect.color + + active: { + if (root.orientation === Qt.Horizontal) + return visible + else + return hovered || pressed || attachedFlickableMoving + } + hoverEnabled: true + orientation: Qt.Vertical + + topPadding: root.orientation === Qt.Vertical ? 2 : 0 + leftPadding: root.orientation === Qt.Horizontal ? 2 : 0 + bottomPadding: 2 + rightPadding: 2 + + contentItem: Rectangle { + id: scrollBarRect + + implicitHeight: JamiTheme.scrollBarHandleSize + implicitWidth: JamiTheme.scrollBarHandleSize + radius: width / 2 + color: pressed ? Qt.darker(JamiTheme.scrollBarHandleColor, 2.0) : + JamiTheme.scrollBarHandleColor + opacity: 0 + + states: State { + name: "active" + when: root.policy === ScrollBar.AlwaysOn || + (root.active && root.size < 1.0) + PropertyChanges { + target: root.contentItem + opacity: 1 + } + } + + transitions: Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: JamiTheme.longFadeDuration } + NumberAnimation { target: root.contentItem + duration: JamiTheme.shortFadeDuration + property: "opacity" + to: 0.0 + } + } + } + } + + background: Rectangle { + implicitHeight: scrollBarRect.implicitHeight + implicitWidth: scrollBarRect.implicitWidth + color: JamiTheme.transparentColor + radius: width / 2 + } +} diff --git a/src/commoncomponents/JamiSwitch.qml b/src/commoncomponents/JamiSwitch.qml index 224ff9a40..98b9d3289 100644 --- a/src/commoncomponents/JamiSwitch.qml +++ b/src/commoncomponents/JamiSwitch.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 diff --git a/src/commoncomponents/LineEditContextMenu.qml b/src/commoncomponents/LineEditContextMenu.qml index a9b9158fc..bcbb5faf8 100644 --- a/src/commoncomponents/LineEditContextMenu.qml +++ b/src/commoncomponents/LineEditContextMenu.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Constants 1.1 diff --git a/src/commoncomponents/MaterialButton.qml b/src/commoncomponents/MaterialButton.qml index 72a45917a..cdec8dced 100644 --- a/src/commoncomponents/MaterialButton.qml +++ b/src/commoncomponents/MaterialButton.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Constants 1.1 diff --git a/src/commoncomponents/MaterialLineEdit.qml b/src/commoncomponents/MaterialLineEdit.qml index 808a83699..6fef7009f 100644 --- a/src/commoncomponents/MaterialLineEdit.qml +++ b/src/commoncomponents/MaterialLineEdit.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 @@ -62,8 +62,8 @@ TextField { color: readOnly? "transparent" : backgroundColor } - onReleased: { - if (event.button == Qt.RightButton) + onReleased: function (event) { + if (event.button === Qt.RightButton) lineEditContextMenu.openMenuAt(event) } @@ -73,7 +73,7 @@ TextField { // Use editingFinished when the info is saved by focus lost // (since losing focus will also emit editingFinished) // Use accepted when the info is not saved by focus lost - Keys.onPressed: { + Keys.onPressed: function (event) { if (event.key === Qt.Key_Enter || event.key === Qt.Key_Return) { if (loseFocusWhenEnterPressed) diff --git a/src/commoncomponents/MaterialToolTip.qml b/src/commoncomponents/MaterialToolTip.qml index c0e6609f4..f7ada9b43 100644 --- a/src/commoncomponents/MaterialToolTip.qml +++ b/src/commoncomponents/MaterialToolTip.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.0 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 diff --git a/src/commoncomponents/MessageBubble.qml b/src/commoncomponents/MessageBubble.qml index 621769160..ab1cf3461 100644 --- a/src/commoncomponents/MessageBubble.qml +++ b/src/commoncomponents/MessageBubble.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtGraphicalEffects 1.0 +import QtQuick +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 diff --git a/src/commoncomponents/ModalPopup.qml b/src/commoncomponents/ModalPopup.qml index a254ef211..fe8b64600 100644 --- a/src/commoncomponents/ModalPopup.qml +++ b/src/commoncomponents/ModalPopup.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 @@ -29,11 +29,6 @@ Popup { property bool autoClose: true property alias backgroundColor: container.color - onContentItemChanged: { - if(root.contentItem !== null) - root.contentItem.parent = container - } - parent: Overlay.overlay // center in parent @@ -65,9 +60,9 @@ Popup { horizontalOffset: 3.0 verticalOffset: 3.0 radius: container.radius * 4 - samples: JamiTheme.modalPopupDropShadowSamples color: JamiTheme.shadowColor source: container + transparentBorder: true } enter: Transition { diff --git a/src/commoncomponents/PasswordDialog.qml b/src/commoncomponents/PasswordDialog.qml index bb30b99f7..97b680533 100644 --- a/src/commoncomponents/PasswordDialog.qml +++ b/src/commoncomponents/PasswordDialog.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/commoncomponents/PhotoboothView.qml b/src/commoncomponents/PhotoboothView.qml index 28599ecb6..ce506ba22 100644 --- a/src/commoncomponents/PhotoboothView.qml +++ b/src/commoncomponents/PhotoboothView.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import Qt.labs.platform 1.1 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Layouts +import Qt.labs.platform +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/commoncomponents/PreferenceItemDelegate.qml b/src/commoncomponents/PreferenceItemDelegate.qml index b36651569..c0d07e463 100644 --- a/src/commoncomponents/PreferenceItemDelegate.qml +++ b/src/commoncomponents/PreferenceItemDelegate.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/commoncomponents/PresenceIndicator.qml b/src/commoncomponents/PresenceIndicator.qml index c798967f7..65fcb34fa 100644 --- a/src/commoncomponents/PresenceIndicator.qml +++ b/src/commoncomponents/PresenceIndicator.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/commoncomponents/PushButton.qml b/src/commoncomponents/PushButton.qml index ad28ae329..2734b498f 100644 --- a/src/commoncomponents/PushButton.qml +++ b/src/commoncomponents/PushButton.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 diff --git a/src/commoncomponents/ReadStatus.qml b/src/commoncomponents/ReadStatus.qml index fcef8130c..db391ff70 100644 --- a/src/commoncomponents/ReadStatus.qml +++ b/src/commoncomponents/ReadStatus.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/commoncomponents/ResponsiveImage.qml b/src/commoncomponents/ResponsiveImage.qml index 1e00cd52a..a0d6b6969 100644 --- a/src/commoncomponents/ResponsiveImage.qml +++ b/src/commoncomponents/ResponsiveImage.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 import net.jami.Helpers 1.1 @@ -48,7 +48,7 @@ Item { height: Math.trunc(containerHeight * Math.sqrt(2) * 0.5) + 3 - padding Connections { - target: ScreenInfo + target: CurrentScreenInfo function onDevicePixelRatioChanged() { image.setSourceSize() diff --git a/src/commoncomponents/SBSMessageBase.qml b/src/commoncomponents/SBSMessageBase.qml index 9ef4a93f9..db09eaf35 100644 --- a/src/commoncomponents/SBSMessageBase.qml +++ b/src/commoncomponents/SBSMessageBase.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/commoncomponents/Scaffold.qml b/src/commoncomponents/Scaffold.qml index 6ec64d193..6fdcf8452 100644 --- a/src/commoncomponents/Scaffold.qml +++ b/src/commoncomponents/Scaffold.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls // UI dev tool to visualize components/layouts Rectangle { diff --git a/src/commoncomponents/SettingParaCombobox.qml b/src/commoncomponents/SettingParaCombobox.qml index cdb9ee980..9ccfeb792 100644 --- a/src/commoncomponents/SettingParaCombobox.qml +++ b/src/commoncomponents/SettingParaCombobox.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 @@ -111,19 +111,18 @@ ComboBox { } popup: Popup { + id: popup + y: root.height - 1 width: root.width implicitHeight: contentItem.implicitHeight padding: 1 - contentItem: ListView { + contentItem: JamiListView { id: listView - clip: true - implicitHeight: contentHeight + implicitHeight: popup.contentHeight model: root.delegateModel - - ScrollBar.vertical: ScrollBar {} } background: Rectangle { diff --git a/src/commoncomponents/SimpleMessageDialog.qml b/src/commoncomponents/SimpleMessageDialog.qml index b1c5d52c2..80c710f35 100644 --- a/src/commoncomponents/SimpleMessageDialog.qml +++ b/src/commoncomponents/SimpleMessageDialog.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/commoncomponents/SpinningAnimation.qml b/src/commoncomponents/SpinningAnimation.qml index 4261a8236..56b9fb5e5 100644 --- a/src/commoncomponents/SpinningAnimation.qml +++ b/src/commoncomponents/SpinningAnimation.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import Qt5Compat.GraphicalEffects Item { id: root diff --git a/src/commoncomponents/TextMessageDelegate.qml b/src/commoncomponents/TextMessageDelegate.qml index fe66900df..e8d496677 100644 --- a/src/commoncomponents/TextMessageDelegate.qml +++ b/src/commoncomponents/TextMessageDelegate.qml @@ -17,10 +17,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/commoncomponents/TypingDots.qml b/src/commoncomponents/TypingDots.qml index 939f4193b..a0c52eadd 100644 --- a/src/commoncomponents/TypingDots.qml +++ b/src/commoncomponents/TypingDots.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 diff --git a/src/commoncomponents/UsernameLineEdit.qml b/src/commoncomponents/UsernameLineEdit.qml index c07dd24ba..96961cbbc 100644 --- a/src/commoncomponents/UsernameLineEdit.qml +++ b/src/commoncomponents/UsernameLineEdit.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/commoncomponents/contextmenu/BaseContextMenu.qml b/src/commoncomponents/contextmenu/BaseContextMenu.qml index 162a846f1..73b9dd3d7 100644 --- a/src/commoncomponents/contextmenu/BaseContextMenu.qml +++ b/src/commoncomponents/contextmenu/BaseContextMenu.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 @@ -111,8 +111,8 @@ Menu { horizontalOffset: 3.0 verticalOffset: 3.0 radius: 16.0 - samples: 16 color: JamiTheme.shadowColor + transparentBorder: true } } diff --git a/src/commoncomponents/contextmenu/ContextMenuAutoLoader.qml b/src/commoncomponents/contextmenu/ContextMenuAutoLoader.qml index 0c08a2d53..f2facf5f6 100644 --- a/src/commoncomponents/contextmenu/ContextMenuAutoLoader.qml +++ b/src/commoncomponents/contextmenu/ContextMenuAutoLoader.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import "../../commoncomponents/contextmenu" diff --git a/src/commoncomponents/contextmenu/GeneralMenuItem.qml b/src/commoncomponents/contextmenu/GeneralMenuItem.qml index 46ed091b7..335c6f24b 100644 --- a/src/commoncomponents/contextmenu/GeneralMenuItem.qml +++ b/src/commoncomponents/contextmenu/GeneralMenuItem.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Constants 1.1 @@ -54,10 +54,13 @@ MenuItem { background: Rectangle { id: background + anchors.fill: parent anchors.leftMargin: 1 anchors.rightMargin: 1 - color: "transparent" + + color: menuItemContentRect.hovered ? + JamiTheme.hoverColor : JamiTheme.backgroundColor } anchors.fill: parent @@ -127,25 +130,6 @@ MenuItem { menuItem.clicked() parentMenu.close() } - - states: [ - State { - name: "hovered" - when: hovered - PropertyChanges { - target: background - color: JamiTheme.hoverColor - } - }, - State { - name: "normal" - when: !hovered - PropertyChanges { - target: background - color: JamiTheme.backgroundColor - } - } - ] } highlighted: true diff --git a/src/commoncomponents/contextmenu/GeneralMenuSeparator.qml b/src/commoncomponents/contextmenu/GeneralMenuSeparator.qml index 378c12943..2e1f2f0a6 100644 --- a/src/commoncomponents/contextmenu/GeneralMenuSeparator.qml +++ b/src/commoncomponents/contextmenu/GeneralMenuSeparator.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Constants 1.1 diff --git a/src/commoncomponents/emojipicker/EmojiPicker.qml b/src/commoncomponents/emojipicker/EmojiPicker.qml index e9679657e..dd9ef0bb0 100644 --- a/src/commoncomponents/emojipicker/EmojiPicker.qml +++ b/src/commoncomponents/emojipicker/EmojiPicker.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtWebEngine 1.10 -import QtWebChannel 1.15 +import QtQuick +import QtQuick.Controls +import QtWebEngine +import QtWebChannel import net.jami.Constants 1.1 import net.jami.Adapters 1.1 @@ -82,8 +82,8 @@ Rectangle { } } - onLoadingChanged: { - if (loadRequest.status == WebEngineView.LoadSucceededStatus) { + onLoadingChanged: function (loadingInfo) { + if (loadingInfo.status === WebEngineView.LoadSucceededStatus) { emojiPickerWebView.runJavaScript(UtilsAdapter.qStringFromFile( ":qwebchannel.js")) emojiPickerWebView.runJavaScript( diff --git a/src/constant/JamiQmlUtils.qml b/src/constant/JamiQmlUtils.qml index d0c02d5b7..a1e9c2a32 100644 --- a/src/constant/JamiQmlUtils.qml +++ b/src/constant/JamiQmlUtils.qml @@ -19,7 +19,7 @@ // JamiQmlUtils as a singleton is to provide global property entry pragma Singleton -import QtQuick 2.15 +import QtQuick import net.jami.Adapters 1.1 diff --git a/src/constant/JamiStrings.qml b/src/constant/JamiStrings.qml index da36a1672..4029dd758 100644 --- a/src/constant/JamiStrings.qml +++ b/src/constant/JamiStrings.qml @@ -19,7 +19,7 @@ // JamiStrings as a singleton is to provide global strings entries. pragma Singleton -import QtQuick 2.15 +import QtQuick import net.jami.Helpers 1.1 diff --git a/src/constant/JamiTheme.qml b/src/constant/JamiTheme.qml index 7e847d064..dbd6e49e7 100644 --- a/src/constant/JamiTheme.qml +++ b/src/constant/JamiTheme.qml @@ -19,7 +19,7 @@ // JamiTheme as a singleton is to provide global theme property entry. pragma Singleton -import QtQuick 2.15 +import QtQuick import net.jami.Adapters 1.1 import net.jami.Enums 1.1 @@ -173,6 +173,9 @@ Item { // Files To Send Container property color removeFileButtonColor: Qt.rgba(96, 95, 97, 0.5) + // JamiScrollBar + property color scrollBarHandleColor: "#cecece" + // TypingDots property color typingDotsNormalColor: darkTheme ? "#686b72" : "lightgrey" property color typingDotsEnlargeColor: darkTheme ? "white" : Qt.darker("lightgrey", 3.0) @@ -194,6 +197,7 @@ Item { property color bgDarkMode_: rgba256(32, 32, 32, 100) property int shortFadeDuration: 150 + property int longFadeDuration: 400 property int recordBlinkDuration: 500 property int overlayFadeDelay: 4000 property int overlayFadeDuration: 250 @@ -274,7 +278,6 @@ Item { // Modal Popup property real modalPopupRadius: 4 - property real modalPopupDropShadowSamples: 16 // MessageWebView property real chatViewHairLineSize: 1 @@ -336,6 +339,9 @@ Item { property real usernameLineEditPointSize: 9 property real usernameLineEditlookupInterval: 200 + // JamiScrollBar + property int scrollBarHandleSize: 6 + // Main application spec property real mainViewMinWidth: 332 property real mainViewMinHeight: 500 diff --git a/src/constant/MsgSeq.qml b/src/constant/MsgSeq.qml index de25c238d..f0e5de72d 100644 --- a/src/constant/MsgSeq.qml +++ b/src/constant/MsgSeq.qml @@ -1,5 +1,5 @@ pragma Singleton -import QtQml 2.15 +import QtQml QtObject { //readonly property int unknown: -1 readonly property int single: 0 diff --git a/src/contactadapter.cpp b/src/contactadapter.cpp index 96227a737..95508a2c5 100644 --- a/src/contactadapter.cpp +++ b/src/contactadapter.cpp @@ -49,18 +49,20 @@ ContactAdapter::getContactSelectableModel(int type) // Adjust filter. switch (listModeltype_) { case SmartListModel::Type::CONVERSATION: - selectableProxyModel_->setPredicate([this](const QModelIndex& index, const QRegExp&) { - return !defaultModerators_.contains(index.data(Role::URI).toString()); - }); + selectableProxyModel_->setPredicate( + [this](const QModelIndex& index, const QRegularExpression&) { + return !defaultModerators_.contains(index.data(Role::URI).toString()); + }); break; case SmartListModel::Type::CONFERENCE: - selectableProxyModel_->setPredicate([](const QModelIndex& index, const QRegExp&) { + selectableProxyModel_->setPredicate([](const QModelIndex& index, const QRegularExpression&) { return index.data(Role::Presence).toBool(); }); break; case SmartListModel::Type::TRANSFER: - selectableProxyModel_->setPredicate([this](const QModelIndex& index, const QRegExp& regexp) { + selectableProxyModel_->setPredicate([this](const QModelIndex& index, + const QRegularExpression& regexp) { // Exclude current sip callee and filtered contact. bool match = true; const auto& conv = lrcInstance_->getConversationFromConvUid( @@ -70,12 +72,13 @@ ContactAdapter::getContactSelectableModel(int type) ->getAccountInfo(lrcInstance_->get_currentAccountId()) .contactModel->bestIdForContact(conv.participants[0]); - QRegExp matchExcept = QRegExp(QString("\\b(?!" + calleeDisplayId + "\\b)\\w+")); - match = matchExcept.indexIn(index.data(Role::BestId).toString()) != -1; + QRegularExpression matchExcept = QRegularExpression( + QString("\\b(?!" + calleeDisplayId + "\\b)\\w+")); + match = matchExcept.match(index.data(Role::BestId).toString()).hasMatch(); } if (match) { - match = regexp.indexIn(index.data(Role::BestId).toString()) != -1; + match = regexp.match(index.data(Role::BestId).toString()).hasMatch(); } return match && !index.parent().isValid(); }); @@ -95,13 +98,13 @@ ContactAdapter::setSearchFilter(const QString& filter) smartListModel_->setConferenceableFilter(filter); } else if (listModeltype_ == SmartListModel::Type::CONVERSATION) { selectableProxyModel_->setPredicate( - [this, filter](const QModelIndex& index, const QRegExp&) { + [this, filter](const QModelIndex& index, const QRegularExpression&) { return (!defaultModerators_.contains(index.data(Role::URI).toString()) && index.data(Role::Title).toString().contains(filter)); }); } - selectableProxyModel_->setFilterRegExp( - QRegExp(filter, Qt::CaseInsensitive, QRegExp::FixedString)); + selectableProxyModel_->setFilterRegularExpression( + QRegularExpression(filter, QRegularExpression::CaseInsensitiveOption)); } void @@ -190,9 +193,10 @@ ContactAdapter::contactSelected(int index) void ContactAdapter::connectSignals() { - connect(lrcInstance_->getCurrentContactModel(), - &ContactModel::bannedStatusChanged, - this, - &ContactAdapter::bannedStatusChanged, - Qt::UniqueConnection); + if (lrcInstance_->getCurrentContactModel()) + connect(lrcInstance_->getCurrentContactModel(), + &ContactModel::bannedStatusChanged, + this, + &ContactAdapter::bannedStatusChanged, + Qt::UniqueConnection); } diff --git a/src/contactadapter.h b/src/contactadapter.h index a4c15a23c..1d754dcd3 100644 --- a/src/contactadapter.h +++ b/src/contactadapter.h @@ -42,7 +42,7 @@ class SelectableProxyModel final : public QSortFilterProxyModel Q_OBJECT public: - using FilterPredicate = std::function<bool(const QModelIndex&, const QRegExp&)>; + using FilterPredicate = std::function<bool(const QModelIndex&, const QRegularExpression&)>; explicit SelectableProxyModel(QObject* parent = nullptr) : QSortFilterProxyModel(parent) @@ -61,7 +61,7 @@ public: { // Accept all contacts in conversation list filtered with account type, except those in a call. auto index = sourceModel()->index(sourceRow, 0, sourceParent); - return filterPredicate_ ? filterPredicate_(index, filterRegExp()) : false; + return filterPredicate_ ? filterPredicate_(index, filterRegularExpression()) : false; } bool lessThan(const QModelIndex& left, const QModelIndex& right) const override diff --git a/src/conversationlistmodel.cpp b/src/conversationlistmodel.cpp index 355c79cdc..03f2ad77c 100644 --- a/src/conversationlistmodel.cpp +++ b/src/conversationlistmodel.cpp @@ -93,7 +93,7 @@ bool ConversationListProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const { QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); - auto rx = filterRegExp(); + auto rx = filterRegularExpression(); auto uriStripper = URI(rx.pattern()); bool stripScheme = (uriStripper.schemeType() < URI::SchemeType::COUNT__); FlagPack<URI::Section> flags = URI::Section::USER_INFO | URI::Section::HOSTNAME @@ -118,16 +118,18 @@ ConversationListProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex& s // banned contacts require exact match if (index.data(Role::IsBanned).toBool()) { - if (!rx.isEmpty()) { - Q_FOREACH (const auto& filter, toFilter) - if (rx.exactMatch(filter)) { + if (!rx.isValid()) { + Q_FOREACH (const auto& filter, toFilter) { + auto matchResult = rx.match(filter); + if (matchResult.hasMatch() && matchResult.captured(0) == filter) { match = true; break; } + } } } else { Q_FOREACH (const auto& filter, toFilter) - if (rx.indexIn(filter) != -1) { + if (rx.match(filter).hasMatch()) { match = true; break; } diff --git a/src/conversationlistmodelbase.cpp b/src/conversationlistmodelbase.cpp index db577fc40..3de0a53d1 100644 --- a/src/conversationlistmodelbase.cpp +++ b/src/conversationlistmodelbase.cpp @@ -95,7 +95,7 @@ ConversationListModelBase::dataForItem(item_t item, int role) const if (!draft.isEmpty()) { // Pencil Emoji uint cp = 0x270F; - auto emojiString = QString::fromUcs4(&cp, 1); + auto emojiString = QString::fromUcs4(reinterpret_cast<char32_t*>(&cp), 1); return emojiString + draft; } } diff --git a/src/main.cpp b/src/main.cpp index 1cf92ae56..cdee5e828 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -24,7 +24,8 @@ #include <QCryptographicHash> #include <QApplication> -#include <QtWebEngine> +#include <QtWebEngineCore> +#include <QtWebEngineQuick> #include <clocale> @@ -74,23 +75,16 @@ main(int argc, char* argv[]) #endif #endif qtWebEngineChromiumFlags << disableWebSecurity; -#if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0) - // To be recovered in Qt 6.2 and above - // https://bugs.chromium.org/p/chromium/issues/detail?id=1060099#c6*/ qtWebEngineChromiumFlags << singleProcess; -#endif + + QtWebEngineQuick::initialize(); + QApplication::setApplicationName("Jami"); QApplication::setOrganizationDomain("jami.net"); - QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true); - QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication::setQuitOnLastWindowClosed(false); - QCoreApplication::setAttribute(Qt::AA_UseOpenGLES); QCoreApplication::setApplicationVersion(QString(VERSION_STRING)); -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) QApplication::setHighDpiScaleFactorRoundingPolicy( Qt::HighDpiScaleFactorRoundingPolicy::PassThrough); -#endif - QtWebEngine::initialize(); auto newArgv = parseInputArgument(argc, argv, qtWebEngineChromiumFlags); diff --git a/src/mainapplication.cpp b/src/mainapplication.cpp index 34cee61ca..23b638ad5 100644 --- a/src/mainapplication.cpp +++ b/src/mainapplication.cpp @@ -97,7 +97,7 @@ ScreenInfo::setCurrentFocusWindow(QWindow* window) { if (window && !currentFocusWindow_) { currentFocusWindow_ = window; - setDevicePixelRatio(currentFocusWindow_->screen()->devicePixelRatio()); + set_devicePixelRatio(currentFocusWindow_->screen()->devicePixelRatio()); disconnect(devicePixelRatioConnection_); disconnect(currentFocusWindowScreenConnection_); @@ -105,11 +105,11 @@ ScreenInfo::setCurrentFocusWindow(QWindow* window) currentFocusWindowScreenConnection_ = connect(currentFocusWindow_, &QWindow::screenChanged, [this] { currentFocusWindowScreen_ = currentFocusWindow_->screen(); - setDevicePixelRatio(currentFocusWindowScreen_->devicePixelRatio()); + set_devicePixelRatio(currentFocusWindowScreen_->devicePixelRatio()); devicePixelRatioConnection_ = connect( currentFocusWindowScreen_, &QScreen::physicalDotsPerInchChanged, [this] { - setDevicePixelRatio(currentFocusWindowScreen_->devicePixelRatio()); + set_devicePixelRatio(currentFocusWindowScreen_->devicePixelRatio()); }); }); } @@ -270,12 +270,14 @@ MainApplication::loadTranslations() QTranslator* qtTranslator_name = new QTranslator(this); if (locale_name != locale_lang) { if (qtTranslator_lang->load("qt_" + locale_lang, - QLibraryInfo::location(QLibraryInfo::TranslationsPath))) + QLibraryInfo::path(QLibraryInfo::TranslationsPath))) installTranslator(qtTranslator_lang); } - qtTranslator_name->load("qt_" + locale_name, - QLibraryInfo::location(QLibraryInfo::TranslationsPath)); - installTranslator(qtTranslator_name); + + if (qtTranslator_name->load("qt_" + locale_name, + QLibraryInfo::path(QLibraryInfo::TranslationsPath))) { + installTranslator(qtTranslator_name); + } QTranslator* lrcTranslator_lang = new QTranslator(this); QTranslator* lrcTranslator_name = new QTranslator(this); diff --git a/src/mainapplication.h b/src/mainapplication.h index f7fbc82de..be972170a 100644 --- a/src/mainapplication.h +++ b/src/mainapplication.h @@ -21,6 +21,7 @@ #pragma once #include "lrcinstance.h" +#include "qtutils.h" #include <QFile> #include <QApplication> @@ -41,24 +42,11 @@ class PreviewEngine; class ScreenInfo : public QObject { Q_OBJECT - Q_PROPERTY(double devicePixelRatio MEMBER devicePixelRatio_ NOTIFY devicePixelRatioChanged) + QML_PROPERTY(double, devicePixelRatio) public: void setCurrentFocusWindow(QWindow* window); - void setDevicePixelRatio(double ratio) - { - if (ratio != devicePixelRatio_) { - devicePixelRatio_ = ratio; - - Q_EMIT devicePixelRatioChanged(); - } - } - -Q_SIGNALS: - void devicePixelRatioChanged(); private: - double devicePixelRatio_ {0.0}; - QMetaObject::Connection currentFocusWindowScreenConnection_; QMetaObject::Connection devicePixelRatioConnection_; diff --git a/src/mainview/MainView.qml b/src/mainview/MainView.qml index c3cb6f801..2138d6a04 100644 --- a/src/mainview/MainView.qml +++ b/src/mainview/MainView.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -340,7 +340,7 @@ Rectangle { width: mainViewSidePanelRect.width height: mainViewSidePanelRect.height - onItemSelected: { + onItemSelected: function (index) { settingsView.setSelected(index) if (sidePanelOnly) sidePanelViewStack.push(settingsView, StackView.Immediate) @@ -454,8 +454,12 @@ Rectangle { AboutPopUp { id: aboutPopUpDialog - height: Math.min(preferredHeight, - mainView.height - JamiTheme.preferredMarginSize * 2) + onVisibleChanged: { + height = Qt.binding(function () { + return Math.min(preferredHeight, + mainView.height - JamiTheme.preferredMarginSize * 2) + }) + } } WelcomePageQrDialog { @@ -510,14 +514,6 @@ Rectangle { } } - Shortcut { - sequence: "F10" - context: Qt.ApplicationShortcut - onActivated: { - shortcutsTable.open() - } - } - Shortcut { sequence: "F11" context: Qt.ApplicationShortcut @@ -565,8 +561,4 @@ Rectangle { context: Qt.ApplicationShortcut onActivated: Qt.quit() } - - KeyBoardShortcutTable { - id: shortcutsTable - } } diff --git a/src/mainview/components/AboutPopUp.qml b/src/mainview/components/AboutPopUp.qml index dab656192..6e2a3295b 100644 --- a/src/mainview/components/AboutPopUp.qml +++ b/src/mainview/components/AboutPopUp.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -37,217 +37,208 @@ ModalPopup { implicitWidth: 400 color: JamiTheme.backgroundColor - ScrollView { + JamiFlickable { id: aboutPopUpScrollView anchors.fill: parent - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AsNeeded - - clip: true + contentHeight: aboutPopUpContentRectColumnLayout.implicitHeight ColumnLayout { + id: aboutPopUpContentRectColumnLayout + width: Math.max(root.width, implicitWidth) height: Math.max(aboutPopUpScrollView.height, implicitHeight) - spacing: 0 - - ColumnLayout { - id: aboutPopUpContentRectColumnLayout + ResponsiveImage { + id: aboutPopUPJamiLogoImage Layout.alignment: Qt.AlignCenter + Layout.topMargin: JamiTheme.preferredMarginSize + Layout.preferredWidth: 250 + Layout.preferredHeight: 88 - ResponsiveImage { - id: aboutPopUPJamiLogoImage - - Layout.alignment: Qt.AlignCenter - Layout.topMargin: JamiTheme.preferredMarginSize - Layout.preferredWidth: 250 - Layout.preferredHeight: 88 - - source: JamiTheme.darkTheme ? - JamiResources.logo_jami_standard_coul_white_svg : - JamiResources.logo_jami_standard_coul_svg - } + source: JamiTheme.darkTheme ? + JamiResources.logo_jami_standard_coul_white_svg : + JamiResources.logo_jami_standard_coul_svg + } - MaterialLineEdit { - id: jamiVersionText + MaterialLineEdit { + id: jamiVersionText - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: contentRect.width + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: contentRect.width - font.pointSize: JamiTheme.textFontSize + font.pointSize: JamiTheme.textFontSize - padding: 0 - readOnly: true - selectByMouse: true + padding: 0 + readOnly: true + selectByMouse: true - text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr() - color: JamiTheme.textColor + text: JamiStrings.version + ": " + UtilsAdapter.getVersionStr() + color: JamiTheme.textColor - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } - Label { - id: jamiSlogansText + Label { + id: jamiSlogansText - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: contentRect.width - Layout.preferredHeight: textMetricsjamiSlogansText.boundingRect.height - Layout.topMargin: 5 + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: contentRect.width + Layout.preferredHeight: textMetricsjamiSlogansText.boundingRect.height + Layout.topMargin: 5 - wrapMode: Text.WordWrap - font.pointSize: JamiTheme.textFontSize + wrapMode: Text.WordWrap + font.pointSize: JamiTheme.textFontSize - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter - text: textMetricsjamiSlogansText.text - color: JamiTheme.textColor + text: textMetricsjamiSlogansText.text + color: JamiTheme.textColor - TextMetrics { - id: textMetricsjamiSlogansText - font: jamiSlogansText.font - text: JamiStrings.slogan - } + TextMetrics { + id: textMetricsjamiSlogansText + font: jamiSlogansText.font + text: JamiStrings.slogan } + } - Label { - id: jamiDeclarationText + Label { + id: jamiDeclarationText - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: contentRect.width - Layout.preferredHeight: 40 - Layout.topMargin: 5 + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: contentRect.width + Layout.preferredHeight: 40 + Layout.topMargin: 5 - wrapMode: Text.WordWrap - font.pointSize: JamiTheme.textFontSize - color: JamiTheme.textColor + wrapMode: Text.WordWrap + font.pointSize: JamiTheme.textFontSize + color: JamiTheme.textColor - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter - // TextMetrics does not work for multi-line. - text: JamiStrings.declaration - } + // TextMetrics does not work for multi-line. + text: JamiStrings.declaration + } - Label { - id: jamiDeclarationHyperText + Label { + id: jamiDeclarationHyperText - Layout.alignment: Qt.AlignCenter + Layout.alignment: Qt.AlignCenter - // Strangely, hoveredLink works badly when width grows too large - Layout.preferredWidth: 50 - Layout.preferredHeight: textMetricsjamiDeclarationHyperText.boundingRect.height - Layout.topMargin: 5 - Layout.bottomMargin: 5 - color: JamiTheme.textColor + // Strangely, hoveredLink works badly when width grows too large + Layout.preferredWidth: 50 + Layout.preferredHeight: textMetricsjamiDeclarationHyperText.boundingRect.height + Layout.topMargin: 5 + Layout.bottomMargin: 5 + color: JamiTheme.textColor - font.pointSize: JamiTheme.textFontSize - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + font.pointSize: JamiTheme.textFontSize + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter - text: textMetricsjamiDeclarationHyperText.text - onLinkActivated: Qt.openUrlExternally(link) + text: textMetricsjamiDeclarationHyperText.text + onLinkActivated: Qt.openUrlExternally(link) - TextMetrics { - id: textMetricsjamiDeclarationHyperText - font: jamiDeclarationHyperText.font - text: '<html><style type="text/css"></style><a href="https://jami.net">jami.net</a></html>' - } + TextMetrics { + id: textMetricsjamiDeclarationHyperText + font: jamiDeclarationHyperText.font + text: '<html><style type="text/css"></style><a href="https://jami.net">jami.net</a></html>' + } - MouseArea { - anchors.fill: parent + MouseArea { + anchors.fill: parent - // We don't want to eat clicks on the Text. - acceptedButtons: Qt.NoButton - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - } + // We don't want to eat clicks on the Text. + acceptedButtons: Qt.NoButton + cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor } + } - Label { - id: jamiDeclarationYearText + Label { + id: jamiDeclarationYearText - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: contentRect.width - Layout.preferredHeight: textMetricsjamiDeclarationYearText.boundingRect.height - Layout.bottomMargin: 5 + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: contentRect.width + Layout.preferredHeight: textMetricsjamiDeclarationYearText.boundingRect.height + Layout.bottomMargin: 5 - font.pointSize: JamiTheme.textFontSize - color: JamiTheme.textColor + font.pointSize: JamiTheme.textFontSize + color: JamiTheme.textColor - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter - text: textMetricsjamiDeclarationYearText.text + text: textMetricsjamiDeclarationYearText.text - TextMetrics { - id: textMetricsjamiDeclarationYearText - font: jamiDeclarationYearText.font - text: JamiStrings.companyDeclarationYear - } + TextMetrics { + id: textMetricsjamiDeclarationYearText + font: jamiDeclarationYearText.font + text: JamiStrings.companyDeclarationYear } + } - Label { - id: jamiNoneWarrantyHyperText + Label { + id: jamiNoneWarrantyHyperText - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: 300 - Layout.preferredHeight: textMetricsjamiNoneWarrantyHyperText.boundingRect.height * 2 - Layout.bottomMargin: 10 + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: 300 + Layout.preferredHeight: textMetricsjamiNoneWarrantyHyperText.boundingRect.height * 2 + Layout.bottomMargin: 10 - wrapMode: Text.WordWrap - font.pointSize: JamiTheme.tinyFontSize + wrapMode: Text.WordWrap + font.pointSize: JamiTheme.tinyFontSize - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - color: JamiTheme.textColor + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: JamiTheme.textColor - text: textMetricsjamiNoneWarrantyHyperText.text - onLinkActivated: Qt.openUrlExternally(link) + text: textMetricsjamiNoneWarrantyHyperText.text + onLinkActivated: Qt.openUrlExternally(link) - TextMetrics { - id: textMetricsjamiNoneWarrantyHyperText - font: jamiDeclarationHyperText.font - text: '<html><style type="text/css"></style>This program comes with absolutely no warranty.<br\>See the <a href="http://www.gnu.org/licenses/gpl-3.0.html">GNU General Public License, version 3 or later</a> for details.</html>' - } + TextMetrics { + id: textMetricsjamiNoneWarrantyHyperText + font: jamiDeclarationHyperText.font + text: '<html><style type="text/css"></style>This program comes with absolutely no warranty.<br\>See the <a href="http://www.gnu.org/licenses/gpl-3.0.html">GNU General Public License, version 3 or later</a> for details.</html>' + } - MouseArea { - anchors.fill: parent - acceptedButtons: Qt.NoButton - cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor - } + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.NoButton + cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor } + } - ProjectCreditsScrollView { - id: projectCreditsScrollView + ProjectCreditsScrollView { + id: projectCreditsScrollView - Layout.alignment: Qt.AlignCenter - Layout.preferredWidth: contentRect.width - JamiTheme.preferredMarginSize * 2 - Layout.preferredHeight: 128 - Layout.margins: JamiTheme.preferredMarginSize - } + Layout.alignment: Qt.AlignCenter + Layout.preferredWidth: contentRect.width - JamiTheme.preferredMarginSize * 2 + Layout.preferredHeight: 128 + Layout.margins: JamiTheme.preferredMarginSize + } - MaterialButton { - id: btnClose + MaterialButton { + id: btnClose - Layout.alignment: Qt.AlignHCenter - Layout.bottomMargin: JamiTheme.preferredMarginSize + Layout.alignment: Qt.AlignHCenter + Layout.bottomMargin: JamiTheme.preferredMarginSize - preferredWidth: JamiTheme.preferredFieldWidth / 2 - preferredHeight: JamiTheme.preferredFieldHeight + preferredWidth: JamiTheme.preferredFieldWidth / 2 + preferredHeight: JamiTheme.preferredFieldHeight - text: qsTr("Close") - color: enabled? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey - hoveredColor: JamiTheme.buttonTintedBlackHovered - pressedColor: JamiTheme.buttonTintedBlackPressed - outlined: true + text: qsTr("Close") + color: enabled ? JamiTheme.buttonTintedBlack : JamiTheme.buttonTintedGrey + hoveredColor: JamiTheme.buttonTintedBlackHovered + pressedColor: JamiTheme.buttonTintedBlackPressed + outlined: true - onClicked: { - close() - } + onClicked: { + close() } } } diff --git a/src/mainview/components/AccountComboBox.qml b/src/mainview/components/AccountComboBox.qml index 3cfc96db1..38beaacc1 100644 --- a/src/mainview/components/AccountComboBox.qml +++ b/src/mainview/components/AccountComboBox.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/AccountComboBoxPopup.qml b/src/mainview/components/AccountComboBoxPopup.qml index 785245e91..524cf123b 100644 --- a/src/mainview/components/AccountComboBoxPopup.qml +++ b/src/mainview/components/AccountComboBoxPopup.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -42,19 +42,18 @@ Popup { padding: 0 modal: true Overlay.modal: Rectangle { - color: "transparent" + color: JamiTheme.transparentColor } contentItem: ColumnLayout { spacing: 0 - ListView { + + JamiListView { id: listView Layout.fillHeight: true Layout.preferredWidth: parent.width - clip: true - model: CurrentAccountFilterModel delegate: AccountItemDelegate { height: JamiTheme.accountListItemHeight @@ -64,8 +63,6 @@ Popup { LRCInstance.currentAccountId = ID } } - - ScrollBar.vertical: ScrollBar { } } // fake footer item as workaround for Qt 5.15 bug @@ -114,8 +111,8 @@ Popup { horizontalOffset: 3.0 verticalOffset: 3.0 radius: 16.0 - samples: 16 color: JamiTheme.shadowColor + transparentBorder: true } } } diff --git a/src/mainview/components/AccountItemDelegate.qml b/src/mainview/components/AccountItemDelegate.qml index 10eb4c74d..6083b5f13 100644 --- a/src/mainview/components/AccountItemDelegate.qml +++ b/src/mainview/components/AccountItemDelegate.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/mainview/components/BadgeNotifier.qml b/src/mainview/components/BadgeNotifier.qml index 4070db0d1..758d0b001 100644 --- a/src/mainview/components/BadgeNotifier.qml +++ b/src/mainview/components/BadgeNotifier.qml @@ -17,7 +17,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Constants 1.1 diff --git a/src/mainview/components/CallActionBar.qml b/src/mainview/components/CallActionBar.qml index c87b4ef38..600a65329 100644 --- a/src/mainview/components/CallActionBar.qml +++ b/src/mainview/components/CallActionBar.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -463,7 +463,7 @@ Control { anchors.bottom: parent.top anchors.bottomMargin: itemSpacing visible: !overflowButton.popup.visible - ListView { + JamiListView { id: urgentOverflowListView spacing: itemSpacing @@ -473,7 +473,6 @@ Control { null delegate: buttonDelegate - ScrollBar.vertical: ScrollBar { } add: Transition { NumberAnimation { @@ -494,7 +493,7 @@ Control { implicitHeight: contentItem.implicitHeight padding: 0 - contentItem: ListView { + contentItem: JamiListView { id: overflowHiddenListView spacing: itemSpacing implicitHeight: contentHeight @@ -502,8 +501,6 @@ Control { model: overflowButton.popup.visible ? overflowButton.delegateModel : null - - ScrollBar.vertical: ScrollBar { } } background: Rectangle { diff --git a/src/mainview/components/CallButtonDelegate.qml b/src/mainview/components/CallButtonDelegate.qml index bda715d5a..c229c5862 100644 --- a/src/mainview/components/CallButtonDelegate.qml +++ b/src/mainview/components/CallButtonDelegate.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Constants 1.1 @@ -244,7 +244,7 @@ ItemDelegate { onOpened: menuAction.triggered() - contentItem: ListView { + contentItem: JamiListView { id: itemListView property real menuItemWidth: 0 @@ -255,10 +255,6 @@ ItemDelegate { implicitWidth: menuItemWidth implicitHeight: Math.min(contentHeight, menuItemHeight * 6) + 24 - ScrollBar.vertical: ScrollBar { } - - clip: true - model: menu.delegateModel TextMetrics { @@ -300,8 +296,8 @@ ItemDelegate { horizontalOffset: 0 verticalOffset: 0 radius: 8.0 - samples: 16 color: "#80000000" + transparentBorder: true } } diff --git a/src/mainview/components/CallOverlay.qml b/src/mainview/components/CallOverlay.qml index 19e3966f6..fce06a3c1 100644 --- a/src/mainview/components/CallOverlay.qml +++ b/src/mainview/components/CallOverlay.qml @@ -18,7 +18,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/CallStackView.qml b/src/mainview/components/CallStackView.qml index 343caa2f7..91d40b776 100644 --- a/src/mainview/components/CallStackView.qml +++ b/src/mainview/components/CallStackView.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/CallViewContextMenu.qml b/src/mainview/components/CallViewContextMenu.qml index e43c8a31f..866be5e20 100644 --- a/src/mainview/components/CallViewContextMenu.qml +++ b/src/mainview/components/CallViewContextMenu.qml @@ -18,7 +18,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/ChatView.qml b/src/mainview/components/ChatView.qml index fe8be3a1e..b13ffa716 100644 --- a/src/mainview/components/ChatView.qml +++ b/src/mainview/components/ChatView.qml @@ -18,9 +18,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/ChatViewFooter.qml b/src/mainview/components/ChatViewFooter.qml index ea520b3b2..0aace177e 100644 --- a/src/mainview/components/ChatViewFooter.qml +++ b/src/mainview/components/ChatViewFooter.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/mainview/components/ChatViewHeader.qml b/src/mainview/components/ChatViewHeader.qml index 4a25b45bd..ea629a8d0 100644 --- a/src/mainview/components/ChatViewHeader.qml +++ b/src/mainview/components/ChatViewHeader.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/mainview/components/ContactPicker.qml b/src/mainview/components/ContactPicker.qml index 2388a94b6..31b97aeea 100644 --- a/src/mainview/components/ContactPicker.qml +++ b/src/mainview/components/ContactPicker.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Models 1.1 @@ -105,7 +105,7 @@ Popup { } } - ListViewJami { + JamiListView { id: contactPickerListView Layout.alignment: Qt.AlignCenter @@ -114,8 +114,6 @@ Popup { model: ContactAdapter.getContactSelectableModel(type) - clip: true - delegate: ContactPickerItemDelegate { id: contactPickerItemDelegate diff --git a/src/mainview/components/ContactPickerItemDelegate.qml b/src/mainview/components/ContactPickerItemDelegate.qml index 0df745420..f3b6877d0 100644 --- a/src/mainview/components/ContactPickerItemDelegate.qml +++ b/src/mainview/components/ContactPickerItemDelegate.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/ContactSearchBar.qml b/src/mainview/components/ContactSearchBar.qml index a2d88dc4a..740c0fd51 100644 --- a/src/mainview/components/ContactSearchBar.qml +++ b/src/mainview/components/ContactSearchBar.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Constants 1.1 @@ -94,8 +94,8 @@ Rectangle { } onTextChanged: root.contactSearchBarTextChanged(contactSearchBar.text) - onReleased: { - if (event.button == Qt.RightButton) + onReleased: function (event) { + if (event.button === Qt.RightButton) lineEditContextMenu.openMenuAt(event) } } diff --git a/src/mainview/components/ConversationAvatar.qml b/src/mainview/components/ConversationAvatar.qml index 1a42e1165..6b96b4f5e 100644 --- a/src/mainview/components/ConversationAvatar.qml +++ b/src/mainview/components/ConversationAvatar.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Adapters 1.1 diff --git a/src/mainview/components/ConversationListView.qml b/src/mainview/components/ConversationListView.qml index cae64a224..72f05ebe2 100644 --- a/src/mainview/components/ConversationListView.qml +++ b/src/mainview/components/ConversationListView.qml @@ -17,14 +17,16 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 import net.jami.Constants 1.1 -ListView { +import "../../commoncomponents" + +JamiListView { id: root // the following should be marked required (Qtver >= 5.15) @@ -35,10 +37,6 @@ ListView { delegate: SmartListItemDelegate {} currentIndex: model.currentFilteredRow - clip: true - maximumFlickVelocity: 1024 - ScrollBar.vertical: ScrollBar { } - // highlight selection // down and hover states are done within the delegate highlight: Rectangle { diff --git a/src/mainview/components/ConversationSmartListContextMenu.qml b/src/mainview/components/ConversationSmartListContextMenu.qml index 7530d56c0..c560f2204 100644 --- a/src/mainview/components/ConversationSmartListContextMenu.qml +++ b/src/mainview/components/ConversationSmartListContextMenu.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/FilesToSendContainer.qml b/src/mainview/components/FilesToSendContainer.qml index 2db495467..926b80712 100644 --- a/src/mainview/components/FilesToSendContainer.qml +++ b/src/mainview/components/FilesToSendContainer.qml @@ -16,12 +16,14 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Constants 1.1 +import "../../commoncomponents" + Rectangle { id: root @@ -30,7 +32,7 @@ Rectangle { color: JamiTheme.messageOutBgColor - ScrollView { + JamiFlickable { id: filesToSendContainerScrollView anchors.fill: root @@ -38,16 +40,9 @@ Rectangle { contentHeight: root.height contentWidth: filesToSendContainerRow.width - ScrollBar.horizontal.visible: { - var ratio = filesToSendContainerRow.width / root.width - return ratio > 1 - } - ScrollBar.horizontal.contentItem: Rectangle { - implicitHeight: 5 - radius: width / 2 - color: filesToSendContainerScrollView.ScrollBar.horizontal.pressed ? - JamiTheme.darkGreyColor : JamiTheme.whiteColor - } + horizontalHandleColor: + filesToSendContainerScrollView.ScrollBar.horizontal.pressed ? + JamiTheme.darkGreyColor : JamiTheme.whiteColor ScrollBar.vertical.policy: ScrollBar.AlwaysOff Row { diff --git a/src/mainview/components/FilesToSendDelegate.qml b/src/mainview/components/FilesToSendDelegate.qml index 0ff8a0a2b..fb642e1f0 100644 --- a/src/mainview/components/FilesToSendDelegate.qml +++ b/src/mainview/components/FilesToSendDelegate.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/FilterTabButton.qml b/src/mainview/components/FilterTabButton.qml index fa3271b9e..b17cc0135 100644 --- a/src/mainview/components/FilterTabButton.qml +++ b/src/mainview/components/FilterTabButton.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Constants 1.1 diff --git a/src/mainview/components/InitialCallPage.qml b/src/mainview/components/InitialCallPage.qml index aa7970671..d84b5aa23 100644 --- a/src/mainview/components/InitialCallPage.qml +++ b/src/mainview/components/InitialCallPage.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -82,7 +82,9 @@ Rectangle { anchors.fill: parent propagateComposedEvents: false acceptedButtons: Qt.AllButtons - onDoubleClicked: mouse.accepted = true + onDoubleClicked: function (mouse) { + mouse.accepted = true + } } ColumnLayout { diff --git a/src/mainview/components/InvitationView.qml b/src/mainview/components/InvitationView.qml index 6499a1f34..fcac254ba 100644 --- a/src/mainview/components/InvitationView.qml +++ b/src/mainview/components/InvitationView.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/mainview/components/MainOverlay.qml b/src/mainview/components/MainOverlay.qml index cdcd20b3d..fd428dacd 100644 --- a/src/mainview/components/MainOverlay.qml +++ b/src/mainview/components/MainOverlay.qml @@ -19,8 +19,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/MessageBar.qml b/src/mainview/components/MessageBar.qml index ed56cd206..8ac2d3e93 100644 --- a/src/mainview/components/MessageBar.qml +++ b/src/mainview/components/MessageBar.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/MessageBarTextArea.qml b/src/mainview/components/MessageBarTextArea.qml index 3148be89e..8b8c94d4f 100644 --- a/src/mainview/components/MessageBarTextArea.qml +++ b/src/mainview/components/MessageBarTextArea.qml @@ -16,15 +16,15 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Adapters 1.1 import net.jami.Constants 1.1 import "../../commoncomponents" -Flickable { +JamiFlickable { id: root property alias text: textArea.text @@ -57,15 +57,11 @@ Flickable { } } - ScrollBar.vertical: ScrollBar { - policy: contentHeight > height ? ScrollBar.AlwaysOn : ScrollBar.AsNeeded - } - contentWidth: width contentHeight: textArea.implicitHeight interactive: true - clip: true + attachedFlickableMoving: contentHeight > height || root.moving function ensureVisible(r) { if (contentY >= r.y) @@ -118,7 +114,7 @@ Flickable { color: JamiTheme.transparentColor } - onReleased: { + onReleased: function (event) { if (event.button == Qt.RightButton) textAreaContextMenu.openMenuAt(event) } diff --git a/src/mainview/components/MessageListView.qml b/src/mainview/components/MessageListView.qml index dee42c3bd..9aec8fa86 100644 --- a/src/mainview/components/MessageListView.qml +++ b/src/mainview/components/MessageListView.qml @@ -17,10 +17,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import Qt.labs.qmlmodels 1.0 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt.labs.qmlmodels import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/OngoingCallPage.qml b/src/mainview/components/OngoingCallPage.qml index 738ab910b..bfdc0d031 100644 --- a/src/mainview/components/OngoingCallPage.qml +++ b/src/mainview/components/OngoingCallPage.qml @@ -18,10 +18,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -151,12 +151,12 @@ Rectangle { acceptedButtons: Qt.LeftButton | Qt.RightButton - onDoubleClicked: { + onDoubleClicked: function (mouse) { if (mouse.button === Qt.LeftButton) callStackView.toggleFullScreen() } - onClicked: { + onClicked: function (mouse) { if (mouse.button === Qt.RightButton) callOverlay.openCallViewContextMenuInPos(mouse.x, mouse.y) } @@ -223,7 +223,7 @@ Rectangle { anchors.fill: previewRenderer - onPressed: { + onPressed: function (mouse) { clickPos = Qt.point(mouse.x, mouse.y) } @@ -232,7 +232,7 @@ Rectangle { previewMagneticSnap() } - onPositionChanged: { + onPositionChanged: function (mouse) { // Calculate mouse position relative change. var delta = Qt.point(mouse.x - clickPos.x, mouse.y - clickPos.y) diff --git a/src/mainview/components/ParticipantCallInStatusDelegate.qml b/src/mainview/components/ParticipantCallInStatusDelegate.qml index 8bc5d65ca..e576f8d16 100644 --- a/src/mainview/components/ParticipantCallInStatusDelegate.qml +++ b/src/mainview/components/ParticipantCallInStatusDelegate.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/ParticipantCallInStatusView.qml b/src/mainview/components/ParticipantCallInStatusView.qml index da8709e61..a3fa42c35 100644 --- a/src/mainview/components/ParticipantCallInStatusView.qml +++ b/src/mainview/components/ParticipantCallInStatusView.qml @@ -16,14 +16,16 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 import net.jami.Constants 1.1 -ListView { +import "../../commoncomponents" + +JamiListView { id: root width: currentItem ? currentItem.width + currentItem.spinningAnimationWidth @@ -52,8 +54,4 @@ ListView { : preferredHeight } } - - clip: true - maximumFlickVelocity: 1024 - ScrollBar.vertical: ScrollBar { } } diff --git a/src/mainview/components/ParticipantControlLayout.qml b/src/mainview/components/ParticipantControlLayout.qml index 146836c31..184cd94b9 100644 --- a/src/mainview/components/ParticipantControlLayout.qml +++ b/src/mainview/components/ParticipantControlLayout.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick.Layouts 1.15 +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/mainview/components/ParticipantOverlay.qml b/src/mainview/components/ParticipantOverlay.qml index 6a080fd6d..9fb874608 100644 --- a/src/mainview/components/ParticipantOverlay.qml +++ b/src/mainview/components/ParticipantOverlay.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Shapes 1.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Shapes import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/ParticipantOverlayButton.qml b/src/mainview/components/ParticipantOverlayButton.qml index ec646cdfe..0f4ac7edf 100644 --- a/src/mainview/components/ParticipantOverlayButton.qml +++ b/src/mainview/components/ParticipantOverlayButton.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Constants 1.1 diff --git a/src/mainview/components/ParticipantOverlayMenu.qml b/src/mainview/components/ParticipantOverlayMenu.qml index b3e82741c..26c93e0bc 100644 --- a/src/mainview/components/ParticipantOverlayMenu.qml +++ b/src/mainview/components/ParticipantOverlayMenu.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/ParticipantsLayer.qml b/src/mainview/components/ParticipantsLayer.qml index b29320567..6aba4e8e1 100644 --- a/src/mainview/components/ParticipantsLayer.qml +++ b/src/mainview/components/ParticipantsLayer.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick Item { id: root diff --git a/src/mainview/components/PluginHandlerItemDelegate.qml b/src/mainview/components/PluginHandlerItemDelegate.qml index 2a5d6a901..d573d3f58 100644 --- a/src/mainview/components/PluginHandlerItemDelegate.qml +++ b/src/mainview/components/PluginHandlerItemDelegate.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/mainview/components/PluginHandlerPicker.qml b/src/mainview/components/PluginHandlerPicker.qml index e531b97b7..e659d9a02 100644 --- a/src/mainview/components/PluginHandlerPicker.qml +++ b/src/mainview/components/PluginHandlerPicker.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -123,7 +123,7 @@ Popup { } } - ListViewJami { + JamiListView { id: pluginhandlerPickerListView Layout.alignment: Qt.AlignHCenter @@ -142,8 +142,6 @@ Popup { } } - clip: true - delegate: PluginHandlerItemDelegate { id: pluginHandlerItemDelegate visible: PluginModel.getPluginsEnabled() @@ -167,8 +165,6 @@ Popup { updateProperties() } } - - ScrollBar.vertical: ScrollBar { } } } } @@ -241,7 +237,7 @@ Popup { } } - ListViewJami { + JamiListView { id: pluginhandlerPreferencePickerListView Layout.alignment: Qt.AlignHCenter @@ -253,8 +249,6 @@ Popup { model: PluginAdapter.getHandlerPreferencesModel(pluginId, handlerName) - clip: true - delegate: PreferenceItemDelegate { id: pluginHandlerPreferenceDelegate width: pluginhandlerPreferencePickerListView.width diff --git a/src/mainview/components/ProjectCreditsScrollView.qml b/src/mainview/components/ProjectCreditsScrollView.qml index d22e3b9ec..e08925f5d 100644 --- a/src/mainview/components/ProjectCreditsScrollView.qml +++ b/src/mainview/components/ProjectCreditsScrollView.qml @@ -16,47 +16,49 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 import net.jami.Constants 1.1 -ScrollView { - id: projectCreditsScrollView +import "../../commoncomponents" - clip: true +Rectangle { + id: root - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + radius: 5 + border.color: JamiTheme.tabbarBorderColor - TextEdit { - id: projectCreditsTextArea + JamiFlickable { + id: projectCreditsFlickable - horizontalAlignment: Text.AlignHCenter + anchors.fill: parent - width: projectCreditsScrollView.width + contentHeight: projectCreditsTextArea.paintedHeight - selectByMouse: false - readOnly: true - wrapMode: Text.WordWrap + TextEdit { + id: projectCreditsTextArea - font.pointSize: JamiTheme.textFontSize - text: UtilsAdapter.getProjectCredits() - textFormat: TextEdit.RichText + horizontalAlignment: Text.AlignHCenter - MouseArea { - anchors.fill: parent - propagateComposedEvents: true - cursorShape: Qt.ArrowCursor - acceptedButtons: Qt.NoButton - } - } + width: projectCreditsFlickable.width - background: Rectangle { - id: projectCreditsScrollViewBackground + selectByMouse: false + readOnly: true + wrapMode: Text.WordWrap - radius: 5 - border.color: JamiTheme.tabbarBorderColor + font.pointSize: JamiTheme.textFontSize + text: UtilsAdapter.getProjectCredits() + textFormat: TextEdit.RichText + + MouseArea { + anchors.fill: parent + propagateComposedEvents: true + cursorShape: Qt.ArrowCursor + acceptedButtons: Qt.NoButton + } + } } } diff --git a/src/mainview/components/ReadOnlyFooter.qml b/src/mainview/components/ReadOnlyFooter.qml index 97033315e..0e1b2fff0 100644 --- a/src/mainview/components/ReadOnlyFooter.qml +++ b/src/mainview/components/ReadOnlyFooter.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/mainview/components/RecordBox.qml b/src/mainview/components/RecordBox.qml index ccfcc6feb..51819406b 100644 --- a/src/mainview/components/RecordBox.qml +++ b/src/mainview/components/RecordBox.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtGraphicalEffects 1.15 -import QtQuick.Shapes 1.15 +import QtQuick +import QtQuick.Controls +import Qt5Compat.GraphicalEffects +import QtQuick.Shapes import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/ScreenRubberBand.qml b/src/mainview/components/ScreenRubberBand.qml index 79f255217..71fb789e1 100644 --- a/src/mainview/components/ScreenRubberBand.qml +++ b/src/mainview/components/ScreenRubberBand.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Window 2.15 +import QtQuick +import QtQuick.Window import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/ScrollToBottomButton.qml b/src/mainview/components/ScrollToBottomButton.qml index 7eae256bb..7f3c0245c 100644 --- a/src/mainview/components/ScrollToBottomButton.qml +++ b/src/mainview/components/ScrollToBottomButton.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import Qt5Compat.GraphicalEffects import net.jami.Constants 1.1 @@ -123,7 +123,6 @@ Control { horizontalOffset: 3.0 verticalOffset: 3.0 radius: 8.0 - samples: 16 color: JamiTheme.shadowColor } } diff --git a/src/mainview/components/SelectScreen.qml b/src/mainview/components/SelectScreen.qml index e4902d2bc..0a5d0a0c8 100644 --- a/src/mainview/components/SelectScreen.qml +++ b/src/mainview/components/SelectScreen.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Window 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Window +import QtQuick.Controls import net.jami.Adapters 1.1 import net.jami.Models 1.1 @@ -76,10 +76,6 @@ Window { screen: JamiQmlUtils.mainApplicationScreen - modality: Qt.ApplicationModal - - title: JamiStrings.selectScreen - Rectangle { id: selectScreenWindowRect @@ -87,7 +83,20 @@ Window { color: JamiTheme.backgroundColor - ScrollView { + Text { + id: screenListText + + anchors.top: selectScreenWindowRect.top + anchors.topMargin: JamiTheme.preferredMarginSize + anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter + + font.pointSize: JamiTheme.textFontSize + 2 + font.bold: true + text: JamiStrings.selectScreen + color: JamiTheme.textColor + } + + JamiFlickable { id: screenSelectionScrollView anchors.topMargin: JamiTheme.preferredMarginSize @@ -97,10 +106,7 @@ Window { height: selectScreenWindowRect.height - (selectButton.height + JamiTheme.preferredMarginSize * 4) - clip: true - - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AlwaysOn + contentHeight: screenSelectionScrollViewColumn.implicitHeight Flow { id: screenSelectionScrollViewFlow diff --git a/src/mainview/components/SidePanel.qml b/src/mainview/components/SidePanel.qml index 71660cc57..dbdb6a1ef 100644 --- a/src/mainview/components/SidePanel.qml +++ b/src/mainview/components/SidePanel.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -69,7 +69,7 @@ Rectangle { anchors.right: sidePanelRect.right anchors.rightMargin: 15 - onContactSearchBarTextChanged: { + onContactSearchBarTextChanged: function (text) { // not calling positionViewAtBeginning will cause // sort animation visual bugs conversationListView.positionViewAtBeginning() diff --git a/src/mainview/components/SidePanelTabBar.qml b/src/mainview/components/SidePanelTabBar.qml index 970b081f1..4020a11f6 100644 --- a/src/mainview/components/SidePanelTabBar.qml +++ b/src/mainview/components/SidePanelTabBar.qml @@ -17,7 +17,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick.Controls 2.15 +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/SipInputPanel.qml b/src/mainview/components/SipInputPanel.qml index 426047a02..6ac9fc676 100644 --- a/src/mainview/components/SipInputPanel.qml +++ b/src/mainview/components/SipInputPanel.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/mainview/components/SmartListItemDelegate.qml b/src/mainview/components/SmartListItemDelegate.qml index 612e95061..56f004914 100644 --- a/src/mainview/components/SmartListItemDelegate.qml +++ b/src/mainview/components/SmartListItemDelegate.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -190,6 +190,8 @@ ItemDelegate { MouseArea { anchors.fill: parent acceptedButtons: Qt.RightButton - onClicked: root.ListView.view.openContextMenuAt(mouse.x, mouse.y, root) + onClicked: function (mouse) { + root.ListView.view.openContextMenuAt(mouse.x, mouse.y, root) + } } } diff --git a/src/mainview/components/UserProfile.qml b/src/mainview/components/UserProfile.qml index 9e5bc9a9f..0a82fbd4d 100644 --- a/src/mainview/components/UserProfile.qml +++ b/src/mainview/components/UserProfile.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Constants 1.1 diff --git a/src/mainview/components/WelcomePage.qml b/src/mainview/components/WelcomePage.qml index f6ce1a406..bd912b8ff 100644 --- a/src/mainview/components/WelcomePage.qml +++ b/src/mainview/components/WelcomePage.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/mainview/components/WelcomePageQrDialog.qml b/src/mainview/components/WelcomePageQrDialog.qml index 75c7b0384..5efd84cb1 100644 --- a/src/mainview/components/WelcomePageQrDialog.qml +++ b/src/mainview/components/WelcomePageQrDialog.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Adapters 1.1 diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 25f912183..91f8eed02 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -248,7 +248,8 @@ MessagesAdapter::onPaste() // Extract the local paths of the files. for (int i = 0; i < urlList.size(); ++i) { // Trim file:// or file:/// from url. - QString filePath = urlList.at(i).toString().remove(QRegExp("^file:\\/{2,3}")); + QString filePath = urlList.at(i).toString().remove( + QRegularExpression("^file:\\/{2,3}")); Q_EMIT newFilePasted(filePath); } } else { diff --git a/src/networkmanager.cpp b/src/networkmanager.cpp index d82c3d3d2..c5ba2b0dc 100644 --- a/src/networkmanager.cpp +++ b/src/networkmanager.cpp @@ -81,11 +81,7 @@ NetWorkManager::get(const QUrl& url, const DoneCallBack& doneCb, const QString& Q_EMIT statusChanged(GetStatus::STARTED); connect(reply_, -#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::errorOccurred), -#else - QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error), -#endif [this, doneCb, path](QNetworkReply::NetworkError error) { reply_->disconnect(); reset(true); diff --git a/src/previewengine.cpp b/src/previewengine.cpp index 5796ff07b..abced5db4 100644 --- a/src/previewengine.cpp +++ b/src/previewengine.cpp @@ -19,7 +19,6 @@ #include "previewengine.h" -#include <QtWebEngine> #include <QWebEngineScript> #include <QWebEngineProfile> #include <QWebEngineSettings> diff --git a/src/previewengine.h b/src/previewengine.h index 8cb7e322f..c19eb6b7d 100644 --- a/src/previewengine.h +++ b/src/previewengine.h @@ -22,9 +22,7 @@ #include "utils.h" #include <QtWebChannel> -#include <QtWebEngine> #include <QtWebEngineCore> -#include <QtWebEngine> #include <QWebEngineView> class PreviewEngine; diff --git a/src/qmlregister.cpp b/src/qmlregister.cpp index 6954d3988..759b0043c 100644 --- a/src/qmlregister.cpp +++ b/src/qmlregister.cpp @@ -179,7 +179,7 @@ registerTypes(QQmlEngine* engine, QML_REGISTERSINGLETONTYPE_URL(NS_CONSTANTS, "qrc:/src/constant/JamiResources.qml", JamiResources); QML_REGISTERSINGLETONTYPE_URL(NS_CONSTANTS, "qrc:/src/constant/MsgSeq.qml", MsgSeq); - QML_REGISTERSINGLETONTYPE_POBJECT(NS_CONSTANTS, screenInfo, "ScreenInfo") + QML_REGISTERSINGLETONTYPE_POBJECT(NS_CONSTANTS, screenInfo, "CurrentScreenInfo") QML_REGISTERSINGLETONTYPE_POBJECT(NS_CONSTANTS, lrcInstance, "LRCInstance") QML_REGISTERSINGLETONTYPE_POBJECT(NS_CONSTANTS, settingsManager, "AppSettingsManager") diff --git a/src/quickimageproviderbase.h b/src/quickimageproviderbase.h index 896269d10..66c84751c 100644 --- a/src/quickimageproviderbase.h +++ b/src/quickimageproviderbase.h @@ -24,7 +24,7 @@ class LRCInstance; -class QuickImageProviderBase : public QObject, public QQuickImageProvider +class QuickImageProviderBase : public QQuickImageProvider { public: QuickImageProviderBase(QQuickImageProvider::ImageType type, diff --git a/src/settingsview/SettingsView.qml b/src/settingsview/SettingsView.qml index d89b61cec..752adbace 100644 --- a/src/settingsview/SettingsView.qml +++ b/src/settingsview/SettingsView.qml @@ -17,15 +17,16 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 import net.jami.Constants 1.1 import "components" +import "../commoncomponents" import "../mainview/js/contactpickercreation.js" as ContactPickerCreation Rectangle { @@ -129,7 +130,7 @@ Rectangle { onBackArrowClicked: root.settingsBackArrowClicked() } - Flickable { + JamiFlickable { id: settingsViewScrollView anchors.top: settingsHeader.bottom @@ -138,10 +139,6 @@ Rectangle { height: settingsViewRect.height - settingsHeader.height width: settingsViewRect.width - maximumFlickVelocity: 1024 - ScrollBar.vertical: ScrollBar { } - - clip: true contentHeight: rightSettingsStackLayout.height StackLayout { @@ -194,7 +191,7 @@ Rectangle { leaveSettingsSlot(false) } - onAdvancedSettingsToggled: { + onAdvancedSettingsToggled: function (settingsVisible) { if (settingsVisible) settingsViewScrollView.contentY = getAdvancedSettingsScrollPosition() else diff --git a/src/settingsview/components/AccountProfile.qml b/src/settingsview/components/AccountProfile.qml index 9b1e3fb4b..8074d264f 100644 --- a/src/settingsview/components/AccountProfile.qml +++ b/src/settingsview/components/AccountProfile.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedCallSettings.qml b/src/settingsview/components/AdvancedCallSettings.qml index 3e327280f..445297351 100644 --- a/src/settingsview/components/AdvancedCallSettings.qml +++ b/src/settingsview/components/AdvancedCallSettings.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -161,7 +161,7 @@ ColumnLayout { - JamiTheme.preferredMarginSize * 4 } - ListViewJami { + JamiListView { id: moderatorListWidget Layout.fillWidth: true diff --git a/src/settingsview/components/AdvancedChatSettings.qml b/src/settingsview/components/AdvancedChatSettings.qml index be7530758..eb68320d0 100644 --- a/src/settingsview/components/AdvancedChatSettings.qml +++ b/src/settingsview/components/AdvancedChatSettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/settingsview/components/AdvancedConnectivitySettings.qml b/src/settingsview/components/AdvancedConnectivitySettings.qml index b7b29a473..f068285c8 100644 --- a/src/settingsview/components/AdvancedConnectivitySettings.qml +++ b/src/settingsview/components/AdvancedConnectivitySettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedJamiSecuritySettings.qml b/src/settingsview/components/AdvancedJamiSecuritySettings.qml index 4e68c9457..bb0e3a8d7 100644 --- a/src/settingsview/components/AdvancedJamiSecuritySettings.qml +++ b/src/settingsview/components/AdvancedJamiSecuritySettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedMediaSettings.qml b/src/settingsview/components/AdvancedMediaSettings.qml index badf90250..4eff63706 100644 --- a/src/settingsview/components/AdvancedMediaSettings.qml +++ b/src/settingsview/components/AdvancedMediaSettings.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedNameServerSettings.qml b/src/settingsview/components/AdvancedNameServerSettings.qml index 0843ba31a..2dcbede86 100644 --- a/src/settingsview/components/AdvancedNameServerSettings.qml +++ b/src/settingsview/components/AdvancedNameServerSettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedOpenDHTSettings.qml b/src/settingsview/components/AdvancedOpenDHTSettings.qml index f8b076185..655b1a3d2 100644 --- a/src/settingsview/components/AdvancedOpenDHTSettings.qml +++ b/src/settingsview/components/AdvancedOpenDHTSettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedPublicAddressSettings.qml b/src/settingsview/components/AdvancedPublicAddressSettings.qml index 552cb8657..7525d6e4d 100644 --- a/src/settingsview/components/AdvancedPublicAddressSettings.qml +++ b/src/settingsview/components/AdvancedPublicAddressSettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedSDPSettings.qml b/src/settingsview/components/AdvancedSDPSettings.qml index 59862b54e..76032a958 100644 --- a/src/settingsview/components/AdvancedSDPSettings.qml +++ b/src/settingsview/components/AdvancedSDPSettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedSIPSecuritySettings.qml b/src/settingsview/components/AdvancedSIPSecuritySettings.qml index 237c1bb5d..933cc12dc 100644 --- a/src/settingsview/components/AdvancedSIPSecuritySettings.qml +++ b/src/settingsview/components/AdvancedSIPSecuritySettings.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedSettings.qml b/src/settingsview/components/AdvancedSettings.qml index c1c735935..753502db0 100644 --- a/src/settingsview/components/AdvancedSettings.qml +++ b/src/settingsview/components/AdvancedSettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AdvancedVoiceMailSettings.qml b/src/settingsview/components/AdvancedVoiceMailSettings.qml index b01269878..c079fb0dc 100644 --- a/src/settingsview/components/AdvancedVoiceMailSettings.qml +++ b/src/settingsview/components/AdvancedVoiceMailSettings.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AudioSettings.qml b/src/settingsview/components/AudioSettings.qml index 34649f314..fb416e540 100644 --- a/src/settingsview/components/AudioSettings.qml +++ b/src/settingsview/components/AudioSettings.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/AvSettingPage.qml b/src/settingsview/components/AvSettingPage.qml index 52cd2b50f..76eadd545 100644 --- a/src/settingsview/components/AvSettingPage.qml +++ b/src/settingsview/components/AvSettingPage.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/BannedContacts.qml b/src/settingsview/components/BannedContacts.qml index e86281a39..4da3bec12 100644 --- a/src/settingsview/components/BannedContacts.qml +++ b/src/settingsview/components/BannedContacts.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -100,7 +100,7 @@ ColumnLayout { } } - ListViewJami { + JamiListView { id: bannedListWidget Layout.fillWidth: true diff --git a/src/settingsview/components/ChatviewSettings.qml b/src/settingsview/components/ChatviewSettings.qml index 660807e66..85dc572ef 100644 --- a/src/settingsview/components/ChatviewSettings.qml +++ b/src/settingsview/components/ChatviewSettings.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/ContactItemDelegate.qml b/src/settingsview/components/ContactItemDelegate.qml index 7418ad035..f7814aac6 100644 --- a/src/settingsview/components/ContactItemDelegate.qml +++ b/src/settingsview/components/ContactItemDelegate.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/settingsview/components/CurrentAccountSettings.qml b/src/settingsview/components/CurrentAccountSettings.qml index d1189acb1..d71b5cc32 100644 --- a/src/settingsview/components/CurrentAccountSettings.qml +++ b/src/settingsview/components/CurrentAccountSettings.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import Qt.labs.platform 1.1 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt.labs.platform import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/DeviceItemDelegate.qml b/src/settingsview/components/DeviceItemDelegate.qml index b209c4fd2..ea5429c90 100644 --- a/src/settingsview/components/DeviceItemDelegate.qml +++ b/src/settingsview/components/DeviceItemDelegate.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/FileTransferSettings.qml b/src/settingsview/components/FileTransferSettings.qml index 64eb8cbe6..b7224a300 100644 --- a/src/settingsview/components/FileTransferSettings.qml +++ b/src/settingsview/components/FileTransferSettings.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Enums 1.1 diff --git a/src/settingsview/components/GeneralSettingsPage.qml b/src/settingsview/components/GeneralSettingsPage.qml index 0b913dc49..e55c0975c 100644 --- a/src/settingsview/components/GeneralSettingsPage.qml +++ b/src/settingsview/components/GeneralSettingsPage.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/JamiUserIdentity.qml b/src/settingsview/components/JamiUserIdentity.qml index 29f2b05df..416728598 100644 --- a/src/settingsview/components/JamiUserIdentity.qml +++ b/src/settingsview/components/JamiUserIdentity.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/KeyBoardShortcutKey.qml b/src/settingsview/components/KeyBoardShortcutKey.qml deleted file mode 100644 index 2189283e0..000000000 --- a/src/settingsview/components/KeyBoardShortcutKey.qml +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2019-2020 by Savoir-faire Linux - * Author: Mingrui Zhang <mingrui.zhang@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 <http://www.gnu.org/licenses/>. - */ - -import QtQuick 2.15 - -import net.jami.Constants 1.1 - -Item { - property alias text: shortcutText.text - Rectangle{ - id: keyRect - width: t_metrics.tightBoundingRect.width + 10 - height: t_metrics.tightBoundingRect.height + 10 - color: JamiTheme.buttonTintedGrey - radius: 5 - anchors.centerIn: parent - Text { - id : shortcutText - anchors.centerIn: parent - anchors.leftMargin: 10 - font.family: "Arial" - font.pointSize: 12 - color: JamiTheme.whiteColor - } - TextMetrics { - id: t_metrics - font: shortcutText.font - text: shortcutText.text - } - } -} diff --git a/src/settingsview/components/KeyBoardShortcutTable.qml b/src/settingsview/components/KeyBoardShortcutTable.qml deleted file mode 100644 index bd9d4b917..000000000 --- a/src/settingsview/components/KeyBoardShortcutTable.qml +++ /dev/null @@ -1,624 +0,0 @@ -/* - * Copyright (C) 2019-2020 by Savoir-faire Linux - * Author: Mingrui Zhang <mingrui.zhang@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 <http://www.gnu.org/licenses/>. - */ - -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 -import QtQuick.Layouts 1.15 - -import net.jami.Models 1.1 -import net.jami.Constants 1.1 - -import "../../commoncomponents" - -BaseDialog { - id: root - - visible: false - title: qsTr("Shortcuts") - - contentItem: Rectangle { - id: shortcutsTableContentRect - - implicitWidth: 800 - implicitHeight: 600 - color: JamiTheme.backgroundColor - - ListModel { - id: keyboardGeneralShortcutsModel - ListElement { - Shortcut: "Ctrl+J" - Description: qsTr("Open account list") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+L" - Description: qsTr("Focus conversations list") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+R" - Description: qsTr("Requests list") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+↑" - Description: qsTr("Previous conversation") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+↓" - Description: qsTr("Next conversation") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+F" - Description: qsTr("Search bar") - KeyLength: 2 - } - ListElement { - Shortcut: "F11" - Description: qsTr("Fullscreen") - KeyLength: 1 - } - } - ListModel { - id: keyboardConversationShortcutsModel - ListElement { - Shortcut: "Ctrl+Shift+C" - Description: qsTr("Start an audio call") - KeyLength: 3 - } - ListElement { - Shortcut: "Ctrl+Shift+X" - Description: qsTr("Start a video call") - KeyLength: 3 - } - ListElement { - Shortcut: "Ctrl+Shift+L" - Description: qsTr("Clear history") - KeyLength: 3 - } - ListElement { - Shortcut: "Ctrl+Shift+B" - Description: qsTr("Block contact") - KeyLength: 3 - } - ListElement { - Shortcut: "Ctrl+Shift+Delete" - Description: qsTr("Remove conversation") - KeyLength: 3 - } - ListElement { - Shortcut: "Shift+Ctrl+A" - Description: qsTr("Accept contact request") - KeyLength: 3 - } - } - ListModel { - id: keyboardSettingsShortcutsModel - ListElement { - Shortcut: "Ctrl+M" - Description: qsTr("Media settings") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+G" - Description: qsTr("General settings") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+I" - Description: qsTr("Account settings") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+Shift+N" - Description: qsTr("Open account creation wizard") - KeyLength: 3 - } - ListElement { - Shortcut: "F10" - Description: qsTr("Open window") - KeyLength: 1 - } - } - ListModel { - id: keyboardCallsShortcutsModel - ListElement { - Shortcut: "Ctrl+Y" - Description: qsTr("Answer an incoming call") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+D" - Description: qsTr("End call") - KeyLength: 2 - } - ListElement { - Shortcut: "Ctrl+Shift+D" - Description: qsTr("Decline the call request") - KeyLength: 2 - } - } - Component { - id: shortcutDelegateWithThreeKeys - - Rectangle { - id: cellRectWithThreeKeys - - implicitWidth: JamiTheme.mainViewMinWidth / 2 - implicitHeight: 50 - anchors.left: parent.left - anchors.leftMargin: 20 - color: JamiTheme.backgroundColor - border.color: JamiTheme.backgroundColor - - Rectangle { - id: containerRectWithThreeKeys - - implicitWidth: parent.width - 10 - implicitHeight: 50 - - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - color: JamiTheme.backgroundColor - - Component.onCompleted: { - var componentKeyOne = Qt.createComponent("KeyBoardShortcutKey.qml") - if (componentKeyOne.status === Component.Ready) { - var objectKeyOne = componentKeyOne.createObject(containerRectWithThreeKeys) - objectKeyOne.anchors.verticalCenter = containerRectWithThreeKeys.verticalCenter - objectKeyOne.anchors.left = containerRectWithThreeKeys.left - objectKeyOne.text = Qt.binding(function() { return modelData.Shortcut.split("+")[0] }) - } - if (modelData.Shortcut.split("+").length === 1) - return - var componentPlusSign = Qt.createQmlObject('import QtQuick 2.0;' + - 'Text {anchors.verticalCenter: containerRectWithThreeKeys.verticalCenter;' + - 'anchors.verticalCenterOffset: -2;' + - 'anchors.left: containerRectWithThreeKeys.left;' + - 'anchors.leftMargin: 30;' + - 'font.bold: true;' + - 'font.pointSize : 12;' + - 'text: "+"}', - containerRectWithThreeKeys) - componentPlusSign.color = Qt.binding(function() { return JamiTheme.textColor }) - var componentKeyTwo = Qt.createComponent("KeyBoardShortcutKey.qml") - if (componentKeyTwo.status === Component.Ready) { - var objectKeyTwo = componentKeyTwo.createObject(containerRectWithThreeKeys) - objectKeyTwo.anchors.verticalCenter = containerRectWithThreeKeys.verticalCenter - objectKeyTwo.anchors.left = containerRectWithThreeKeys.left - objectKeyTwo.anchors.leftMargin = componentPlusSign.anchors.leftMargin + 42 - objectKeyTwo.text = Qt.binding(function() { return modelData.Shortcut.split("+")[1] }) - } - - if (modelData.Shortcut.split("+").length === 2) - return - var componentPlusSignTwo = Qt.createQmlObject('import QtQuick 2.0;' + - 'Text {anchors.verticalCenter: containerRectWithThreeKeys.verticalCenter;' + - 'anchors.verticalCenterOffset: -2;' + - 'anchors.left: containerRectWithThreeKeys.left;' + - 'anchors.leftMargin: 97;' + - 'font.bold: true;' + - 'font.pointSize : 12;' + - 'text: "+"}', - containerRectWithThreeKeys) - componentPlusSignTwo.color = Qt.binding(function() { return JamiTheme.textColor }) - var componentKeyThree = Qt.createComponent("KeyBoardShortcutKey.qml") - if (componentKeyThree.status === Component.Ready) { - var objectKeyThree = componentKeyThree.createObject(containerRectWithThreeKeys) - objectKeyThree.anchors.verticalCenter = containerRectWithThreeKeys.verticalCenter - objectKeyThree.anchors.left = containerRectWithThreeKeys.left - objectKeyThree.anchors.leftMargin = componentPlusSignTwo.anchors.leftMargin + 35 - objectKeyThree.text = Qt.binding(function() { return modelData.Shortcut.split("+")[2] }) - } - } - } - } - } - Component { - id: descriptionDelegate - - Rectangle { - implicitWidth: root.width / 2 - implicitHeight: 50 - - color: JamiTheme.backgroundColor - border.color: JamiTheme.backgroundColor - Text { - id : descriptionText - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 10 - font.family: "Arial" - font.pointSize: JamiTheme.textFontSize - text: styleData.value - color: JamiTheme.textColor - } - } - } - - Column { - spacing: 2 - id: columnAll - anchors.rightMargin: 20 - anchors.leftMargin: 20 - anchors.bottomMargin: 20 - anchors.topMargin: 50 - - width: JamiTheme.mainViewMinWidth - height: JamiTheme.mainViewMinHeight - 100 - anchors.fill: parent - - StackLayout { - // pages - implicitWidth: parent.width - implicitHeight: parent.height - tabBar.height - currentIndex: tabBar.currentIndex - Item { - id: tabOne - Rectangle { - implicitWidth: parent.width / 2 - implicitHeight: parent.height - anchors.left: parent.left - TableView { - id: generalTableView - anchors.fill: parent - horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff - frameVisible: false - TableViewColumn { - role: "Description" - width: generalTableView.width / 2 - delegate: descriptionDelegate - } - TableViewColumn { - role: "Shortcut" - width: generalTableView.width / 2 - delegate: Component{ - Loader { - property variant modelData: model - sourceComponent: shortcutDelegateWithThreeKeys - asynchronous: true - } - } - } - model: keyboardGeneralShortcutsModel - rowDelegate: Rectangle { - height: 50 - color: JamiTheme.backgroundColor - } - style: TableViewStyle { - backgroundColor: JamiTheme.backgroundColor - alternateBackgroundColor: JamiTheme.backgroundColor - headerDelegate: Rectangle { - // Only first column's header is shown - height: [t_metrics_general.tightBoundingRect.height + 10, 0][styleData.column % 2] - width: [parent.width, 0][styleData.column % 2] - color: JamiTheme.backgroundColor - radius: 4 - anchors.top: parent.top - anchors.topMargin: 5 - Text { - id : generalShortcutText - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 10 - font.family: "Arial" - font.pointSize: JamiTheme.headerFontSize - text: styleData.column % 2 ? "" : "General" - color: JamiTheme.textColor - } - TextMetrics { - id: t_metrics_general - font: generalShortcutText.font - text: generalShortcutText.text - } - } - } - } - } - Rectangle { - implicitWidth: parent.width / 2 - implicitHeight: parent.height - anchors.right: parent.right - TableView { - id: conversationsTableView - anchors.fill: parent - horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff - frameVisible: false - TableViewColumn { - role: "Description" - width: conversationsTableView.width / 2 - delegate: descriptionDelegate - } - TableViewColumn { - role: "Shortcut" - width: conversationsTableView.width / 2 - delegate: Component{ - Loader { - property variant modelData: model - sourceComponent: shortcutDelegateWithThreeKeys - asynchronous: true - } - } - } - model: keyboardConversationShortcutsModel - rowDelegate: Rectangle { - height: 50 - color: JamiTheme.backgroundColor - } - style: TableViewStyle { - backgroundColor: JamiTheme.backgroundColor - alternateBackgroundColor: JamiTheme.backgroundColor - headerDelegate: Rectangle { - // Only first column's header is shown - height: [t_metrics_conversations.tightBoundingRect.height + 10, 0][styleData.column % 2] - width: [parent.width, 0][styleData.column % 2] - color: JamiTheme.backgroundColor - radius: 4 - anchors.top: parent.top - anchors.topMargin: 5 - Text { - id : conversationsShortcutText - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 10 - font.family: "Arial" - font.pointSize: JamiTheme.headerFontSize - text: styleData.column % 2 ? "" : JamiStrings.conversations - color: JamiTheme.textColor - } - TextMetrics { - id: t_metrics_conversations - font: conversationsShortcutText.font - text: conversationsShortcutText.text - } - } - } - } - } - } - Item { - id: tabTwo - Rectangle { - implicitWidth: parent.width / 2 - implicitHeight: parent.height - anchors.left: parent.left - TableView { - id: callsTableView - anchors.fill: parent - horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff - frameVisible: false - TableViewColumn { - role: "Description" - width: callsTableView.width / 2 - delegate: descriptionDelegate - } - TableViewColumn { - role: "Shortcut" - width: callsTableView.width / 2 - delegate: Component{ - Loader { - property variant modelData: model - sourceComponent: shortcutDelegateWithThreeKeys - asynchronous: true - } - } - } - model: keyboardCallsShortcutsModel - rowDelegate: Rectangle { - height: 50 - color: JamiTheme.backgroundColor - } - style: TableViewStyle { - backgroundColor: JamiTheme.backgroundColor - alternateBackgroundColor: JamiTheme.backgroundColor - headerDelegate: Rectangle { - // Only first column's header is shown - height: [t_metrics_calls.tightBoundingRect.height + 10, 0][styleData.column % 2] - width: [parent.width, 0][styleData.column % 2] - color: JamiTheme.backgroundColor - radius: 4 - anchors.top: parent.top - anchors.topMargin: 5 - Text { - id : callsShortcutText - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 10 - font.family: "Arial" - font.pointSize: 12 - text: styleData.column % 2 ? "" : "Calls" - color: JamiTheme.textColor - } - // make sure that calls and settings header are parallel - TextMetrics { - id: t_metrics_calls - font: callsShortcutText.font - text: "Settings" - } - } - } - } - } - Rectangle { - implicitWidth: parent.width / 2 - implicitHeight: parent.height - anchors.right: parent.right - TableView { - id: settingsTableView - anchors.fill: parent - horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff - frameVisible: false - TableViewColumn { - role: "Description" - width: settingsTableView.width / 2 - delegate: descriptionDelegate - } - TableViewColumn { - role: "Shortcut" - width: settingsTableView.width / 2 - delegate: Component{ - Loader { - property variant modelData: model - sourceComponent: shortcutDelegateWithThreeKeys - asynchronous: true - } - } - } - model: keyboardSettingsShortcutsModel - rowDelegate: Rectangle { - height: 50 - color: JamiTheme.backgroundColor - } - style: TableViewStyle { - backgroundColor: JamiTheme.backgroundColor - alternateBackgroundColor: JamiTheme.backgroundColor - headerDelegate: Rectangle { - // Only first column's header is shown - height: [t_metrics_settings.tightBoundingRect.height + 10, 0][styleData.column % 2] - width: [parent.width, 0][styleData.column % 2] - color: JamiTheme.backgroundColor - radius: 4 - anchors.top: parent.top - anchors.topMargin: 5 - Text { - id : settingsShortcutText - anchors.verticalCenter: parent.verticalCenter - anchors.left: parent.left - anchors.leftMargin: 10 - font.family: "Arial" - font.pointSize: 12 - text: styleData.column % 2 ? "" : "Settings" - color: JamiTheme.textColor - } - TextMetrics { - id: t_metrics_settings - font: settingsShortcutText.font - text: settingsShortcutText.text - } - } - } - } - } - } - } - } - - TabBar { - id: tabBar - anchors.horizontalCenter: parent.horizontalCenter - - anchors.bottom: parent.bottom - anchors.bottomMargin: parent.height - 500 // Forced postion below table - - width: JamiTheme.preferredFieldWidth * 2 - height: JamiTheme.preferredFieldHeight - background: Rectangle { color: "transparent" } - - currentIndex: 0 - TabButton { - id: pageOne - width: JamiTheme.preferredFieldWidth - text: "1" - down: true - // customize tab button - contentItem: Text { - text: pageOne.text - font: pageOne.font - opacity: enabled ? 1.0 : 0.3 - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - color: JamiTheme.textColor - } - // customize tab button - background: Rectangle { - id: buttonRectOne - implicitWidth: JamiTheme.preferredFieldWidth - implicitHeight: JamiTheme.preferredFieldHeight - radius: 4 - color: pageOne.down ? JamiTheme.selectedColor : "transparent" - MouseArea { - anchors.fill: parent - hoverEnabled: true - onPressed: { buttonRectOne.color = JamiTheme.pressColor; tabBar.currentIndex = 0; pageOne.down = true; pageTwo.down = false;} - onReleased: { buttonRectOne.color = JamiTheme.selectedColor; } - onEntered: { buttonRectOne.color = JamiTheme.hoverColor; } - onExited: { buttonRectOne.color = Qt.binding(function() { return pageOne.down ? JamiTheme.selectedColor : "transparent" }); } - } - } - } - TabButton { - id: pageTwo - text: "2" - width: JamiTheme.preferredFieldWidth - contentItem: Text { - text: pageTwo.text - font: pageTwo.font - opacity: enabled ? 1.0 : 0.3 - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - elide: Text.ElideRight - color: JamiTheme.textColor - } - - background: Rectangle { - id: buttonRectTwo - implicitWidth: JamiTheme.preferredFieldWidth - implicitHeight: JamiTheme.preferredFieldHeight - - radius: 4 - color: pageTwo.down ? JamiTheme.selectedColor : "transparent" - MouseArea { - anchors.fill: parent - hoverEnabled: true - onPressed: { buttonRectTwo.color = JamiTheme.pressColor; tabBar.currentIndex = 1; pageTwo.down = true; pageOne.down = false;} - onReleased: { buttonRectTwo.color = JamiTheme.selectedColor; } - onEntered: { buttonRectTwo.color = JamiTheme.hoverColor; } - onExited: { buttonRectTwo.color = Qt.binding(function() { return pageTwo.down ? JamiTheme.selectedColor : "transparent" }); } - } - } - } - } - - MaterialButton { - id: btnClose - - anchors.bottom: parent.bottom - anchors.bottomMargin: JamiTheme.preferredMarginSize - anchors.horizontalCenter: parent.horizontalCenter - - preferredWidth: JamiTheme.preferredFieldWidth / 2 - preferredHeight: JamiTheme.preferredFieldHeight - - color: JamiTheme.buttonTintedBlack - hoveredColor: JamiTheme.buttonTintedBlackHovered - pressedColor: JamiTheme.buttonTintedBlackPressed - outlined: true - - text: JamiStrings.close - - onClicked: { - close() - } - } - } -} diff --git a/src/settingsview/components/LevelMeter.qml b/src/settingsview/components/LevelMeter.qml index aa5ead412..0968d0aec 100644 --- a/src/settingsview/components/LevelMeter.qml +++ b/src/settingsview/components/LevelMeter.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -34,9 +34,9 @@ ProgressBar { onVisibleChanged: { if (visible) { rmsLevel = 0 - AvAdapter.startAudioMeter(true) + AvAdapter.startAudioMeter() } else - AvAdapter.stopAudioMeter(true) + AvAdapter.stopAudioMeter() } function clamp(num, a, b) { diff --git a/src/settingsview/components/LinkDeviceDialog.qml b/src/settingsview/components/LinkDeviceDialog.qml index 7be430dfd..1cdff81e3 100644 --- a/src/settingsview/components/LinkDeviceDialog.qml +++ b/src/settingsview/components/LinkDeviceDialog.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/LinkedDevices.qml b/src/settingsview/components/LinkedDevices.qml index f091f467b..a35eacede 100644 --- a/src/settingsview/components/LinkedDevices.qml +++ b/src/settingsview/components/LinkedDevices.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -75,7 +75,7 @@ ColumnLayout { font.kerning: true } - ListViewJami { + JamiListView { id: settingsListView Layout.fillWidth: true diff --git a/src/settingsview/components/LogsView.qml b/src/settingsview/components/LogsView.qml index bd28ef848..98edfb607 100644 --- a/src/settingsview/components/LogsView.qml +++ b/src/settingsview/components/LogsView.qml @@ -16,10 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Dialogs 1.2 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -89,10 +88,9 @@ Dialog { } title: JamiStrings.logsViewTitle - modality: Qt.NonModal width: 800 height: 700 - standardButtons: StandardButton.NoButton + standardButtons: Dialog.NoButton ColumnLayout { diff --git a/src/settingsview/components/MediaCodecDelegate.qml b/src/settingsview/components/MediaCodecDelegate.qml index 41cf1b182..afde87c07 100644 --- a/src/settingsview/components/MediaCodecDelegate.qml +++ b/src/settingsview/components/MediaCodecDelegate.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/settingsview/components/MediaSettings.qml b/src/settingsview/components/MediaSettings.qml index 614133db9..ce3b4400b 100644 --- a/src/settingsview/components/MediaSettings.qml +++ b/src/settingsview/components/MediaSettings.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -100,7 +100,7 @@ ColumnLayout { } } - ListViewJami { + JamiListView { id: mediaListWidget Layout.fillWidth: true diff --git a/src/settingsview/components/NameRegistrationDialog.qml b/src/settingsview/components/NameRegistrationDialog.qml index c617f73c6..96d62ed7e 100644 --- a/src/settingsview/components/NameRegistrationDialog.qml +++ b/src/settingsview/components/NameRegistrationDialog.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/PluginItemDelegate.qml b/src/settingsview/components/PluginItemDelegate.qml index 258bfcf11..45bbdf74d 100644 --- a/src/settingsview/components/PluginItemDelegate.qml +++ b/src/settingsview/components/PluginItemDelegate.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/PluginListPreferencesView.qml b/src/settingsview/components/PluginListPreferencesView.qml index 3195e2554..5152197d5 100644 --- a/src/settingsview/components/PluginListPreferencesView.qml +++ b/src/settingsview/components/PluginListPreferencesView.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/settingsview/components/PluginListSettingsView.qml b/src/settingsview/components/PluginListSettingsView.qml index f3b7d9a4a..ce6f773ac 100644 --- a/src/settingsview/components/PluginListSettingsView.qml +++ b/src/settingsview/components/PluginListSettingsView.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import Qt.labs.platform 1.1 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt.labs.platform import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/PluginSettingsPage.qml b/src/settingsview/components/PluginSettingsPage.qml index 758cc7c71..7e68452f3 100644 --- a/src/settingsview/components/PluginSettingsPage.qml +++ b/src/settingsview/components/PluginSettingsPage.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/src/settingsview/components/RecordingSettings.qml b/src/settingsview/components/RecordingSettings.qml index 962290470..3ef714318 100644 --- a/src/settingsview/components/RecordingSettings.qml +++ b/src/settingsview/components/RecordingSettings.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import Qt.labs.platform 1.1 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt.labs.platform import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/RevokeDevicePasswordDialog.qml b/src/settingsview/components/RevokeDevicePasswordDialog.qml index 23a5b50cd..e5e4362c0 100644 --- a/src/settingsview/components/RevokeDevicePasswordDialog.qml +++ b/src/settingsview/components/RevokeDevicePasswordDialog.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Constants 1.1 diff --git a/src/settingsview/components/SIPUserIdentity.qml b/src/settingsview/components/SIPUserIdentity.qml index 083f0a85b..7adfab3db 100644 --- a/src/settingsview/components/SIPUserIdentity.qml +++ b/src/settingsview/components/SIPUserIdentity.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/SettingMaterialButton.qml b/src/settingsview/components/SettingMaterialButton.qml index aed909d1a..876885e90 100644 --- a/src/settingsview/components/SettingMaterialButton.qml +++ b/src/settingsview/components/SettingMaterialButton.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/SettingSpinBox.qml b/src/settingsview/components/SettingSpinBox.qml index eb03538de..56069591e 100644 --- a/src/settingsview/components/SettingSpinBox.qml +++ b/src/settingsview/components/SettingSpinBox.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/SettingsComboBox.qml b/src/settingsview/components/SettingsComboBox.qml index 63a4f7b76..afb71b4de 100644 --- a/src/settingsview/components/SettingsComboBox.qml +++ b/src/settingsview/components/SettingsComboBox.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Constants 1.1 diff --git a/src/settingsview/components/SettingsHeader.qml b/src/settingsview/components/SettingsHeader.qml index d8d46a04d..1189db39b 100644 --- a/src/settingsview/components/SettingsHeader.qml +++ b/src/settingsview/components/SettingsHeader.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/settingsview/components/SettingsMaterialLineEdit.qml b/src/settingsview/components/SettingsMaterialLineEdit.qml index 77b0c53f1..ddf7a1d74 100644 --- a/src/settingsview/components/SettingsMaterialLineEdit.qml +++ b/src/settingsview/components/SettingsMaterialLineEdit.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/SettingsMenu.qml b/src/settingsview/components/SettingsMenu.qml index 8045dca56..98d9e3bca 100644 --- a/src/settingsview/components/SettingsMenu.qml +++ b/src/settingsview/components/SettingsMenu.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/settingsview/components/SystemSettings.qml b/src/settingsview/components/SystemSettings.qml index 5ac2f213f..ad994fd7b 100644 --- a/src/settingsview/components/SystemSettings.qml +++ b/src/settingsview/components/SystemSettings.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import Qt.labs.platform 1.1 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt.labs.platform import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/ToggleSwitch.qml b/src/settingsview/components/ToggleSwitch.qml index 2a6e0bb0c..d839c0a20 100644 --- a/src/settingsview/components/ToggleSwitch.qml +++ b/src/settingsview/components/ToggleSwitch.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Constants 1.1 diff --git a/src/settingsview/components/TroubleshootSettings.qml b/src/settingsview/components/TroubleshootSettings.qml index a8bec519c..81a62ed2b 100644 --- a/src/settingsview/components/TroubleshootSettings.qml +++ b/src/settingsview/components/TroubleshootSettings.qml @@ -16,9 +16,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/UpdateSettings.qml b/src/settingsview/components/UpdateSettings.qml index 3793783e3..00be6e6ce 100644 --- a/src/settingsview/components/UpdateSettings.qml +++ b/src/settingsview/components/UpdateSettings.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Adapters 1.1 import net.jami.Enums 1.1 @@ -244,7 +244,7 @@ ColumnLayout { buttonTitles: [JamiStrings.optionCancel] buttonStyles: [SimpleMessageDialog.ButtonStyle.TintedBlue] buttonCallBacks: [function() {UpdateManager.cancelUpdate()}] - onVisibilityChanged: { + onVisibleChanged: { if (!visible) UpdateManager.cancelUpdate() } diff --git a/src/settingsview/components/UserIdentity.qml b/src/settingsview/components/UserIdentity.qml index 5e573bece..c3aa218c0 100644 --- a/src/settingsview/components/UserIdentity.qml +++ b/src/settingsview/components/UserIdentity.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/settingsview/components/VideoSettings.qml b/src/settingsview/components/VideoSettings.qml index 064ed0a1f..9e8bb283e 100644 --- a/src/settingsview/components/VideoSettings.qml +++ b/src/settingsview/components/VideoSettings.qml @@ -16,10 +16,10 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 -import QtGraphicalEffects 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import Qt5Compat.GraphicalEffects import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/updatemanager.cpp b/src/updatemanager.cpp index 1d5b3e923..88958d62d 100644 --- a/src/updatemanager.cpp +++ b/src/updatemanager.cpp @@ -32,6 +32,11 @@ static constexpr bool isBeta = false; #endif static constexpr int updatePeriod = 1000 * 60 * 60 * 24; // one day in millis +static constexpr char downloadUrl[] = "https://dl.jami.net/windows"; +static constexpr char versionSubUrl[] = "/version"; +static constexpr char betaVersionSubUrl[] = "/beta/version"; +static constexpr char msiSubUrl[] = "/jami.release.x64.msi"; +static constexpr char betaMsiSubUrl[] = "/beta/jami.beta.x64.msi"; UpdateManager::UpdateManager(const QString& url, ConnectivityMonitor* cm, @@ -39,7 +44,7 @@ UpdateManager::UpdateManager(const QString& url, QObject* parent) : NetWorkManager(cm, parent) , lrcInstance_(instance) - , baseUrl_(url.isEmpty() ? "https://dl.jami.net/windows" : url.toLatin1()) + , baseUrlString_(url.isEmpty() ? downloadUrl : url) , tempPath_(Utils::WinGetEnv("TEMP")) , updateTimer_(new QTimer(this)) { @@ -76,9 +81,8 @@ UpdateManager::checkForUpdates(bool quiet) connect(this, &NetWorkManager::errorOccured, this, &UpdateManager::updateCheckErrorOccurred); cleanUpdateFiles(); - QUrl versionUrl {isBeta ? QUrl::fromEncoded(baseUrl_ + "/beta/version") - : QUrl::fromEncoded(baseUrl_ + "/version")}; - + QUrl versionUrl {isBeta ? QUrl::fromUserInput(baseUrlString_ + betaVersionSubUrl) + : QUrl::fromUserInput(baseUrlString_ + versionSubUrl)}; get(versionUrl, [this, quiet](const QString& latestVersionString) { if (latestVersionString.isEmpty()) { qWarning() << "Error checking version"; @@ -122,8 +126,8 @@ UpdateManager::applyUpdates(bool beta) } }); - QUrl downloadUrl {(beta || isBeta) ? QUrl::fromEncoded(baseUrl_ + "/beta/jami.beta.x64.msi") - : QUrl::fromEncoded(baseUrl_ + "/jami.release.x64.msi")}; + QUrl downloadUrl {(beta || isBeta) ? QUrl::fromUserInput(baseUrlString_ + betaMsiSubUrl) + : QUrl::fromUserInput(baseUrlString_ + msiSubUrl)}; get( downloadUrl, diff --git a/src/updatemanager.h b/src/updatemanager.h index 23edead43..14b8e3ccd 100644 --- a/src/updatemanager.h +++ b/src/updatemanager.h @@ -53,7 +53,7 @@ private: // LRCInstance pointer LRCInstance* lrcInstance_ {nullptr}; - QByteArray baseUrl_; + QString baseUrlString_; QString tempPath_; QTimer* updateTimer_; diff --git a/src/utils.cpp b/src/utils.cpp index a903569b9..3d647c796 100644 --- a/src/utils.cpp +++ b/src/utils.cpp @@ -476,7 +476,7 @@ Utils::forceDeleteAsync(const QString& path) * Keep deleting file until the process holding it let go, * or the file itself does not exist anymore. */ - QtConcurrent::run([path] { + auto futureResult = QtConcurrent::run([path] { QFile file(path); if (!QFile::exists(path)) return; @@ -499,7 +499,6 @@ Utils::getProjectCredits() return {}; } QTextStream in(&projectCreditsFile); - in.setCodec("UTF-8"); while (!in.atEnd()) { QString currentLine = in.readLine(); if (currentLine.contains("Created by:")) { @@ -637,12 +636,14 @@ Utils::fallbackAvatar(const QString& canonicalUri, const QString& name, const QS // if a letter was passed, then we paint a letter in the circle, // otherwise we draw the default avatar icon QString trimmedName(name); - if (!trimmedName.remove(QRegExp("[\\n\\t\\r]")).isEmpty()) { + if (!trimmedName.remove(QRegularExpression("[\\n\\t\\r]")).isEmpty()) { auto unicode = trimmedName.toUcs4().at(0); if (unicode >= 0x1F000 && unicode <= 0x1FFFF) { // emoticon - auto letter = QString::fromUcs4(&unicode, 1); - QFont font(QStringLiteral("Segoe UI Emoji"), avatar.height() / 2.66667, QFont::Medium); + auto letter = QString::fromUcs4(reinterpret_cast<char32_t*>(&unicode), 1); + QFont font(QString("Segoe UI Emoji").split(QLatin1Char(',')), + avatar.height() / 2.66667, + QFont::Medium); painter.setFont(font); QRect emojiRect(avatar.rect()); emojiRect.moveTop(-6); @@ -650,13 +651,17 @@ Utils::fallbackAvatar(const QString& canonicalUri, const QString& name, const QS } else if (unicode >= 0x0000 && unicode <= 0x00FF) { // basic Latin auto letter = trimmedName.at(0).toUpper(); - QFont font("Arial", avatar.height() / 2.66667, QFont::Medium); + QFont font(QString("Arial").split(QLatin1Char(',')), + avatar.height() / 2.66667, + QFont::Medium); painter.setFont(font); painter.setPen(Qt::white); painter.drawText(avatar.rect(), QString(letter), QTextOption(Qt::AlignCenter)); } else { - auto letter = QString::fromUcs4(&unicode, 1); - QFont font("Arial", avatar.height() / 2.66667, QFont::Medium); + auto letter = QString::fromUcs4(reinterpret_cast<char32_t*>(&unicode), 1); + QFont font(QString("Arial").split(QLatin1Char(',')), + avatar.height() / 2.66667, + QFont::Medium); painter.setFont(font); painter.setPen(Qt::white); painter.drawText(avatar.rect(), QString(letter), QTextOption(Qt::AlignCenter)); diff --git a/src/utilsadapter.cpp b/src/utilsadapter.cpp index 2d470aa4b..13f552cd2 100644 --- a/src/utilsadapter.cpp +++ b/src/utilsadapter.cpp @@ -288,9 +288,11 @@ UtilsAdapter::getAbsPath(QString path) // contain 'file:///' for reasons we don't understand. // TODO: this logic can be refactored into the JamiFileDialog component. #ifdef Q_OS_WIN - return path.replace(QRegExp("^file:\\/{2,3}"), "").replace("\n", "").replace("\r", ""); + return path.replace(QRegularExpression("^file:\\/{2,3}"), "").replace("\n", "").replace("\r", ""); #else - return path.replace(QRegExp("^file:\\/{2,3}"), "/").replace("\n", "").replace("\r", ""); + return path.replace(QRegularExpression("^file:\\/{2,3}"), "/") + .replace("\n", "") + .replace("\r", ""); #endif } diff --git a/src/wizardview/WizardView.qml b/src/wizardview/WizardView.qml index eb4f48283..086de9917 100644 --- a/src/wizardview/WizardView.qml +++ b/src/wizardview/WizardView.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Controls 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -62,17 +62,13 @@ Rectangle { } } - ScrollView { + JamiFlickable { id: wizardViewScrollView property ScrollBar vScrollBar: ScrollBar.vertical anchors.fill: parent - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AsNeeded - - clip: true contentHeight: controlPanelStackView.height StackLayout { diff --git a/src/wizardview/components/AccountCreationStepIndicator.qml b/src/wizardview/components/AccountCreationStepIndicator.qml index fc897c3dd..5d0c96b3c 100644 --- a/src/wizardview/components/AccountCreationStepIndicator.qml +++ b/src/wizardview/components/AccountCreationStepIndicator.qml @@ -16,7 +16,7 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 +import QtQuick import net.jami.Constants 1.1 diff --git a/src/wizardview/components/BackupKeyPage.qml b/src/wizardview/components/BackupKeyPage.qml index 18efe4304..a73d2f6fc 100644 --- a/src/wizardview/components/BackupKeyPage.qml +++ b/src/wizardview/components/BackupKeyPage.qml @@ -17,10 +17,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 -import Qt.labs.platform 1.1 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls +import Qt.labs.platform import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/wizardview/components/ConnectToAccountManagerPage.qml b/src/wizardview/components/ConnectToAccountManagerPage.qml index 03dcc6d82..00b0a3cb1 100644 --- a/src/wizardview/components/ConnectToAccountManagerPage.qml +++ b/src/wizardview/components/ConnectToAccountManagerPage.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Constants 1.1 @@ -123,6 +123,8 @@ Rectangle { } Label { + id: credentialsLabel + Layout.alignment: Qt.AlignCenter Layout.preferredWidth: connectBtn.width @@ -131,7 +133,8 @@ Rectangle { wrapMode: Text.Wrap onTextChanged: Layout.preferredHeight = - JamiQmlUtils.getTextBoundingRect(font, text).height + JamiQmlUtils.getTextBoundingRect( + credentialsLabel.font, credentialsLabel.text).height } MaterialLineEdit { diff --git a/src/wizardview/components/CreateAccountPage.qml b/src/wizardview/components/CreateAccountPage.qml index 84765878e..f7aadc584 100644 --- a/src/wizardview/components/CreateAccountPage.qml +++ b/src/wizardview/components/CreateAccountPage.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/src/wizardview/components/CreateSIPAccountPage.qml b/src/wizardview/components/CreateSIPAccountPage.qml index 7b901326e..c9c539913 100644 --- a/src/wizardview/components/CreateSIPAccountPage.qml +++ b/src/wizardview/components/CreateSIPAccountPage.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/src/wizardview/components/ImportFromBackupPage.qml b/src/wizardview/components/ImportFromBackupPage.qml index 0deb16901..b1fd6cf0e 100644 --- a/src/wizardview/components/ImportFromBackupPage.qml +++ b/src/wizardview/components/ImportFromBackupPage.qml @@ -17,10 +17,10 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 -import Qt.labs.platform 1.1 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls +import Qt.labs.platform import net.jami.Models 1.1 import net.jami.Adapters 1.1 @@ -158,7 +158,7 @@ Rectangle { color: JamiTheme.textColor wrapMode: Text.Wrap - onTextChanged: { + onTextChanged: function (text) { var boundingRect = JamiQmlUtils.getTextBoundingRect(font, text) preferredHeight += (boundingRect.width / fileImportBtn.preferredWidth) * boundingRect.height diff --git a/src/wizardview/components/ImportFromDevicePage.qml b/src/wizardview/components/ImportFromDevicePage.qml index b7252c028..2f593f01c 100644 --- a/src/wizardview/components/ImportFromDevicePage.qml +++ b/src/wizardview/components/ImportFromDevicePage.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Models 1.1 import net.jami.Constants 1.1 @@ -122,7 +122,7 @@ Rectangle { color: JamiTheme.textColor wrapMode: Text.Wrap - onTextChanged: { + onTextChanged: function (text) { var boundingRect = JamiQmlUtils.getTextBoundingRect(font, text) preferredHeight += (boundingRect.width / connectBtn.preferredWidth) * boundingRect.height diff --git a/src/wizardview/components/ProfilePage.qml b/src/wizardview/components/ProfilePage.qml index be24841f2..631139385 100644 --- a/src/wizardview/components/ProfilePage.qml +++ b/src/wizardview/components/ProfilePage.qml @@ -17,9 +17,9 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 -import QtQuick.Controls 2.15 +import QtQuick +import QtQuick.Layouts +import QtQuick.Controls import net.jami.Adapters 1.1 import net.jami.Constants 1.1 diff --git a/src/wizardview/components/WelcomePage.qml b/src/wizardview/components/WelcomePage.qml index c8c413020..2012e254f 100644 --- a/src/wizardview/components/WelcomePage.qml +++ b/src/wizardview/components/WelcomePage.qml @@ -18,8 +18,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.15 -import QtQuick.Layouts 1.15 +import QtQuick +import QtQuick.Layouts import net.jami.Models 1.1 import net.jami.Adapters 1.1 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index df4fce0fa..8904d5ec9 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,4 @@ -find_package(Qt5 CONFIG REQUIRED QuickTest Test) +find_package(Qt${QT_VERSION_MAJOR} CONFIG REQUIRED QuickTest Test) if(MSVC) # Download and unpack googletest for windows @@ -15,7 +15,7 @@ else() endif() enable_testing(true) -set(QML_TEST_LIBS ${QML_LIBS} Qt5::QuickTest Qt5::Test) +set(QML_TEST_LIBS ${QML_LIBS} Qt::QuickTest Qt::Test) set(TESTS_INCLUDES ${CMAKE_SOURCE_DIR}/src ${CMAKE_SOURCE_DIR}/tests/qml diff --git a/tests/qml/main.cpp b/tests/qml/main.cpp index c6d486242..09f59be24 100644 --- a/tests/qml/main.cpp +++ b/tests/qml/main.cpp @@ -30,7 +30,9 @@ #include <QtQuickTest/quicktest.h> #include <QQmlEngine> #include <QQmlContext> -#include <QtWebEngine> +#include <QFontDatabase> +#include <QtWebEngineCore> +#include <QtWebEngineQuick> #ifdef Q_OS_WIN #include <windows.h> @@ -154,7 +156,7 @@ main(int argc, char** argv) argc = std::distance(argv, end); } - QtWebEngine::initialize(); + QtWebEngineQuick::initialize(); QTEST_SET_MAIN_SOURCE_PATH Setup setup(muteDring); diff --git a/tests/qml/src/tst_ChatViewFooter.qml b/tests/qml/src/tst_ChatViewFooter.qml index f4a7cc8f4..19f81df48 100644 --- a/tests/qml/src/tst_ChatViewFooter.qml +++ b/tests/qml/src/tst_ChatViewFooter.qml @@ -16,11 +16,11 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.14 -import QtQuick.Controls 2.14 -import QtQuick.Layouts 1.14 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts -import QtTest 1.2 +import QtTest import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/tests/qml/src/tst_FilesToSendContainer.qml b/tests/qml/src/tst_FilesToSendContainer.qml index 42f42d400..e545a8376 100644 --- a/tests/qml/src/tst_FilesToSendContainer.qml +++ b/tests/qml/src/tst_FilesToSendContainer.qml @@ -16,11 +16,11 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.14 -import QtQuick.Controls 2.14 -import QtQuick.Layouts 1.14 +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts -import QtTest 1.2 +import QtTest import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/tests/qml/src/tst_LocalAccount.qml b/tests/qml/src/tst_LocalAccount.qml index d9627aaef..95da78438 100644 --- a/tests/qml/src/tst_LocalAccount.qml +++ b/tests/qml/src/tst_LocalAccount.qml @@ -17,8 +17,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.14 -import QtTest 1.2 +import QtQuick +import QtTest import net.jami.Adapters 1.1 diff --git a/tests/qml/src/tst_PresenceIndicator.qml b/tests/qml/src/tst_PresenceIndicator.qml index 10124cf39..d6a1c1638 100644 --- a/tests/qml/src/tst_PresenceIndicator.qml +++ b/tests/qml/src/tst_PresenceIndicator.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.14 -import QtTest 1.2 +import QtQuick +import QtTest import net.jami.Models 1.1 import net.jami.Constants 1.1 diff --git a/tests/qml/src/tst_WizardView.qml b/tests/qml/src/tst_WizardView.qml index cac2e4b7f..47b10eb05 100644 --- a/tests/qml/src/tst_WizardView.qml +++ b/tests/qml/src/tst_WizardView.qml @@ -16,8 +16,8 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -import QtQuick 2.14 -import QtTest 1.2 +import QtQuick +import QtTest import net.jami.Adapters 1.1 import net.jami.Models 1.1 diff --git a/tests/unittests/account_unittest.cpp b/tests/unittests/account_unittest.cpp index 51b8e60ed..fc9032347 100644 --- a/tests/unittests/account_unittest.cpp +++ b/tests/unittests/account_unittest.cpp @@ -64,7 +64,7 @@ TEST_F(AccountFixture, CreateSIPAccountTest) EXPECT_EQ(accountAddedSpy.count(), 1); QList<QVariant> accountAddedArguments = accountAddedSpy.takeFirst(); - EXPECT_TRUE(accountAddedArguments.at(0).type() == QVariant::String); + EXPECT_TRUE(accountAddedArguments.at(0).typeId() == qMetaTypeId<QString>()); // Select the created account globalEnv.lrcInstance->set_currentAccountId(accountAddedArguments.at(0).toString()); diff --git a/tests/unittests/contact_unittest.cpp b/tests/unittests/contact_unittest.cpp index 6a0fbf2f6..6ad0e003b 100644 --- a/tests/unittests/contact_unittest.cpp +++ b/tests/unittests/contact_unittest.cpp @@ -52,7 +52,7 @@ TEST_F(ContactFixture, AddSIPContactTest) EXPECT_EQ(accountAddedSpy.count(), 1); QList<QVariant> accountAddedArguments = accountAddedSpy.takeFirst(); - EXPECT_TRUE(accountAddedArguments.at(0).type() == QVariant::String); + EXPECT_TRUE(accountAddedArguments.at(0).typeId() == qMetaTypeId<QString>()); // Select the created account globalEnv.lrcInstance->set_currentAccountId(accountAddedArguments.at(0).toString()); @@ -75,7 +75,7 @@ TEST_F(ContactFixture, AddSIPContactTest) EXPECT_EQ(modelUpdatedSpy.count(), 1); QList<QVariant> modelUpdatedArguments = modelUpdatedSpy.takeFirst(); - EXPECT_TRUE(modelUpdatedArguments.at(0).type() == QVariant::String); + EXPECT_TRUE(modelUpdatedArguments.at(0).typeId() == qMetaTypeId<QString>()); // Get conversation id auto convId = globalEnv.lrcInstance -- GitLab