summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-05-15Disconnect potentially connected slots from signals in dtorTobias Markmann
SWIFT-247 Test-Information: Tests pass and builds on macOS 10.12.4 with Qt 5.4.2. Change-Id: I39b62f53c62fba972e6a29e89cd00fb3b4e1a5b5
2017-05-15Use QPointer to prevent access to potentially freed QtTreeWidgetTobias Markmann
As the QtTreeWidget and the QtFilterWidget are siblings in their parent widget, it might happen that the QtTreeWidget is deleted before the QtFilterWidget. Using Pointer, we are able to detect this case and can prevent accessing the already deleted QtTreeWidget. QtFilterWidget cannot be made the child of the QtTreeWidget in this case, so this fix uses the QPointers approach as a workaround. SWIFT-247 Test-Information: Tests pass and builds on macOS 10.12.4 with Qt 5.4.2. Change-Id: I3a60006519b580010718c4d2aa94638555c0afdf
2017-05-15Unregister as event filter in QtFilterWidget dtorTobias Markmann
When QtFilterWidget is deleted, it is still registered as event filter and events might be sent to an already deleted QtFilterWidget, causing a crash. SWIFT-247 Test-Information: All unit tests pass, roster filtering still works, and Swift does not crash on exit on macOS 10.12.4 with Qt 5.4.2. Change-Id: I84a7e1af64d1376db3dfdd0fd7cf95b547cca9a1
2017-05-15Add pointer checks in some CoreClient members.Thanos Doukoudakis
This patch adds some checks in the CoreClient class to avoid accessing stanza and session channels to send data when they are not available. The Sluift lua wrapper functions will throw an exception in these cases. Test-Information All unit test pass. Timlx: Test Suite ‘basic’: All tests Pass. Test Suite ‘fmuc’: All tests except FmucChain Pass (Not related with the changes) Change-Id: I3d5894b3cfdafd0ea28c0fb33b6db8588f2a5c8f
2017-05-12Allow creation of a Swift appimage on CentOSKevin Smith
This provides two mechanisms, one via Docker and one via copying and running scripts. The Dockerfile will build with 64bit CentOS 6.8 only, which isn't useful for truly ancient systems. The scripts are tested on 32bit CentOS 6.0. In both cases they provide an appimage that runs on some systems. Change-Id: I84ca453e355eb2653d3cd703d2c6c8bb60340ec0
2017-05-11Change the setting that specifies the font size.Thanos Doukoudakis
This fix changes and reset the setting that stores the font size. Test-Information Tested and verified the changes to Windows with Qt5.7 and Linux with Qt5.5 Change-Id: Ia71ba986e33e7f9421ef616c22d5b1af6e5c2b4a
2017-05-10Fix for chat not being set correctly as impromptu chatJoanna Hulboj
Test-Information: Open Swift app, from Recent Chat List click on entry that was created from offline invitees. New chat window will be opened and the chat message will be e.g. "You have joined the chat as test.". Change-Id: I54bdd019aac4274bed2a213b2679e5aeca7bd5fb
2017-05-10Fix chat window title being displayed incorrectlyJoanna Hulboj
Test-Information: Open Swift app, from Recent Chat List click on entry that was created from offline invitees. New chat window will be opened and the title will be the same as Recent Chat List entry. Change-Id: Ia8730aaabfd78e7026d15f3162d4fa46b1489397
2017-05-08Fix an issue when sending a file in a chatThanos Doukoudakis
When you drop a file in the chat input, the file path was being sent to the chat, instead of initialising a file transfer. This patch fixes this issue and starts the file transfer. Test-Information: Tested on Windows 10 with Qt5.7. Drag a file and drop in the chat input. Change-Id: Ie6c31e0ba56ac7171442370bf7d8edbefce208d6
2017-05-05Fix SendFile example heap-use-after-freeThanos Doukoudakis
This fixes the crash by moving Swift::Client to a unique_ptr. By specifying the order the objects will be destructed, we avoid accessing the Socks5ByteStreamProxiesManager instance after it has been destroyed. Also there is no need reset the outgoingFileTransfer pointer. Test Information: Use the SendFile example to send a file to a user connected with Swift. Change-Id: I0462dc60c1d4d5eb3b07516c6e609bbe70954039
2017-05-05Sluift: Enable more options to be passed to connect()Roger Planas
There are many connection options that Sluift enables (bosh_url, tls, etc..) but only host/port were understood by connect(), the rest were meant to be set by using set_options(). This can be sometimes annoying, so to make things uniform, now connect() should accept the same options settable in set_options() Test-information: Run test to check you can pass values to connect() rather than set_options() and things worked. Change-Id: Ic79aa5c6b232ddc2ffcfc3c14aa6f31233242314
2017-05-04Fix recent chat entries being incorrectly displayedJoanna Hulboj
Recent chat entries were displayed as a randomly generated numbers instead of impromptus (if invitees were offline). Title displayed in the Recent Chat List for MUC is now based on both the occupants and invitees. To do that a collection with all the invitees is being stored (new) along the occupants (existing). Test-Information: From Swift menu choose Actions, Start Chat... Add some offline contacts to the List of Participants and press Finish. Recent chat entry will have correct name (combined of contact names). Change-Id: Ie076165e8dbb493aa261cc49ca3ab1e0c1c542a8
2017-05-03Add workaround for adding sid packages to apt repo via repreproTobias Markmann
Test-Information: Tested the changes on our repository server. It removes the dbgsym packages, that debuild automatically builds since sid, from the .changes file. This way reprepro will not complain about them and add the usual packages to the repository. Change-Id: I1e4d956ecdc76bd9256cf502bd561abcd0968252
2017-05-03Change the default font size in chat viewThanos Doukoudakis
This will make the default font size in chat view to match the one in roster. This fix also decreases the font scaling step to half, and lowers the minimum font scale. Test-Information: Tested and verified the changes to Windows with Qt5.7. Change-Id: If5873049af4e82fba871e5d2687575aa88b533c9
2017-05-03Add missing changelog entriesTobias Markmann
Test-Information: None. Change-Id: I731a09ec1377af86103a4a3e2c78ec58a6d600bc
2017-05-03Add update_debian_repo.sh scriptTobias Markmann
The purpose of the script is as follows: Based on an incoming folder of Debian binary and source packages for multiple distributions and versions structured as incoming_folder/$distribution/$version, the script will create apt repositories using reprepro and fill it with packages from the incoming folder structure. If the repositories are already present, they will be updated instead of created. Test-Information: Tested it on Debian 8.7 with Swift development packages produced by our CI machine. Change-Id: Ic0270bc954ec9609c0567d2707825fbab89e7b3a
2017-05-02If silent Sparkle update impossible do not auto download updatesTobias Markmann
With this change, Swift will check at the start if it has sufficient permissions to write to the location where Swift is currently installed and also check if it can change permissions of a temporary file to the permissions of the current Swift installation. This should prevent an authentication dialog on the exit of Swift which does not leave a single clue to what application the dialog belongs to. Test-Information: Verified that the log output indicates a possible silent update for admin users and the impossibility of a silent update for non-admin users and a Swift installed to /Applications folder. All unit tests pass on macOS 10.12.4 with Qt 5.4.2. Change-Id: I5f03358ac67630565b3c624da157b1eeea14356d
2017-04-21Bring Swift and Swiften ChangeLog.md files up to dateTobias Markmann
Test-Information: None. Change-Id: I5efd775af454af50c9ae46a1b2208c7ebdea2824
2017-04-20Add missing include for QFileDeviceTobias Markmann
Test-Information: Builds on macOS 10.12.4 with Qt 5.4.2. Change-Id: Id9715062e25c1d541020408a517e0974ce92c886
2017-04-20Verify message IDs during last message correctionTobias Markmann
Previously we did not check the ID in the replace tag against the ID of the last message from that JID because some MUC components change the message ID. In case the ID of the last message and the ID in the replace tag do not match, the message is simply treated as a normal message. Test-Information: Added unit tests to verify the new behavior and adjusted existing test cases for new behavior. Added test cases to ChatsManagerTest.cpp that test verification of replacement IDs for 1-to-1 chats and test non-verification of replacement IDs for MUC. All tests pass on OS X 10.11.6. Change-Id: I85b1d2138b056b445a663f3ee3ab89a56cef4a2a
2017-04-18Support Last Message Correction in multi client scenariosTobias Markmann
Previously Last Message Correction edits are only applied if they came from the same resource. This makes sense in MUC scenarios but does not in 1-to-1 chats. This changes the Last Message Correction behaviour for MUC and 1-to-1 chats so that different clients from the same bare JID can edit each others messages. Test-Information: Added unit test to verify Last Message Corrections work as expected when coming from the same client and from different clients. Manually verified that the receiving client correctly shows a corrected message if the sending client reconnected between first message and edit. All unit tests pass on OS X 10.11.6 with Qt 5.5.1. Change-Id: If533ecc7032e59e324979c577726f2da739012e6
2017-04-18Fix for grey gap in the blue/green CSS blobs in chatsThanos Doukoudakis
The grey gap was being created due to the relative sizes of the css elements myavatar, myright, otheravatar, otherright. Depending on the font size, and due to round ups, the elements ended with a gap between them, resolving to the grey line. The fix moves one of the elements slighly and works with newer versions of Qt. Test-Information: Tested with with windows (qt5.4.2), Windows (qt5.7), Linux (qt5.5) Change-Id: Ib4fb7fc8a5ef8bed1868a0d65707ca034309cf04
2017-04-18Don't pass the impromptu MUC 'reason' as the room JIDThanos Doukoudakis
Changing the constructor of the CreateImpromptuMUCUIEvent class not to accept default values to its parameters. This approach is less prone to mistakes, like forgetting an argument. This commit fixes SWIFT-271 bug, where only two arguments were being passed in the constructor. As a result the reason string was used to create a room JID, making the room unusable. By passing an empty string, the room JID created is not valid, and when ChatsManager handles the event, it will generate a new valid room JID. Test information: Unit test pass. Tested the creation of new impromptu chat with with windows 10 (qt5.7). Change-Id: I4ce9ee7db14b9125970a03f19d1ac0c32e1b5a0e
2017-04-12Assert first page in QtUserSearchWindow wizard based on typeTobias Markmann
Converted enum to C++11 enum class in process. Coverity raised this issue. Test-Information: All unit tests pass. Using the “Add Contact…” and “Start Chat…” dialogs did not crash. Tested on macOS 10.12.4 with Qt 5.4.2. Change-Id: I0409688b001d1eaaf5fa77a25b1158ce9e611c77
2017-04-11Simplify algorithm for concatenating using modern c++Joanna Hulboj
Test-Information: Unit tests pass OK. Change-Id: I6328dd55482ed8058ec8510a873fdd64ff978c72
2017-04-10Only add existing environment variables to QtUI test envTobias Markmann
Furthermore extended the list of potential environment variables based on what the qt4.py tool creates. Fix for commit ed2226782ac15345aeb8e615b41d30e5aab67b51. Test-Information: Tested on Windows 8 with VS2013 with Qt 5.4.2 and on macOS 10.12.4 with Qt 5.5.1. Change-Id: Ib52084ca0e1505fe943c33fa74f479e360d834fe
2017-04-10Make the default chat view font to render thicker on WindowsThanos Doukoudakis
Added a font-weight property on the body style to enhance the default font weight (400) only on Windows, in order to improve the look of the chat view. If the font-weight is being defined in any other styles rules with higher priority, this default value will be overwritten. Test-Information: Tested with with windows 10 (qt5.4.2), Windows 10 (qt5.7), Ubuntu 16.04.2 (qt5.5) Change-Id: Iafd969cff487a907d136b9d2d8b393a90681216f
2017-04-10Ignore incoming duplicates of messagesTobias Markmann
This might happen with some servers and their MUC implementation which send you not only the original message but also multiple carbon copies of it for MUC PM conversations. This change will ignore any message that has the same non-empty message ID as the previously incoming message. Test-Information: Added unit test to verify new behaviour. Tested in a MUC where the server would send you the original message and multiple carbon copies of the message. Previously the chat view would show and incoming MUC PM message 4 times. Now it’s only shown once. Builds and tests pass on macOS 10.12.4. Change-Id: Ie7bd29dacc00f8f3962131a529b52a69ff09bd6c
2017-04-07Do not grey out chat view after clearingJoanna Hulboj
Test-Information: Run Swift, open chat window, enter a message and send it. Right click on chat view and choose Clear. Chat log in a view will be cleared but it will stay white. On the top of the chat view will be a message: e.g. Starting chat with test - test@test.isode.net: Offline. Change-Id: Ie453602e2f2b14e3ecca699821521ad33937ccf6
2017-04-07Make day change chat system message DST awareTobias Markmann
Moved the code for day change message handling from Swift/Controllers to Swift/QtUI. Use QDateTime in local time time spec, which allows DST aware calculation of the duration to the next midnight. Added Swift Qt UI unit tests, which are build when Qt has been successfully detected. Test-Information: Added unit tests for duration to next midnight calculation. Set clock shortly before midnight and verified that a single day change message is added to the chat log at midnight. Tested on macOS 10.12.4 with Qt 5.4.2. Change-Id: I34d69eaa3272981fd220a7963a0417f73ff78e68
2017-04-06Reset the chat state to active after a few secondsThanos Doukoudakis
Fix for swift-217 When a user sends a composing Chat State Notification a timer will start. If the user doesn't send or cancel the message before the timer expires, an active CSN will be sent. Test Info: Build on Windows and unit test pass. Tested the new functionality with Windows and Linux Client. Added some test cases to cover the scenario that user goes idle while a CSN composing state has been sent. Updated ChatStateNotifierTest to use gtest. Updated ChatsManagerTest to use a valid TimerFactory object instead of nullptr. Change-Id: I35201947e4f042805a6d9df1340a0335effcd657
2017-04-04Change ‘User’ to ‘Nickname’ in highlight dialogTobias Markmann
Test-Information: Build on macOS 10.12.4 and verified the change in the UI. Change-Id: I8ec472158682e951fe358197c0939f451ade8c54
2017-04-04Open 1:1 chat to real JIDs from MUC rooms (not PMs) when possibleThanos Doukoudakis
Opens the chat with the user JID instead of the MUC JID. Does not affect existing behaviour on normal one2one chats. Test-Information: Builds on Windows and unit test pass. Tested the behaviour on single chats from contacts list (roster), start new chat with one and multiple users. Also tested on MUC rooms that are non-anonymous, semi-anonymous and anonymous. Change-Id: I2b8fbacb1fa640167ec196d4215a13ad4905d45c
2017-04-04Add missing check for initialised pointerTobias Markmann
Coverity raised this issue. Test-Information: All unit and integration tests, including the file-transfer tests, passed on macOS 10.12.4. Change-Id: I418358366478ad76e4eff4fb0a3559373931e111
2017-04-04Remove superfluous duplicated variable in QtDNDTabBar codeTobias Markmann
Coverity raised this issue. Test-Information: Swift and unit tests still build on macOS 10.12.4. Drag and drop of tabs still work. Change-Id: I64bdb973da73a4f2b5ed514583c4f8740adc77b4
2017-04-04Verify certificates for HTTPS BOSH connectionsTobias Markmann
Test-Information: Tested against a BOSH server with a valid HTTPS certificate and against a BOSH server with an expired HTTPS certificate. Tested on macOS 10.12.3 with Qt 5.5.1. Change-Id: I9989389b271961fc4d66db56198b32715af52ae7
2017-04-04Test against dialog type instead of nullptr in QtUserSearchWindowTobias Markmann
If the dialog is not of type AddContact, firstMultiJIDPage_ is initialised and this states more clearly that the reset is only done when the dialog is in this mode. Coverity raised this issue. Test-Information: Added a user from search and started a chat from user search. All unit tests pass on macOS 10.12.4. Change-Id: I55f6df5b4f48e2c6718922846a424bf17f363b16
2017-03-31Fix unhandled Google Test exception in test runnerTobias Markmann
Coverity raised this issue. Test-Information: Unit tests pass on macOS 10.12.4. Change-Id: I5da68b706feb2f89124777d6153a703dba3bd526
2017-03-31Use std::random instead of boost::randomJoanna Hulboj
Test-Infotmation: Unit tests pass OK. Change-Id: I1b6d3711d97daa86cccbb44aecb1b4025f2fcc8a
2017-03-31Return unique_ptr instead of pointer to deleted objectTobias Markmann
Coverity raised this issue. Test-Information: Code builds on macOS 10.12.4 and all unit tests pass; Swift runs fine. Change-Id: I8fb0805f6b2e0a21674ea32c0b1aee9e7b985639
2017-03-31Handle potential boost::bad_any_cast exceptionTobias Markmann
Coverity raised this issue. Test-Information: Builds and unit tests pass on macOS 10.12.4. Switching different application languages via --language parameter still works and passing numbers as languages has it correctly fallback to the default system language. Change-Id: Ide1ffdba7a13c27856304aa96b78067147568a95
2017-03-30Fix access to potential unavailable page in QtUserSearchWindowTobias Markmann
Adding searched JIDs to the list of JIDs only makes sense for cases where there is a multi JID page in the first place. Coverity raised this issue. Test-Information: All unit tests pass on macOS 10.12.4 and the “Add Contact” and “Start Chat” dialogs using a user search still work. Change-Id: Icde63f13a2f83690b3189a9c91237eadd6b5218b
2017-03-29Initialise timerId member in QtGridSelectionDialogTobias Markmann
Coverity raised this issue. Test-Information: All unit tests passed on macOS 10.12.4. Change-Id: Id65cdc5e0175ba7773d32b6dddbc9b4af6789019
2017-03-29Remove nullptr checks that are not neededTobias Markmann
One must pass a valid AvatarManager instance to the MUCController. Asserted the fact at the beginning of the actor. Coverity raised this issue. Test-Information: All unit tests pass on macOS 10.12.4 and Swift client can join MUC conversations without crashing or other noticeable issues. Change-Id: Ibc643f907a31fd1253c63c9a4cef79407d1f96ec
2017-03-28Modified XMLBeautifier to handle split payloadsJoanna Hulboj
When receiving network data we were processing it in chunks. Sometimes one XML message got split across multiple chunks. XMLBeautifier was stateless and would create a new parser for every single chunk. This was causing multi-chunk messages to be truncated in the beautified output. The change I made in XMLBeautifier allows it to maintain the state. Test-Information: Tested unger Windows 10 and CentOS. Unit tests pass OK. Change-Id: Idad2a8e0248ed3cbe2b47a12718b909e56ac1279
2017-03-23Add Client State Indication Element, its Parser and SerializerTarun Gupta
License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Adds tests for Client State Parser and Serializer, which passes. Tests performed on Ubuntu 16.04 LTS. Change-Id: I60c63f63e1c0fdd55600ef42faa95989ca5ab75b
2017-03-21Fix #43 : Add LinuxMint to supported distrosBarun Parruck
Test-Information: Built on LinuxMint 18 with Qt 5.5.1 successfully. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Change-Id: Ibbe234937e1c1d58080236833f1c3a6cf08ebf8f
2017-03-15Add link to https://swift.im/ to about dialogTobias Markmann
In addition, fix display of Swift icon in about dialog. Test-Information: Build on macOS 10.12.3 with Qt 5.4.2 and verified that the icon is display in the about dialog and clicking the link opens the Swift website in the default browser. Change-Id: If13e03bfa976354aeba1de9be4bcb1edabaa5403
2017-03-15Add automatic man generation to the Linux build for SwiftJoanna Hulboj
Test-Information: Tested under CentOS. Run script to generate a package under Linux, swift-im.1 and swiften-config.1 are generated. Change-Id: Idf0b159a94e05349b196f019bbc91127095a1d16
2017-03-15Do no emit onXMPPDataRead when the session is terminatedTobias Markmann
On a bosh error BOSHSessionStream, posts an event to the event loop that closes the XMPP stream. If onXMPPDataRead is emitted, that data is handled before the close of the stream though, which can cause another BOSH request to be sent. Test-Information: Added a unit test verifying the behaviour. Wrote a custom python script replicating the original error and verified that Swift does not stay connected on a BOSH error with additional text data. Tested on macOS 10.12.3 with recent clang trunk. Change-Id: Ie90099afa0934707a6758b00706a65227ceb48b8