summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-10-21Fix data-race in DummyEventLoop::processEvents()Tobias Markmann
Previously DummyEventLoop::processEvents() wrote to the hasEvents_ member without having locked the corresponding mutex. Changed code to use C++11 atomics instead. Test-Information: All unit tests pass on macOS 10.12. Change-Id: I13aa1566d55b7c0098f927e9c8061547f7056f5d
2016-10-21Use unique_ptr instead of manual deleteTobias Markmann
Changed the code to use range-based for loop were possible. Test-Information: Builds and unit tests pass on macOS 10.12 with Qt 5.5.1. Change-Id: I118aa4ac5887544a1b2d8fb6ee2910b44447467a
2016-10-20Add code-signing of macOS releases to Swift changelogsTobias Markmann
Test-Information: None. Change-Id: I2514d83fdec851db9874f2f0160493435e7240f8
2016-10-20Fix focus rect vanishing in trellis mode after sending a messageTobias Markmann
QtChatWindow was setting and resetting the Qt stylesheet for the chat input for message correction UI. This conflicted with the focus rectangle styling. Moved correction styling inside QtTextEdit which can handle focus rectangle and correction background styling together without overriding each other. On OS X, the native focus rectangle drawing, i.e. setting the Qt::WA_MacShowFocusRect widget attribute on the input, can not be used anymore, as it conflicts with setting the stylesheet for the correction background color. Test-Information: Tested message correction, trellis and security label UI on OS X 10.11.6 and Windows 8 with Qt 5.5.1. Change-Id: I0b771a2d47d5437512e870a9887b0b6e7262b359
2016-10-19Fix presence handling of own contact in rosterTobias Markmann
Previously, presence from your own full JID was not applied to your own roster entry. With this commit all presence changes are applied. Test-Information: Added unit test verifying new behavior. All unit tests pass on OS X 10.11.6. Change-Id: Ib93f487329aa1eec0e876857541780ff44b8cac9
2016-10-19Always add a fields table member in FormConvertorEdwin Mons
The fields member of the forms generated by FormConvertor is used for lookups in the __index metafunction. If a form is parsed with no fields (and possibly no items), there wouldn't be a member 'fields', causing another __index lookup, triggering infinite recursion. There will now always be a fields array, which may be empty. Sluift/Tests/FormTest.lua has been updated to test against an empty form. Test-Information: Updated FormTest.lua works without issues. Change-Id: Idee98f23bf42e1213ca3d03707f908ed5317dad6
2016-10-19Scale QWebView DPI resolution to match desktop DPI resolutionTobias Markmann
Test-Information: Tested that at 1em scaling, the default, the main text in the chat style has the same height as the nicknames in the roster. Tested with Qt 5.4.2 on macOS 10.12 on a retina system, with Qt 5.4.2 on macOS 10.12 on a non-retina system, and Windows 8 with Qt 5.7.0 with QtWebKit Technology Preview 4. Change-Id: I10701c411d9f787bf497eb6aab208a0f3fda621c
2016-10-18Auto extend copyright year in app bundles and fix copyrightTobias Markmann
Test-Information: Build Swift and verified that Info.plist inside Swift.app has the updated year and copyright on macOS 10.12. Change-Id: I84f921edf0b555a102dfb207d8fc3ee5f5f59eb9
2016-10-05Add missing sensible asserts to testing and QtMainWindowTobias Markmann
Test-Information: Unit tests pass in ASAN-enabled build on macOS 10.12. Change-Id: I7a8dae7d06e5e1d3dc9391f9c9a342df384d90fc
2016-10-04Handle boost::bad_lexical_cast exception in StatusCacheTobias Markmann
Modernised code to C++11 lambdas and range-based for loops, and cleaned up includes in the process. Test-Information: All unit tests pass with ASAN-enabled built on macOS 10.12. Verified recent status list is still loaded in Swift UI. Change-Id: I44fe09a079cfae15ed9fb2860e7352badedf6c1c
2016-09-30Change custom memory copy loop to std::memcpyTobias Markmann
Test-Information: Swift builds with test=all on macOS 10.12 and all tests pass. Change-Id: I9d7e8c49e65ac272a7ee672a95da5e24609d0a22
2016-09-30Add missing error check in HostAddress::toStringTobias Markmann
In the process converted try/catch use to Boost's error code for more explicit error checking and added log output. Test-Information: Swift builds with test=all on macOS 10.12 and all tests pass. Change-Id: I6e465354dbb38c7178b0406b9a544ebd3be62ddd
2016-09-30Only scale avatars that are not embedded Qt resourcesTobias Markmann
The default avatar is a embedded SVG which doesn't need to be scaled specifically. Test-Information: Builds on macOS 10.12 with Qt 5.6.1 and tooltip avatars are still shown without an error message being logged. Change-Id: I5aff38856e97dee9133b1daf9039cabc063dc01c
2016-09-29Fix uninitialised class membersTobias Markmann
Initialised previously uninitialised class members. Changed some raw pointers to std::unique_ptr for clearer and automatically initialised code. Test-Information: Builds on macOS 10.12 and unit tests pass in ASAN-enabled build. Change-Id: I7900fe6131119c228ca92c79c0ee8125137f2e48
2016-09-29Explicitly handle all possible SecTrustResultType enum valuesTobias Markmann
Test-Information: Unit tests pass on macOS 10.12. Change-Id: I32f884e2525b6200e5fb3f04d58f77304d16daa0
2016-09-29Fix potential resource leaksTobias Markmann
IDGenerator was missing the virtual keyword on its method which is reimplemented by SimpleIDGenerator. Some other classes were missing destructors or virtual destructors. Test-Information: Builds on macOS 10.12 with Qt 5.5.1, all unit tests pass. Change-Id: I482bc249578d38a922256d1fa5241515ce45d0c0
2016-09-29Support building against newer QtWebKit on macOSTobias Markmann
Test-Information: Tested with official Qt/QtWebKit 5.4.2 and Qt/QtWebKit 5.5.1. Tested with official Qt 5.6.1 and QtWebKit from https://github.com/annulen/webkit . Change-Id: I2b8258faec71296591095e998e61da55ba0ca67c
2016-09-27Add setting to disable automatic software updatesTobias Markmann
The automatic software update feature is enabled by default. Test-Information: Created system-settings.xml disabling the automatic software update feature and verified no Sparkle log output is produced, showing Sparkle is not initialised and run. Tested on macOS 10.12 with Qt 5.5.1. Change-Id: Ief1f4030505a2a3961ac18cd4774863584489727
2016-09-26Use const std::unique_ptr for pimpl idiom usageTobias Markmann
All our pimpl idiom usage used std::shared_ptr due to being written in C++03. Now we use C++11 and const std::unique_ptr is more sensible. Test-Information: Builds on macOS 10.12 and unit tests pass. Change-Id: I1b9b3fbb22e337d53ae71e5a5e03118998cc3376
2016-09-26Update and tidy up Sparkle software update supportTobias Markmann
Sparkle is configured to do silent automatic background updates based on the provide appcast feed. When a new update was downloaded and is ready to be installed Swift notifies the user that they can restart to take advantage of the newly available version. Test-Information: Setup a custom appcast feed with a newer Swift dev release. Tested updating with Sparkle 1.14.0 binary release using DSA keys and signatures. Did not test Sparkle update with code signed Swift builds. Tested on macOS 10.12. Change-Id: Idad461ec53963c80990e51a502cb6e28bc7b6b4e
2016-09-21Fix crash in Sluift CommandConvertorEdwin Mons
If a command table contained actions or notes, an extraneous lua_pushnil happened, leading to a crash. Test-Information: Rendering a command using to_xml with actions or notes now works as expected on OS X 10.11 Change-Id: Ic99b2546ac261edf6b52b92e63701f397fc6201a
2016-09-08Improve visibility of currently focused chat input in trellis modeTobias Markmann
The default focus indicator on the text input fields in chat windows becomes harder to notice in trellis mode as there are many similar looking chat windows visible at the same time. This change increases the visibility of the focus indication border on Windows and will enable the standard blue focus halo on OS X for focused chat inputs in trellis mode. Test-Information: Tested with Qt 5.5.1 on OS X 10.11.6 and Qt 5.5.1 on Windows 8. Change-Id: If9fe9edea6fef292bb99eabbb125c7a9ec20dcc2
2016-09-07Add ability to filter results in "Search Room" dialogTobias Markmann
This is implemented with the help of an implementation of QSortFilterProxyModel which filters room names based on a user search string. Test-Information: Tested on OS X 10.11.6 with Qt 5.5.1. Tested UX with different MUC services and search strings. Change-Id: I88085d089493008b2197a4aeb45d8c4d75724b9c
2016-09-07Explicitly set layout direction based on QT_LAYOUT_DIRECTIONTobias Markmann
This is supposed to happen automatically according to Qt documentation but it does not. Qt also changed the context of QT_LAYOUT_DIRECTION from Application to QGuiApplication. This commit adjusts our translations accordingly. Test-Information: Tested with Qt 5.4.2 and Qt 5.5.1 on OS X 10.11.6 with German and Hebrew translations. Change-Id: I0b6a8bf35487e95f5186fd4fa09d4dcb92ba0c01
2016-09-05Add simple versioning to QtScaledAvatarCacheTobias Markmann
The cache for each version is stored in a dedicated directory that exists next to the raw avatar images. This allows running different Swift versions which use different versions of the QtScaledAvatarCache. Test-Information: Tested on OS X 10.11.6 with Qt 5.5.1 and Windows 8 with Qt 5.5.1. Verified that the avatar paths changed to the new versioned cache path in the web views. Change-Id: I12cb46c4d6750ae7ad82c719eef290f721d1d131
2016-09-01Remove translator's pseudonymKevin Smith
Change-Id: Ic3d735c39fa278eb8e168eb7f0cd140ecb445b5c
2016-08-26Improve API clarity of MUCSearchItem::setParentTobias Markmann
Change MUCSearchItem::setParent to take weak_ptr over shared_ptr and converting it to weak_ptr in the method. Test-Information: Builds on OS X 10.11.6. Tested that various MUC room searches still work. Change-Id: I26d62861c99957759127c18a629bdda3635012c7
2016-08-25Alphabetically sort MUC search resultTobias Markmann
This also changes the classes around MUCSearchModel to C++11 smart pointer based memory management. Test-Information: Verified that dtors of MUCSearch*Items are called when old search results are replaced by new search results. This was not the case previously. All unit tests and manual testing with an ASAN enabled build succeeded. Change-Id: I84d62f3b86138728401b98d3774f47c72fdf9a4c
2016-08-24Add script to test Swift compilation across Linux distributionsTobias Markmann
This adds the VagrantCrossDistributionTest.py script. The script allows testing the BuildTools/InstallSwiftDependencies.sh script, Swift compilation and the unit tests across different OSs. It is based on Vagrant, used publicly available VM boxes of different Linux distributions, uses Ansible to prepare the environment for compilation and finally installs the build dependencies, builds Swift and runs the unit tests. Test-Information: Ran the script on OS X 10.11.6 with Vagrant 1.8.5. It successfully build Swift and ran the tests on Ubuntu 16.04, Ubuntu 15.04, Debian 8.5, OpenSUSE Leap 42.1 and Fedora 24. Change-Id: I78e196f1a97a4fe2b5c9224f4ba19f6c7bdee03a
2016-08-24Fixed to InstallSwiftDependencies.shTobias Markmann
Added ability to pass additional options to executed package management commands. Test-Information: Tested InstallSwiftDependencies.sh and successful compilation of Swift on Ubuntu 16.04, Ubuntu 15.04, Debian 8.5, OpenSUSE Leap 42.1 and Fedora 24. Change-Id: I36e14cfa6ce1a05edb29ea61cb713f66b0c95943
2016-08-24Use SSL_CTX_set_default_verify_paths to set trusted CAs for OpenSSLTobias Markmann
This fixes setup of trusted CAs on Fedora. Test-Information: Tested successful login to two different hosts with different CAs. Previously the there was no certificate warning on Debian 8 and a certificate warning on Fedora 24. With this patch there is no certificate warning anymore on Debian 8 and Fedora 24. Change-Id: I70e71eb9734f2012bcd5c4b784bab47917b44234
2016-08-24Improve readability of message receipt iconsTobias Markmann
This changes the icons for delivery success and delivery failure to vector graphics in SVG format. Added a slight white circle around the graphics for better readability on backgrounds with low contrast. Test-Information: Tested with Qt 5.4.2 and Qt 5.5.1 on OS X 10.11.6 on retina and non-retina systems. Noticeable better rendering due to SVG over PNG. Noticeable but not attracting attention white circle. Change-Id: I3c9be99854a300a4e40161a74964514aa47d292a
2016-08-23Only use Lato font for rosters and the chat viewTobias Markmann
This sets the font family to Lato for QtTreeWidgets. The font size or other settings are not changed. Test-Information: Tested on OS X 10.11.6 with Qt 5.5.1. Change-Id: I235ae1b4e98e903872cb21ce41eca5f08955042d
2016-08-23Improve chat view font handlingTobias Markmann
This changes the minimal font scaling to 0.8em, so that the font size in the chat view can be smaller than the font size in the rest of the application. At 1.0em the font in the chat view has the same size as the rest of the application. Also changed fixed pixel sizes in main.css to relative percentage sizes. Test-Information: Verified the font size in the chat view is the same as the font size for the contact lists at 1.0em on Windows and OS X with Qt 5.5.1. Change-Id: Ib625f11cea0aacd31edee27c2dc89df5e2cbd1c4
2016-08-23Do not require debug MSVC runtime for non optimized buildsTobias Markmann
This allows building Swift with debug symbols and the non-debug MSVC dynamic runtime. Test-Information: scons debug=1 optimize=0 and ./scons debug=1 optimize=1 both build and Swift runs in both configurations on Windows 8 with VS 2013. Change-Id: I47d75916963c4e64732c547bc7dfb322096d6189
2016-08-22Add shortcuts to change chat view font sizeTobias Markmann
Test-Information: Tested on OS X 10.11.6 with Qt 5.5.1. Change-Id: Ie96bae26e4001b3955007064313ae76cb47c0a7e
2016-08-22Set correct font family and font weight in lato.cssTobias Markmann
All fonts belong to the same font family, i.e. Late. Set the correct font weights obtained from the download page of the font website. Test-Information: Verified in Web Inspector that all fonts are loaded. Previously only two fonts were loaded. Change-Id: Ifa0a01058d80c1ddf3c500a28bd3e50823eb4246
2016-08-19Fix crash during trellis size change on WindowsTobias Markmann
Due to Windows focus handling, the handleApplicationFocusChanged method was called during the relayout process while the dynamic grid layout is not in a consistent state. With this change a call to handleApplicationFocusChanged will just be ignored during the relayout process when changing the layout. Now it also remembers the current active widget in the layout and activates it after the relayouting is done. Test-Information: The crash happened in a scenario where you had a few rows and columns and with many tabs randomly distributed, leaving some trellis cells without a widget. When changing back to a 1x1 grid in this situation it sometimes crashed. Now it does not anymore. Tested on Windows 8 with Qt 5.4.2. Change-Id: I829bac2ba050cf320e15ab48b49bbb9606a82831
2016-08-19Support dropping tabs on tab widgetsTobias Markmann
Previously users could only drag and drop tabs on other tab bars. With this change the user can simply drop the tab on another tab widgets. This works on all QtTabWidgets that have a QtDNDTabBar set, regardless of their number of child widgets. This works by forwarding dragEnverEvent() and dropEvent() calls on the QtTabWidget to the corresponding QtDNDTabBar. Tabs dropped on the tab widget instead of the tab bar are added at the end of the tab bar. Test-Information: Tested with Qt 5.5.1 on OS X 10.11.6 and Windows 7. Change-Id: Ie73e02de24472eab2d20a89c937fb6630b1ef7b8
2016-08-18Tweak grid selection dialog renderingTobias Markmann
Recent testing on Debian 8 showed two rendering issues: 1. CE_MenuBarItem in the selected state shows drawing artifacts for our drawing size with Debian's default style. 2. CE_SizeGrip shows drawing artifacts unless it's drawn at position (0,0). Removed size grip as the resizability signification is also provided by the description text. Cells are drawn as simple squares in the palette's highlight color. Test-Information: Verified that there are no artifacts and the dialog is usable on Debian 8, Windows 8 and OS X 10.11.6. Change-Id: I9eaf1e1fd34d035ec3dffcb0dc29efca40d6da24
2016-08-17Optionally create GPG signature for generated tarballTobias Markmann
If the gpg tool is found in the PATH and a key exists for Swift's signing identity, package.sh will generated a GPG signature (.asc) file alongside the tarball. Test-Information: Created a new GPG key with Swift's signing identity, ran package.sh script and correctly verified the generated signature with GPG. Tested both with and without --nosign flag. Tested on Debian 8.5 with GPG 1.4.18. Change-Id: I7e6c8b6a7c900b68e53ece97a59eba33a2de565d
2016-08-17Enable hunspell support for Debian packagesTobias Markmann
Test-Information: Verified that ./package.sh builds a Swift package with spellchecking support enabled on Debian 8. Change-Id: I31bce4be6a3cc35e9c9bbeca1ec146ec179a3bb8
2016-08-15Improve UX of grid selection dialogTobias Markmann
This fixes UI drawing quirks on Windows and improves the margins. It also adds a descriptive text on how to use the dialog. It adjusts the cursor position when changing the size via keyboard so switches between keyboard and mouse usage of the dialog are fluid. Test-Information: Verified usage and looks on Windows 8 with Qt 5.4.2 and on OS X 10.11.6 with Qt 5.5.1. Change-Id: I983656d7d08d49ac4914380ae42ed5ce49fcea12
2016-08-15Update InstallSwiftDependencies.shTobias Markmann
Sync dependencies for Debian and Ubuntu. Add development packages for QtSvg for all systems. Test-Information: None. Change-Id: Ied0f160942bbf43304cec119c8c0c4bf84c39050
2016-08-10Add missing includeKevin Smith
Test-Information: After this patch, experimental=1 builds on OS X (didn't previously) Change-Id: Ibaba190212f22332d776f3ecc00f692621da0815
2016-08-09Enable better date formatting in the UITobias Markmann
This adds the ability to provide more specific date formatting via the Translator interface. The default translator will use Boost's formatting capabilities. The QtTranslator use more localized and better readable formatting. Test-Information: Tested with Qt 5.5.1 on OS X 10.11.6. Checked that tooltips and presence text in new chat views show the new formatting. Change-Id: I90ff5ab8b31fb41f2dcbea2c40b8846c534c355f
2016-08-09Fix SVG rendering related packaging issuesTobias Markmann
Added Qt image format plugin packages and Qt SVG image format plugin to InstallSwiftDependencies.sh script and Debian packaging. Test-Information: Tested that macdeployqt now adds the image format plugin for SVG to the deployable app bundles. Change-Id: Id1ce265073cb8adb9315cb40da032ee11ea8761d
2016-08-09Add libQt5Svg5 to openSUSE dependenciesMichael Vetter
Needed for svg imageformat plugin. Test-Information: Build successfully on openSUSE Tumbleweed. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Change-Id: I0570d18022746d590cdd20350c3f1e87db9a7056
2016-08-05Add a debugging helper for serializing Swiften types to ostreamTobias Markmann
Test-Information: Tested on OS X 10.11.6. Change-Id: I9ecb60f5c3956d52fd42acd1b0d85725277efc51
2016-08-03Draw usernames in contact list in dark grayTobias Markmann
It now uses the same dark gray tone as the chat view uses for its text. Moved some constants to named variables for readability. Test-Information: Compact and non-compact contact lists, in the roster and MUC roster and the chats view all show the first line drawn in a dark gray instead of the hard black. Change-Id: Ief36fd4f27d30ace61f04d50e846db571ab84a4e