summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
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-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-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-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-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-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-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
2016-08-03Add support for signing the resulting MSI installer on WindowsTobias Markmann
Test-Information: Created a custom CA and added it as trusted to the system. Created a signing certificate and passed it to scons as described. The resulting installer does not show a red UAC dialog anymore during installation. Instead the publisher from the certificate is shown in a blue UAC dialog. Change-Id: Ie4043520f6d45ec2e7aad712441a928cb423b0de
2016-08-02Fix notice sometimes showing empty popup dialog on activationTobias Markmann
Test-Information: Tried editing a contact on a server prohibiting contact editing. Previously the first double-click on the notice showed an empty popup. Now the correct popup text is shown. Change-Id: I996cf5b654e866ec6dd3f5198b694ae564018695
2016-07-25Changing default avatar to a blue circled swiftTobias Markmann
The old default avatar does not work well with the new chat view design which uses circled avatars. This also uses the vector avatar internally in Swift and has Qt and the chat view engine scale it to the required size. Test-Information: Tested on OS X 10.11.5 with non-compact chat views and MUC conversations. Change-Id: I82580ecb91fc81f4fe9535aa9d3b214b720a40f3
2016-07-22Crop avatars to squares so they look better inside the chat viewTobias Markmann
Test-Information: Tested by clearing the avatar cache and joining MUC some larger MUC rooms. All but our current default avatar look much better. Change-Id: I515adbded1114632f41d6ee4eba6602b77dad975
2016-07-22Add button to changelog dialog to about dialogTobias Markmann
Test-Information: Tested with Qt 5.5.1 on OS X 10.11.5 and Qt 5.3.2 on Debian 8.5. Change-Id: I727bca574ec1433df01bc68e5da0c7678fdb9915
2016-07-19Fix Swift UI sometimes getting stuck during loginTobias Markmann
In some cases during the login the helper QEventLoop in QtWebKitChatView takes over the event handling of the application and never retirms from it. Qt events are still handled in this case but any other new events are only queued up. The user would still have a responsible UI, but all network traffic or other non-Qt events would not be handled correctly. Test-Information: Without the patch Swift would get stuck during login in 5 of 10 runs. With this patch it did not get stuck anymore in 10 runs. Tested on OS X 10.11.5 with Qt 5.5.1. Change-Id: Ie17a8e01cc9c52cc784e223974ec21e604dcccab
2016-07-12Improved logo-shaded-text.svg and its use in login windowTobias Markmann
The old version cut off the blurred shade at the top and bottom. The new version has a square page and does not cut off the blurred shade of the Swift logo used in the image. Furthermore rendered the SVG to a 192x192 PNG, the exact dimensions used in the UI, using the `inkscape -e logo-shaded-text.png -w 192 -h 192 -z logo-shaded-text.svg` command. This change also works around QTBUG-46846. Test-Information: Verified that the login window of the UI looks nearly the same as before. It is a bit smaller since the blurred shade is not cut off anymore. Change-Id: Iee56d2a892572f45db7f93a2429455fd9d603eb6
2016-07-12Bring background enter room dialog to front if it existsTobias Markmann
This is the same approach taken by the vCard dialog. Test-Information: Previously the open 'Enter Room…' dialog would stay in background when selecting the 'Enter Room…' menu item. Now it will be raised to top. Tested on OS X 10.11.5 and Qt 5.5.1. Change-Id: I8ef78ceea328206306d25085feeb3f5b039821d9
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-30Add initial support for code signing on OS XTobias Markmann
See DEVELOPMENT.md for instructions. Test-Information: Tested using a self-signed code signing certificate created using Keychain Access.app. Compared the output of 'codesign -vvv -d' on Swift.app with preinstall apps. The output looks much the same except for the signing authority. Change-Id: Idbb3209ad917091c371ced61ec8a77e3e5d18884
2016-06-27Fix cleanup of date_facet instanceTobias Markmann
The C++ standard library takes ownership of the date_facet instance passed into the locale object ctor. Test-Information: Without this fix Swift would crash on exit when build with ASAN. With this fix it does not anymore on OS X 10.11.5. Change-Id: I46a87d9d6840408556722feeebe28a13e0d351b2
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-06-15Load and set Lato font as UI font for QtTobias Markmann
Test-Information: Tested on OS X 10.11.5 with Qt 5.4.2 and Debian 8.5 with Qt 5.3.2. Change-Id: I9a60fc4b5556379576fdddc12a697cb71597e241
2016-06-14Enable trellis support by defaultTobias Markmann
Test-Information: Verified that trellis options are available after login and working as expected on OS X 10.11.5 with Qt 5.4.2. Change-Id: Ib94129abc07c38d38c932493d1c74260e894a4f3
2016-05-27Allow to invite multiple contacts to a chat room at onceTobias Markmann
There was a bug that prevented to drag multiple contacts in the invite dialog list. The restriction for impromptu conversation rooms is now only applied if no local MUC service is found and the dialog is a 'Chat to Users' dialog. Test-Information: Tested that you can now drag multiple contacts into the invite dialog. Tested on OS X 10.11.4 with Qt 5.4.2. Change-Id: I50b0bb191570f32cfa054e415c993b1fb57073ad
2016-05-27Add presence to manually added contacts in 'Start Chat…' dialogTobias Markmann
This fixes a bug where manually added contacts, i.e. the user entered the address and hit the 'Add to list' button, were missing the correct presence in the contacts list in the 'Start Chat…" dialog. Test-Information: Tested on OS X 10.11.5 with Qt 5.4.2. Tested adding a roster member via the drop down suggestion and via manually entering the JID and clicking the 'Add to list' button. In both cases the correct presence was shown. Added a test verifying that empty JIDS are invalid. Change-Id: Idb18e4ad2b5c0afb48461796f64e8f11f02a24fd
2016-05-27Fix QtSuggestingJIDInput popup behavior on OS XTobias Markmann
QtSuggestingJIDInput is used by the 'Start Chat…' dialog and other dialogs. Keyboard usage of the widget works fine. Clicking on a suggested item via touchpad/mouse will correctly select the item. However, when the popup is hidden, the dialog containing the QtSuggestingJIDInput is not the top window but will be in the background instead. With the workaround, the dialog will be on top of the window hierarchy if a suggested item is selected by click. Test-Information: Tested that this workaround is not required on Windows 8 and Ubuntu 16.04. Tested this workaround works on OS X 10.11.5 with Qt 5.4.2. Change-Id: I77f0aa5f92268da1867f61d9f6e1fbc66a724c17
2016-05-26Bring existing dialog to front on open of "Start Chat…" dialogTobias Markmann
Test-Information: Tested on OS X 10.11.5 with Qt 5.4.2. Change-Id: Ic751fec01cfe6417bb5db17364f5eb69a2037895
2016-05-26Fix setting recent search server when doing a local user searchTobias Markmann
Test-Information: Builds on OS X 10.11.5. Tested that the recent search server field in the 'Start Chat…" dialog is not set, if you search locally. Searching on remote servers still adds the server to the recent search server list. Change-Id: I62e21339b055ec826f450b8bfb2c662d1df5e84b
2016-04-26Make remaining UI strings in QtHighlightEditor translatableTobias Markmann
Test-Information: Builds on OS X 10.11.4 with Qt 5.4.2 and the short description still shows the strings in the UI. Checked that update_translations=1 shows the newly translatable strings. Change-Id: I7acc1058fbb07a5f1ed630c5cc95493f2bc79770
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-25Fix detection of vertical scroll bar position in chat viewsTobias Markmann
Chat views are expected to remember the scroll position. If the user scrolled all the way down, the view should keep scrolled all the way down, even if the windows is resized, new messages are added or the user enters a multi line message in the message input box. Qt WebKit only provides reliable scroll position updates in their web environment. This requires to have scroll changes call a JS hook that calls our C++ signal. Test-Information: Tested and verified the following cases for correct behavior: * entering a multi line message keeping the view scrolled down * resizing the window and keeping it scrolled down * receiving messages and the view keeps being scrolled down * verified that view does not scroll down if it is not yet on resize of the window, entering multi line messages, and receiving new messages Change-Id: I579a07d0b073c34e7a46b0fde1bc09f3da08d5da
2016-04-14Fix delayed login/roster resize on window resize in netbook modeTobias Markmann
If you resize the window in netbook mode, the splitter inside only resizes to the new geometry if it is clicked or moved. This is due to overriding resizeEvent hook of QSplitter in QtSingleWindow but not notifying QSplitter's resizeEvent hook in the new method. Test-Information: Tested on OS X 10.11.4 with Qt 5.4.2. Opened Swift in netbook mode and resize the window. The login screen is resized as the window is resized. The login screen used to only resize if you moved the splitter. Change-Id: I7715e1cdcb4c0e672e233a9f76fad3ef5fe70d25
2016-04-08Fix code in response to compiler warnings by clangTobias Markmann
Test-Information: Builds on OS X 10.11.4 with Apple clang and clang master. Change-Id: I012577e29c6fcf2fb452b4f13912aaeb37250fb5
2016-04-06Fix include case typoTobias Markmann
Test-Information: Builds on Debian 8.4 and unit tests pass. Change-Id: I154f70606de33b57c8dd4a5d9431a14f537ad50f
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-04Modernize code to use range based for loops using clang-tidyTobias Markmann
Run 'clang-tidy -fix -checks=modernize-loop-convert' 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: I65b99e0978cfab8ca6de2a3e5342e7a81416c12c
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-29Refactored keyword highlightingTobias Markmann
This commit changes the ChatWindow/ChatView APIs to not pass highlights actions as additional parameters but instead they are now part of the ChatWindow::ChatMessage and its parts. This allows the controllers to do highlighting in one single place and play sound actions on the highlighted message in a single place. On a highlighted message only unique sounds are played and they are played in sequence of the rules that matched the message. Test-Information: Adjusted the existing unit tests accordingly. Added unit tests that check reduplication of highlight action sounds and that the sound actions are emitted correctly. Manually verified that highlight sound actions with and without duplicated sounds are audible on OS X 10.11.3. Change-Id: I68c88e0d285d79d87b2997ed29d92b140480b394