1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-07-18 22:45:25 +02:00
Commit graph

87 commits

Author SHA1 Message Date
Maxim Cournoyer
041b733cf4 cmake: Simplify lookup logic for libjami headers.
* extras/build/cmake/modules/FindLibJami.cmake: Rename
LIBJAMI_INCLUDE_DIRS to LIBJAMI_INCLUDE_DIR.  Use find_path to search
for jami.h directory.
* CMakeLists.txt: Adjust accordingly.
* src/libclient/CMakeLists.txt: Likewise.
* src/libclient/qtwrapper/CMakeLists.txt: Likewise.

Change-Id: I494358f9bfafb41f000daeec4196747b2c184401
2022-12-28 10:14:18 -05:00
Aline Gondim Santos
ce6c7dc02b callview: implement an observable object to detail the current call
Change-Id: Ic7025f66e472457e32149911053c8ff32e06bf21
2022-12-27 11:46:39 -05:00
Aline Gondim Santos
4794cc87d3 build: fix DAEMON_DIR definition
Change-Id: I55d1e26b6710f8b53bd28fce82427c86bbed7eda
2022-12-15 15:51:25 -03:00
Sébastien Blin
eae071a15e cmake: use daemon_dir when possible and fix avutil check in libclient
Change-Id: I91a4eff61a5a8a817ec0aa5452c239431df2476b
2022-12-13 08:48:51 -05:00
Sébastien Blin
6ac70c64c7 cmake: fix avutil detection with WITH_SUBMODULE
as the daemon is in client-qt

Change-Id: I9eaf1864450de635767363a0ce17726fd459307d
2022-12-07 16:22:02 -05:00
Nicolas Vengeon
933cce8cef feature: improve location sharing
- share position to different conversations at the
  same time
- Be able to stop sharing positions with the current
  conversation only
- UI improvements to know who is sharing and who
  you are sharing to
- Watchdog

Change-Id: I1402f0d1b1fc117087988b1cc45f1fd05d2a83ac
GitLab: #888
2022-11-23 16:31:22 -05:00
Nicolas Vengeon
e5b54ad787 feature: show and share user location
copyright OpenLayers v7.1.0: ol.css
copyright OpenLayers v7.1.0: ol.js

GitLab: #867

Change-Id: I4e01f6d9727d56541d1b44023f26959ebe4fbe26
Signed-off-by: Nicolas Vengeon <nicolas.vengeon@savoirfairelinux.com>
2022-11-23 14:05:36 -05:00
Andreas Traczyk
9e4f5a19c6 misc: regenerate qml.qrc at configure time
Our qml.qrc is:
- commonly in conflict and prone to erroneous conflict resolution
- platform dependant (generation is used anyway for removing
  webengine dependant resources)
- a poorly maintained hodge-podge with resources in subdirectories
  that aren't grouped
- requires alteration when moving resources (if not done correctly,
  without tests, results in uncaught runtime failures)

This patch uses a python script at configure time to generate the
qml.qrc resource file, and removes it from versioning.

GitLab: #749
Change-Id: Ia2b81bb5b2c29d0bf6f5a5302e76795864e93e40
2022-11-15 09:51:19 -05:00
Andreas Traczyk
a230365a92 misc: clean image resource generation python script
Conform to PEP8 and Qt6/QML (remove QtQuick module version).

GitLab: #749
Change-Id: Ibccc8023e6f622f039bcdb470f3cade34cc2be9e
2022-11-15 09:51:19 -05:00
Maxim Cournoyer
e2ce5c4d98 Move xcb include/link directives from jami to libclient.
Relates to <https://git.jami.net/savoirfairelinux/jami-client-qt/-/issues/882>.

This problem was discovered when attempting to build the test suite:

   ld: ../src/libclient/liblibjamiclient.a(avmodel.cpp.o): undefined
   reference to symbol 'xcb_get_setup'

* CMakeLists.txt: [!(APPLE or MSVC] Move xcb includes and link directives to...
* src/libclient/CMakeLists.txt [!(APPLE or MSVC]: ... here.

Change-Id: If9b6653e157081300caad8f13cafe4979a49630b
2022-11-14 09:28:04 -05:00
Amin Bandali
ca7b1e70e4 build: Add daemon submodule and optionally use it.
This allows invoking cmake with -DWITH_DAEMON_SUBMODULE=true to use
the daemon header files and library from the submodule.  Note that it
is currently still necessary to build the daemon separately first,
either manually or using the build.py convenience script.

The goal is to eventually add support for building the daemon with
CMake in the future, so that we could add_subdirectory(${DAEMON_DIR})
in client-qt's CMakeLists.txt and have CMake take care of everything.

Change-Id: I3a16c44837e6c79616b3101fea8a6ff3defa3ab5
2022-10-17 16:20:47 -04:00
Maxim Cournoyer
bf4a8c314f misc: Rename jami-qt to jami and remove launcher script.
Now that there is no longer a second official client (jami-gnome), we
can remove this uninteresting implementation detail from the name.

Mostly automated via:

  $ git grep jami-qt -l | xargs sed 's/jami-qt/jami/g' -i

* src/app/jami: Delete launcher script.
* CMakeLists.txt: Un-register it from installation.

Change-Id: I5167c29089feb4e64c12d7d01c1ce281e16c0613
2022-10-07 17:30:06 -04:00
Amin Bandali
2fc8661d08 misc: Clean up repository root.
This is the first in a series for cleaning up the top directory (root)
of the repository and move various files/folders into nicely organized
directory structures.

GitLab: #749
Change-Id: If59b74fff981df242bc26e62a070bdb81d7baded
2022-10-07 17:30:06 -04:00
Amin Bandali
7fb102ed45 build: Tweak CMakeLists.txt pkg-config usage for finding avutil.
* CMakeLists.txt: Prepend CMAKE_PREFIX_PATH with the location of
libavutil.pc from daemon's contrib before trying to find libavutil
using pkg-config, and remove it afterwards.  Further, there is no need
to link the application executable against libavutil; the application
only needs its headers (libclient, however, does already link against
libavutil).

Change-Id: Iffa5af43bfd1bb62bc24cc94dce292f87e9ecb2a
2022-10-04 10:08:00 -04:00
Andreas Traczyk
0da3d936f2 cmake: build SortFilterProxyModel(QML module) as part of the client
Change-Id: I977986b69d5906a4d9feeb427c6d2867a4930270
2022-09-26 12:28:32 -04:00
kkostiuk
cb1f828f82 macOS: prepare for the App Store
- add necessary entitlements
- add a script for deployment

Change-Id: Ie9e33c78ab56ed44b9e553fb2dbeb14f7293731a
2022-08-03 15:42:56 -04:00
Vladimir Stoiakin
799056c6da build: add dependency on libavutil for GNU/Linux
Change-Id: I3d43fd9f5782f5ebf7db9b2cef6b5d294e7aa36c
2022-08-03 10:20:01 -04:00
Sébastien Blin
2077041c04 welcomeview: implement new design
GitLab: #767
Change-Id: Ia2ae77e8e9d3d5abe560ced0a84d828057824845
2022-07-29 21:26:48 -04:00
Kateryna Kostiuk
a088a3c231 build: link libjamiclient on macOS
Change-Id: Id0587b2fc7d35b627b0efcba184a15fa49972ac3
2022-07-29 16:06:17 -04:00
Andreas Traczyk
63646e6b65 build: fix native Windows build
Change-Id: Icb9c82aea6eeb17f02353da58bb77fede79b3cb0
2022-06-22 22:33:26 -04:00
Amin Bandali
e0b3b4adec misc: vendor libjamiclient into 'src/libclient/'
This is libjamiclient from the jami-libclient.git repository as of
767c45b8b09806ac05cbada720864df93588c047, with the following changes:

* src/libclient/newaccountmodel.cpp:
(NewAccountModelPimpl::removeFromAccounts): The lock wait inside
'#ifdef CHK_FREEABLE_BEFORE_ERASE_ACCOUNT' was not updated when the
type of 'accounts' was changed over the years from this:
std::map<std::string, account::Info>
to this:
std::map<QString, std::pair<account::Info, std::shared_ptr<Database>>>
Basically we need to get the 'first' of the pair for 'account::Info'.
So we now do that.

* src/libclient/avmodel.cpp:
* src/libclient/callbackshandler.cpp:
* src/libclient/contactmodel.cpp:
* src/libclient/conversationmodel.cpp:
* src/libclient/database.cpp:
* src/libclient/namedirectory.cpp:
* src/libclient/newaccountmodel.cpp:
* src/libclient/newcallmodel.cpp:
* src/libclient/newdevicemodel.cpp:
* src/libclient/peerdiscoverymodel.cpp:
* src/libclient/pluginmodel.cpp:
* src/libclient/smartinfohub.cpp:
* src/libclient/vcard.h:
* src/libclient/authority/storagehelper.cpp:  Replace Qt's 'foreach'
with 'Q_FOREACH' and its 'emit' with 'Q_EMIT' because in the client-qt
code base we have '-DQT_NO_KEYWORDS' to avoid conflicts with other
libraries we use.

* cmake/FindLibJami.cmake: Import cmake/FindRing.cmake from the
jami-libclient.git repository.  Then, rename RING_BUILD_DIR to
LIBJAMI_BUILD_DIR (though the old name is still supported for now).
Also update other references of Ring to Jami.  Further, add additional
calls to 'find_library' to make sure specified local paths for libjami
are checked before system-wide ones (in case of older/obsolete libjami
being available system-wide, which might happen on GNU/Linux systems).

* translations/lrc_*.ts: Import translation files from the libclient
repository.  The message location paths were corrected by running
"sed -i 's|../src|&/libclient|g' lrc_*.ts" in 'translations/'.

.tx/config: Add section for the newly-imported libclient translations.

* CMakeLists.txt: Reformat, plus various fixes and cleanups, such as
changing indentation to 2 spaces and wrapping lines at 70 characters,
renaming the parent directory of translations from 'ring' to 'jami',
and using all lowercase function calls.  Also add copyright headers.

* src/app/appsettingsmanager.cpp:
(AppSettingsManager::loadTranslations):
* src/app/utilsadapter.cpp (UtilsAdapter::supportedLang): Update to
adapt to the renaming of the parent directory of translations from
'ring' to 'jami'.

GitLab: #748
Change-Id: I86e3b0fb30e554755023e7b858b6a0d132cd59ab
2022-06-08 16:28:57 -04:00
Amin Bandali
c7fdf3ff30 misc: move application sources from 'src/' to 'src/app/'
In preparation for vendoring libjamiclient into 'src/libclient/'.

GitLab: #734
Change-Id: Ibd956abc8fe9bd454ac0e9a5a28b77a5a74174e7
2022-05-19 15:47:30 -04:00
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