Age | Commit message (Collapse) | Author |
|
This is similar to what is currently already done in the
dtor of ClientSessionStanzaChannel.
This should fix potential crashes that have been reported
in Sluift with ASAN enabled, showing a heap-use-after-free
in ComponentSessionStanzaChannel::handleSessionFinished.
Test-Information:
All unit tests pass successfully on macOS 10.12.3 with
clang-5.0.
Change-Id: Id1e95894f9d5fe85922c0e11d18a38d46bd08e3c
|
|
Test-Information:
Tested using Psi and Swift.
Log in to Psi and Swift as UserOne. Enter Room (e.g. testRoom) using Swift and join the same room from Psi using drop down menu Join Groupchat.
Splitting: change nick from UserOne to UserTwo. Swift correctly
displays: UserOne, UserTwo.
Merging: change nick back from UserTwo to UsetOne. Swift correctly
displays: UserOne.
Change-Id: I291eddd5aed154fb0babe1b0ada0a15a317eacdb
|
|
Previously any entity capability lookup was only cached
on the disk. This meant that even for a cache hit, you would
read from disk and parse the disco info XML in the cache,
to return the result.
This commit adds an addition LRUCache based in-memory cache.
This extends the EntityCapsProvider API with a non-const
method, i.e. getCapsCached, which allows active caching
of results from the disk cache.
Test-Information:
All unit tests pass on macOS 10.12.3.
This noticeably speeds up the duration of a join of a large
MUC room, i.e. about 160 occupants, to about half of the
previous duration.
Change-Id: I0fc254cda962860416713822ddcad15ae13085f1
|
|
The dialog will automatically initiate a check for updates
when opened.
It will show the current state of the auto updater backend,
e.g. whether it is downloading or already at the latest
version.
This also fixes update channel selection being shown
on Windows and Linux.
Test-Information:
Ran Swift and opening the dialog shows a short progress bar
indicating it checking for updates. Afterwards it shows that
it is already running the latest version, which is sensible
for a dev build.
Change-Id: Ie08cd2a8852e468d6007122604b532fedc24bcfe
|
|
This implements a simple lookup cache with least recently used
replacement strategy.
This also adds Boost.MultiIndex from version 1.56 to 3rdParty.
Test-Information:
Added some unit tests for LRUCache, which pass on macOS 10.12.3
with clang-5.0
Change-Id: I0567945b1197d3fe786bf9d82fdb5e755743b975
|
|
Test-Information:
Unit tests pass OK.
Change-Id: Ibd7897c1c1249af7ac60a6549afd4c2362fcf0c0
|
|
Described 64-bit Windows build and the QtWebKit situation for
Qt 5.7 and later.
Test-Information:
None.
Change-Id: I33740e81c27b2dddbd00f058e49c18fefed75843
|
|
This adds the Ctrl + Minus and Ctrl + Equal shortcuts for
zoom out and zoom in respectively.
In addition, this commit provides a workaround for QTBUG-56571.
Test-Information:
Tested on macOS 10.12.3 with Qt 5.7.1. Tested with German
and UK keyboard layout. On UK layout both shortcuts,
Ctrl + (+/-) and Ctrl + (=/-) work. On German layout only
Ctrl + (+/-) works.
Change-Id: Ifbcab308c9a8f4c88b51978969c73c3c1138a9ba
|
|
The new selector behaves like the old one. However, selection
of an emoji results in the corresponding UTF-8 sequence to be
inserted into the input widget instead of a ASCII emoticon.
The code is based on the Emojione library which is MIT
licensed. Emojione provides a mapping from shortnames to
relevant Unicode codepoint, as well as mappings from textual
emoticons (e.g. ). This commit does not modify the existing
emoticon parser and so does not include any ability to enter
emojis via text entry.
The part of the Emojione library required to generate the mappings
in C++ is included in this patch, specifically the emoji.json
file. It is used to generate a corresponding .cpp file.
Mapping code can be generated as follows:
* cd BuildTools/EmojisGenerator/
* (optional) update emoji.json from
https://github.com/Ranks/emojione/blob/master/emoji.json)
- Version used with this commit: ba845a7
* npm install
* node generate.js
Test-information:
General
* Click the emoji button opens the selector
* Change tab
* Click an emoji and check it appears correctly
* Click outside emoji dialog hides it
Emojis
* Emojis are well printed on macOS with Qt 5.7.1
* Emojis are black/white on Windows 10 with Qt 5.7.1
* Emojis have the right tooltip (when mouse is hover)
* Check emojis are rendered appropriately by the receiving client
Tabs
* Tabs have the right tooltip
* Click an emoji adds to recent tab
* Emojis in the Recent tab are ordered by last click date
(with a maximum of 50 "recent" emojis)
* Recent emojis are saved in the QtSetting under "recentEmojis"
Change-Id: Ibd07b8713d6272da6a8a4c9c35ddf866473f662b
|
|
Clang’s -Wshadow-field rightfully complained about it.
Test-Information:
Builds on macOS 10.12.3 with clang5 and Qt 5.7.1. All unit
tests passed.
Change-Id: Ib0705d518298e666c73d84150a043688a9d925ce
|
|
So instead of doing something like this
local features = client:get({ to = to, query = "<query xmlns='"..sluift.disco.features.DISCO_INFO.."'"..node.."/>" })['features']
we can now do something like this
local features = client:get_disco_info({ to = to })['features']
That is, avoid raw calls.
Test-information:
Updated test calls to use new API and noticed no different behaviour
to old code.
Change-Id: I0d9a7c25c0f56499487f8aa0e67e30e9fa1b56ac
|
|
Also fixed an typo error in GConfProxyProvider.cpp that prevented
compilation on Linux.
Test-Information:
Tested with an XMPP server with vCard support disabled and
also with vCard support enabled. Tested profile window
and profile editor window.
The profile window will show cached vCard data if present
and the error message. The profile editor window will only
show the error message in case of an error.
Tested profile window and profile editor window in a scenario
where vCard support is first enabled in the server, then
disabled, and finally enabled again, and opening the editors
in between. Potential error messages were always correctly
cleared before showing the dialog.
Tested on macOS 10.12.3 with Qt 5.7.1.
Change-Id: I3958c35286f6f0096d1605c29816f666530aae03
|
|
Test-Information:
From view menu choose "Change Layout", move mouse to resize trellis.
Trellis resizing works fine.
Change-Id: I112c0bd84dc57abb3bb95f825f74b2efa1f8e183
|
|
This change was missing in commit 43479ef.
glib is automatically initialised nowadays and g_type_init()
is a deprecated function. Surrounded the relevant code with
a GLIB_CHECK_VERSION macro.
Test-Information:
Tested build on Ubuntu 16.04.1 LTS.
Change-Id: Iea7242f6366d827b2cc6ce355cb923872f774a6c
|
|
Test-Information:
None.
Change-Id: Iaa0bad47c104b9407329d69329f3409af0d62e6d
|
|
A previous commit added a get_block_list() client method to retrieve
the list of blocked items.
This patch extends that and adds capabilities to add and remove
items to such list.
Test-information:
Tested with client and was able to successfully add items to list,
delete and delete all
Also tried to delete a non existing item and it rightly complained.
Change-Id: Iabbfdbd9e74ddc9740db5c9871b8355210aa0727
|
|
Swiften handles blocklist event notifications, but those were
not passed to Sluift, so a Sluift client, when querying events,
would not be aware if an XMPP server pushes block/unblock.
This patch adds an extra event type to Sluift so that method
for_each_event reports block/unblock notifications, in addition
to a new API 'get_block_list' to retrieve the blocklist from
the server.
Test-information:
Used Sluift client to retrieve blocklist and it is as expected.
Also used client to retrieve all items after adding, removing and
removing all items in the blocklist, and Sluift clients can now
see these events.
Change-Id: I0b76289ebd9e63505ff8a99cd9c0aa0e93af0c22
|
|
middle of the screen
Test-Information:
Tested with multiple screen setup.
Tested only on Windows.
From view menu choose "Change Layout", the layout window appears in the
middle of the screen.
Change-Id: Iab4ba64d54766426be39926773aa5b5bb628b9e9
|
|
Test-Information:
Tested scons dist=1 successfully on Windows 10 with Visual Studio 2015
and Qt 5.7.1.
Change-Id: I41271f10367249e2e89fdba85f1d5c5305c548ff
|
|
dialog
Test-Information:
Tested only on Windows with two monitors.
Tested by opening Swift App on the first screen, next choose View->Change
Layout, mouse cursor appears correctly on Change Layout dialog, next
move Swift App to the second screen choose View->Change layout, mouse
cursor appears correctly on Change Layout dialog.
Change-Id: Ibb3e2ca1de6bcdb620104ff6b0940005ab85a827
|
|
googletest and googlemock from release 1.8.0 have been copied
to the 3rdParty folder.
With this commit tests for Swift project can also written
using googletest and googlemock APIs. The test runners will
execute test suites written to either test library.
Passing —-xml to a test runner will now create two test
report XML files, namely $programName-report.cppunit.xml and
$programName-report.gtest.xml.
The ByteArrayTest has been converted to use googletest
instead of googlemock to serve as an example and test the
integration.
Test-Information:
Build all tests via ‘./scons test=all’ and verified all tests
are run.
Build all tests via ‘./scons test=all checker_report=1’ and
verified that two report XML files are generated per test
runner executed.
Change-Id: I81a9fb2c7ea5612fc1b34eef70ed7e711bfeea81
|
|
Test-Information:
From view menu chose "Change Layout". Cancelled the trellis resizer
using Escape.
Change-Id: I82e196f813cf34db9b50d812ce0597975432869f
|
|
Test-Information:
Tested this manually on our Debian builder. With this fix
it stops complaining about missing Qt packages.
Change-Id: I5fb25714f7e1b726f893f9475fded17c36677cef
|
|
* swift-3.x:
- Fix building Swift on 32-bit Linux distributions
- Remove optional_fwd.hpp use; workaround for Boost Bug #12179
- Split COPYING.thirdparty in contributions/dependencies
- Fixes for building packages on Debian
Conflicts:
BuildTools/SCons/SConstruct
Sluift/Console.h
Sluift/ITunesInterface.h
Sluift/Terminal.h
Swift/Packaging/Debian/debian/control.in
Swift/QtUI/SConscript
Swiften/Elements/Stanza.h
Swiften/FileTransfer/FileTransferTransporter.h
Swiften/FileTransfer/IBBReceiveSession.h
Swiften/JID/JID.h
Swiften/Network/BoostConnectionServer.h
Swiften/Network/ConnectionServer.h
Swiften/Parser/AttributeMap.h
Test-Information:
Builds on macOS 10.12.1 with clang trunk.
Change-Id: I9f41ab199f227bc106721627ea994313c68e5cfe
|
|
Instead of adjusting the color lightness for the second line,
the new code just draws the second line with 70% opacity. This
provides a more consistent and predictable effect.
Test-Information:
Checked rendering of available, away, and busy contact
rendering on macOS 10.12.1 and Windows 10.
Change-Id: I417b80bdf8ea01db7a6e0e680b488d6a52c297dd
|
|
Instead, handle the QCloseEvent and emit the windowClosing
signal there. This is an attempt to fix a crash I am unable
to reproduce but which crash stack includes the signal emit
in ~QtTabbable.
Test-Information:
Builds on macOS 10.12.1 with clang master. All unit and
integration tests pass. Manual login and close of Swift worked
without a crash.
Change-Id: I470f3c5362fd0f502c542560854424e87fc0727e
|
|
Test-Information:
Builds and all tests pass on macOS 10.12.1.
Change-Id: I58ca7ba27736d27426350f636dfe910f4f2f1b17
|
|
Previously if you wanted to invite people to a MUC and had
a PM window for a MUC occupant open at the same time, the
InviteToMUCUIEvent would be handled by the PM window, by the
ChatController of the PM window and not the MUCController of
the MUC window.
Test-Information:
Verified that some scenarios work correctly:
- Tested a drop to a MUC window while a MUC PM window is open
to an occupant in the MUC. Previously this crashed due to
ChatsManager::localMUCServiceJID_ being empty.
- Test that impromptu MUC creation to a normal chat works.
- Test that impromptu MUC creation to a MUC PM chat works.
All unit and integration tests pass on macOS 10.12.1.
Change-Id: Ib20de7e925e3503308211936ee47d4ba829d0394
|
|
Previously, if one would send a MUC PM to a user that has
left a room the error response from the MUC would be shown
in the MUC room.
Now the error will show in the MUC PM window, if the MUC PM
full JID has a ChatController.
Test-Information:
Added unit test verifying new behaviour. Manually verified that
the error is shown in the MUC PM window instead of the MUC room
window.
Change-Id: I1b259d5eee9e22217bbe7e5c09294d2166a77895
|
|
If a server closes the XMPP stream, it sends a </stream:stream>
tag. The client is supposed to respond with the same tag and
then both parties can close the TLS/TCP socket.
Previously Swift(-en) would simply ignore </stream:stream>
tag if it was not directly followed by a shutdown of the TCP
connection.
In addition there is now a timeout timer started as soon as
Swiften or the server initiates a shutdown. It will close
the socket and cleanup the ClientSession if the server does
not respond in time or the network is faulty.
Refactored some code in ClientSession in the process. Moved
ClientSession::State to a C++11 strongly typed enum class.
This also fixes issues where duplicated </stream:stream>
tags would be send by Swift.
Test-Information:
Tested against Prosody ba782a093b14 and M-Link 16.3v6-0,
which provide ad-hoc commands to end a user session.
Previously this was ignored by Swift. Now it correctly responds
to the server, detects it as a disconnect and tries to
reconnect afterwards.
Added unit test for the case where the server closes the
session stream.
Change-Id: I59dfde3aa6b50dc117f340e5db6b9e58b54b3c60
|
|
This was broken in commit 43479ef.
Test-Information:
Build with Avahi support on Ubuntu 16.04.1. Unit tests
passed.
Change-Id: If7ee5f740510956d89f6c406e68b92ddeb61cf85
|
|
Test-Information:
Build on macOS 10.12.1 and all tests pass.
Change-Id: Iedaa3fa7e7672c77909fd0568bf30e9393cb87e0
|
|
Test-Information:
Ran package.sh on Debian unstable/sid. Without this fix,
building in package.sh failed due to missing zlib header
files. With this patch it complains about missing zlib1g-dev
package, and after installation of it successfully builds
Swiften/Swift.
Change-Id: I9babcd1a5f9e21c01b9c6e9a51a80200d7998538
|
|
Test-Information:
Build Swiften on Debian 8.6 with all installed dependencies
with and without passing these new options to scons. Either case
built fine.
Change-Id: I4867c0479a0d44b15e12918c5075e9039945ed95
|
|
Previously HostAddress had a constructor which allowed
initialisation via a std::string. This initialisation can
fail and this is heavily used for checking whether a string
is a valid IP address.
This constructor is removed in this commit and replaced by
a static method HostAddress::fromString, taking a string and
returning an optional HostAddress. This clearly communicates
that the conversion can fail.
Test-Information:
./scons test=all passes on macOS 10.12.1.
Change-Id: Idaafee6f84010ce541c55f267ac77ad6ac8f02b4
|
|
Test-Information:
None.
Change-Id: I6a734918b48e512726344d5812642473067e40a9
|
|
Check for updates on start.
Test-Information:
Manually verified a random sample of 50 Swift version string
pairs, that Sparkle currently compares them and detects the
new version.
Change-Id: Ic88a5fdc5feab42cdcb4cc3c2740d4c24718eb7b
|
|
Test-Information:
Verified that the tool writes to the specified output folder
on macOS 10.12.1.
Change-Id: I91157dda1031632c1e536ae6b509f08a69dce6c3
|
|
The script will now take stable/testing releases from the
…/downloads/releases path using per-release folders inside,
and only dev builds from the …/downloads/development/mac
path without per-release folder.
Test-Information:
Ran the script on macOS 10.12.1 on a mirror and verified that
it generated the correct feeds.
Change-Id: I9b2f5780cfcdafb64d0d75d1483643b522ea7bb2
|
|
This Python script parses the folder structure of Swift
downloads locally and generates three appcast feeds to use
for Sparkle updater.
The three appcast feeds are written to the downloads folder
supplied to the script.
Test-Information:
Ran script with Python 2.7.12 and manually checked the output.
Change-Id: Ie1e71eecad4f65e48694b805878765806a3465ae
|
|
If software updates are enabled the about dialog will show
the currently configured update channel and provides a link
to a dialog to change the update channel.
Test-Information:
Builds on macOS 10.12.1, unit tests pass, and dialogs behave
as expected. Did not test Sparkle updating.
Change-Id: I05d5014f0d719ba9b2146c1e599db4f7fde80558
|
|
Test-Information:
Builds on macOS 10.12.1, ./scons test=all passes, Swift
successfully logins and remembered Trellis configuration.
Change-Id: Id94d6af1448d44d7d46ba2b8606f3e5ebe98be7a
|
|
The FeatureOracle provides tri-state feature lookup
functionality for bare JIDs. It returns Yes if a feature is
supported by all resources of the bare JID, Maybe if some
support it, and No if none of the resources support it.
If passed a full JID, it returns the specific features supported
by that end-point.
Sending a file to a bare JID, will send a file to the resource
of the bare JID with the highest availability by presence, show
status and priority and which supports the features required
for a Jingle file-transfer.
Test-Information:
Added unit test verifying new behavior.
All tests pass on OS X 10.11.6. Added new unit tests for
FeatureOracle.
Manually verified that the roster and chat window both use
the same mechanism to detect support for file-transfers.
Manually verified that file-transfers via the contact list
goes to already bound full JIDs if there is an existing
ChatController.
Change-Id: I0175ac42ecb73f1d54f9c96ffbba773eb5e24296
|
|
Sluift was showing payloads coming from a carbon copied message as
a series of dom payloads, which was not really usable.
With these ElementConvertors, the payload is translated into a
much more sensible table
Also a minor update to both presence/message events, which now
will report the 'to' as well. Seemed handy to have.
Test-information:
Carbons sent/received messages are formated into a meaningful table
now.
Change-Id: I5b8943636e09e5377bde76d16970c01df29164d6
|
|
Test-Information:
Builds on macOS 10.12.1.
Change-Id: Id06e66171cbc5b6417701a8de57b901b0d80f17c
|
|
Due to the style independent fixed text color for the status
message of non-compact roster item, it was barely readable on
Windows 7. This commit has the color for the status message
in non-compact roster items depend on the used text color
for the name. It uses a brightness adjusted highlight text
color for the second line.
Test-Information:
Tested on OS X 10.11.6 with Qt 5.5.1 and Windows 8 with Qt
5.5.1.
Change-Id: I41beb0f3eaede3f9413a39662c213a4e904bdd69
|
|
Test-Information:
Builds on macOS 10.12 and unit tests pass.
Change-Id: Icc1bce9a0e0e85377eef0c8b87bf82d37943d3a5
|
|
This shows a short descriptive text in empty trellis cells,
that describes the current state to the user and suggests
actions on how to get rid of the empty trellis cell, e.g.
by changing the layout or moving chats to the empty cells.
Test-Information:
Tested with Qt 5.5.1 on macOS 10.12.
Change-Id: Ibc7d3a327cf32b8a21304b37e79534773b5d3761
|
|
Test-Information:
Builds on macOS 10.12.1.
Change-Id: Ifbaf78c4b95a4baac767667c7df367c6508a3e85
|
|
Test-Information:
Unit tests pass with Qt 5.7.0. Chat view sizes are synchronised
on change. ASAN does not complain when opening/closing lots
of chat windows and then closing Swift.
Change-Id: Ib00260d2331f48f0ca3c47a2340311dcff85c5ed
|