Commit Graph

165 Commits

Author SHA1 Message Date
Sébastien Blin
dd0dc87a01 misc: remove Qt Positioning from dependencies and add Qt Widgets
GitLab: #733
Change-Id: I3daa6558479d80650bbf71577c8cbcaee3d4cd64
2022-05-05 13:38:11 -04:00
kkostiuk
3f88ceda93 build: add option to build without Qt WebEngine
This patch allows building the project without Qt WebEngine, by
disabling (for the time being) the features that depend on it:
the emoji picker, link previews, and media file previews in the
chatview.

Co-authored-by: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
Co-authored-by: Amin Bandali <amin.bandali@savoirfairelinux.com>
Change-Id: I74751b0cc6f22c61a6fd7281ca3207e0fdbb2212
2022-05-03 10:11:21 -04:00
agsantos
7fe8843317 plugins: preferences per account
+ code cleanup

GitLab: #539

Change-Id: I3f85a4760f60f47f2557016a88bc17c41062ee4e
2022-04-26 09:27:10 -04:00
agsantos
6c88b623b3 video split: move participants overlay from calloverlay to callparticipants
fix preview visibility
add yellow margin to active conference participant

GitLab: #435
Change-Id: I865140631b69e9a09f5f88ce314d4d55058cf53c
2022-04-05 16:16:07 -04:00
kkostiuk
620f6838fc rhi: use Metal when supported on macOS
Fallback to openGL if metal is not supported.

GitLab: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1413

Change-Id: Id8ac4c817d0b65243becc9963a8bba6621feaf82
2022-04-04 15:52:59 -04:00
Andreas Traczyk
8e2d600fd3 rhi: use Vulkan if it's supported
+ Use Vulkan if we can create a Vulkan instance.
+ Log the window's effective graphics backend.

GitLab: #630
Change-Id: I1e114a3a7388b84766361afda351d1ea4a4c0322
2022-03-24 10:39:34 -04:00
Amin Bandali
ee2b6d21b3 cmake: properly find and link ffmpeg's libavutil on GNU/Linux
Change-Id: I41fbc747e0868b70edb23232bb8bfb10ac0f225d
2022-03-17 13:30:02 -04:00
Andreas Traczyk
e7cc0497ce video: use QVideoSink/VideoOutput and QVideoFrame instead of QImage
Removes the rendermanager and framewrapper objects along with any
QQuickPaintedItem-based QML render widget classes. This simplifies
the video widget stack implementation.

The new mechanism uses the VideoOutput component of QtMultimedia.
By accessing the VideoOutput's QVideoSink object, we update the
mapped buffer data of a sink's QVideoFrame when new frames are
published. Updates to frames and component sink subscriptions are
managed by a new class called VideoProvider.

Gitlab: #500
Also https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/536

Change-Id: I2391a32294922ea435ab80ac1f876c004ff6c21e
2022-03-08 11:49:43 -05:00
kkostiuk
6298932c7f translations: fix on macOS
- fix translations path
- generate .lproj folders for supported languages to be recognized by
QLocale. https://bugreports.qt.io/browse/QTBUG-72491

Gitlab: #578
Change-Id: Ic4c3b74c654a1c00de71c31c9debe397990870f7
2022-02-09 14:58:16 -05:00
kkostiuk
54a2947309 build: make deploy optional on macOS
Sometimes deploy failed with qmlimportscanner error. For better
control macdeployqt will be called manually for release
builds.

Gitlab: #578
Change-Id: Ic3a781cb4680499bbb7e479e31764f3f35e29800
2022-02-03 13:25:54 -05:00
kkostiuk
298493169c updater: add sparkle
- add sparkle submodule
- add an option to enable sparkle
- modify entitlements
- cleanup Info.plist

Gitlab: #578
Change-Id: I7f562112a72a33e008ab316479fbaa68dc0e07f1
2022-02-03 13:25:29 -05:00
Andreas Traczyk
5613a81ada main: use IPC to terminate secondary client during re-install(win)
To coordinate the MSI installer with Jami's close-to-tray feature,
a custom action was used to kill QtWebEngineProcess and Jami, prior
to the file installation step. The close-to-tray feature makes it
so the only way to terminate the app is via the systray context
menu.

This patch harnesses the IPC mechanism used by the run-guard, and
adds a command-line option('--term') used to signal the secondary
process and provoke graceful termination.

The benefits are:
- the app can save data before closing
- system tray icons aren't left dangling after updates
- QtWebEngineProcess is guaranteed to be terminated during install

Gitlab: #654
Gitlab: #543
Change-Id: I79421eeab49c9ec0826010af99a364471bb81d1a
2022-02-03 12:51:55 -05:00
Andreas Traczyk
d82e382070 build: simplify CMake and python helper script
+ Check early for Qt6 and remove module list duplication.
+ Add qrencode-win32 as a submodule. Remove unused libqrencode
  submodule(GNU/Linux and macOS use package dependencies).
+ Remove unused ReleaseCompile option.

REQUIRES adjustments to:
- https://jenkins.jami.net/view/clients/job/client-qt-msvc-tests
(JenkinsFile ??)

Gitlab: #601
Change-Id: Ied65c9aaead86009d70f68705f8592950dab2dfa
2021-12-22 13:45:07 -05:00
kkostiuk
4bce873f34 build: generate .app bundle
- prepare app for distribution
- add notarization

Change-Id: I105e084292423fdd8c6b2d56f5e62a081defde99
2021-12-22 13:18:27 -05:00
kkostiuk
a03b614e64 connectivity: implement for macOS
Change-Id: I1295a55c1c633f4e193b6097c12bdd7435dffade
2021-12-22 13:02:53 -05:00
kkostiuk
5e84c99ff1 build: add macOS
- adapt build for macOS
- fix video on macOS

Change-Id: Ie325f3cd2955248c26ca858d37fcdc0d88c2e70d
2021-12-22 12:55:51 -05:00
Ming Rui Zhang
3c7d03220f accountMigration: use the existing loader mechanism to avoid crash
1. Avoid direct window declaration under ApplicationWindow
2. UI refactor

Change-Id: I7991e22d3f85b1c17d85475000ab8b8c2fbc3391
2021-12-21 14:21:36 -05:00
Ming Rui Zhang
be41f0e7a6 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
2021-12-21 14:21:36 -05:00
Amin Bandali
5a1b6d86c2 cmake: fix recently broken build
FindPython3 sets a different variable than the old FindPythonInterp,
namely it sets Python3_EXECUTABLE instead of PYTHON_EXECUTABLE.

Change-Id: I423bf0b9eb68d9fea42f8f51b72154a01449f095
2021-10-07 14:17:38 -04:00
Amin Bandali
c81ee90720 cmake: use FindPython3 on cmake >= 3.12.0 to require Python 3
Change-Id: Ic67188880997ee447bb12b53ee4c9455c1182200
2021-10-07 12:00:38 -04:00
Amin Bandali
930b882246 Revert "build: Make Python a required dependency."
This reverts commit a2e8238be5.

Reason for revert: breaks build on systems that symlink
/usr/bin/python to Python 2 rather than Python 3 -- for example,
Ubuntu 18.04.

Change-Id: Ia58fb4d9b337e65d0a7118ecbaa7e22e4b4619c2
2021-10-07 11:52:59 -04:00
Trevor Tabah
2e67dc1bd8 chatview: replace web chat view with qml listview
Introduces a primitive QML ListView based chat view lacking
features present in the previous web chat view, that will be added
in subsequent commits(styling, preview/media/link/file-transfer
message type support, etc.).

Gitlab: #467
Change-Id: Iedc40f6172a6cdacc48cda6f4187053fbf226713
2021-10-06 15:51:20 -04:00
Maxim Cournoyer
a2e8238be5 build: Make Python a required dependency.
Python 3 is required to generate the resources.qrc file.

Change-Id: Ifb82097183715e6a1a1008a1bb58272afd8019ec
2021-10-01 09:30:57 -04:00
Ming Rui Zhang
e0737f4b70 settings: refactor for SettingsView - stage two
1. Remove redundant functions in AvAdapter
2. Add CurrentDevice for video device treatment
   Audio device treatment should be improved in the next
   stage
3. Add QSortFilterProxyModel to all video list models and
   manage them together to avoid redundant function calls
4. Video device call action should be responsive to device
   change as well

Gitlab: #508

Change-Id: I3df949a08bc19042b73f033139cd6ab06925c0b6
2021-09-14 16:52:45 -04:00
Ming Rui Zhang
a196513d2e settings: refactor for SettingsView - stage one
1. Add account config QML properties and use them
   in settings directly to avoid manual update
2. Rough clean up for video/audio settings
3. Remove settingsAdapter entirely and split the
   responsibility

Change-Id: Icf81b91d5a3a0dd9f2a52824159cd222367b801f
2021-09-14 16:52:30 -04:00
FuchtelJockel
8871db4986 build: fix includes, add glib and gio to CMakeLists.txt
First I added glib to cmake this fixed the glib.h not found error.
Then I got build errors from the missing GIO include as seen in the linked issue.
After adding the #include <gio/gio.h> the linker failed to find the gio library.
After adding the gio check to cmake all build issues were solved.

GitLab: #504
Change-Id: Iac537e10261f2e9dfa61029c4591e000851a378c
2021-08-30 11:07:08 -04:00
Andreas Traczyk
f2ba34ca51 accounts: introduce currentaccount
A structure to represent the currently selected account and it's
properties as observables.

Change-Id: I6b4ae92e15b492a4c4d61ec5da019e2c7e937401
2021-08-17 10:14:57 -04:00
Andreas Traczyk
6b3bf5149f misc: add a qml adapter class to represent the current conversation
Provides observable property representations of a conversation info
structure. Is updated when the selected conversation Id changes.

This object is only exposed in this commit, and will be used in
subsequent commits to introduce a more declarative approach in the
UI code.

Change-Id: I25be0f6b82cf9341b67fbf04fdeb04bffbf8ab24
2021-08-06 11:56:01 -04:00
Ming Rui Zhang
234ee7a2e9 wizardview: refactor account creation ui and enhance flow
1. Use MaterialToolTip in MaterialButton
2. Add BubbleLabel and BackButton
3. Add WizardViewStepModel
4. Focus re-visit

Gitlab: #470

Change-Id: I818da76c4b97cb08d2b6df6b2c8e2752d7a522f2
2021-07-29 10:48:39 -04:00
Andreas Traczyk
279f92d2af misc: generate image resource files during cmake configure
resources.qrc & src/constant/JamiResources.qml are unversioned.

Glob checks for changes to the resource dir and forces a
reconfigure.

Change-Id: Ic88e4e861b8367ba44bc0eea6c323e08310afb8b
Gitlab: #477
2021-07-27 13:26:53 -04:00
Andreas Traczyk
1a61af02f3 resources: remove unused images and icons
gen-resources.py should be used to generate resources.qrc and
JamiResources.qml. Steps to add an image resource:
- add the resource file to the appropriate path under resources/
- run gen-resources.py
- use the newly available resource

Note: only icons and images will be represented by Qml properties.

The resource file generation may be made to run during CMake
configuration in a subsequent commit.

Some unused components were also removed during the refactor.

Gitlab: #477
Change-Id: I8e7f13d465031666be2bbadd5f29f9afc94d210d
2021-07-20 21:57:27 -04:00
Andreas Traczyk
4bda330637 swarm: simplify and update avatar update mechanism
Implements a leaner avatar caching system. The avatar component
listens for uid filtering its id, which may be:
- conversation id
- account id
- contact uri

In response to the uid change, a the image source is updated with
a new image url invoking a fresh QQuickImageProvider query. With
this design, only the avatarregistry's uid mapping needs to be
updated when profiles are changed, and no longer should specific
avatar components receive manual source updates.

Gitlab: #466
Change-Id: Ie5313f5c187a0977ca51b890dd92187480a42537
2021-07-12 17:29:48 -04:00
Ming Rui Zhang
14620f8bc8 messagewebview: chatview message bar qml replacement - ui
1. New emoji picker by customizing emoji.js
2. New message bar ui (textarea, buttons, tooltips)
3. New pending files transfer container
4. Use MaterialToolTip for all PushButton

Change-Id: I05d0531c65c019ced42b04668a780919c8a4fac3
2021-07-09 10:06:42 -04:00
Maxim Cournoyer
a7e7105cda Rename dring to jamid, ring to jami.
Automated via the following command:

  $ git grep -l dring | grep -v '.ts$' | xargs sed -i
  's/dring/jamid/g'
  $ git ls-files | xargs sed -i 's,bin/jamid.lib,bin/jami.lib,g'
  $ git ls-files | xargs sed -i 's,src/jamid,src/jami,g'
  $ git ls-files | xargs sed -i 's,-mutejamid,-mutejami,g'
  $ git checkout docker

Change-Id: I030209b60817372f866055daadb4d0a1c1e2e9df
2021-06-29 16:12:18 -04:00
Andreas Traczyk
25f85712d7 calladapter: add calloverlay model
Introduce a model to manage the overlay logic.

It is not used in this commit.

Gitlab: #411
Change-Id: I6a666fe00e7f66c7e217ae1f77360327e83fdcd6
2021-05-25 16:39:07 -04:00
Ming Rui Zhang
8e1497bd1a build: use the correct path for files of translations
Change-Id: I7fff92d4df8e327a2f0065b4a125ebdae9fd0219
2021-05-10 16:32:41 -04:00
Andreas Traczyk
e64a9e7ee7 sidepanel: improve smartlist interface with underlying models
Minor cosmetic changes to the account combo box, search bar, filter
tabs, and smartlist.

Change-Id: Ie8173504859b325374e42f0dbb4e0ae75f3ed740
Gitlab: #373
Gitlab: #374
Gitlab: #388
2021-05-07 15:41:28 -04:00
Ming Rui Zhang
a7eafe4793 test: add building blocks for qml and GTest on windows
- Also updated the INSTALL.md

Gitlab: #385

Change-Id: Ib5bf9f0348dbc6da57e586475d698fe8dec0351b
2021-05-04 11:19:59 -04:00
Andreas Traczyk
b391d947c3 misc: use QAbstractListModel in list model base class and rename
Inlcuding QAbstractListModel inlcudes qabstractitemmodel.h, but
this is not certain.

Change-Id: I5affb3462a09f4f6ea93be2f979144608d015969
2021-04-27 14:05:24 -04:00
Ming Rui Zhang
8152db585c cmake: prevent the console from showing up by default
Change-Id: I87f352bf69dd5d60e9df821d3e1f9e7b349c29e2
2021-04-19 10:18:07 -04:00
Mingrui Zhang
19e8c3da66 cmake: revert the change for linux lrc translations
Change-Id: Ia5b38d008dc8914e437ce5c3140679872d025e59
2021-04-16 15:51:21 -04:00
Ming Rui Zhang
855be429fe cmake: make cmake minimum version to be 3.15 for MSVC
Change-Id: Ie87b2d7a5fdcb7b600bba3e99471b236804bfd6e
2021-04-16 09:11:33 -04:00
Ming Rui Zhang
c19fb112bb build: use cmake entirely for windows
GitLab: #352

Change-Id: Ib373811c9d47164954a19633fd0da389eff5aac6
2021-04-14 17:09:17 -04:00
Andreas Traczyk
ac87d33d9f misc: put lrcinstance implementation into cpp file
Change-Id: I46c4e17124b2c0cbf6e92c696d3d47e1b0ad2d0d
2021-04-09 16:00:33 -04:00
Andreas Traczyk
7f28ac65df notifications: add avatars to gnu/linux notifications
Gitlab: #320
Change-Id: Ib2121257af2704dd2a246b499961657b66ae944d
2021-04-07 16:06:59 -04:00
Andreas Traczyk
2cc82053c9 notifications: implement libnotify on gnu/linux
Gitlab: #320
Change-Id: I39ffd7e0ba8c5160e81a6b64260f3d92ab8c619a
2021-04-07 16:06:05 -04:00
Mingrui Zhang
2e60568307 project: don't use Qt keywords for signal/slot/emit
Gitlab: #320
Change-Id: Ia2a16a05be3fd6452a39df999660a5c8440eea13
2021-04-02 15:37:43 -04:00
Andreas Traczyk
4ce208ec33 injection: remove the remaining c++ singleton classes
- refactor qml object registration
- inject AppSettingsManager and SystemTray

Gitlab: #320
Change-Id: Ic8232a290003245d09ad9452c9f5518fd260af78
2021-04-02 15:37:33 -04:00
Andreas Traczyk
255252e3aa cmake: use a default ring-project lrc path if not defined
This provides out-of-the-box cmake configuration for QtCreator
without having to manually specify the lrc path.

Change-Id: I3a8abbc2d0dd8062cecece166afbf09b91b52f59
2021-04-02 15:37:33 -04:00
Ming Rui Zhang
7951764b2e misc: remove LRC singleton
GitLab: #337

Change-Id: Ifb671d38d364714818650a8154c43a5787460039
2021-03-22 15:47:14 -05:00