quassel.git
3 years agoUpdate preset networks to include SSL variants
Shane Synan [Wed, 15 Jun 2016 20:00:17 +0000 (16:00 -0400)]
Update preset networks to include SSL variants

Update the bundled networks.ini to use SSL variants when possible.
Non-SSL versions are still included by default to reduce risk of
breaking new setups.

Preset networks don't have SSL verification enabled by default since
including non-SSL variants in the preset defeats the point.

3 years agoSync default port with Use encrypted connection
Shane Synan [Thu, 16 Jun 2016 19:35:42 +0000 (15:35 -0400)]
Sync default port with Use encrypted connection

Change the preselected port from 6667 to 6697 when enabling
"Use encrypted connection" and change back from 6697 to 6667 when
disabling "Use encrypted connection".  The port number can be
manually changed, stopping the link between checkbox and port.
Existing networks are unmodified.

Add loosely-standardized default IRC server ports to network.h to
provide a central place to manage it.  This should only be used when
first adding a server.

See https://freenode.net/news/port-6697-irc-via-tlsssl

3 years agoOptionally verify SSL connection to IRC servers
Shane Synan [Wed, 13 Jul 2016 23:17:30 +0000 (19:17 -0400)]
Optionally verify SSL connection to IRC servers

Add SSL verify flag.
> In database, add 'sslverify' to 'server' table, defaulting to
false so upgrades won't break existing setups.  This modifies
schema, requiring a version bump, changes to migration scripts, etc.
> In protocol, add 'sslVerify' to Network::Server, configuring if
SSL errors should be ignored or result in disconnect.

Add 'VerifyServerSSL' feature flag so the client can tell users about
needing to upgrade their core to get this feature.

If SSL verification fails and...
> SSL verify enabled:  disconnect and trigger a retry, logging the
error message in the status buffer
> SSL verify disabled: log the error message at Info level and
continue connecting anyways

Add "Verify connection security" checkbox to network add/edit dialogs
with an explanatory tooltip.  Tooltip is modified and checkbox
disabled if the core does not support the feature.  Connections are
verified by default when "Use encrypted connection" is checked.

Change "Use SSL" and "Use secure connection" to
"Use encrypted connection" to better reflect what the option does.

Fix tooltips and other strings in network editing dialogs.

Testing:
> Database schema handling
SQLite new install - works
SQLite upgrade - works
SQLite migrate to Postgres - works
Postgres new install - works
Postgres upgrade - works

> Client/core connections
New client, new core - works
New client, old core - works, verify SSL grayed out
Old client, new core - works, verify SSL reset to false on edit
(Unfortunately there's no way to use a boolean and tell if the client
 is old, or actually setting verify SSL to false.  Would need the
 work-in-progress ClientFeature system 'esainane' designed)

(Not using '@mention' since that notifies on EVERY commit push)

3 years agoFix maybe-uninitialized compile warning
Shane Synan [Wed, 15 Jun 2016 20:09:57 +0000 (16:09 -0400)]
Fix maybe-uninitialized compile warning

Declare hashVersion as latest version before loading results from
database.  This resolves a warning when building inside
Qt Creator 3.0.1.

Resolves GH-215.

3 years agoCenter-align tooltips, fix QML, italicize unknown
Shane Synan [Tue, 14 Jun 2016 14:16:08 +0000 (10:16 -0400)]
Center-align tooltips, fix QML, italicize unknown

Center-align the "No information available" and "Not active" tooltip
messages to keep them consistent with the centered table layouts.

Fix and simplify tooltip QML formatting.

Use italics when displaying an unknown away message.  This avoids
clashing with someone having the literal away message "(unknown)"

Resolves GH-214.

3 years agoHide network tooltip info when disconnected
Shane Synan [Tue, 14 Jun 2016 13:39:31 +0000 (09:39 -0400)]
Hide network tooltip info when disconnected

Remove network information from tooltip when disconnected, showing a
"Not connected" line instead.

Don't show the server name if empty.

This fixes a slightly confusing state where the tooltip implies the
network's connected when it's actually not.

3 years agoFix a crash with MSVC debug builds.
Hannah von Reth [Sat, 11 Jun 2016 15:30:08 +0000 (17:30 +0200)]
Fix a crash with MSVC debug builds.

When staticMetaObject.className() was called before qApp->exec(),
the application crashed. This happend only in debug builds.

Resolves GH-213.

3 years agoDisable dbus on Windows.
Hannah von Reth [Sat, 11 Jun 2016 12:48:27 +0000 (14:48 +0200)]
Disable dbus on Windows.

Closes GH-212.

3 years agoStrip format codes when checking for highlights
Shane Synan [Fri, 10 Jun 2016 21:14:21 +0000 (17:14 -0400)]
Strip format codes when checking for highlights

Strip format codes from message content when checking for highlights.
This fixes color-coded messages not triggering highlights, e.g.
messages from the qAnnounce bot in #quassel.

Closes GH-211.

3 years agoModify Mac Deploy-Script for QtWebEngine
romibi [Wed, 6 Jul 2016 11:53:53 +0000 (13:53 +0200)]
Modify Mac Deploy-Script for QtWebEngine

Closes GH-210.

3 years agoUpdate Appveyor Script to use QtWebEngine
romibi [Wed, 6 Jul 2016 11:31:53 +0000 (13:31 +0200)]
Update Appveyor Script to use QtWebEngine

mingw does not support QtWebEngine
and Qt5.6 does not have QtWebKit

3 years agoFix WebPreview not updating when using QtWebEngine
romibi [Fri, 10 Jun 2016 09:07:19 +0000 (11:07 +0200)]
Fix WebPreview not updating when using QtWebEngine

3 years agoUse QtWebEngine instead of QtWebKit if available
romibi [Fri, 10 Jun 2016 09:05:20 +0000 (11:05 +0200)]
Use QtWebEngine instead of QtWebKit if available

3 years agoFancify README with Markdown, build status, links
Shane Synan [Wed, 8 Jun 2016 17:57:51 +0000 (13:57 -0400)]
Fancify README with Markdown, build status, links

Transition README into Markdown formatting, still persisting the
ability to read it as plain-text, asides from the status badges.

Add AppVeyor and Travis CI status badges to the top of the page.  Not
only does this make it easier to access build history, it's a pretty
quick way to tell if the build is working or not.

Add a few more handy links to (hopefully) help those stumbling across
Quassel's dev repo without prior knowledge.

Closes GH-209.

3 years agoUpdate inxi to version 2.3.0
Michael Marley [Mon, 6 Jun 2016 21:46:02 +0000 (17:46 -0400)]
Update inxi to version 2.3.0

Closes GH-204.

3 years agoEnable self message support for ZNC
Shane Synan [Thu, 16 Jun 2016 00:19:59 +0000 (20:19 -0400)]
Enable self message support for ZNC

Request the 'znc.in/self-message' capability to enable self message
support on ZNC.

Some servers (e.g. Bitlbee) assume self-message support; ZNC requires
a capability instead.  As self-message is already implemented,
there's little reason to not do this.

Who says we can't all get along? :)

There's more information in the IRCv3 commit that removed the
'self-message' capability.

See https://github.com/ircv3/ircv3-specifications/commit/1bfba47843c2526707c902034b3395af934713c8

Closes GH-202.

3 years agoAdd support for self messages
Shane Synan [Sat, 27 Aug 2016 22:28:36 +0000 (17:28 -0500)]
Add support for self messages

Check if the incoming message sender is our own nick.  If so, treat
as if sent by the core itself.  Message decryption is still tried in
case the user manually set up identical keys on different clients,
but key negotiation isn't allowed with self-messages (for it wouldn't
make sense).

Carry over the "Self" flag from EventManager to Message, so incoming
self-messages can be processed and stored as if sent by the client.

This lays some of the groundwork for IRCv3 'echo-message'.

For example, if the core's nick is 'quasseluser':
  :quasseluser!ex@example.com PRIVMSG dcircuit :hi

...is handled as if 'quasseluser' had sent 'hi' to nick 'dcircuit'.

See http://ircv3.net/specs/extensions/echo-message-3.2.html

3 years agoAllow prioritizing QUIT over other commands
Shane Synan [Thu, 9 Jun 2016 11:38:38 +0000 (07:38 -0400)]
Allow prioritizing QUIT over other commands

Add a forceImmediate flag to issueQuit, allowing the QUIT command to
jump the command queue.

A future update will prioritize QUIT when core is shutting down so
other messages won't block showing the user's quit message.

Don't prioritize QUIT normally in case the user sends some messages,
thinks they've all been delivered, then sends a QUIT.

(Eventually, Quassel should display queued messages differently from
messages that have been sent)

Closes GH-201.

3 years agoAdd command queue prepend, prioritize PING/PONG
Shane Synan [Wed, 1 Jun 2016 23:00:38 +0000 (19:00 -0400)]
Add command queue prepend, prioritize PING/PONG

Add optional flag to putRawLine and putCmd to put any given lines or
commands to the front of the queue (prepend instead of append).

Enable queue prepend for sending PINGs and PONG replies.  This fixes
the issue where Quassel will ping-timeout when trying to send huge
messages (e.g. 40 lines at once), or multiple commands.

Unfortunately, some IRC servers don't behave properly so Quassel may
still get disconnected.  Hopefully other servers will get fixed soon.

Add more documentation, of course.  Document all the things!

3 years agoRemove default keybinding for showing/hiding menubar
Martin T. H. Sandsmark [Tue, 1 Mar 2016 21:52:08 +0000 (22:52 +0100)]
Remove default keybinding for showing/hiding menubar

Resolves GH-191.

3 years agoCreate a custom popup menu for mainwindow, add menubar hide option to it
Martin T. H. Sandsmark [Tue, 1 Mar 2016 21:49:03 +0000 (22:49 +0100)]
Create a custom popup menu for mainwindow, add menubar hide option to it

3 years agoDon't use the QPointer::clear() function that was introduced in Qt5
Martin T. H. Sandsmark [Tue, 1 Mar 2016 22:02:20 +0000 (23:02 +0100)]
Don't use the QPointer::clear() function that was introduced in Qt5

Closes GH-190.

3 years agoAdd action/shortcut to use the buffer filter/search
Martin T. H. Sandsmark [Tue, 1 Mar 2016 21:11:06 +0000 (22:11 +0100)]
Add action/shortcut to use the buffer filter/search

3 years agoMake the buffer search optional, disable by default
Martin T. H. Sandsmark [Sun, 14 Jun 2015 02:07:50 +0000 (04:07 +0200)]
Make the buffer search optional, disable by default

3 years agoAdd buffer filtering support.
Martin T. H. Sandsmark [Sun, 14 Jun 2015 01:49:20 +0000 (03:49 +0200)]
Add buffer filtering support.

3 years agoEnable OSX builds on travis (GH-227)
Daniel Albers [Tue, 5 Jul 2016 19:33:47 +0000 (21:33 +0200)]
Enable OSX builds on travis (GH-227)

3 years agoSlightly reorder travis config
Daniel Albers [Tue, 5 Jul 2016 19:16:48 +0000 (21:16 +0200)]
Slightly reorder travis config

3 years agoEnable Mac OSX builds on travis
romibi [Sun, 3 Jul 2016 15:12:58 +0000 (17:12 +0200)]
Enable Mac OSX builds on travis

3 years agoMerge pull request #226 - Fix touch pads being handled as touch screens
Daniel Albers [Sun, 3 Jul 2016 18:45:30 +0000 (20:45 +0200)]
Merge pull request #226 - Fix touch pads being handled as touch screens

Fix a bug with (multi) touch pad usage (e. g. on MacBooks) introduced with basic
touch support (GH-187).

Closes GH-226.

3 years agoCheck touch device type on TouchEvents
romibi [Sun, 3 Jul 2016 13:36:19 +0000 (15:36 +0200)]
Check touch device type on TouchEvents

Check the touch device type to prevent touch pads from being handled as touch
screens.

No check required on TouchUpdate and TouchEnd, because if TouchBegin is not
accepted (return true) no following TouchUpdate/End Events are received.

3 years agoMerge pull request #198 - IRCv3 improvements
Manuel Nickschas [Wed, 15 Jun 2016 23:13:31 +0000 (01:13 +0200)]
Merge pull request #198 - IRCv3 improvements

Closes GH-198.

3 years agoSimplify checking if CMake policies need to be set
Rolf Eike Beer [Wed, 18 May 2016 06:54:22 +0000 (08:54 +0200)]
Simplify checking if CMake policies need to be set

Remove the magic knowledge about when a policy was introduced, simply
check if the policy exists.

Closes GH-196.

3 years agoSome cleanups
Manuel Nickschas [Wed, 15 Jun 2016 20:12:57 +0000 (22:12 +0200)]
Some cleanups

Closes GH-187.

3 years agoDocumentation
romibi [Fri, 10 Jun 2016 22:42:26 +0000 (00:42 +0200)]
Documentation

and some fixed indentations

3 years agoChange Selection Behaviour
romibi [Fri, 19 Feb 2016 19:47:52 +0000 (20:47 +0100)]
Change Selection Behaviour

Before: (slow) double tap for selection
After: start movement horizontal

3 years agoRefactoring: Pull Up Duplicate Code
romibi [Fri, 10 Jun 2016 23:52:03 +0000 (01:52 +0200)]
Refactoring: Pull Up Duplicate Code

The event override for NickView and BufferView was Copy&Paste.
To reduce duplicate code i moved that to a new class (TreeViewTouch) now
between QTreeView and the mentioned Classes.

3 years agoEnable Touch Scroll in Nick-View
romibi [Fri, 10 Jun 2016 23:48:11 +0000 (01:48 +0200)]
Enable Touch Scroll in Nick-View

3 years agoEnable Touch Scroll in Buffer-View
romibi [Fri, 10 Jun 2016 23:56:17 +0000 (01:56 +0200)]
Enable Touch Scroll in Buffer-View

3 years agoEnable Touch Scroll in Chat-View
romibi [Wed, 17 Feb 2016 12:54:18 +0000 (13:54 +0100)]
Enable Touch Scroll in Chat-View

3 years agoShow account information in nick tooltips 198/head
Shane Synan [Mon, 13 Jun 2016 22:27:58 +0000 (18:27 -0400)]
Show account information in nick tooltips

Add row for account in tooltip based on IrcUser->account().  If not
supported, it's ignored.  Otherwise, will either show the account
name if logged in, or "Not logged in" if known to be logged out.

When account() information is available, hide the Whois account reply
as it's redundant, and might be out-of-date.

3 years agoAdd CapNegotiation Feature flag, fix CMakeLists
Shane Synan [Fri, 27 May 2016 03:57:54 +0000 (23:57 -0400)]
Add CapNegotiation Feature flag, fix CMakeLists

Add CapNegotiation Feature flag to Quassel's CoreFeatures list.
Technically, this isn't needed - newer clients can connect to older
cores just fine.  However, it may be useful to know if the core
supports cap negotiation or account-tracking in the future, and
there's no way to retroactively add this flag once 0.13 is released.

Remove an unneccessary semicolon at the end of Q_DECLARE_FLAGS.

Add quassel.h to CMakeLists.txt, so automoc includes it and it shows
up in Qt Creator.

3 years agoHide AutoWho reply if channel/nick quits
Shane Synan [Thu, 26 May 2016 23:04:53 +0000 (19:04 -0400)]
Hide AutoWho reply if channel/nick quits

If the given nick quits or channel is removed during an AutoWho, hide
the ERR_NOSUCHCHANNEL reply, since the WHO reply would've been hidden
too.  Avoids showing the confusing "No such channel" error in the
status buffer.

3 years agoSync IrcUser account, add WHOX for account-notify
Shane Synan [Tue, 31 May 2016 23:51:22 +0000 (19:51 -0400)]
Sync IrcUser account, add WHOX for account-notify

Add 'account' field to IrcUser, tracking logged-in account, e.g.
NickServ/SASL.  In testing, this works fine with older/newer
cores/servers.

Implement support for WHOX as in IRCv3 specifications, determining
logged-in accounts on first join to channels.  Mimics HexChat's
ordering of fields, reusing any testing they've done.

Display WHOX replies as [WhoX].  As fields are user-specified, more
processing would be difficult to manage.  WHO replies are unchanged.

Unify WHO reply processing in a common function.

Preliminary test results on Ubuntu:
> New core, new client - works fine
> New core, old client - client prints warnings to console but works
(Complains of no matching slot for sync call.  Old client doesn't
use the new information, though.)
> New client, old core - works fine, assumes unknown account state
> New core, Quasseldroid alpha - works fine, warnings in debug log

See http://faerion.sourceforge.net/doc/irc/whox.var
And https://github.com/hexchat/hexchat/blob/c874a9525c9b66f1d5ddcf6c4107d046eba7e2c5/src/common/proto-irc.c#L750

3 years agoAdd support for chghost
Shane Synan [Fri, 20 May 2016 22:26:11 +0000 (18:26 -0400)]
Add support for chghost

Add support for chghost to be notified of user/hostmask changes.  On
newer servers, this should fix all cases of outdated information
resulting from away-notify disabling WHO polling.

See http://ircv3.net/specs/extensions/chghost-3.2.html

3 years agoFormat SASL auth messages
Shane Synan [Fri, 27 May 2016 02:22:25 +0000 (22:22 -0400)]
Format SASL auth messages

Display SASL authentication messages with cleaner formatting.
Special-case RPL_LOGGEDIN and RPL_LOGGEDOUT to avoid showing the
nick/hostmask jumble.

3 years agoSync caps, use signal/slot, CAP NEW/DEL, polish
Shane Synan [Tue, 7 Jun 2016 15:05:55 +0000 (11:05 -0400)]
Sync caps, use signal/slot, CAP NEW/DEL, polish

Expose IRCv3 capabilities in the synced Network object.  In testing,
this works fine with older/newer cores/clients.

Migrate capability negotiation to Qt Slots/Signals (events), allowing
easier future scriptability and general reacting to IRCv3.

In the future, the client could detect if IrcCap::SASL is present and
in the settings UI recommend SASL over NickServ, it could warn if
IrcCap::SaslMech::EXTERNAL is not available, etc.

Handle CAP NEW and CAP DEL, to comply with cap-notify and IRCv3.2
requirements.  Might make ZNC users happier, too.

Show available, requested, and successful capabilities during
capability negotiation.

Move IRCv3 list of capabilities and SASL handling to new header,
irccap.h  This reduces clutter in network.h, and via new QString
constants typos are now compile-time errors.  Update CMakeLists.txt
for automoc and Qt Creator to know of the new file.

Preliminary test results on Ubuntu:
> New core, new client - works fine
> New core, old client - client prints warnings to console but works
(Complains of no matching slot for sync call.  Old client doesn't
need the new information, though, so it shouldn't cause issues.)
> New client, old core - works fine, simply assuming no IRCv3
(Quassel didn't support IRCv3 cap negotiation before now, so that's a
safe assumption to make)
> New core, Quasseldroid alpha - works fine, warnings in debug log

3 years agoAdd docs to IrcUser::updateNickFromMask
Shane Synan [Fri, 27 May 2016 04:39:43 +0000 (00:39 -0400)]
Add docs to IrcUser::updateNickFromMask

3 years agoExclude Qt Creator user settings from repository
Shane Synan [Fri, 20 May 2016 06:42:37 +0000 (02:42 -0400)]
Exclude Qt Creator user settings from repository

Add 'CMakeLists.txt.user' to .gitignore to ignore Qt Creator's project
settings.  If needed, it can easily be generated by opening
CMakeLists.txt with Qt Creator.

3 years agoShow channel-specific modes in nick tooltips
Shane Synan [Thu, 10 Mar 2016 03:47:27 +0000 (21:47 -0600)]
Show channel-specific modes in nick tooltips

Add a row labeled Modes for channel modes applied to a user.  This
fixes channel modes not showing (more noticeable with multi-prefix).

Channel modes are found with the parent of the parent of the
IrcUserItem, in order of UserCategoryItem -> ChannelBufferItem.

Closes GH-186, finishes the fix in pull request GH-188

3 years agoClarify suserHost and WhoisServiceReply
Shane Synan [Thu, 10 Mar 2016 03:55:18 +0000 (21:55 -0600)]
Clarify suserHost and WhoisServiceReply

If suserHost indicates help status, substitute in a translatable
message.  Otherwise, behave as before.

If whoisServiceReply indicates nick registration status, substitute
in a translatable message.  Otherwise, behave as before.

Remove "is a" or "is an" from Operator status, since it's implied by
the tooltip itself.

See https://www.alien.net.au/irc/irc2numerics.html

3 years agoUpdate channel/nick/query tooltips to new-style
Shane Synan [Thu, 18 Feb 2016 01:44:18 +0000 (19:44 -0600)]
Update channel/nick/query tooltips to new-style

Modify channel, network, query and nick tooltips to use a clean,
consistent style with more padding, trading efficiency for
readability. This significantly helps for tooltips with lots of
information.

Unify HTML escaping, reducing some clutter of '#if QT_VERSION'.

Fix crashes and weird formatting by escaping HTML where reasonable,
such as nick ident information.  In titles, spaces are replaced with
non-breaking spaces to avoid line-wrapping.

Expands upon a2e0951abbe2d545836fb25fd6010aa085f17d82
Thanks to https://github.com/Scheirle for the first version!

3 years agoC++11ify QtMultimedia notification backend
Manuel Nickschas [Mon, 13 Jun 2016 20:24:40 +0000 (22:24 +0200)]
C++11ify QtMultimedia notification backend

Use smart pointers, override.

3 years agoImplement QtMultimedia notification backend
Hendrik Leppkes [Wed, 10 Feb 2016 09:21:09 +0000 (10:21 +0100)]
Implement QtMultimedia notification backend

Phonon is no longer officially supported since Qt5, while QtMultimedia
implements all the required functionality to provide audio notifications.

Closes GH-182.

3 years agoUse Qt 5.6 and msvc2015 (#197)
Hannah von Reth [Thu, 9 Jun 2016 10:49:12 +0000 (12:49 +0200)]
Use Qt 5.6 and msvc2015 (#197)

This commit also adds a copy of the helper appvayor
helper script to the quassel sources.

As Qt 5.6 no longer supports QtWebkit we continue
to provide a mingw Qt 5.5 builds with Webkit.

For builds without Webkit we can probably further reduce the installer size
by removing dll which are no longer needed.

3 years agoMake minimum compiler requirements explicit
Manuel Nickschas [Wed, 8 Jun 2016 21:13:47 +0000 (23:13 +0200)]
Make minimum compiler requirements explicit

We know that the build fails if certain C++11 features are not
available, thus we should not even try to build with compilers
that we know are too old. Otherwise, users get confused due to
non-intuitive compile errors.

3 years agoEnable ccache on Travis
Daniel Albers [Tue, 7 Jun 2016 00:34:29 +0000 (02:34 +0200)]
Enable ccache on Travis

3 years agoUpdate travis build configuration to trusty
Daniel Albers [Mon, 6 Jun 2016 22:09:06 +0000 (00:09 +0200)]
Update travis build configuration to trusty

Also adds packages required to build all features marked as recommended
as well as translations.

Versions currently being installed:
gcc 4.8.4
clang 3.5.0
Qt 4.8.5
Qt 5.2.1

3 years agoINSTALL: Update toolchain requirements
Manuel Nickschas [Mon, 6 Jun 2016 22:56:52 +0000 (00:56 +0200)]
INSTALL: Update toolchain requirements

Since we're using more C++11 features now, compiler version
requirements have been updated accordingly.

3 years agoFix the SSL check with Qt 5.6 and GCC 5 (#199)
martin [Mon, 6 Jun 2016 22:37:22 +0000 (00:37 +0200)]
Fix the SSL check with Qt 5.6 and GCC 5 (#199)

3 years agoReplace build date with commit date (#159)
romibi [Mon, 6 Jun 2016 22:05:49 +0000 (00:05 +0200)]
Replace build date with commit date (#159)

Alternative to and based on PR #127
https://github.com/quassel/quassel/pull/127

This makes it possible to create reproducible builds.

3 years agoBring copyright headers into 2016
Manuel Nickschas [Mon, 6 Jun 2016 21:38:10 +0000 (23:38 +0200)]
Bring copyright headers into 2016

That took some time...

3 years agoFix two typos (#200)
Alf Gaida [Mon, 6 Jun 2016 21:37:17 +0000 (23:37 +0200)]
Fix two typos (#200)

3 years agoGreatly simplify TransferManager API and implementation
Manuel Nickschas [Mon, 6 Jun 2016 21:23:10 +0000 (23:23 +0200)]
Greatly simplify TransferManager API and implementation

This commit does away with the overly complex overloaded signals
from the TransferManager family of classes, and replaces unneeded
code with using declarations.

3 years agoHandle invalid handshake data properly in the core
Manuel Nickschas [Sun, 24 Apr 2016 19:59:15 +0000 (21:59 +0200)]
Handle invalid handshake data properly in the core

Clients sending invalid handshake data could make the core crash
due to an unchecked pointer. This commit fixes this issue by having
the core close the socket if a peer could not be created.

Thanks to Bas Pape (Tucos) for finding this one!

3 years agoMerge pull request #195 from seezer/qt5sessions
Manuel Nickschas [Sun, 24 Apr 2016 18:39:44 +0000 (20:39 +0200)]
Merge pull request #195 from seezer/qt5sessions

Support session management with Qt5

3 years agoMerge pull request #188 from digitalcircuit/ircv3-fix-usermode
Manuel Nickschas [Sun, 24 Apr 2016 18:22:17 +0000 (20:22 +0200)]
Merge pull request #188 from digitalcircuit/ircv3-fix-usermode

Don't update IrcUser modes with channel-specific modes

3 years agoSupport session management with Qt5 195/head
Sebastian Goth [Sat, 23 Apr 2016 11:39:59 +0000 (13:39 +0200)]
Support session management with Qt5

Qt5 moved away from virtual methods towards signals for commitData() and saveState().
These were simply not called anymore in our code.

In Qt 5.6 a bug was fixed that broke session management at least with KF5.
As we do handle the session management, we can safely disable the fallback.
See QTBUG-49667 and https://codereview.qt-project.org/#/c/148274/ for details.

3 years agoRevert "Merge pull request #165 from esainane/coreinfo-dirty-status"
Daniel Albers [Sun, 3 Apr 2016 17:35:40 +0000 (19:35 +0200)]
Revert "Merge pull request #165 from esainane/coreinfo-dirty-status"

`git describe` is called on the committish, which doesn't work with
--dirty.

This reverts commit dd711790dddee81442e2138b3917764dac39c487, reversing
changes made to 9585227400dd89f8a4d6bbc723f2d36ca0dc1a70.

3 years agoMerge pull request #193 from mamarley/statusmsg
Daniel Albers [Fri, 1 Apr 2016 01:49:49 +0000 (03:49 +0200)]
Merge pull request #193 from mamarley/statusmsg

Handle STATUSMSG messages

3 years agoAdd documentation to isStatusMsg
Shane Synan [Wed, 30 Mar 2016 23:50:46 +0000 (18:50 -0500)]
Add documentation to isStatusMsg

3 years agoMerge pull request #183 from romibi/enableLinkPreview
Daniel Albers [Fri, 1 Apr 2016 00:34:03 +0000 (02:34 +0200)]
Merge pull request #183 from romibi/enableLinkPreview

Enable Link-Preview on appveyor builds

3 years agoMerge pull request #168 from esainane/irssi-msg-escape
Daniel Albers [Fri, 1 Apr 2016 00:32:19 +0000 (02:32 +0200)]
Merge pull request #168 from esainane/irssi-msg-escape

Make "/ " use the rest of the message as a literal

3 years agoMerge pull request #165 from esainane/coreinfo-dirty-status
Daniel Albers [Thu, 31 Mar 2016 23:51:51 +0000 (01:51 +0200)]
Merge pull request #165 from esainane/coreinfo-dirty-status

Include dirty status in core information

3 years agoHandle STATUSMSG messages
Michael Marley [Wed, 23 Mar 2016 20:47:02 +0000 (16:47 -0400)]
Handle STATUSMSG messages

Previously PRIVMSGs to channels prefixed with certain characters
(usually "+" or "@") (example "@#quassel") would appear in new
query buffers instead of in the channel buffer.  People were using
that problem to broadcast query SPAM in active channels such as

This patch fixes the issue by detecting the condition, first in
ircparser.cpp where it will use the channel name instead of the
sender's nick as the target.  ctcpparser.cpp then sees the prefixed
channel name and reacts by truncating the prefix(es) and setting a
new flag so that the client can tell the message was a STATUSMSG.
A look-ahead system is used to ensure that the channel prefix
character is not stripped even when the channel prefix characters
and STATUSMSG prefix characters overlap.

The server-provided STATUSMSG prefixes are used if available,
otherwise "@" and "+" are used.

This patch doesn't make the client display the STATUSMSGs any
differently than regular messages.  I omitted this because there
was some discussion on the channel about the best way to display
these messages, but no conclusion was ever reached.  This patch
will at least stop the query SPAM and also provides the
infrastructure necessary to change the display format later.

3 years agoFix wrong zh_CN translation
Shengjing Zhu [Mon, 14 Mar 2016 08:54:47 +0000 (16:54 +0800)]
Fix wrong zh_CN translation

3 years agoFix IRCv3 capability code documentation 188/head
Shane Synan [Thu, 10 Mar 2016 04:04:53 +0000 (22:04 -0600)]
Fix IRCv3 capability code documentation

Add the missing param[in]'s to capEanbled and capValue.

3 years agoTransfers also should notify on changes to transferred()
Manuel Nickschas [Mon, 7 Mar 2016 23:18:39 +0000 (00:18 +0100)]
Transfers also should notify on changes to transferred()

Adds the missing signal, and emits it appropriately.

3 years agoAdd accessors for the amount of transferred data to Transfer classes
Manuel Nickschas [Wed, 2 Mar 2016 00:12:03 +0000 (01:12 +0100)]
Add accessors for the amount of transferred data to Transfer classes

Also fixes more inconsistent/missing uses of 'override'.

3 years agoAdd Transfer::prettyStatus()
Manuel Nickschas [Wed, 2 Mar 2016 00:09:59 +0000 (01:09 +0100)]
Add Transfer::prettyStatus()

For now, this method just returns the current status as a
translatable string for UI purposes.

3 years agoRename Transfer::State to Transfer::Status
Manuel Nickschas [Tue, 1 Mar 2016 23:20:32 +0000 (00:20 +0100)]
Rename Transfer::State to Transfer::Status

Native-speaking soures told me that Status is preferred over State
for what we want to express. So let's rename this before it's too
late.

3 years agoUse 'override' where appropriate
Manuel Nickschas [Tue, 1 Mar 2016 23:15:08 +0000 (00:15 +0100)]
Use 'override' where appropriate

3 years agoFix inconsistent use of override in NickListWidget
Manuel Nickschas [Tue, 1 Mar 2016 19:01:14 +0000 (20:01 +0100)]
Fix inconsistent use of override in NickListWidget

Clang warns about this.

3 years agoSet CMake policy for visibility
Manuel Nickschas [Tue, 1 Mar 2016 18:55:53 +0000 (19:55 +0100)]
Set CMake policy for visibility

CMake 3.3+ changed behavior for handling visibility for target types
other than dynamic libraries. This commit adds a cmake_policy call
to allow the new behavior, removing a dev warning in the process.

3 years agoMerge pull request #189 from phuzion/master
Daniel Albers [Mon, 29 Feb 2016 19:44:45 +0000 (20:44 +0100)]
Merge pull request #189 from phuzion/master

Minor string cleanup

3 years agoMinor string cleanup 189/head
phuzion [Mon, 29 Feb 2016 17:51:10 +0000 (17:51 +0000)]
Minor string cleanup

3 years agoLimit user mode updates from WHO to given channel
Shane Synan [Mon, 29 Feb 2016 04:26:17 +0000 (22:26 -0600)]
Limit user mode updates from WHO to given channel

Limit user mode updates in WHO replies to the given channel, unless
a '*' is specified indicating any channel.  IrcUsers are shared
between channels, while channel user modes are not.

Showing user modes in the Quassel tooltips need fixed client-side in
IrcUserItem::toolTip(), checking the current channel.

3 years agoDon't update IrcUser modes with channel modes
Shane Synan [Mon, 29 Feb 2016 00:03:37 +0000 (18:03 -0600)]
Don't update IrcUser modes with channel modes

Remove IrcUser mode updates in IrcChannel.  IrcUsers are shared
between channels, while channel user modes are not.

Showing user modes in the Quassel tooltips need fixed client-side to
check the current channel.

3 years agoFix (meta) type handling in existing DCC code
Manuel Nickschas [Sun, 28 Feb 2016 23:23:25 +0000 (00:23 +0100)]
Fix (meta) type handling in existing DCC code

Obviously, this code was never tested with a non-monolithic build,
and Qt didn't know how to handle our fancy enums.

Also, enum classes are now a thing since C++11, and we should use
them. Unfortunately, they have the same annoyances as nested classes
with Qt4-style signal/slot connections...

3 years agoRemove weird convenience accessors
Manuel Nickschas [Sun, 28 Feb 2016 21:11:05 +0000 (22:11 +0100)]
Remove weird convenience accessors

No clue why I thought this would be a good idea...

3 years agoMerge pull request #180 from digitalcircuit/ircv3-expanded-caps
Manuel Nickschas [Sun, 28 Feb 2016 19:29:29 +0000 (20:29 +0100)]
Merge pull request #180 from digitalcircuit/ircv3-expanded-caps

Implement IRCv3.2 CAP LS, away-notify and friends

3 years agoMerge pull request #136 from sandsmark/sonnet
Manuel Nickschas [Sun, 28 Feb 2016 17:58:03 +0000 (18:58 +0100)]
Merge pull request #136 from sandsmark/sonnet

Add spell-checking support via the Sonnet framework

3 years agoSend extra modes via non-breaking protocol change 180/head
Shane Synan [Fri, 19 Feb 2016 09:17:26 +0000 (03:17 -0600)]
Send extra modes via non-breaking protocol change

Send extra user mode updates in backwards-compatible manner.

When multiple modes are received in IrcChannel::joinIrcUsers, call
addUserMode one time for each, then call ircuser->addUserModes() with
the new modes.  Perhaps less efficient, but avoids breaking protocol.

Reduce excess network traffic by only syncing IrcUser::setUserModes
and IrcUser::addUserModes when changes are made.

Preliminary test results on Ubuntu (more testing always welcome!)
* New core, new client - works fine (as one might hope)
* New core, old client - client prints warning to console but works
(IrcChannel modes might internally get out of sync, but visible
 channel list updates with mode changes, multiple modes, etc)
* New core, Quasseldroid alpha/NG - works fine
* Old core, new client - works fine

If desired, the warning and other potential risks could be avoided
entirely by implementing a new Feature flag and only sending the
additional mode information to clients that request it.  However,
this seemed excessive to avoid what in limited testing was only a
warning in the client console log, normally hidden away from sight.

3 years agoAdd support for multi-prefix
Shane Synan [Fri, 19 Feb 2016 08:25:10 +0000 (02:25 -0600)]
Add support for multi-prefix

Add support for multi-prefix to get a full list of modes in NAMES and
WHO replies, updating ircuser objects as appropriate.  This enables
seeing if an operator (+o) also has voice (+v), etc.  In the future,
Quassel could show this information in a smart, useful manner.

This commit limits synced modes to one for 'NAMES' replies to avoid a
warning in older clients.  The next commit will address this.

See http://ircv3.net/specs/extensions/multi-prefix-3.1.html

4 years agoAdd support for userhost-in-names capability
Shane Synan [Wed, 17 Feb 2016 19:51:23 +0000 (13:51 -0600)]
Add support for userhost-in-names capability

Add support for userhost-in-names, which, if enabled, allows getting
the user/hostname information of a channel without using WHO polling.

See http://ircv3.net/specs/extensions/userhost-in-names-3.2.html

4 years agoAdd support for account-notify, extended-join
Shane Synan [Wed, 17 Feb 2016 19:49:48 +0000 (13:49 -0600)]
Add support for account-notify, extended-join

Add support for account-notify to track account changes and
extended-join to get account information on join.  For now, this only
updates user/hostname information.  In the future it will track
logged in accounts in ircuser, pending a new feature flag and
inclusion of WHOX support.

See http://ircv3.net/specs/extensions/account-notify-3.1.html
And http://ircv3.net/specs/extensions/extended-join-3.1.html

4 years agoAdd more sources of nick!user@host updates
Shane Synan [Wed, 17 Feb 2016 20:03:26 +0000 (14:03 -0600)]
Add more sources of nick!user@host updates

Update IrcUser user and hostname information from more sources.  This
is more important now since away-notify disables automatic WHO
polling, so user@host information won't be updated if the server
doesn't generate fake join/quit messages for /chghost and friends.

In the future, IRCv3 capability chghost will remove the need for this
once all servers support it.  (In only a few decades, right..?)
For chghost, see http://ircv3.net/specs/extensions/chghost-3.2.html

4 years agoAdd support for away-notify capability
Shane Synan [Wed, 17 Feb 2016 20:03:01 +0000 (14:03 -0600)]
Add support for away-notify capability

Add support for away-notify. As nicks change status, update ircuser
objects with new away status and messages, no /whois needed.

Modify automatic WHO polling when away-notify is active to poll all
channels ONCE regardless of polling settings and nick-limit.  This
captures away state for existing nicks in the channel.  Channels
joined after this will queue a separate one-off WHO poll.

Queue one-time WHO of nicks who join a channel when away-notify is
active as some servers won't send an :away message in this situation.
To support this, autoWhoQueue can now check specific users.

See http://ircv3.net/specs/extensions/away-notify-3.1.html

4 years agoImplement IRCv3.2 capability negotiation
Shane Synan [Wed, 17 Feb 2016 20:00:43 +0000 (14:00 -0600)]
Implement IRCv3.2 capability negotiation

Always send CAP LS, similar to ZNC and HexChat.  IrcEventCap checks
returned capabilities, queuing up desired ones until all replies
finish, then requests each capability one-by-one.  This prevents an
error with one capability from blocking all of them.

See http://ircv3.net/specs/core/capability-negotiation-3.1.html
And http://ircv3.net/specs/core/capability-negotiation-3.2.html

Modify SASL authentication to only happen if present in capability
list.  If it's not supported, log an error in the status buffer and
continue connecting anyways.

See http://ircv3.net/specs/extensions/sasl-3.1.html
And http://ircv3.net/specs/extensions/sasl-3.2.html

4 years agoAdd some more needed DLL's for Link-Preview support 183/head
romibi [Sun, 14 Feb 2016 14:06:50 +0000 (15:06 +0100)]
Add some more needed DLL's for Link-Preview support

4 years agoEnable Link-Preview on appveyor builds
romibi [Sun, 14 Feb 2016 13:12:53 +0000 (14:12 +0100)]
Enable Link-Preview on appveyor builds