summaryrefslogtreecommitdiffstats
path: root/Swift
AgeCommit message (Collapse)Author
2015-11-06Making virtual calls in constructor of ChatControllers explicitTobias Markmann
Virtual calls in ctors/dtors are tricky as it is not clear what method is going to be called. By changing the code to call the explicit method it is obvious. This issue was raised by Clang Analyzer. This commit also adds missing SWIFTEN_OVERRIDE annotations. Test-Information: Still compiles, tests pass and Clang Analyzer warning so gone. Change-Id: I8096994277ad32933f992b9a11079c761d3ec619
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-04Fix swiften handling when client certificate is missingGurmeen Bindra
This patch prevents SWIFTEN from logging in if provided with a missing PKCS12 file. Before this patch, swiften would attempt a password based login using operator JID and pwd of the P12 file when the P12 file was missing. This patch fixes it by checking the certificate and not initialising session stream and connection if the certificate is empty. It emits a disconnect with client certificate load error. The string for certificate load error has been modified to indicate a file or password invalid. Test-information: Tested by doing a certificate based bind to an XMPP server. Removed the PKCS#12 file and checked that swift gave a certificate error instead of doing pwd connect Change-Id: I1869a13f1f7135b6606f7383cd4a0356ffd6931b
2015-10-30Add support for OS X Secure Transport TLS backendTobias Markmann
Added integration tests for certificate validation and revocation behavior checking. Test-Information: Tested client login over TLS against Prosody and M-Link. Verified client certificate authentication works against M-Link. Change-Id: I6ad870f17adbf279f3bac913a3076909308a0021
2015-10-30Only highlight text if a highlight color is setTobias Markmann
This commit has the default rule set the default color and changes HighlightAction::highlightText_ symbol to HighlightAction::highlightWholeMessage_ as it is more descriptive of its use. Test-Information: Tested highlighting with the default rule set, and one with a highlight color set for the chat rule. Change-Id: Ic638e6347bdf6623ab5959341486233494f005f0
2015-10-30Ignore DND drops of JIDs for contacts already in the conversationTobias Markmann
Swift allows dropping contacts from group chats or the roster on a chat window to invite them or start an impromptu chat. With this commit Swift will ignore drops which only contain JIDs that are already part of the conversation. Test-Information: Tested the described behavior with roster and room contact drags in anonymous and non-anonymous rooms. Change-Id: I2f06082ea4bc1140210f9f1a165bdf276a130273
2015-10-30Add missing disconnect() from signal in QtChatWindowTobias Markmann
Test-Information: Ran system unit tests on OS X 10.10.5. Change-Id: Ibd1caa23e06463c9992701590cc04ca1157d6421
2015-10-30Fix code in response to unused macro and private field warningsTobias Markmann
Test-Information: Build and tests pass successfully on OS X 10.10.5. Change-Id: I614586660796f9ef043156d09d998d39934a6eca
2015-10-30Fix Doxygen issuesTobias Markmann
Ran ./scons doc=1 with Doxygen 1.8.10 and fix all mentioned errors. Test-Information: Tested building of documentation on OS X 10.10.1 with Doxygen 1.8.10. Change-Id: I136054f457f9b3ff6b269f5ac32bf435450c017c
2015-10-30Change bare JID presence lookup code to ignore prioritiesTobias Markmann
Before presence handling code was handled by both, the ContactRosterItem in Swift and the PresenceOracle in Swiften. The ContactRosterItem also considered the presence priority for deciding what presence to show for a bare JID. With this code all full or bare JID presence requests are finally handled by the PresenceOracle. For bare JIDs it is looked up to a presence of one of the available resources of that JID regardless of the priorities. Test-Information: Adjusted tests according to above description and documentation in PresenceOracle. Change-Id: I972a4574f476cdf4d4b5593a035eb1c25ef2f8ba
2015-10-27Remove debuging symbols from packaged Swift.appTobias Markmann
Test-Information: Verified that the debug symbols are gone from the Swift.app bundle in the packaged DMG image. Change-Id: Iefb2a5b8eb18587f35143ff344336acb2e69fa1a
2015-10-27Change window icon to default avatar on WindowsTobias Markmann
The task bar in Windows 10 has black as the default color. The mainly black Swift application icon is hardly visible on black background. Thus this patch changes the Window icon on Windows to the default avatar icon in Swift. Test-Information: Tested on Windows 8 and Windows 10. Change-Id: I1965cf37ba5a714094cff24ab971c0fc9f9d7fe1
2015-10-16Mark removed contacts as unavailable in SwiftTobias Markmann
When removing a contact, a XMPP client will not receive an explicit unavailable presence stanza for the contact from the server. Because of that Swift used to show removed contacts still with their old presence in the Chats tab or the chat view. With this patch, the PresenceOracle will flush all known presence of a contact as soon as the JID is removed from the roster. An unavailable presence will stored under the removed bare JID and is emitted via the PresenceOracle::onPresenceChange signal. Test-Information: Added a unit test verifying this behavior. Tested the behavior with two scenarios: a) Account A and B adding each other and accepting the subscription request. Starting a chat between A and B. After removing B in A's account, B used to be shown as available in the chat view and the Chats tab. With this patch B is shown as unavailable. b) Account A and B adding each other and accepting the subscription request. A removing B, and B removing A. After A adds B again, B used to be shown with the old presence even before B accepted the subscription request. This behavior is also fixed with this patch, not showing B as online until B accepted the subscription request. Change-Id: Iba97d3bedd0ac962ea00b25a0d2ed6106ed55a55
2015-10-16Require a node-part for JIDs entered in 'Add contact…'-dialogTobias Markmann
While it is possible to add domain only JIDs to a user's roster this is rarely the intention of a user. This patch adds the requirement of a node-part for the address entered in the dialog and presents a warning if the node-part is missing. Test-Information: Verified that a warning triangle is shown if there is no node-part in the user entered address. Change-Id: I38dd0b34ca7cb19b38bb7e1c457f7a8a9ef84028
2015-10-16Add additional unit tests for Chat <-> JID bindingTobias Markmann
The recent commit 582ca91 changed the behavior the binding between chat sessions and the full JID of a chat contact. This commit adds additional unit tests verifying the behavior of implemented in 582ca91. This means a chat session binds to the full JID of an incoming message only if the message has a non-empty body text or is a 'typing' chat state notification. It also tests the rebind to another resource if a 'typing'-CSN or a body message is received from that resource. Test-Information: All unit tests pass on OS X 10.10.5. Change-Id: Id3f25d8a3ff78c407ed4b2a97bd421dc4aa58688
2015-10-16Do not require complete Qt installation when building SwiftenTobias Markmann
Previously, if a base installation of Qt was available but not all Qt modules required by Swift are available Scons would fail configuration. If a basic Qt installation is available SCons will try to configure Swift even if you only want to build Swiften. This commit changes the hard failure in Swift configuration to a warning. This allows only Swiften to be build. In addition, the warning now lists the Qt packages required by Swift. Test-Information: Tested on Arch Linux. Change-Id: I220ea61a7e4af849912e1fb1ae66cbecf5136d29
2015-10-15Only bind full JID to ChatController on non-empty or typing messagesTobias Markmann
With this commit a ChatController is only bound to a full JID of a contact, if the incoming message of the contact has a non-empty body or is a 'typing' chat state notification. This avoids random binding to an arbitrary resource of a contact, that has multiple online resources and responds with delivery receipts. Test-Information: Tested with a conversation of a one resource account (A) to a two resource account (B). Sending two messages to B, the first used to go to both resources, then A would bind to the full JID and the second message would only go to one resource. With this fix all messages go to both resources, i.e. are send to the bare JID, until one resource of B replies. This binds the controller at A to the full JID of the reply of B. Change-Id: I8d9321a4226ab798e1196351ad087990d5dff8c3
2015-10-14Annotate getter method as const as it does not write anythingTobias Markmann
Test-Information: Still builds and unit tests pass. Change-Id: I472491184ba10ec3bdbd4cb94613768639ac6f57
2015-10-14Change Swift Windows icon to default avatar iconTobias Markmann
The default Swift icon is black with transparent background. It is hardly visible on Windows 10 as it has a black task bar by default. This commit changes the Windows icon of Swift to the default avatar icon. Test-Information: Verified icon visibility on Windows 10. Change-Id: Ic78aa6b816deb5769666c7e2337917262c75046e
2015-10-13Fix crash in user search dialog for invitation use caseTobias Markmann
Commit 9b48a73 introduced a bug because it always assumed the 'Add contact' user case. Test-Information: Retested the add contact case described in commit 9b48a73 and tested MUC invitation by DND. Neither crashes anymore. Change-Id: Ifab356e6ad9a52365ed15dd46e4e94492bdc60bf
2015-10-07Fix wording so text is independent of sender/receiver caseTobias Markmann
Test-Information: None. Change-Id: I4e0cd54c9009bc19fdc10cd1ec2697252bd6f7f7
2015-09-22Play message incoming sound on incoming file-transfersTobias Markmann
The moving of our sound playing to our message highlighting code resulted in non-message events not having sound notifications played anymore. This commit fixes this issue for incoming file-transfers, by playing the default message received sound as long as sounds are not globally disabled in Swift. Test-Information: Tested on OS X 10.9.5 with Qt 5.4.2, by exchanging files and messages between two Swift instances. Change-Id: Ie09473efeef8366b76f6f7b59cc941fe6a0ad8f0
2015-09-22Keep scroll position in highlight rule editor when moving rulesTobias Markmann
When moving a rule up or down in the highlight rule editor on Linux, the scroll area scrolled all the way down after each move. This problem is not reproducible on OS X. With this commit the dialog remembers the scroll area position before moving a rule and sets the scroll position back to the remembered value after the move of the highlight rule. Test-Information: Verified that the scroll position is not changed when moving highlight rules up or down on Debian 8.2 and OS X 10.9.5. Change-Id: Ide7c99e1311671c77cbf72da5cad4f64bfaab11f
2015-09-22Fix 'unused' member/parameter compiler warnings reported for SwiftTobias Markmann
Test-Information: Still compiles, the menitoned warnings in Swift are gone and unit tests pass. Change-Id: I8e113e7faf2e9273b4741f18c19e35e1b7bc7661
2015-09-22Reset potential warning when opening 'Add Contact' dialogTobias Markmann
Test-Information: Tested by entering an existing JID, closing the dialog window and reopening it. Change-Id: I6c24ba319a062d19f2144c70fcc94fe77d36befe
2015-09-18Show potentially existing MUC bookmark in chat window bookmark dialogTobias Markmann
The MUC bookmark editor window opened from the chat window would always show a new bookmark. With this commit it will show the existing bookmark if it exists. Otherwise it will show a new bookmark. Test-Information: Tested this behavior by creating a bookmark, changing name and nickname to different values and verified that the bookmark dialog for this room, opened from its chat view, would show the existing bookmark. Change-Id: I6766253ce11be271016473dff1105369482e73df
2015-09-18Save 'apply to all' property in highlight rule editorTobias Markmann
The highlight editor did not save if the user set the 'apply to all' property on a rule. It allows to highlight complete messages or be notified only based on the incoming message type. This commit enables saving the property. Test-Information: Tested chat and room rules with the 'apply to all' property set and verified that the complete messages are highlighted. Change-Id: Ib06bd3111ae810c8362ab8fd36a2d3b67f5a14cc
2015-09-18Set keyboard focus to text input after selecting an emoticonTobias Markmann
After selecting an emoticon on Windows the keyboard focus does not return to the text input. OS X did not exhibit that behavior. This fix explicitly sets the focus back to the text input after selection of an emoticon, as expected by the user. Test-Information: Verified the behavior on OS X 10.9.5 and Windows 7, both with Qt 5.4.2. Change-Id: I8737a7e3f6d1a6b7a8e60261e9bd14c7be8d07a6
2015-09-16Increase template OS X installation disk image sizeTobias Markmann
Our packaging procedure temporarily needs more space on the disk image as it first copies the application bundle and frameworks on the image and afterwards removes debugging symbols and other files not required by the end user. The package.sh script reported this error of not having enough space left on the disk image. Test-Infromation: Verified that the disk image is still build, the package.sh error is gone and the packaged Swift.app works. Change-Id: Iba853bd30eb63f74f07cdda08b93e76dd89368bb
2015-09-16Remove Qt bearer plugins from Swift bundle in installation packageTobias Markmann
This is a workaround for QTBUG-34641. The Qt bearer API for detecting network changes will poll for available wireless networks every 30 seconds or so, resulting in needless CPU load. This patch removes the plugins for this API from the installation package, which will disable the constant polling for available wireless networks. Test-Information: Verified that the plugins are removed from the application bundle in the final installation DMG. Change-Id: If46d03ca5623885879ecc10e06a29cec96e7caa4
2015-09-16Only put qt.conf as resource binary for Windows buildsTobias Markmann
Commit 22ea5735ad1a105a4294b7475aba58646ef3ee8a added a qt.conf file to the compiled binary resources of Swift which is picked up by Qt and configures Qt to disable DPI awareness on Windows, as it is not supported by the Qt WebKit widgets yet. However, the Mac application bundle also ships with a qt.conf file which set the correct folders for Qt plugins. This was overridden by the compiled qt.conf resource file. This commit only compiles the qt.conf resoruce file require for Windows on the Windows platform. Test-Information: Tested on Windows 10 with 150% scaling that Swift is scaled up based on the pixel data. Tested on OS X 10.9.5 that the installation package works again. Change-Id: I74ce722cff1090e7dafc3a67e04f2a45d375a43d
2015-09-04Fix middle name and suffix arrangement in vCard dialogTobias Markmann
The vCard fields for middle name and suffix have been swapped at some point in the past. This commit fixes this error. It also specifies the correct tab sequence for the widget. Test-Information: Tested the correct visual appearance and tab sequence on Mac OS X 10.9.5 with Qt 5.4.2. Change-Id: I80d7e21982ddbb836c9f9a690e685a902e54df9c
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
2015-09-03Add close button to about dialog for Linux desktopsTobias Markmann
The default Debian 7 desktop uses window decorations for dialog windows that does not have close window buttons at the top. This commit adds a dedicated close button to the about window. This button is *not* added on Windows and OS X. Test-Information: Tested looks and function on OS X 10.9.5 with Qt 5.4.2 and Debian 7 with Qt 5.3.2. Change-Id: Ia363f66666eb88d43834ab0556f7b06efd3cedef
2015-08-11Fix accelerator for "Chats" tab in the main windowTobias Markmann
Test-Information: Verified behavior with Qt 5.5.0 on Elementary OS 0.2. Change-Id: Id4dd1e5e35c1ec20d0a2dd39727ee0ba352b611a
2015-08-11Disabling HiDPI support for Qt on WindowsTobias Markmann
This is an intermediate solution to the problem that the web views of Qt do not scale to the correct size out of the box. Disabling support for HiDPI mode will let Windows do pixel based scaling. The resulting appearance is not as clear but the web views remain readable. Test-Information: Tested with Qt 5.4.2 on Windows 8. Change-Id: I9460902e728e6190c8382d4eb954135470654e5c
2015-08-11Fix crash on trellis shortcuts if no chat window is openTobias Markmann
Test-Information: Verified that using trellis shortcuts does not crash Swift anymore if no chat window is open. Change-Id: Ie5c7b4675c89c8481cad48f2a348e6520ac42b13
2015-08-11Fix broken bookmarks context menu after reconnectTobias Markmann
Test-Information: Tested that the bookmarks context menu still works after an offline/online cycle. Change-Id: I9248b7405a6a09bc813c6590e0f2f9a4ed92acb3
2015-08-11Remove extra space in file transfer file size textTobias Markmann
Test-Information: Verified the change is visible in the UI. Change-Id: I31ebb28b3930c45e791ffea2ba8eb08364fcbd9b
2015-07-27Remember directory services used when searching for usersTobias Markmann
Test-Information: Tested by searching at some services and checked that they are present in the combo box after a Swift restart. Change-Id: Ia30d932f20447f44e458af3b32a38665872da025
2015-07-14Fix memory leak in QtUserSearchWindowTobias Markmann
The delegate was not correctly freed and was leaking across login/logout sessions. Setting the parent of the delegate during initialization, so it will be freed by Qt when the QtUserSearchWindow is freed. Delegated the deallocation to Qt, because it has to be freed after the widget that uses the delegate is freed. Test-Information: The leak was reported by Valgrind. Verified with Valgrind that this commit fixes the leak and is not reported anymore. Change-Id: Ib48d2628577433bce82103b3f14cbd11d733b7ac
2015-07-13Fix Swift crash during start because of spellcheck codeTobias Markmann
Check that checker_ and highlighter_ are initialized before calling them. A crash report indicated a crash calling getMisspelledPositions() on highlighter_ from QtTextEdit::contextMenuEvent(). This fix should prevent this call to cause a crash. Test-Information: Verified that spell checking still works on OS X. Change-Id: Idae37c1f9e2d1a0d0f64da251aa6778f2e9b47a2
2015-07-13Change label of button clearing the file transfer listTobias Markmann
Test-Information: Checked that the button has the new label. Change-Id: Ic0e00e479de01decd23e14477d0bf34950ab6160
2015-07-10Implement logic behind 'Clear all' buttonTobias Markmann
The 'Clear all' button in the file transfer overview window was only present in the UI, without any logic behind. That's fixed now. Test-Information: Send a file in between two Swift instances. Verified that the button is enabled/disabled at appropriate times and works as expected if pressed. Change-Id: Ib92621cba479683ade8d815ce5ace9768449a499
2015-07-10Create notice events for incoming file-transfersTobias Markmann
Test-Information: Send a file from one Swift instance to another. The UX is similar to that of a MUC invite, clicking the notice will bring the relevant chat in front. Change-Id: Ief3cd7371ae01b2b38b6d1af36189df961eacef4
2015-07-10Stay scrolled at bottom of chat view during a file transferTobias Markmann
Swift did not remember the correct scrolled-at-bottom position for the current chat view after it added/updated file-transfer UI to the chat view. Test-Information: Tested with two Swift instances (one with the fix, one without) and send files in both directions. The instance with this fix, scrolls down along with new messages as they are recevied if the chat view is scrolled to the bottom. Change-Id: Ia9afa68254c3add5f7677b1f4b7ed3c7e1edcf6f
2015-07-10Show correct times for file-transfer requests and MUC invitationsTobias Markmann
The code passed local time to the B2QDATE macro. The B2QDATE macro however requires its input to be in UTC. Test-Information: Tested a file-transfer and MUC invite between two Swift instances. Change-Id: I3a44f35d804b4029a6ff80548a6cb8a1d3edc27e
2015-07-10Show collecting of file transfer candidates in UITobias Markmann
Show the user the collection of possible file transfer candidates after pressing the 'Start' button for a file transfer. Previously the buttons remained in the UI giving no feedback to the user at all. If no UPnP/NAT-PMP device is present, it this stage can take a couple seconds to timeout and move on to the next stage. Furthermore this commit adds documentation for the different states in the ChatWindow::FileTransferState enum. Test-Information: Tested this in a network environment with no UPnP/NAT-PMP device between two Swift instances. Change-Id: I76ec6e641a2acd683938fe2d8f542d023a244145
2015-07-10Add 'Open file' button for successfully transferred filesTobias Markmann
The button is shown after the 'Transfer completed successful.' message and asks the desktop environment to open the file with the default program. Test-Information: Send a file to another Swift on OS X 10.9.5 and verified that it opens the file on button click. Change-Id: I602e534ef07a119247cbf979e13551be7771880c
2015-07-09Enable SSOMili Verma
Add a hidden option to enable single sign on. When that is enabled, ensure that the user only enters the domain name and that the JID is constructed from the Windows log-on credentials. Test-information: Tested on Windows. Unit tests pass. Change-Id: Ia5592a3893f0807a3801b515c8fcddb580c9ef8d