7 years agoWebkit changed location and scale() is gone.
K. Ernest (iFire) Lee [Sun, 9 Feb 2014 21:57:30 +0000 (13:57 -0800)]
Webkit changed location and scale() is gone.

Webkit's include location changed and scale() is replaced by transform().

7 years agoProperly find WebKit for Qt5
Manuel Nickschas [Tue, 25 Mar 2014 20:51:41 +0000 (21:51 +0100)]
Properly find WebKit for Qt5

It's WebKit, not Webkit.

7 years agoQTreeView::dataChanged() signature changed in Qt5
Manuel Nickschas [Mon, 24 Mar 2014 23:15:47 +0000 (00:15 +0100)]
QTreeView::dataChanged() signature changed in Qt5

7 years agoAdd missing include
Manuel Nickschas [Mon, 24 Mar 2014 23:14:57 +0000 (00:14 +0100)]
Add missing include

7 years agoQDesktopServices -> QStandardPaths
Manuel Nickschas [Mon, 24 Mar 2014 23:14:34 +0000 (00:14 +0100)]
QDesktopServices -> QStandardPaths

7 years agoQSslCertificate::subjectInfo() returns a QStringList in Qt5
Manuel Nickschas [Mon, 24 Mar 2014 23:13:42 +0000 (00:13 +0100)]
QSslCertificate::subjectInfo() returns a QStringList in Qt5

7 years agoUse QSslCertificate::isNull() instead of isValid() in IdentityEditWidget
Manuel Nickschas [Mon, 24 Mar 2014 23:11:39 +0000 (00:11 +0100)]
Use QSslCertificate::isNull() instead of isValid() in IdentityEditWidget

The intention is to check if the certificate could be loaded, and isNull()
is actually the right thing to do. Saves us from dealing with the no-longer
existing isValid() in Qt5, too.

7 years agoQSslCertificate::{subject,issuer}Info() returns a QStringList in Qt5
Manuel Nickschas [Mon, 24 Mar 2014 21:59:37 +0000 (22:59 +0100)]
QSslCertificate::{subject,issuer}Info() returns a QStringList in Qt5

This requires changes in SslInfoDlg. To simplify handling the API differences,
we use small wrappers that join the string lists for Qt5.

7 years agoQSslCertificate::isValid() no longer exists in Qt5
Manuel Nickschas [Mon, 24 Mar 2014 21:28:16 +0000 (22:28 +0100)]
QSslCertificate::isValid() no longer exists in Qt5

Qt4's isValid() checked for the date range and if the cert is blacklisted.
In Qt5, these two checks need to be done explicitly.

7 years agoqVariantCanConvert is deprecated
Bas Pape [Sun, 21 Apr 2013 11:19:44 +0000 (13:19 +0200)]
qVariantCanConvert is deprecated

7 years agoQHeaderView::setResizeMode is deprecated in Qt 5
Bas Pape [Sat, 20 Apr 2013 22:26:21 +0000 (00:26 +0200)]
QHeaderView::setResizeMode is deprecated in Qt 5

7 years agoLogging changed in Qt 5; use QtMessageHandler
Bas Pape [Sat, 20 Apr 2013 22:04:41 +0000 (00:04 +0200)]
Logging changed in Qt 5; use QtMessageHandler

7 years agoqVariantValue is deprecated in Qt 5.0
Bas Pape [Sat, 20 Apr 2013 21:45:10 +0000 (23:45 +0200)]
qVariantValue is deprecated in Qt 5.0

7 years agosetAcceptsHoverEvents is deprecated in Qt 5.
Bas Pape [Sat, 20 Apr 2013 21:39:14 +0000 (23:39 +0200)]
setAcceptsHoverEvents is deprecated in Qt 5.

setAcceptsHoverEvents has been around since 4.4

7 years agosetAlphaChannel is deprecated in Qt 5.
Bas Pape [Sat, 20 Apr 2013 21:33:06 +0000 (23:33 +0200)]
setAlphaChannel is deprecated in Qt 5.

With the default CompositionMode this should work too.

7 years agoQKeySequence's int operator is deprecated
Bas Pape [Sat, 20 Apr 2013 12:48:08 +0000 (14:48 +0200)]
QKeySequence's int operator is deprecated

operator int returns the first key in the sequence, so just use that
one directly.

7 years agoNo more posF in Qt 5; use the new localPos
Bas Pape [Sat, 20 Apr 2013 12:21:06 +0000 (14:21 +0200)]
No more posF in Qt 5; use the new localPos

7 years agoreset is deprecated since Qt 5.0
Bas Pape [Sat, 20 Apr 2013 11:46:29 +0000 (13:46 +0200)]
reset is deprecated since Qt 5.0

7 years agoPrevent unused-but-set warnings ifndef QT_NO_DEBUG
Bas Pape [Sat, 20 Apr 2013 11:37:23 +0000 (13:37 +0200)]
Prevent unused-but-set warnings ifndef QT_NO_DEBUG

7 years agoQt::escape moved to QString::toHtmlEscaped in Qt 5
Bas Pape [Sat, 20 Apr 2013 11:24:34 +0000 (13:24 +0200)]
Qt::escape moved to QString::toHtmlEscaped in Qt 5

7 years agoChange Q_WS_* to Q_OS_*
Manuel Nickschas [Mon, 24 Mar 2014 20:43:45 +0000 (21:43 +0100)]
Change Q_WS_* to Q_OS_*

The Q_WS_{WIN,MAC} macros have been deprecated since Qt 4.3 or so,
and replaces by the corresponding Q_OS_* macros. Since Qt5 does not
support them anymore at all, let's globally change those to the "new"

Also change Q_OS_WIN32 to just Q_OS_WIN; while the former is supposed to
be defined on all supported Windows platforms including Win64, it's still
a bit confusing.

7 years agoSignature of QTcpServer::incomingConnection() changed in Qt5
Manuel Nickschas [Mon, 24 Mar 2014 20:05:54 +0000 (21:05 +0100)]
Signature of QTcpServer::incomingConnection() changed in Qt5

7 years agoCan't forward-declare meta types in Qt5
Manuel Nickschas [Mon, 24 Mar 2014 20:00:44 +0000 (21:00 +0100)]
Can't forward-declare meta types in Qt5

7 years agoReplace {from,to}Ascii with {from,to}Latin1
K. Ernest (iFire) Lee [Sun, 9 Feb 2014 19:43:56 +0000 (11:43 -0800)]
Replace {from,to}Ascii with {from,to}Latin1

These have been deprecated since Qt 5.0, and rather than use
{from,to}Local8Bit I've decided to match the original functionality.

7 years agoRemove the useless coreeventmanager.cpp again
Manuel Nickschas [Mon, 24 Mar 2014 19:52:12 +0000 (20:52 +0100)]
Remove the useless coreeventmanager.cpp again

Was pulled in by applying harryF's patch, but removed from mainline

7 years agoQt5 fixes
Harald Fernengel [Thu, 16 Aug 2012 08:07:31 +0000 (10:07 +0200)]
Qt5 fixes

Mostly due to the metatobject changes. Also, for some reason, my
cmake on the mac refused to create a moc file for coreeventmanager
unless there's a *.cpp file

7 years agoProperly handle DBusMenuQt in the build system
Manuel Nickschas [Mon, 24 Mar 2014 23:18:45 +0000 (00:18 +0100)]
Properly handle DBusMenuQt in the build system

This library ships a CMake config file these days, so we can remove
our own find script (which was no longer used anyway). Also, we need to
treat it as an imported target, there's no dbusmenu-qt_LIBRARIES...

7 years agoClean up and fix data/CMakeLists.txt
Manuel Nickschas [Mon, 24 Mar 2014 18:24:57 +0000 (19:24 +0100)]
Clean up and fix data/CMakeLists.txt

This was forgotten during the recent changes and still referred to
HAVE_KDE, thus failing now. Taking the opportunity to clean up this
ancient cruft as well (those conditionals...)

7 years agoFix handling the QtMain module on Windows
Manuel Nickschas [Sun, 23 Mar 2014 22:33:00 +0000 (23:33 +0100)]
Fix handling the QtMain module on Windows

Turns out that the QtMain module can't be used in qt4_use_modules,
and we should just add the library to our targets.

7 years agoImprove the handling of Qt5 modules in the build system
Manuel Nickschas [Sun, 23 Mar 2014 22:02:03 +0000 (23:02 +0100)]
Improve the handling of Qt5 modules in the build system

If a required Qt5 module is not available by the time it is needed,
CMake throws a rather fugly backtrace with a confusing error message.
To avoid this, we now check for all required Qt5 modules by calling
find_package without REQUIRED, and setting the REQUIRED pacakge property.
That way, there will be no errors during configuration, the feature
summary correctly shows the packages as missing, and then bails out
at this point, which results in a much nicer user experience.

For this to work, we also need to show the feature summary before adding
the src/ subdirectory, as this will forcefully require the modules it needs.

Additionally, this commit fixes finding lconvert (and thus translation
support) for Qt5.

7 years agoFix SSL detection
Manuel Nickschas [Sun, 23 Mar 2014 20:28:28 +0000 (21:28 +0100)]
Fix SSL detection

As there is no easy way to check for QT_CONFIG with Qt5 and CMake,
and the way we did it for Qt4 is hackish at best, let's do it the
proper way and compile a short code snippet that checks for the
appropriate defines (QT_NO_OPENSSL for Qt4, and QT_NO_SSL for Qt5).

This should be the most robust way of figuring this out, and is rather
easy with CMake.

7 years agoUpdate INSTALL file
Manuel Nickschas [Sun, 23 Mar 2014 19:42:55 +0000 (20:42 +0100)]
Update INSTALL file

This hadn't been touched since 2007, and with all the recent build
system changes, I guess it made sense to adapt it to reality.

7 years agoRemove obsolete CMake options
Manuel Nickschas [Sun, 23 Mar 2014 18:46:58 +0000 (19:46 +0100)]
Remove obsolete CMake options

Now that the new dependency handling is in place, we can remove several
of the CMake options we used to have. If you don't want automagic
dependencies, and want to disable one even though it is installed, you
can use -DCMAKE_DISABLE_FIND_PACKAGE_Foo=TRUE for ignoring the Foo package.

7 years agoMake SSL and syslog support non-configurable
Manuel Nickschas [Sun, 23 Mar 2014 18:44:27 +0000 (19:44 +0100)]
Make SSL and syslog support non-configurable

Both features have no external dependencies; SSL support requires Qt
to be built with SSL support, and syslog support requires the existence
of the syslog.h header. It makes no sense to make this configurable,
as no additional libraries or other dependencies are pulled in.

Instead, just add them to the feature_summary depending on the prerequisites
being in place.

7 years agoCompletely rework the dependency handling in the build system
Manuel Nickschas [Sun, 23 Mar 2014 01:39:38 +0000 (02:39 +0100)]
Completely rework the dependency handling in the build system

Traditionally, optional build dependencies are handled in CMake via
offering options and conditionally searching for the needed packages.
This leads to having lots of options, boilerplate for telling the user
which features are enabled or not, unclear handling of automagic
dependencies, and so on.

These days, CMake offers a much nicer way: feature_summary() and friends.
To make use of this, one calls find_package unconditionally and then sets
properties on the package that tell CMake if the dependency is optional
or required, its purpose, a description of the package etc. At the end
of configuration, CMake then displays a nice summary of all the packages
searched for and (not) found, as well as other features.

Quassel now makes use of this modern way of specifying dependencies, replacing
most of the former options (they're still there, but unused now, and will
be removed soon). Note that one can still disable an optional dependency Foo by

I also took the opportunity to radically clean up and fix how we handle
dependencies throughout the build system:

* We no longer set an extra CMake variable to indicate that a package was
  found, but use the Foo_FOUND variable directly
* Compile definitions and include directories are no longer set globally
  in the root CMakeLists.txt, but in the Quassel modules where they're
  actually needed; this should speed up compiling ever so slightly and
  generally make things much cleaner
* Libraries are now linked directly to the Quassel modules that use them,
  rather than to the executable. This prepares us for making the modules
  shared libraries at some point, and is anyway The Right Thing™ to do
* Fully support Qt5 in the build system, including finding the proper version
  of dependencies where appropriate and available

Note that the changes to the build system are not complete yet, and some things
may be broken now. Note also that while Qt5 is now supported in the build system,
the code itself still requires many changes to actually compile with Qt5,
so don't even try.

7 years agoFix finding a custom Qt4 via -DQT_PATH
Manuel Nickschas [Sun, 23 Mar 2014 01:33:48 +0000 (02:33 +0100)]
Fix finding a custom Qt4 via -DQT_PATH

This CMake option has recently been renamed from QT to QT_PATH; we
really should actually use the new name...

7 years agoRemove unnecessary include
Manuel Nickschas [Sun, 23 Mar 2014 01:30:19 +0000 (02:30 +0100)]
Remove unnecessary include

CoreApplication does not in any way depend on KApplication.

7 years agoDon't make EventType::KeyEvent depend on HAVE_QCA2
Manuel Nickschas [Sun, 23 Mar 2014 01:27:45 +0000 (02:27 +0100)]
Don't make EventType::KeyEvent depend on HAVE_QCA2

This enum value can be known even if we don't have encryption support.

7 years agoAdd a CMake wrapper for finding indicate-qt
Manuel Nickschas [Sun, 23 Mar 2014 01:15:12 +0000 (02:15 +0100)]
Add a CMake wrapper for finding indicate-qt

Because CMake's feature_summary works only with dependencies found
via find_package, it makes sense to have a wrapper around the
PkgConfig call used to find indicate-qt. This is very basic and does
not support all of the usual options (such as checking for a particular
version), but sufficient for our needs.

7 years agoBacktrace generation depends on the target system, not the host
Manuel Nickschas [Sat, 22 Mar 2014 18:30:21 +0000 (19:30 +0100)]
Backtrace generation depends on the target system, not the host

We were checking for CMAKE_HOST_WIN32 and CMAKE_HOST_UNIX for determining
which kind of backtrace generation support to build. However, this should
obviously depend on the target platform, not on the platform we build on.

So let's use WIN32 and UNIX instead.

7 years agoImprove the CMake option stuff
Manuel Nickschas [Thu, 20 Mar 2014 21:29:42 +0000 (22:29 +0100)]
Improve the CMake option stuff

We now use cmake_dependent_option() to express dependencies between
the various options that you can give to CMake for configuring Quassel;
for example, enabling KDE4 now forces some options to OFF regardless
of the user-selected value (which will, however, be preserved in case
KDE integration is disabled again later).

This also renames WITH_QT5 to USE_QT5 (and adds a USE_QT4, too); this seems
to have emerged as the standard way to select a Qt version for dual-Qt
packages. However, Qt4 is still selected by default unless you force Qt5
by setting the USE_QT5 flag. BTW, don't get your hopes up, Qt5 support is
still broken... Once it's working, we may select Qt5 as default for certain

Additionally we renamed QT to QT_PATH to make the function of this flag
more clear.

7 years agoOops, left in some debug stuff...
Manuel Nickschas [Thu, 20 Mar 2014 21:25:10 +0000 (22:25 +0100)]
Oops, left in some debug stuff...

7 years agoMerge pull request #54 from Bombe/issue-1227
Manuel Nickschas [Thu, 20 Mar 2014 21:44:55 +0000 (22:44 +0100)]
Merge pull request #54 from Bombe/issue-1227

Only create the regular expression for content/sender matches once.

7 years agoOnly create the regular expression for content/sender matches once. 54/head
David ‘Bombe’ Roden [Sun, 2 Feb 2014 11:27:33 +0000 (12:27 +0100)]
Only create the regular expression for content/sender matches once.

Fixes #1227.

7 years agoDon't actually build miniz if we have zlib
Manuel Nickschas [Wed, 19 Mar 2014 20:08:08 +0000 (21:08 +0100)]
Don't actually build miniz if we have zlib

We don't use miniz if we have zlib; but it was still being built, because
we never actually set HAVE_ZLIB as a build system variable.

Use ZLIB_FOUND instead.

7 years agoSimplify handling of (dual-)Qt in the build system
Manuel Nickschas [Wed, 19 Mar 2014 20:00:07 +0000 (21:00 +0100)]
Simplify handling of (dual-)Qt in the build system

We've used a somewhat complex way to link the various targets to the
required Qt libraries (and use the correct defines and CFLAGS...), because
when that stuff was written, there were no target properties in CMake, and
thus it was not easily possible to build targets within the same scope with
different settings. Therefore, we couldn't use the QT_USE_FILE and had to
write our own library handling.

These days, target properties exist, and Qt5 came up with a nice way to attach
the needed properties based on the Qt modules in use: qt5_use_modules()
This was later backported to Qt4, too, replacing the old way of having to
include QT_USE_FILE which would then set global variables.

We now make use of this; because qt4_use_modules() only showed up in
CMake 2.8.10, we've copied that function. It will be used only if it's
not present in CMake proper.

As a bonus, I've also wrapped all the qt-related macros into functions
that do the check for the Qt version we want to build against, and select
the proper macro to call, thus removing lots of WITH_QT5 conditionals
from the rest of the build system. Note that Qt5 support is still incomplete,

7 years agoEnable automoc
Manuel Nickschas [Mon, 17 Mar 2014 22:15:57 +0000 (23:15 +0100)]
Enable automoc

Finally we can make use of this very convenient CMake feature and have
the moc stuff handled automagically. No need to list the headers anymore
for feeding them into the long-deprecated qt4_wrap_cpp macro.

Also, this should compile a bit faster and lead to slightly better optimized
code, because automoc will combine all the generated moc stuff for a target
into a single translation unit.

Note that we could get rid of various empty .cpp files (where all the code
is in the header) by just adding the header to the sources list; that way,
automoc will pick them up. There is no need to have a dummy .cpp file for

7 years agoMove compile settings into a separate CMake module
Manuel Nickschas [Mon, 17 Mar 2014 21:33:50 +0000 (22:33 +0100)]
Move compile settings into a separate CMake module

That stuff just clutters the main CMakeLists.txt and is better off
in a separate file.

7 years agoMove all CMake scripts one level up
Manuel Nickschas [Sun, 16 Mar 2014 22:33:41 +0000 (23:33 +0100)]
Move all CMake scripts one level up

Having them in cmake/modules/ just adds a pointless extra directory,
so let's move them directly into cmake/.

7 years agoInstall current cmake in Travis CI environment
Daniel Albers [Sun, 16 Mar 2014 22:45:30 +0000 (23:45 +0100)]
Install current cmake in Travis CI environment

7 years agoDisable Github's Travis CI for now
Manuel Nickschas [Sun, 16 Mar 2014 22:27:09 +0000 (23:27 +0100)]
Disable Github's Travis CI for now

Since the Github build servers have only CMake 2.8.7, we can't build there
at the moment. We'll re-enable this once they upgrade their servers, or
alternatively if we decide that we can relax the CMake requirement a bit.

7 years agoDon't look recursively for a .git dir
Manuel Nickschas [Sun, 16 Mar 2014 21:00:49 +0000 (22:00 +0100)]
Don't look recursively for a .git dir

The original GetGitRevisionDescription.cmake script would look for
a .git dir recursively in the parent directories of its invocation;
while a nice feature, it may pick up an unrelated repository if there's
none in the Quassel directory. Because we know exactly where to find
our own .git if it's there at all, we can remove the recursion and
prevent this issue.

7 years agogenversion-B-GONE
Manuel Nickschas [Sun, 16 Mar 2014 20:42:51 +0000 (21:42 +0100)]

Back in the day, we wanted to have information about the git hash a
particular Quassel binary was built from in the About dialog, to allow
for diagnostic purposes. However, we didn't manage to retrieve that
kind of information using CMake alone (we're talking CMake 2.4 here, too);
so we came up with the hack to compile a small binary that would be run
at build time and called the git executable in order to write version
information into a file.

This is not particularly nice, as running random binaries at build time is
frowned upon and can cause problems in some setups, and of course we have
the overhead of building it first.

Meanwhile, we found a nice set of CMake macros created by Ryan Pavlik that
would retrieve that information purely running Git commands, making genversion
obsolete. Together with the configure_file feature of CMake, this allows us
to do this more elegantly.

So gone is genversion, and also the good old trusted version.inc file...

Manuel Nickschas [Sun, 16 Mar 2014 17:54:49 +0000 (18:54 +0100)]

Just to make clear how to handle the files we bundle.

7 years agoUpdate currently bundled CMake scripts
Manuel Nickschas [Sun, 16 Mar 2014 16:45:10 +0000 (17:45 +0100)]
Update currently bundled CMake scripts

We still need to bundle some CMake scripts that are not part of a
standard CMake installation, and may not be present in particular
on non-UNIXy platforms (as e.g. Windows does not have the concept
of a system-wide CMake script location).

Let's use current versions of those.

7 years agoRemove obsolete CMake scripts
Manuel Nickschas [Sun, 16 Mar 2014 16:40:11 +0000 (17:40 +0100)]
Remove obsolete CMake scripts

We no longer need to bundle our own versions of FindOpenSSL and
FindPkgConfig, as recent CMake versions ship them.

7 years agoBump CMake version requirement to 2.8.9
Manuel Nickschas [Sun, 16 Mar 2014 16:14:49 +0000 (17:14 +0100)]
Bump CMake version requirement to 2.8.9

Time to modernize our build system, making use of all the fancy features
that have crept into CMake in the past few years. While 2.8.9 is by far not
the latest version, it is rather widely deployed in distros at this time and
thus seems to be a reasonable choice as a minimum requirement.

7 years agoStart of 0.11 cycle 0.11-pre
Manuel Nickschas [Sun, 16 Mar 2014 14:41:48 +0000 (15:41 +0100)]
Start of 0.11 cycle

7 years agoBump version.inc for release 0.10-rc1
Manuel Nickschas [Sun, 16 Mar 2014 14:35:21 +0000 (15:35 +0100)]
Bump version.inc for release

7 years agoYet another inxi version bump
Manuel Nickschas [Sun, 16 Mar 2014 12:46:15 +0000 (13:46 +0100)]
Yet another inxi version bump

This fixes the term-related warnings the last version had.

7 years agoUpdate ChangeLog
Manuel Nickschas [Sat, 15 Mar 2014 14:11:54 +0000 (15:11 +0100)]
Update ChangeLog

7 years agoBump inxi version to 2.1.1
Manuel Nickschas [Fri, 14 Mar 2014 21:51:37 +0000 (22:51 +0100)]
Bump inxi version to 2.1.1

Hasn't been bumped in rather a while.

7 years agoFix round-robin for networks that support it
Manuel Nickschas [Fri, 14 Mar 2014 20:13:09 +0000 (21:13 +0100)]
Fix round-robin for networks that support it

Some IRC networks perform round-robin by supplying a list of IP addresses
in their DNS records. However, Qt a) always uses the first address of that
list, and b) caches DNS records for a minute. This results that users who
connect at a roughly similar time (like at core startup) will all pick the
same IP for a given round-robin network address.

We now force Qt (simply by calling QHostInfo::fromName()) to perform a fresh
lookup every time it connects to an IRC network, which solves this problem.
However, this will not help you if your OS uses a system DNS cache that does
not reshuffle the list of IPs for repeated lookups.

7 years agoDon't always add a colon to custom commands
Manuel Nickschas [Fri, 14 Mar 2014 17:40:40 +0000 (18:40 +0100)]
Don't always add a colon to custom commands

The IRC spec mandates that spaces be used as separators between the
arguments for a command. However, the last parameter may itself contain
spaces, and to allow this, one can prefix that argument with a colon.

Instead of checking if the colon is needed, Quassel just always added
a colon to the last argument, which usually works fine. However, it broke
some uses of custom server commands.

This fix now checks if the last argument contains a space or starts with
a colon (which then needs to be escaped), and leaves it alone otherwise.

Fixes #1173 - thanks to Gunnar Beutner for providing the patch.

7 years agoMerge pull request #62 from Express50/issue_1243
Manuel Nickschas [Fri, 14 Mar 2014 17:32:39 +0000 (18:32 +0100)]
Merge pull request #62 from Express50/issue_1243

Fix URL regex

7 years agoFix URL regex 62/head
Express50 [Sun, 9 Mar 2014 17:42:01 +0000 (13:42 -0400)]
Fix URL regex

Removes unwise characters from URL regex. These characters should be percent escaped according to RFC 2396.

Fixes #1243

7 years agoadd context menu action to reset chat column widths
Daniel Albers [Sat, 1 Mar 2014 18:51:29 +0000 (19:51 +0100)]
add context menu action to reset chat column widths

If a ChatScene column has been resized during the current Quassel client
session or a column is <= 10 px wide, offer to reset the columns to sane

7 years agomake highlight rules case-insensitive by default
Daniel Albers [Wed, 26 Feb 2014 23:39:56 +0000 (00:39 +0100)]
make highlight rules case-insensitive by default

7 years agoSimplify clean-up-on-network-disconnect handling
Manuel Nickschas [Sun, 2 Mar 2014 20:19:34 +0000 (21:19 +0100)]
Simplify clean-up-on-network-disconnect handling

Previously, disconnecting from a network would trigger lots of unnecessary
stuff: because the NetworkModel needs to remove affected IrcChannels and
IrcUsers from its model items, we would trigger (on the core side!) an
IrcUser::quit() for every known user in that network, which would then remove
itself from all channels it's in, triggering the corresponding updates in the
related SyncableObjects, which would send lots of signals to the client which
would then perform its own cleanups per IrcUser, followed by throwing away
all IrcChannels and IrcUsers in that network anyway. By the time we reached
Network::removeChansAndUsers(), everything would actually be already all
gone triggered through syncobject updates.

Except in some rare cases when there was still something left behind, triggering
the dreaded "!_ircChannel && ircChannel" assert, that users have been reporting
for years. I still haven't figured out how that could possibly happen.

In any case, the only side effect that explicit call to IrcUser::quit() was
supposed to trigger was the removal of the relevant references in NetworkModel's
items. So now we just brutally delete all IrcUsers and IrcChannels on disconnect,
and have the NetworkModel items listen to the relevant destroyed() signals so
they can do their cleanup. This saves us from sending lots of stuff over the
network, and also should fix the assert (which we've replaced by a warning now,
just in case).

Fixes #1151 and a bunch of duplicates.

7 years agoDon't crash on very long inputs
Manuel Nickschas [Sat, 1 Mar 2014 13:07:36 +0000 (14:07 +0100)]
Don't crash on very long inputs

Because our style engine uses 16 bit indexes, strings can only be
styled if they're shorter than 2^16 characters. We do check for this
in the style engine and refuse to style strings that are longer.

However, just returning an default-constructed StyledString() is wrong,
because other places rely on there being at least one format and the
plaintext be initialized. So the proper way of handling this is just
using the baseFormat and the full string as plaintext instead of an
empty StyledString.

Fixes #1257.

7 years agoFix reconnection logic in the client
Manuel Nickschas [Thu, 27 Feb 2014 20:10:40 +0000 (21:10 +0100)]
Fix reconnection logic in the client

Seems like b654b2f broke reconnecting the client to the core; it would
only try once and then stop trying. Thanks to mamarley for noticing that bug
and bisecting the culprit.

The main issue causing this was that CoreConnection called
resetConnection(false) before (re)connecting, thus clearing the reconnect
flag. This call is a remnant from before we refactored out all the socket
handling and should not be needed anymore, now that we have clean disconnected()
semantics. Before b654b2f this was not a problem, because we would always
receive a socket error on failed reconnect that would reinstate the flag.

Because b654b2f worked around another issue by always sending a disconnected()
when the socket goes back into UnconnectedState, and this would happen before
the socket error signal was sent, the error handling would never be called
and the reconnect flag thus not reinstated, causing this bug.

So the second fix is to spin the event loop such that the error signal can
overtake that disconnected() signal and be handled properly (so we also
get the socket error message in the status bar).

7 years agoUse autonegotiation to choose an SSL protocol. 61/head
Michael Marley [Wed, 26 Feb 2014 01:53:36 +0000 (01:53 +0000)]
Use autonegotiation to choose an SSL protocol.
Previously, the user manually configured which SSL protocol to use
when connecting to IRC.  The default was SSLv3.  A better idea is
to allow Qt to automatically negotiate the best protocol out of
the available secure protocols, which this patch implements.

7 years agoUse Snore only if building without KDE
Patrick von Reth [Tue, 25 Feb 2014 23:26:06 +0000 (00:26 +0100)]
Use Snore only if building without KDE

Also use the system tray backend as default.

7 years agoAllow for clients to negotiate whether compression is used
Michael Marley [Mon, 24 Feb 2014 14:12:27 +0000 (14:12 +0000)]
Allow for clients to negotiate whether compression is used

Previously, streaming compression would always be used for the
datastream protocol and never for the legacy protocol, regardless
of whether the client set the compression bit during the handshake.
This patch enables negotiation of compression support and also
allows for streaming compression when using the legacy protocol
with the new handshake.

As is, this patch prevents clients with streaming compression
support but without this patch from connecting to cores with this
patch.  This problem occurs because the above-mentioned clients
never set the compression bit during the handshake, which didn't
cause a problem before because both sides unconditionally enabled
compression.  However, when connecting to a core with this patch,
such a client will request no compression and the core will
disable compression.  However, the client will still enable the
compression anyway, causing the connection to fail.

7 years agoupdate quassel.pot
Daniel Albers [Fri, 21 Feb 2014 12:13:21 +0000 (13:13 +0100)]
update quassel.pot

7 years agoadapt translations to previous change
Daniel Albers [Fri, 21 Feb 2014 12:13:03 +0000 (13:13 +0100)]
adapt translations to previous change

7 years agomove © years out of translatable text in aboutDlg
Daniel Albers [Fri, 21 Feb 2014 11:58:16 +0000 (12:58 +0100)]
move © years out of translatable text in aboutDlg

7 years agoremove old static versionLabel text
Daniel Albers [Fri, 21 Feb 2014 11:55:56 +0000 (12:55 +0100)]
remove old static versionLabel text

7 years agoSilence yet another warning
Manuel Nickschas [Wed, 19 Feb 2014 22:14:37 +0000 (23:14 +0100)]
Silence yet another warning

I have no clue why neither gcc nor clang throw a -Wsign-compare for me
there, but do for some other people, so... *sigh*

7 years agoFix -Wundef warning
Manuel Nickschas [Wed, 19 Feb 2014 21:41:41 +0000 (22:41 +0100)]
Fix -Wundef warning

Was thrown on 32 bit, should be #ifdef instead of #if because the attribute
is only defined on 64 bit machines.

7 years agoUse system zlib if available
Manuel Nickschas [Wed, 19 Feb 2014 20:19:32 +0000 (21:19 +0100)]
Use system zlib if available

Only fall back to miniz if we don't find zlib on the system. Distro
packagers like this much more, and we use code that has seen much
more testing. Incidentally, we've already had one case where miniz was
really slow on a 32 bit box.

Still keeping miniz as fallback for the rare platform/build box that
doesn't ship zlib, since waiting a few seconds for compressing the
backlog is still probably better than transmitting a few MB of extra

7 years agoSilence one more warning in miniz.c
Manuel Nickschas [Wed, 19 Feb 2014 18:47:52 +0000 (19:47 +0100)]
Silence one more warning in miniz.c

Building on 32 bit machines causes some warnings related to undefined
macros; -Wno-undef silences that.

7 years agoupdate quassel.pot
Daniel Albers [Tue, 18 Feb 2014 23:57:54 +0000 (00:57 +0100)]
update quassel.pot

7 years agoUpdate translations from Transifex
Daniel Albers [Mon, 25 Nov 2013 04:00:37 +0000 (05:00 +0100)]
Update translations from Transifex

  24961 translated messages

Many thanks to:
 - es: Adolfo Jayme Barrientos <fitoschido@ubuntu.com>
 - fi: Larso <larso@gmx.com>
 - hi: libregeekingkid <rajuvindane@gmail.com>
 - nl: Simon Philips <simon.philips@gmail.com>
 - pa: A S Alam <apreet.alam@gmail.com>
 - tr: volkangezer <volkangezer@gmail.com>
 - uk: Yuri Chornoivan <yurchor@ukr.net>
 - zh_CN: leonfeng <chaofeng111@gmail.com>

7 years agoi18n: add some statistics to commit messages
Daniel Albers [Mon, 25 Nov 2013 00:27:34 +0000 (01:27 +0100)]
i18n: add some statistics to commit messages

7 years agoBump version.inc for release 0.10-beta1
Manuel Nickschas [Tue, 18 Feb 2014 22:40:06 +0000 (23:40 +0100)]
Bump version.inc for release

7 years agoUpdate ChangeLog
Manuel Nickschas [Tue, 18 Feb 2014 22:28:52 +0000 (23:28 +0100)]
Update ChangeLog

7 years agoUpdate AboutDlg
Manuel Nickschas [Tue, 18 Feb 2014 22:14:02 +0000 (23:14 +0100)]
Update AboutDlg

7 years agoUse a unicode string instead of the escaped version.
Chris H [Sun, 16 Feb 2014 02:26:05 +0000 (21:26 -0500)]
Use a unicode string instead of the escaped version.

Compiling with MSVC Doesn't like unicode literals here.

7 years agoDisable webpreview to avoid user interactaction
Deniz Türkoglu [Thu, 13 Feb 2014 11:44:21 +0000 (12:44 +0100)]
Disable webpreview to avoid user interactaction

If the user interacts with the webview, for instance click a button
or type text in it, it crashes the client.

Disable the webview so we still get the previews but can't interact
with them.

7 years agoUse new snore api and a bug fix
Patrick von Reth [Tue, 21 Jan 2014 11:29:41 +0000 (12:29 +0100)]
Use new snore api and a bug fix

7 years agoAdd option to include read messages in chat monitor
Adam Harwood [Sat, 21 Dec 2013 17:31:13 +0000 (17:31 +0000)]
Add option to include read messages in chat monitor

When the show backlog option is used, give users the option to include previously read messages.

7 years agoAdd option for chat monitor to look in the backlog
Awad Mackie [Sat, 24 Mar 2012 15:54:22 +0000 (15:54 +0000)]
Add option for chat monitor to look in the backlog

See #734. Thanks to Adam Harwood for rebasing this. ~Sput

7 years agoAdd option to enable linewrap mode
Pete Beardmore [Wed, 28 Aug 2013 10:42:36 +0000 (11:42 +0100)]
Add option to enable linewrap mode

Implements #1081.

7 years agoAdd CoreFeatures guard for hiding inactive networks
Chris Le Sueur [Thu, 23 Jan 2014 00:29:04 +0000 (00:29 +0000)]
Add CoreFeatures guard for hiding inactive networks

7 years agoAdd a setting to hide inactive networks in buffer views
Chris Le Sueur [Wed, 15 May 2013 22:44:26 +0000 (23:44 +0100)]
Add a setting to hide inactive networks in buffer views

7 years agoPeerFactory is not a QObject
Manuel Nickschas [Mon, 17 Feb 2014 22:24:20 +0000 (23:24 +0100)]
PeerFactory is not a QObject


7 years agoFix CFLAGS for miniz
Manuel Nickschas [Mon, 17 Feb 2014 22:22:17 +0000 (23:22 +0100)]
Fix CFLAGS for miniz

... and make sure KDE doesn't overwrite them with something that
makes miniz not compile (apparently it's not C89 compliant...)

7 years agoEnable the DataStream protocol by default
Manuel Nickschas [Mon, 17 Feb 2014 21:21:29 +0000 (22:21 +0100)]
Enable the DataStream protocol by default

Now that compression works, let's use the DataStream protocol
by default if both sides claim support for it.

7 years agoImplement streaming compression support
Manuel Nickschas [Mon, 17 Feb 2014 21:18:39 +0000 (22:18 +0100)]
Implement streaming compression support

This leverages miniz in order to DEFLATE the data stream between
client and core. This is the standard format supported by zlib.

Note that streaming compression currently is unconditionally enabled
for the DataStream protocol, and unconditionally disabled for the
legacy protocol. We'll make them honor the handshake negotiation