Commit Graph

165 Commits

Author SHA1 Message Date
Andreas Traczyk
e46a123609 build: windows: remove qrencode-win32 patching
Changes to a more maintained repo source.

Change-Id: Ie9903761ad8cb740b79552f59dc851976c1ef9da
2023-11-14 14:44:30 -05:00
Andreas Traczyk
3e17a9b247 cmake: windows: add the jami-core to the project
Change-Id: Ieeeb8bbf3d032fb9595b6f76a49ab8027dad7d99
2023-11-14 14:44:30 -05:00
Sébastien Blin
a0f0dd132a cmake: update options (submodule on by default, option for libwrap)
Change-Id: I1b1d30da4c89af12f811075185095830a3a39157
2023-11-07 13:58:36 -05:00
Andreas Traczyk
be85034d78 build: support enabling ASAN for daemon + contrib + client
Change-Id: Ie014285e46feb82577125b68677b19d94005789f
2023-11-07 08:40:09 -05:00
Andreas Traczyk
92be4fa7dc build: windows: optionally use pywinmake
Change-Id: Ib0b41428f00945c9bcab2f7d68355c2128c0e68f
2023-11-02 15:06:32 -04:00
Kateryna Kostiuk
a433974340 app Store: disable donations
Change-Id: I359cf1cd538a87f12f0e931b8b2948cf1c721cce
2023-10-30 09:45:44 -04:00
cberthet
7a759dab7a Push-To-Talk : add global and local ptt
It works with a Pimpl which the right pttlistener.cpp depending
on the platform you are on (macOs, windows or X11). It is a
global PTT which listen to key events during calls. If the
global PTT is not supported, a local PTT is set.

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

Change-Id: I8399800966c737bb8e8a656ecbb6af7ac7cdde8c
2023-10-30 09:31:26 -04:00
lcoursodon
6bff3c54f1 TroubleshootingSetting: Connection monitoring
Change-Id: Idf922df701cdf2efc2d167362dca021897d8e2e5
2023-10-23 13:39:13 -04:00
Andreas Traczyk
1bbd8e31af cmake: fix check for minimum major/minor version
The current check only fails if the major and minor version are less than the minimum.
This simplifies the check even removing the major version check which is a find requirement already.

Gitlab: #1330
Change-Id: Id066953c50ef4a925713dbd9203ebe7a3a36f4a1
2023-08-30 14:04:15 -04:00
Xavier Jouslin de Noray
7581f9397a updateManager: create a plugin store and a plugin manager
Change-Id: I57ebec72c1cb6e2f245af011def82f880bc9573f
2023-08-01 13:42:49 -04:00
Xavier Jouslin de Noray
6341f32618 updatemanager: refactor windows update and macos update manager
To be able to use an update manager for the plugins store, a refactor of windows update manager is done. The windows and macos update manager is used for updating jami. The plugins store update manager is to update plugins to the newest version.

Gitlab: #1229
Change-Id: I0541b6191401f2aa2c6d6034722796455e9c18d2
2023-07-31 15:46:16 -04:00
Matheo Joseph
ec0feef74d CachedImage: add icon downloader for pluginstore and welcome page
Gitlab: #1228
Gitlab: #1166

Change-Id: I0117cecdb8a77ded8f3da3c2f25028012002a285
2023-07-14 07:57:45 -04:00
Andreas Traczyk
dc53aa887d misc: change library name "jami" -> "libjami"
Bumps the daemon and adjusts the build to use the appropriate library name.

Change-Id: I4208f161c3522bb58dfc1dc55cb10910ade24eed
2023-06-01 12:32:07 -04:00
Léo Banno-Cloutier
63687acc71 install: bumped Qt 6.2 to 6.4
Change-Id: I39262a1945ab48f43efbb958ebe323f52f5d1a8d
2023-05-30 14:14:14 -04:00
Andreas Traczyk
8db188c513 chat: preprocess text msgs w/md4c+tidy-html5
Introduces MessageParser to encapsulate text treatment for raw text messages.

The async parsing sequence is as follows:
- Markdown -> HTML (md4c)
- link coloration (tidy-html5)
- notify UI
- request link preview info from PreviewEngine for the first link
- Preview engine uses QtNetwork instead of QtWebengine
- Linkification is handled by MessageParser instead of linkify.js

QtWebengine is no longer required for message parsing.

Gitlab: #1033
Gitlab: #855
Change-Id: Ief9b91aa291caf284f08230acaf57976f80fa05b
2023-05-15 15:44:20 -04:00
Sébastien Blin
4d2c55348b packaging: migrate from Qt 6.2.3 to 6.4.3
Python2 is removed from Debian stable/unstable and
latest Ubuntu. So, we need to use a newest version of
Qt (here Qt 6.4.3).

Change-Id: I6c8b1eee644aab787d54e467f64011762ffd7548
2023-05-15 11:27:50 -04:00
Maxim Cournoyer
f6c8197cba Reinstate "cmake: Simplify lookup logic for libjami headers."
The commit was reverted in 2b7a421e due to breaking some of the
packaging builds.  This has now been rectified.

Change-Id: I3ea67962cc65f243f106fe00316634d580f51a52
2023-04-26 14:38:58 -04:00
Andreas Traczyk
66e0e21482 packaging: windows: optionally skip windeployqt
This is a big time saver in the context of CI testing where we only need to supply some env vars instead.

It would also be nice to also have the env vars filled out for CMake-generated project runtime configs to prevent unnecessary deployment for development builds, but that's not done in this commit.

Change-Id: I338827cb87c9fc71c9a6b4b3076b22aa7cf7cfa3
2023-04-14 15:19:48 -04:00
Andreas Traczyk
012034fe67 misc: migrate the webengine resources from libclient to the client
Adds a `--with-engine` option for the resource generator script which will prevent packaging unused resources when building without webengine support.

Change-Id: If2f31284ef59166615221235427a53d0df8da2ce
2023-04-06 16:55:38 -04:00
Andreas Traczyk
df5b955465 misc: fix test suite and tooling on Windows
- simplifies and fixes the python build script for Windows
- applies pep8 to the script also

Gitlab: #899
Change-Id: Ieb3debd08ddf1649a46208fc52362d20c504c1b1
2023-04-05 13:54:23 -04:00
Amin Bandali
28bb42e5a1 cmake: Tweak RPATH to fix linking libjami for local installs.
* CMakeLists.txt: Tweak the setting of the runtime path (RPATH) to add
the 'lib' directory for local (non-system-wide) installs, to fix the
newly-surfaced issue with linking libjami for local installs.

Without this, the executable would be linked against the libjami
shared library from daemon/src/.libs for the install RPATH as well,
which for some reason as of recently gets omitted from the install
RPATH after 'make install', resulting in an error like the following
when trying to launch jami:

./install/bin/jami: error while loading shared libraries: libjami.so.0: cannot open shared object file: No such file or directory

Change-Id: If7e172b54728c72ae649fcf936a767b5d9c99488
2023-03-19 21:52:28 -04:00
Kateryna Kostiuk
ba867b0636 macos: support unified build
This patch adds a parameter arch to specify architecture
to build. This parameter could be arm64, x86_64 or unified.

Change-Id: I2907e03410e0c01b8505afbe283da04b8d0291b6
2023-02-28 14:30:05 -05:00
Sébastien Blin
3570b23d8a swarmdetailspanel: show kicked contacts if administrator
This patch avoid for non-admins to try to re-add kicked members
as filtered out from the list. However kicked members are only
visible for administrators.

Change-Id: Ie01b7071c072d147bbc0f39e477cc24d7fd58b1a
2023-02-20 09:05:24 -05:00
Amin Bandali
8d46acedf1 misc: Update copyright years to 2023
Change-Id: Idf38e82631a4e22540aa5dec8ec2db0ab4a38c2e
2023-02-06 01:47:15 -05:00
Kateryna Kostiuk
9ffbf4ae1c macOS: update signature for Sparkle
This patch sets up app updates to use EdDSA signature as now
it is required by Sparkle

Change-Id: I68a581e21850f04a819f4fe7ea49a33766031e01
2023-01-30 11:10:46 -05:00
Aline Gondim Santos
a28d5c5c55 windows: enable window sharing
GitLab: https://git.jami.net/savoirfairelinux/jami-project/-/issues/1294
GitLab: #481
Change-Id: Iafdb542d37f9a1d59b35d83ba779c1c2f2f0ca0f
2023-01-09 12:37:28 -03:00
Amin Bandali
bf46264b74 doc: Add and install jami(1) man page.
* CMakeLists.txt: Install the man page.
* doc/jami.1: Rewrite to be a proper man page.

Change-Id: If0b566556d41c5adada87c93db7e6097dfdfa1e8
2022-12-29 14:45:33 -05:00
Sébastien Blin
2b7a421e1f Revert "cmake: Simplify lookup logic for libjami headers."
This reverts commit 041b733cf4.

Reason for revert: Breaks build from jami-project

Change-Id: Ie93add3c76a88c0368cb9d23c415d921a06b49d9
2022-12-29 09:45:16 -05:00
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