summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-11-14Fix various uses of numeric_cast in UI bitsEdwin Mons
Apart from QtUI bits, this addresses use of uncaught numeric cast exceptions in message count handling, the spell parser and the MacOS idle querier. The WindowsServicePrincipalName logic previously had an issue where using ports from 32768 onwards would result in a bad_numeric_cast exception to be thrown. This has been addressed at the same time as the uncaught exceptions, and all ports should work now. The tags file has been extended to ignore more files. Change-Id: I73ced35f06517bee5c58f990d20fa437b40ac84e
2017-10-02Fix Code According to New clang warning (-Wobjc-messaging-id)Tobias Markmann
Test-Information: Builds and test pass on macOS 10.13 with clang-trunk. Change-Id: I7a515a003602a983681f85374a8a77dc953f533d
2017-06-26Use size_t instead of int in SpellParser::PositionPairTobias Markmann
Use of int required a lot of casts when using the indices with std::string methods. Furthermore code used -1 as error code, which should have used std::optional for invalid PoistionPair instnaces. Test-Information: All tests pass on Debian Stretch with clang-3.9. Change-Id: Ic5c44ed606deb58b6123d654f25fc50f047dfbc8
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-02-24Fix sorting of emoji categories in the emoji dialogTobias Markmann
This also changes the minimal height of the emoji dialog to hold about 8 emoji rows. Test-Information: Tested on macOS 10.12.3 with Qt 5.7.1 that the categories are sorted in a more sensible manner and that the dialog at least shows about 8 emoji rows. Change-Id: I8c5518f8d552a581d5073b5f155425580f72938a
2017-02-24Remove ‘regional’ category from emoji dialogTobias Markmann
Test-Information: Build and ran on macOS 10.12.3 with Qt 5.7.1 and verified the ‘regional’ category was gone from the dialog. Change-Id: I664d5b8600037b42453c12ea0f180d0acd29361f
2017-02-22Improve Swift about window regarding auto update UXTobias Markmann
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
2017-02-20New Unicode Emojis DialogThibault Meunier
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
2016-11-23Migrate remaining Swiften/Base/foreach.h use to range-based for loopTobias Markmann
Test-Information: Build on macOS 10.12.1 and all tests pass. Change-Id: Iedaa3fa7e7672c77909fd0568bf30e9393cb87e0
2016-11-17Fix version strings generated by GenerateAppCastFeeds.pyTobias Markmann
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
2016-11-11Add update channel configuration dialog to the about windowTobias Markmann
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
2016-10-26Exclude the Notification Center code from iOS buildsGurmeen Bindra
Test-information: Build from Xcode for iOS works. Change-Id: I77f5333839d42dcb4dd4c0e62ffc0de6b5cb4131
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-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-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-07-12Remove Snarl notification supportTobias Markmann
This removes Snarl from 3rdParty, our adapter to it in SwifTools and the integration in Swift UI. Test-Information: Builds and installer still work on Windows 8. Standard system tray balloon notifications still work. Change-Id: Id580642932eac260c79eaf2343a94ec9d5606f11
2016-06-23Improve Linux spell checking UX and enable it by defaultTobias Markmann
This removes support for user dictionaries for now. The new UI shows a list human readable languages (in their native spelling) where the user can select one to use for spell checking. Updated our InstallSwiftDependencies.sh based on the package names in their repositories. Test-Information: Tested on Ubuntu 16.04 with Hunspell and tested it still builds on OS X 10.11.4. Did not test InstallSwiftDependencies.sh. Change-Id: I24fc705b1495f7c39a8da149cbd7116e41609998
2016-06-23Change minidump filename format to include version and dateTobias Markmann
The new format is VERSION_DATE_UUID.dmp. Included the diff for the Breakpad modification. Test-Information: Tested by adding crashing code and verified the filename of the created minidump file on Windows 8 with VS 2013. Change-Id: I963e7913fadf4787742439da590e12e121ef3435
2016-05-25Remove unnecessary include of iostream headerTobias Markmann
Move std::cout/cerr logging to SWIFT_LOG. Test-Information: Builds and all tests pass on OS X 10.11.5. Change-Id: I0a0c24654a8b3abf3244a79fd6d970eee90559d0
2016-04-28Change remaining std::auto_ptr usage to std::unique_ptrTobias Markmann
Test-Information: Builds and tests pass on Ubuntu 16.04. Change-Id: If8da50619b0e029437b3b9d6b146f2ed49b5bf60
2016-04-25Convert hard tabs to four spaces in all our SConscript/*.py filesTobias Markmann
Test-Information: Test that it still builds and unit test pass on OS X 10.11.4. Change-Id: I2eb4a0b707991aee553db36a8cd1ae28b813acab
2016-04-05Migrate to Boost.Signals2 from Boost.SignalsTobias Markmann
Boost.Signals was deprecated and is not improved further. This patch removes Boost.Signals from 3rdParty and adds Boost.Signals2 and its dependencies. Also removed the Qt signals compatibility file Swiften/Base/boost_bsignals.h. Test-Information: Build and ran unit tests on OS X 10.11.4. Confirmed successful login using Swift client. Change-Id: Ie6e3b2d15aac2462cda95401582f5287a479fb54
2016-04-04Apply automated clang-tidy fixes and add missing includesTobias Markmann
Test-Information: Builds on OS X 10.11.4 and unit tests pass. Change-Id: I8775e8d1e3addbc88b220c1cc618637f706daca2
2016-04-04Modernize code to use C++11 shared_ptr instead of Boost'sTobias Markmann
This change was done by applying the following 'gsed' replacement calls to all source files: 's/\#include <boost\/shared_ptr\.hpp>/\#include <memory>/g' 's/\#include <boost\/enable_shared_from_this\.hpp>/\#include <memory>/g' 's/\#include <boost\/smart_ptr\/make_shared\.hpp>/\#include <memory>/g' 's/\#include <boost\/make_shared\.hpp>/\#include <memory>/g' 's/\#include <boost\/weak_ptr\.hpp>/\#include <memory>/g' 's/boost::make_shared/std::make_shared/g' 's/boost::dynamic_pointer_cast/std::dynamic_pointer_cast/g' 's/boost::shared_ptr/std::shared_ptr/g' 's/boost::weak_ptr/std::weak_ptr/g' 's/boost::enable_shared_from_this/std::enable_shared_from_this/g' The remaining issues have been fixed manually. Test-Information: Code builds on OS X 10.11.4 and unit tests pass. Change-Id: Ia7ae34eab869fb9ad6387a1348426b71ae4acd5f
2016-04-01Modernize code to use C++11 nullptr using clang-tidyTobias Markmann
Run 'clang-tidy -fix -checks=modernize-use-nullptr' on all source code files on OS X. This does not modernize platform specific code on Linux and Windows Test-Information: Code builds and unit tests pass on OS X 10.11.4. Change-Id: Ic43ffeb1b76c1a933a55af03db3c54977f5f60dd
2016-03-31Convert tabs to 4 spaces for all source filesTobias Markmann
Removed trailing spaces and whitespace on empty lines in the process. Changed CheckTabs.py tool to disallow hard tabs in source files. Test-Information: Manually checked 30 random files that the conversion worked as expected. Change-Id: I874f99d617bd3d2bb55f02d58f22f58f9b094480
2016-03-30Apply consistent #include grouping and sorting styleTobias Markmann
Changed "" style includes to <> style. Test-Information: Build with Clang 3.9.0 and ran all tests on OS X 10.11.4. Change-Id: Ic05e53f2e5dba39cc1307b116fc5f17b62ab9eb8
2016-03-15Explicitly convert between nullable and non-nullable on OS XTobias Markmann
Clang was complaining about implicit conversions between nullable and non-nullable NSString pointers. Adjusted our std::string -> NSString* conversion utilities to check for nil and return an empty std::string in that case. Replaced uses of [NSString stringWithUTF8String] with our STD2NSSTRING macro. Turned std::string <-> NSString* conversion macros into functions. Test-Information: Builds without the warning on OS X 10.11.3 and Swift runs without issues. Change-Id: I949f2f3332018391aead58ef362764f4b7955b01
2016-02-12Fix bug in OS X Notification Center backend on empty callbackTobias Markmann
Checked Growl and Snarl backends which both already do the check for empty callbacks. Test-Information: Tested clicking on an disconnect notification of Swift on OS X 10.11.3 which previously caused a crash. Now it does not crash anymore in this case. Change-Id: I7045ab22a0322cc7a50761640a9b89ba2302acef
2016-01-22Add missing Timer related cleanup codeTobias Markmann
This commit adds explicit code to stop timers which are connected to objects that are about to be deleted from memory. Test-Information: ./scons test=system passes on OS X 10.11.3. Change-Id: I139314f3a223e3dc63b78b96be17d3ae53cd3de3
2015-11-06Make methods non-virtual that are not overridden by subclassTobias Markmann
These cases have been uncovered by Clang Analyzer as they were called during some constructor. However, there is no reason for them being virtual. They are never overridden in a derived class. Test-Information: Unit tests still pass on OS X 10.10.5. Change-Id: I90b5396a0dba971d9150c35f9107733f7f4637cd
2015-11-06Fix potential memory leaks in Cocoa API usageTobias Markmann
These errors were reported by Clang Analyzer. Test-Information: Verified that behavior is still as expected and Clang Analyzer does not report the warnings anymore. Change-Id: I149d75241f7680a6d2f2b6b710dd38d1ed81a209
2015-10-30Change OS X spell checker to non-deprecated APITobias Markmann
Test-Information: Verified that there are still suggestions by comparing misspelled test phrases in Swift without this change and Swift with this change. Change-Id: Ice11af65028a96c86b1b5cc57ddad8eeda1ccf76
2015-10-30Remove Boost workaround for OS X headersTobias Markmann
Older versions of OS X define the same symbol as Boost does. The workaround, defining __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES as 0 worked around this issue, however __ prefixed defines are considered private and cause the warning "macro name is a reserved identifier [-Wreserved-id-macro]". Test-Information: Builds and unit tests pass on OS X 10.10.5. Change-Id: I489ec201dc31fb4e43336da690c7d348a7d0d9ca
2015-10-16Only show default notifications in OS X Notification CenterTobias Markmann
Test-Information: Verified behavior on OS X 10.10.5 with two accounts, presence changes and message exchanges. Change-Id: I79b4b8a92076dfb4c2d65f91bfb2f808cf7821d5
2015-09-03Initial support for OS X Notification CenterTobias Markmann
This implements basic support for OS X Notification Center notifications with simple banner notifications showing type, contact and message/presence information. A click on the notification opens the chat view to the contact. The Notification Center backend will be used on OS X if the Growl notification backend is not used. This code requires OS X version 10.8 or later. Test-Information: Tested presence and message notifications between multiple Swift accounts and instances on OS X 10.9.5. Change-Id: I7b9e2132cab25e086e0912191562cad8f4cbae38
2014-12-15Update Copyright In SwifToolsKevin Smith
Change-Id: Ic5a0cd2d65caac21a748a9a6996a596ee80f5337
2014-10-31Fix possible NULL pointer dereference in spell checker.Tobias Markmann
Test-Information: Not manually tested. Change-Id: I1bd6d73388a95f6438606ff44011db849c024225
2014-10-20Update Boost in 3rdParty to version 1.56.0.Tobias Markmann
This updates Boost in our 3rdParty directory to version 1.56.0. Updated our update.sh script to stop on error. Changed error reporting in SwiftTools/CrashReporter.cpp to SWIFT_LOG due to missing include of <iostream> with newer Boost. Change-Id: I4b35c77de951333979a524097f35f5f83d325edc
2014-10-01Port many of Isode's local fixes upstreamKevin Smith
Includes fixes to: Build with new Visual Studio and Boost Avoid error caused when Avahi is present but Qt is not Make declaration of XMPPRosterImpl::addContact consistent with implementation Includes enhancements to: Allow user-configurable mt.exe Allow splitting openssl paths Allow disabling gconf lookup Make idn support optional Allow disabling various library detections Remove use of non-Python2.4 features in sconscripts Test-Information: Builds Change-Id: Iee91ee80291a8bdf87cc169c915e4dad1cc1055b
2014-05-18Fix spell check leaks and errorsRemko Tronçon
Change-Id: Ied0ac4abb21ef1720411fdbc61e7a687eee3afd1
2013-08-16Merge branch 'swift-2.x'Remko Tronçon
Change-Id: I36e82dfe1ec492df719bcc85e5549fb4013a6723
2013-08-16Fix Cocoa-Boost conflict.Remko Tronçon
This one only seems to appear when using CLang. Change-Id: Ib12fbeb3da0dfb54aef0613c7b9eba577654cd6a
2013-08-15Fixed warnings in SpellParser.Remko Tronçon
Change-Id: I8f44bab2f4d32e955e38e6e355824ca513b6a930
2013-08-15Getting rid of "-Wobjc-interface-ivars" warnings from clang.Tobias Markmann
Move instance variables to implementation because they are deprecated to have in the interface. Requires 'Modern' obj-c runtime. Change-Id: I60d693b7966e08ccc003818ab51ea3633c90ae17 License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
2013-08-14Build OSX spell checker only with native target.Tobias Markmann
Change-Id: Ibe2cbb2e9b0f87e073cc821a47135731a4cf7e76 License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details.
2013-08-01Refactor chat messages so parsing of links/emoticons happens in controllers.Kevin Smith
Change-Id: I07256f23ffbb6520f5063bdfbed9111946c46746
2013-05-17Fixed unicode path handling.Remko Tronçon
- Use boost::filesystem::path consistently for referring to files. - Use boost::filesystem streams for I/O, such that paths are always handled correctly. - Use stringToPath and pathToString for conversion between strings and boost::filesystem::path, to ensure we have consistent unicode handling across platforms and environments. The default constructor and string conversion uses platform-dependent encoding, depending on the global locale set in the application, which causes problems. So, unless you are in platform dependent code, the default constructor and string() function should not be used. When constructing paths from other paths (e.g. using operator/), also use stringToPath (instead of string arguments) if the path can contain unicode characters. Change-Id: If286bd9e71c8414afc0b24ba67e26ab7608ef6ea