1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-07-04 23:55:27 +02:00
Commit graph

64 commits

Author SHA1 Message Date
Andreas Traczyk
302f700071 misc: remove excess debug log
Change-Id: Ie34eae62d9726378ab1bf5d0233410c561696fc5
2022-03-29 15:22:13 -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
Andreas Traczyk
a98faf95ec app: detect and abort/core dump on Qt runtime version mismatch
Catch Qt binary incompatibility.

Change-Id: I30e1de97bd658fc570ac89115d1aa8a37f53952a
2022-03-23 18:06:14 -04:00
Andreas Traczyk
bef42fb1ce mainapp: remove log to vs console
This should be added directly to the logger in jamid.

Change-Id: I5cc2d1b8e2767325d8228964bcc27c266d12ad43
2022-03-17 14:23:42 -04:00
Andreas Traczyk
8a486a6484 mainapp: rework logging on Windows
+ Removes the console log management code which is present in jamid
  using https://review.jami.net/c/jami-daemon/+/21251.
+ Adds back file logging which has been partially broken since
  the log monitoring feature was added.

Change-Id: I07681b1c8d48702678596fbc302c21f87284b6e4
2022-03-17 14:23:42 -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
Sébastien Blin
dfae73d0d6 misc: remove code duplication and use native theme on KDE
GitLab: #603
Change-Id: I271f6d4b9b8089dc88479f1d7d98514acb3d52be
2022-02-23 13:00:49 -05:00
kkostiuk
2d4ac408d7 UI: fix app opening from macOS dock
A single click on the app icon on macOS dock should
open the app.

Change-Id: Ied215ee9288d6d46fd8852a7daa996db7ac0468f
2022-02-11 16:15:21 -05:00
Andreas Traczyk
3db33c4f89 mainapplication: add URI start option
+ Refactors some window management logic in LayoutManagar.qml.
+ Refactors app start to support both a minimized start and a start
  URI. The start URI should force visibility.
+ StartMinimized now starts the application in a closed-to-tray
  state, instead of a minimized state.
+ The close-to-tray feature now saves the previous windowed state.
+ InstanceManager handles URI transfer to secondary instances.

This commit does not implement URI handling. The original
implementation supported only calls via a user infohash as the URI
parameter. A new and flexible protocol should be defined to support
multiple Jami features.

Gitlab: #655
Change-Id: I2c47028930e4e9d7ccca94d9362545df14b98160
2022-02-03 13:12:16 -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
cab5a2223b mainapplication: fix retranslate connection timing
Connect after initializing the settings manager pointer and
remove a slot by relaying the retranslate signal.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1342
Change-Id: I446cfb15500929850a434280dada6785107f9e78
2022-02-01 17:31:17 -05:00
Sébastien Blin
68a5837a65 settings: add a settings to change the language of the app
Move installTranslator into the settings manager and add a settings
in the SystemSettings to be able to dynamically change the language
of jami-qt.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1342

Change-Id: I4f720fa50d5e313356dbdf1b8acb4e98d74401e4
2022-02-01 09:22:24 -05:00
Andreas Traczyk
0477376a0c mainapplication: only initialize members for primary instances
The running instance may be ephemeral and end up discarded after being
checked by InstanceManager. In this case, we shouldn't initialize large
components.

Gitlab: #654
Change-Id: I30c7dcdba6a56ab3a1a84a9efd3424e266b6f6ce
2022-01-28 18:58:03 -05:00
Andreas Traczyk
045b93c1e4 chatview: remove an unused and inexistant file reference
Change-Id: I00e3d5a29854ef52b6d5e7275ada40e99e496a1e
2022-01-25 13:37:23 -05:00
Andreas Traczyk
70a6972b7e mainwindow: save/restore window geometry
Save virtual desktop geometry and window visibility state settings
and set them for the application window when loading.

Gitlab: #604
Change-Id: I053716d9c7b5d23e1bd7f33a1c41aedefb6cf9c8
2022-01-21 14:23:25 -05:00
Amin Bandali
db0fd56763 misc: update (and fix) copyright years to 2022
Change-Id: I8eb66c1c3cddb3bf73b6784a9876dd9dc9c12481
2022-01-06 11:24:13 -05:00
Sébastien Blin
cab0ccc792 mainapplication: fix --minimized option
remove useless isFullscreen (visibility already stores this and
it's not possible to go from fullscreen to minimized anyway).
Also --minimized was ignored

GitLab: #413
Change-Id: I610f17ce7ae5b2852aae5b40dc504174fa657c2d
2022-01-04 09:50:47 -05:00
Sébastien Blin
0adc815a38 profiles: do not cache avatars in LRC
This reduces memory usage.

Change-Id: Iddb54a844ffacfc96b7758b2a9317e68e04750c4
2021-12-30 15:50:43 -05:00
Sébastien Blin
83f6857332 mainapplication: fix destruction ordering
Every models (like UtilsAdapter for example) owns a pointer of
LRCInstance. So, when the MainApplication is destroyed, the QmlEngine
and all structures owning a pointer of LRCInstance MUST be destroyed
before LRCInstance to avoid any segfault

GitLab: #631
Change-Id: Id30aaca325fe7172188bba468acd73525e62a34a
2021-12-23 15:18:09 -05:00
Sébastien Blin
784e08a169 mainapplication: do not show log from daemon by default
logs from the daemon should not be shown by default, but only in
debug mode, so makes --quiet usable, but only with --debug

Change-Id: Ia7da32e31e034650d184dfae06c9157e13102906
2021-12-22 14:06:14 -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
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
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
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
Andreas Traczyk
0521bd21f7 qmlengine: homogenize qml module registration
Make sure all the calls to register are using the same versions
from qmlregister.h.

Change-Id: I1b6d2b168778fa91d16342765c93ad732de596e0
2021-08-23 14:28:23 -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
Ming Rui Zhang
14661adac6 tests: add FilesToSendContainer and MessageWebViewFooter tests
1. Adjust QML main setup
2. Add resources.qrc for test and Qt Creator display
3. Change LRCInstance and ScreenInfo to QML Singletons
4. Move QML type registration entirely to qmlregister

Change-Id: I5c8a854173a2ec1f85ffa971707af262fa344505
2021-07-20 09:45:42 -04:00
Sébastien Blin
d0b5667449 systray: change systray icon when we have notifications
Also use jami.svg for regular systray icon.

Change-Id: I6325c756d10216a017eb89042ab2f6ca0e988703
2021-07-14 17:13:45 -04:00
Andreas Traczyk
26c922da4d wizard: fix profile page avatar previews
Replaces live updates to the avatar preview when editing the alias
field on the profile page during account creation.

Gitlab: #466
Change-Id: I93dd4611949ab0e76f9cea78f9d7aaa1949daa13
2021-07-14 16:50:49 -04:00
Sébastien Blin
417a0fe042 generalsettings: add file transfer settings
+ Auto accept files from trusted sources (default: true)
+ Auto accept files from untrusted sources (default: false)
+ Size limit (default: 20Mb)

Change-Id: I0e1068e3996786b23ba9a7797d02b7f8bb0f89d1
GitLab: #160
2021-07-14 10:20:07 -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
e165855e95 misc: use single process mode for qt webEngine
1. Add --single-process
2. Rename the httpUserAgent to jami-qt

Change-Id: I6de29ee89176b453f12ce225acf926dd1b819c18
2021-07-06 14:43:14 -04:00
Andreas Traczyk
41138a9682 debug: add command-line option to mute daemon logging
Note: other parts of the client, lrc, daemon, and scripts, use
muteDring still and should be changed to something more generic.

Change-Id: If9253d6bd8d53f379bc9d5209b49b0c3af92edc2
2021-06-22 10:55:54 -04:00
Andreas Traczyk
6ddbce1506 debug: fix empty file logs
Change-Id: I10099c3db5f48fb147f05e434b3131cdb4acf8f5
2021-06-22 10:55:54 -04:00
Sébastien Blin
3d71bfa8ae swarm: first implementation to follow api changes
- use QString for interactionId

- swarm conversations: use loadConversationMessages and
subscribe to newMessagesAvailable signal

- avoid displaying "merge" and empty "data transfer" messages

- link composing status

Change-Id: Ic524bb786b2ff0471f03b1bb02d41d6da38e716a
2021-06-11 17:47:27 -04:00
Amin Bandali
7bb0e06dbc mainapplication: add "Show Jami" tray icon context menu item
On some desktop environments on GNU/Linux, left-clicking on the tray
icon does not execute the restore action.  In some environments, such
as Ubuntu and some other GNOME-based environments, double-clicking the
icon does that, but that's counter-intuitive and not obvious at all to
the user.  So, we add a 'Show Jami' menu item for the system tray
context menu, similar to how jami-gnome did, so the user can clearly
see it as a possible action.

Change-Id: I1e12ba02190c12cf40d293d61e1f023380fbfcf9
2021-06-03 13:08:02 -04:00
Amin Bandali
c8099b73da mainapplication: on tray icon click close window if open and focused
Only do so on non-Windows platforms, though; apparently this is not a
common pattern for desktop applications on Windows.

Change-Id: Ie1f8f4dd087d4e2798be4d102eb1d421fa9490f7
2021-06-01 14:11:44 -04:00
Amin Bandali
e86538fac1 mainview: add standard quit shortcut
Also rename 'Exit' to 'Quit' in the tray icon context menu for
non-Windows platforms for more standard/consistent terminology.

Change-Id: Id39bd308f17e56466ffb6b9c4929789646334b5e
2021-05-28 16:13:55 -04:00
Ming Rui Zhang
76eb198b9c mainapplication: use QScopedPointer and control the order of destruction
Change-Id: I48b9019acdb505cdde3da183a1022dea8eacebc0
2021-05-14 15:04:12 -04:00
Andreas Traczyk
ac87d33d9f misc: put lrcinstance implementation into cpp file
Change-Id: I46c4e17124b2c0cbf6e92c696d3d47e1b0ad2d0d
2021-04-09 16:00:33 -04:00
Sébastien Blin
6c9b969351 project: misc fixups
Change-Id: I97f256873bbffd79eb08707f0a809172bca06e6b
2021-04-02 15:37:55 -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
Ming Rui Zhang
7951764b2e misc: remove LRC singleton
GitLab: #337

Change-Id: Ifb671d38d364714818650a8154c43a5787460039
2021-03-22 15:47:14 -05:00
Ming Rui Zhang
637b7d6480 misc: better dpi scaling performance
Gitlab: #302

On X11 based,
https://bugreports.qt.io/browse/QTBUG-84082

Change-Id: Id775a6a31fc9f6f9493556fca458555c5962727e
2021-03-02 14:31:39 -05:00
ababi
4d6f5b3410 translations: revise access to translations for GNU/Linux
- correct translations (.qm) install path for cmake
- use JAMI_INSTALL_PREFIX to fetch translations
- create "share/ring/translations" inside build dir to store .qm files

Change-Id: I127cbad1d4b00a628d79e9654ed471f456a550e8
2021-02-19 17:28:48 -05:00
ababi
4a06565e57 misc: initialize LRCInstance before rising connection error
- in order to start the daemon, LRCInstance has to be initializated before rising the error and displaying the popup.

Gitlab: #245

Change-Id: I4a6cd4f38f5c93f65bc157e7d2ffff7f16e6aff8
2021-01-27 12:58:55 -05:00
Ming Rui Zhang
dc634feded misc: use compiled rcc file to collect lrc web resources
Instead of using absolute path, use a rcc file compiled
from lrc web resources qrc

Gitlab: #233

Change-Id: Ife3c3b81654984247aed0664031ad45ffb8413db
2020-12-30 15:10:20 -05:00
Mingrui Zhang
d3ebc43657 dbus: handle dbus error with UI interaction
Gitlab: #160
Change-Id: Ica0aab9ba7f043c4ab56314bbd5312f75239ad51
2020-12-14 17:18:46 -05:00
ababi
a4787e2a45 nm: add libnm support for connectivity change detection (linux)
Change-Id: I014999c80cfbc725ff36e517696a3ffb237a6213
2020-12-14 17:17:55 -05:00