quassel.git
4 years agoBump version for release 0.12.1
Manuel Nickschas [Tue, 21 Apr 2015 20:41:47 +0000 (22:41 +0200)]
Bump version for release

4 years agoUpdate ChangeLog
Manuel Nickschas [Tue, 21 Apr 2015 20:41:11 +0000 (22:41 +0200)]
Update ChangeLog

4 years agoSet the PostgreSQL session timezone to 'UTC'
Michael Marley [Mon, 20 Apr 2015 16:43:53 +0000 (12:43 -0400)]
Set the PostgreSQL session timezone to 'UTC'

With Qt5, the PostgreSQL driver will transparently convert times
to the database's timezone before inserting.  Because the default
is 'localtime', this causes the local time to be stored in the DB
instead of the UTC time.  This in turn causes the time displayed
in the client to be wrong by the same offset as that timezone's
offset.  To fix the issue, just make sure the PostgreSQL is in the
'UTC' timezone, so the passed UTC time will not be converted.

4 years agoBump version for release 0.12.0
Manuel Nickschas [Wed, 15 Apr 2015 20:58:17 +0000 (22:58 +0200)]
Bump version for release

4 years agoUpdate ChangeLog
Manuel Nickschas [Wed, 15 Apr 2015 20:57:53 +0000 (22:57 +0200)]
Update ChangeLog

4 years agoOutput the CMake version during configuration
Manuel Nickschas [Wed, 15 Apr 2015 20:56:03 +0000 (22:56 +0200)]
Output the CMake version during configuration

This will allow us to quickly see if too old (or sometimes even
too new) CMake versions cause problems for building.

4 years agoUse the Qca-qt5 import target if available
Patrick von Reth [Mon, 16 Mar 2015 10:55:41 +0000 (11:55 +0100)]
Use the Qca-qt5 import target if available

4 years agoMerge pull request #121 from mamarley/unusedcipherfix
Manuel Nickschas [Wed, 15 Apr 2015 18:12:08 +0000 (20:12 +0200)]
Merge pull request #121 from mamarley/unusedcipherfix

Fix compiler warning when compiling without QCA support

4 years agoMerge pull request #120 from mamarley/dbcreatefix
Manuel Nickschas [Thu, 9 Apr 2015 11:53:29 +0000 (13:53 +0200)]
Merge pull request #120 from mamarley/dbcreatefix

Update the schema creation DDL for the new password hashing

4 years agoFix compiler warning when compiling without QCA support 121/head
Michael Marley [Mon, 6 Apr 2015 01:54:36 +0000 (21:54 -0400)]
Fix compiler warning when compiling without QCA support

4 years agoUpdate the schema creation DDL for the new password hashing 120/head
Michael Marley [Mon, 6 Apr 2015 01:35:09 +0000 (21:35 -0400)]
Update the schema creation DDL for the new password hashing

I'm not sure whether this slipped out in a merge or whether I
forgot to add it in the first place, but it should have been part
of commit 5924533c6d0f9777d38c01ed7e1510a55db2b876.  This
completely broke setting up a new Quassel instance from scratch
with 0.12-rc1, but upgrades from previous versions are unaffected.

4 years agoFix typo in PasswordChangeDlg failure message
Daniel Albers [Wed, 25 Mar 2015 12:11:50 +0000 (13:11 +0100)]
Fix typo in PasswordChangeDlg failure message

4 years agoUpdate translations from Transifex
Daniel Albers [Wed, 26 Mar 2014 04:00:33 +0000 (05:00 +0100)]
Update translations from Transifex

  26056 translated messages

Many thanks to:
 - cs: Jaroslav Lichtblau <dragonlord@seznam.cz>
 - da: Jens True <frazzer@hotmail.com>,
       Joe Hansen <joedalton2@yahoo.dk>
 - de: contradictioned <contradictioned@googlemail.com>,
       Felix Kaechele <felix@fetzig.org>,
       Manuel Hoffmann <contradictioned@googlemail.com>,
       Tobias Frei <tobias@freiwuppertal.de>
 - el: Stefanos Sofroniou <inactive+_stefanos_@transifex.com>
 - eo: Tinjo Kohen <tiffypet@yahoo.com>
 - es: Adolfo Jayme Barrientos <fitoschido@ubuntu.com>,
       Jonathan Farnham <jonathan@haitu-yu.com>
 - fi: Lasse Liehu <larso@gmx.com>
 - fr: Vlavv <vlavv2@gmail.com>
 - gl: Miguel Anxo Bouzada <mbouzada@gmail.com>
 - hi: Raju Devidas Vindane <rajuvindane@gmail.com>
 - ko: Sungjin Kang <potopro@gmail.com>
 - mr: Raju Devidas Vindane <rajuvindane@gmail.com>
 - nl: simonphilips <simon.philips@gmail.com>
 - oc: Cédric Valmary <cvalmary@yahoo.fr>
 - pa: A S Alam <apreet.alam@gmail.com>
 - pt_BR: Pedro Araujo <pedroaraujo@colorlesscube.com>
 - ro: Arthur Țițeică <arthur.titeica@gmail.com>
 - sl: Andrej Mernik <andrejm@ubuntu.si>
 - sr: Jovan Jojkić <jovanjojkic@gmail.com>
 - tr: Volkan Gezer <volkangezer@gmail.com>
 - uk: Yuri Chornoivan <yurchor@ukr.net>

4 years agoUpdate quassel.pot
Daniel Albers [Tue, 25 Mar 2014 23:10:11 +0000 (00:10 +0100)]
Update quassel.pot

4 years agoThese two settings keys shouldn't be translated
Lasse Liehu [Tue, 25 Mar 2014 22:53:23 +0000 (00:53 +0200)]
These two settings keys shouldn't be translated

4 years agoMerge pull request #118 from mamarley/randomfix
Manuel Nickschas [Wed, 11 Mar 2015 22:21:29 +0000 (23:21 +0100)]
Merge pull request #118 from mamarley/randomfix

Fix FTBFS on certain older libstdc++ versions.

4 years agoFix FTBFS on certain older libstdc++ versions. 118/head
Michael Marley [Wed, 11 Mar 2015 21:54:05 +0000 (17:54 -0400)]
Fix FTBFS on certain older libstdc++ versions.

4 years agoBump version for release 0.12-rc1
Manuel Nickschas [Wed, 11 Mar 2015 19:47:23 +0000 (20:47 +0100)]
Bump version for release

4 years agoUpdate ChangeLog
Manuel Nickschas [Wed, 11 Mar 2015 19:46:47 +0000 (20:46 +0100)]
Update ChangeLog

4 years agoMerge pull request #116 from mamarley/splitfix2
Manuel Nickschas [Wed, 11 Mar 2015 19:43:25 +0000 (20:43 +0100)]
Merge pull request #116 from mamarley/splitfix2

Improve the message-splitting algorithm for PRIVMSG and CTCP

4 years agoMove websearch from botton of context menu to underneath copy selection.
Chris H [Sun, 14 Sep 2014 17:30:09 +0000 (13:30 -0400)]
Move websearch from botton of context menu to underneath copy selection.

It seems the 'Copy Selection' button got moved between when the patch
was made and when it finally got applied. Got missed during the merge.

4 years agoMerge pull request #117 from mamarley/oldcoresslconfig
Manuel Nickschas [Wed, 11 Mar 2015 19:15:24 +0000 (20:15 +0100)]
Merge pull request #117 from mamarley/oldcoresslconfig

Add back the SSL protocol selection dialog box for old cores.

4 years agoMerge pull request #111 from mamarley/nosslloopback
Manuel Nickschas [Wed, 11 Mar 2015 19:13:12 +0000 (20:13 +0100)]
Merge pull request #111 from mamarley/nosslloopback

Don't require SSL for loopback connections with --require-ssl

4 years agoMerge pull request #110 from mamarley/passhash
Manuel Nickschas [Wed, 11 Mar 2015 19:10:41 +0000 (20:10 +0100)]
Merge pull request #110 from mamarley/passhash

Introduce new password hash versioning system and new salted SHA2-512 hash

4 years agoProvide a proper dialog for changing the core password
Manuel Nickschas [Wed, 11 Mar 2015 18:49:27 +0000 (19:49 +0100)]
Provide a proper dialog for changing the core password

The password change dialog now asks for your old password, and forces
you to confirm the new password by typing it twice, as is customary.
To make this works, we need to add bidirectional communication between
client and core, forcing some more changes to the way the first iteration
of the feature was done.

Note that this commit breaks compatibility with the previous implementation.
If you run a beta1 core or client, you need to upgrade both to make things
work again. Since no real release happened in between, I don't deem it
necessary to provide backwards compat or yet another feature guard.

4 years agoMake PeerPtr work for RPC calls
Manuel Nickschas [Wed, 11 Mar 2015 18:43:21 +0000 (19:43 +0100)]
Make PeerPtr work for RPC calls

While most of the functionality was already in place, it turns out
that we need to enable loading/saving PeerPtr from/to a QVariant in
order for SignalProxy to work properly.

I'm honestly not sure why it seemed to work without this when implementing
the TransferManager, but it's obvious it's required.

4 years agoAdd missing dependency to KWidgetsAddons
Manuel Nickschas [Mon, 9 Mar 2015 20:53:00 +0000 (21:53 +0100)]
Add missing dependency to KWidgetsAddons

This is pulled in by some other frameworks modules anyway, but we should
list it explicitly.

4 years agoAdd back the SSL protocol selection dialog box for old cores. 117/head
Michael Marley [Fri, 27 Feb 2015 17:31:17 +0000 (12:31 -0500)]
Add back the SSL protocol selection dialog box for old cores.

Cores before 0.10 will default to SSLv3 if the user doesn't make a
selection.  If a >=0.10 client is used with a <0.10 core to connect
to a server that has SSLv3 disabled, it is impossible to connect
to that server without upgrading the core or using an old client
to change the SSL protocol settings.

This also changes the SSLv2 and SSLv3 options to indicate their
insecurity and therefore discourage their use.

Cores from 0.10 and up use SSL autonegotiation and to not need the
protocol setting.

This partially reverts commit
e53fc69a91553b57932ba599b39999d550114588.

4 years agoDon't require SSL for loopback connections with --require-ssl 111/head
Michael Marley [Sat, 14 Feb 2015 01:12:18 +0000 (20:12 -0500)]
Don't require SSL for loopback connections with --require-ssl

Encrypting a loopback connection is a pointless waste of computing
power.  This patch will allow people to use loopback connections
from things like quassel-webserver without encryption while still
requiring encryption for remote connections.

4 years agoAdd support for SHA2-512 hash on Qt4 builds 110/head
Michael Marley [Tue, 3 Mar 2015 01:31:02 +0000 (20:31 -0500)]
Add support for SHA2-512 hash on Qt4 builds

Qt4 doesn't support anything higher than SHA1 in
QCryptographicHash, so it is necessary to include a fallback.  This
bundles sha512.c from PolarSSL/mbed TLS.  It is only used for Qt4
builds and does not require a dependency on external libraries that
might be hard to compile on Windows® or Mac OSX®.  It can be
removed once Qt4 is no longer supported.

4 years agoImprove the message-splitting algorithm for PRIVMSG and CTCP 116/head
Michael Marley [Sat, 21 Feb 2015 12:33:57 +0000 (07:33 -0500)]
Improve the message-splitting algorithm for PRIVMSG and CTCP

This introduces a new message splitting algorithm based on
QTextBoundaryFinder.  It works by first starting with the entire
message to be sent, encoding it, and checking to see if it is over
the maximum message length.  If it is, it uses QTBF to find the
word boundary most immediately preceding the maximum length.  If no
suitable boundary can be found, it falls back to searching for
grapheme boundaries.  It repeats this process until the entire
message has been sent.

Unlike what it replaces, the new splitting code is not recursive
and cannot cause stack overflows.  Additionally, if it is unable
to split a string, it will give up gracefully and not crash the
core or cause a thread to run away.

This patch fixes two bugs.  The first is garbage characters caused
by accidentally splitting the string in the middle of a multibyte
character.  Since the new code splits at a character level instead
of a byte level, this will no longer be an issue.  The second is
the core crash caused by sending an overlength CTCP query ("/me")
containing only multibyte characters.  This bug was caused by the
old CTCP splitter using the byte index from lastParamOverrun() as
a character index for a QString.

4 years agoBump version for release 0.12-beta1
Manuel Nickschas [Wed, 18 Feb 2015 21:09:54 +0000 (22:09 +0100)]
Bump version for release

4 years agoUpdate INSTALL
Manuel Nickschas [Wed, 18 Feb 2015 21:07:59 +0000 (22:07 +0100)]
Update INSTALL

4 years agoUpdate ChangeLog
Manuel Nickschas [Wed, 18 Feb 2015 20:54:50 +0000 (21:54 +0100)]
Update ChangeLog

4 years agoUpdate AboutData
Manuel Nickschas [Wed, 18 Feb 2015 20:17:51 +0000 (21:17 +0100)]
Update AboutData

4 years agoAllows merging buffers over networks
Kimmo Huoman [Mon, 2 Feb 2015 12:13:51 +0000 (14:13 +0200)]
Allows merging buffers over networks

Feature request at http://bugs.quassel-irc.org/issues/1334

> As stated in Issue 83 merge is only possible with chats on the
> same network.
> As the usage of Bitlbee etc has increased, it would be useful
> to be able to merge chats across all networks as well. The issue
> rises as people are now using alternative methods (Facebook, Lync
> etc) during the day and returning to IRC in the evening.

Closes #1334

4 years agoMerge pull request #107 from siduction-upstream/master
Manuel Nickschas [Wed, 18 Feb 2015 20:03:51 +0000 (21:03 +0100)]
Merge pull request #107 from siduction-upstream/master

Set GIT_HEAD and GIT_DESCRIBE from environment

4 years agoToggle hiding of Join/Part/Quits with a single button
Chris Holland [Sat, 1 Feb 2014 20:54:40 +0000 (15:54 -0500)]
Toggle hiding of Join/Part/Quits with a single button

4 years agoSet GIT_HEAD and GIT_DESCRIBE via environmental variables 107/head
Alf Gaida [Tue, 17 Feb 2015 22:58:32 +0000 (23:58 +0100)]
Set GIT_HEAD and GIT_DESCRIBE  via environmental variables

Set GIT_HEAD and GIT_DESCRIBE before run cmake in case no source repo is
available - booth values must be extracted at clone/pull time

Example:
git log -1 | grep commit | sed 's#commit ##' > debian/git_head; \
git describe > debian/git_describe

export GIT_HEAD=$(shell [ -f debian/git_head ] && cat debian/git_head)

4 years agoAdd "/print" command
Pierre-Hugues Husson [Mon, 26 May 2014 11:38:08 +0000 (13:38 +0200)]
Add "/print" command

This only displays an info message without sending anything to
the server.

4 years agoChange location and behavior of the Password Change action
Manuel Nickschas [Tue, 17 Feb 2015 21:16:23 +0000 (22:16 +0100)]
Change location and behavior of the Password Change action

This action fits better in the File menu than under Settings, so
move it there.

Also, to increase discoverability, we now show the option even if
the core is too old to support the feature. A popup message informing
the user is shown in that case.

Additionally, the changed password is now saved client-side (if the
account is setup to remember the password), thus avoiding having to
re-enter the new password on next launch.

4 years agoHide or disable the Change Password option when appropriate
Michael Marley [Sat, 14 Feb 2015 19:01:42 +0000 (14:01 -0500)]
Hide or disable the Change Password option when appropriate

Previously, the Change Password option would be shown all the
time, even the the client was connected to a core not supporting
the password change functionality or if a monolithic build was in
use.  Now, the Change Password option will be disabled if the
client is disconnected or is connected to a core not supporting the
functionality and will be hidden if a monolithic build is in use.

4 years agoImplement password changing from client.
Martin T. H. Sandsmark [Tue, 25 Nov 2014 00:43:18 +0000 (01:43 +0100)]
Implement password changing from client.

Add menu item and dialog for getting a new password from the user,
signal from client to core to give the new password, and wire up the
signal on the core to change the password in the database.

Also update the stored password on the client side.

4 years agoMigrate KDE-specific settings from KDE4 to KF5
Manuel Nickschas [Mon, 16 Feb 2015 22:05:55 +0000 (23:05 +0100)]
Migrate KDE-specific settings from KDE4 to KF5

This uses Kdelibs4ConfigMigrator to move over KDE-specific settings
(i.e. window state, shortcuts, notifications...) from the KDE4 config
dir to the one used by KF5. This should make the move seamless for
most intents and purposes.

Note that migration won't happen (again) once the KF5 config files
exist.

4 years agoPort remaining stuff in MainWin to KF5
Manuel Nickschas [Mon, 16 Feb 2015 21:52:57 +0000 (22:52 +0100)]
Port remaining stuff in MainWin to KF5

We use KToolbar now and handle the full screen action properly in
both KDE4 and KF5.

4 years agoFix shortcut saving on KDE, and use the system dialog for Frameworks
Manuel Nickschas [Mon, 16 Feb 2015 20:56:48 +0000 (21:56 +0100)]
Fix shortcut saving on KDE, and use the system dialog for Frameworks

While re-enabling the system dialog for shortcut editing for KF5,
I finally figured out why shortcuts where never saved when using KDE;
a long standing bug we've had.
Turns out QDialog::exec() does not actually save things. All this time
I was looking into completely different directions; but it never
occured to me that I need to explicitly save after the dialog is
accepted (our own dialog does this automatically). This is not a
complaint; it was being stupid on my end :)

Fixes #1057.

4 years agoUse KNotifications if Frameworks integration is enabled
Manuel Nickschas [Sun, 15 Feb 2015 21:48:09 +0000 (22:48 +0100)]
Use KNotifications if Frameworks integration is enabled

This brings back proper support for KNotify if KDE Frameworks
integration is enabled.

Note that quassel.notifyrc is installed in a different location
if KF5 as opposed to KDE4. If you don't have a system installation
of Quassel, you may have to manually copy that file from data/
to $HOME/.local/share/knofitications5 for KNotify to know about
Quassel.

4 years agoAdapt custom stylesheet path to new default install location
Manuel Nickschas [Thu, 12 Feb 2015 21:24:34 +0000 (22:24 +0100)]
Adapt custom stylesheet path to new default install location

When switching from a KDE4 build to Qt5/KF5, the default install
location for data files switches from /usr/share/apps/quassel to
/usr/share/quassel, as is standard. Users who have selected one of
the pre-installed stylesheets will use that setting.

Thus, if a custom stylesheet is configured and points to /usr/share/apps,
in case it is not found we will now try and look into /usr/share as well.
If we find the stylesheet in the new location, we'll also update the
stored setting.

4 years agoWork around weirdly broken MOCs
Manuel Nickschas [Wed, 11 Feb 2015 22:22:31 +0000 (23:22 +0100)]
Work around weirdly broken MOCs

Apparently, Debian Wheezy ships Qt 4.8.2 with a MOC that thinks it's older
than 4.6, or something. Not sure what's going on, but if we remove
that "#if QT_VERSION" that checks for versions older than 4.6 (and thus does
not make any sense now that we require 4.8 anyway), the MOC on (some?)
Wheezy installations fails to deal with the Q_INTERFACES call.

I guess it doesn't hurt to keep the guard around, but this issue still leaves
me scratching my head...

4 years agoUse KMainWindow if KF5 integration is enabled.
Manuel Nickschas [Sun, 8 Feb 2015 23:58:49 +0000 (00:58 +0100)]
Use KMainWindow if KF5 integration is enabled.

With this commit, Quassel uses a proper KMainWindow if KF5 integration
is enabled. This works pretty much like the KDE4 version, so we just had
to add the appropriate #includes and adapt the #ifdefs.

4 years agoMove KAboutData initialization before app initialization
Manuel Nickschas [Sun, 8 Feb 2015 23:58:16 +0000 (00:58 +0100)]
Move KAboutData initialization before app initialization

4 years agoAdd comment regarding the removal of X11 hacks to GraphicalUi
Manuel Nickschas [Sun, 8 Feb 2015 23:55:41 +0000 (00:55 +0100)]
Add comment regarding the removal of X11 hacks to GraphicalUi

Turns out all window activation stuff just works with Qt5, even with
KF5 integration enabled. So there is no need to employ fugly X11 hacks
in order to bypass focus stealing prevention, as was required in KDE4.

Because GraphicalUi doesn't seem to require any more porting changes,
add a comment instead to later remove the hacks together with Qt4/KDE4.

4 years agoRequire CMake 2.8.12 for KDE Frameworks integration
Manuel Nickschas [Sun, 8 Feb 2015 23:54:07 +0000 (00:54 +0100)]
Require CMake 2.8.12 for KDE Frameworks integration

CMake support for KF5 requires at least 2.8.12, so enforce this.
Accordingly, move cmake_minimum_required() and friends below reading
the configure option.

4 years agoMake the AboutDlg layout slightly prettier
Manuel Nickschas [Sun, 8 Feb 2015 23:50:53 +0000 (00:50 +0100)]
Make the AboutDlg layout slightly prettier

Some italic font and some more whitespace make things so much nicer.

4 years agoImprove data path handling
Manuel Nickschas [Sun, 8 Feb 2015 18:52:55 +0000 (19:52 +0100)]
Improve data path handling

Originally I intended to switch to QStandardPaths for Qt5, however this
would also require migration code. We'll postpone this until we can
get rid of Qt4 and KDE4, so there are less combinations to handle properly.

Instead, this commit improves the handling of data paths in general by
fixing search order, supporting XDG_DATA_HOME, and sanitizing the paths
properly. Also KDE builds now check their own install prefix, in case
Quassel is installed in a non-standard location.

4 years agoAdd missing index.theme to the bundled Oxygen icon theme
Manuel Nickschas [Sun, 8 Feb 2015 17:07:30 +0000 (18:07 +0100)]
Add missing index.theme to the bundled Oxygen icon theme

Otherwise, the icon loader may not find the bundled icons.

4 years agoConvert the Storage::HashVersion names to CamelCase
Michael Marley [Sun, 8 Feb 2015 18:44:33 +0000 (13:44 -0500)]
Convert the Storage::HashVersion names to CamelCase

4 years agoAdd support for a salted SHA2-512 hash
Michael Marley [Sun, 8 Feb 2015 18:25:50 +0000 (13:25 -0500)]
Add support for a salted SHA2-512 hash

This new hash uses a SHA2-512 hash salted with 512 bits of data
generated using the C++11 std::mt19937 algorithm, seeded by
std::random_device.  It only works with Qt5, so Qt4 builds will
keep using the old SHA1 hash.

4 years agoAdd support for password hash versioning
Michael Marley [Sat, 7 Feb 2015 20:40:23 +0000 (15:40 -0500)]
Add support for password hash versioning

Previously, Quassel would always use an unsalted SHA1 hash.  This
patch introduces a version field for the password, allowing for
using a better hash.  (No new hash is added yet.)  Users will be
automatically upgraded to the newest hash whenever they login or
change their passwords.

This is implemented by adding a new integer field to hold the hash
version in the DB.  Additionally, the password field in PostgreSQL
has been expanded to a TEXT field, allowing larger hash values to
be stored in the future.  The password hashing code has also been
refactored to make it easier to introduce new hashes without
fooling around in the DB driver code.

4 years agoMerge pull request #97 from Bombe/focus-host-input
Manuel Nickschas [Sat, 7 Feb 2015 16:57:26 +0000 (17:57 +0100)]
Merge pull request #97 from Bombe/focus-host-input

Set initial focus to host input widget.

4 years agoMerge pull request #104 from mamarley/disconnectdesyncfix
Manuel Nickschas [Sat, 7 Feb 2015 16:45:24 +0000 (17:45 +0100)]
Merge pull request #104 from mamarley/disconnectdesyncfix

Fix potential state desync in disconnectFromIrc()

4 years agoRemove dead assignments
Manuel Nickschas [Sat, 7 Feb 2015 16:34:02 +0000 (17:34 +0100)]
Remove dead assignments

This makes clang-analyzer happy.

4 years agoRemove unneeded conditionals
Manuel Nickschas [Sat, 7 Feb 2015 16:33:32 +0000 (17:33 +0100)]
Remove unneeded conditionals

This makes clang-analyzer happy.

4 years agoSimplify session thread handling in Core
Manuel Nickschas [Sat, 7 Feb 2015 16:25:43 +0000 (17:25 +0100)]
Simplify session thread handling in Core

Whenever we want to get a session thread for a given user, we first
would check if we already have one and get that, or create a new one.
Instead of doing this several times in the code, this commit just
turns the former createSession() method into sessionForUser(), which
will create a thread if needed. This also removes a dead assignment
clang-analyzer complained about.

4 years agoReplace assertion by condition
Manuel Nickschas [Sat, 7 Feb 2015 16:05:58 +0000 (17:05 +0100)]
Replace assertion by condition

While the condition should be always true, clang-analyzer still
complained about it. So turn this into a condition instead.

Worst case we'll just lose the item selection now.

4 years agoRemove support for obsolete Qt versions
Manuel Nickschas [Fri, 6 Feb 2015 21:30:44 +0000 (22:30 +0100)]
Remove support for obsolete Qt versions

Now that we rely on Qt 4.8+, we can get rid of a few workaround that
were in place for older versions.

4 years agoRemove support for network detection via Solid
Manuel Nickschas [Fri, 6 Feb 2015 21:22:21 +0000 (22:22 +0100)]
Remove support for network detection via Solid

Now that we rely on Qt 4.8 and up, we can use QNCM on all platforms.
Solid::Networking didn't do anything else, and is deprecated in
KDE Frameworks in favor of QNCM anyway.

Also improved the core connection settings dialog a bit.

4 years agoFilter -ansi from CMAKE_CXX_FLAGS
Manuel Nickschas [Fri, 6 Feb 2015 18:59:58 +0000 (19:59 +0100)]
Filter -ansi from CMAKE_CXX_FLAGS

This was set by older versions of KDE 4 and negates -std=c++11.

4 years agoAdd Yaohan Chen to AboutData
Manuel Nickschas [Thu, 5 Feb 2015 23:02:36 +0000 (00:02 +0100)]
Add Yaohan Chen to AboutData

4 years agoMerge pull request #108 from hagabaka/master
Manuel Nickschas [Thu, 5 Feb 2015 22:46:54 +0000 (23:46 +0100)]
Merge pull request #108 from hagabaka/master

Add QNetworkConfigurationManager-based connection detection

4 years agoDisable Clang for building against Qt4 in the CI
Manuel Nickschas [Thu, 5 Feb 2015 22:26:52 +0000 (23:26 +0100)]
Disable Clang for building against Qt4 in the CI

Qt4 does not support C++11 features when building with Clang, so
the Travis CI fails. This commit should disable this combination
in the build matrix.

4 years agoMerge pull request #102 from mamarley/qcaqt5
Manuel Nickschas [Thu, 5 Feb 2015 20:47:59 +0000 (21:47 +0100)]
Merge pull request #102 from mamarley/qcaqt5

Add support for compiling with QCA on Qt5

4 years agoAdd Qt-based connection detection 108/head
Yaohan Chen [Sat, 24 Jan 2015 23:50:12 +0000 (18:50 -0500)]
Add Qt-based connection detection

A new network detection mode is added to use QNetworkConfigurationManager,
available in Qt4.7+ including Qt5. This becomes the default mode when KDE4
integration is not available.

4 years agoMerge pull request #105 from merlin1991/qdatastream
Manuel Nickschas [Thu, 5 Feb 2015 00:08:46 +0000 (01:08 +0100)]
Merge pull request #105 from merlin1991/qdatastream

Set the version of the QDataStream in ClientAuthHandler

4 years agoSimplify the handling of the contributor list in AboutDlg
Manuel Nickschas [Wed, 4 Feb 2015 23:20:06 +0000 (00:20 +0100)]
Simplify the handling of the contributor list in AboutDlg

This introduces an AboutData class akin to KAboutData from KDE
Frameworks. Together with brace initialization, which we can now
use thanks to C++11, this makes specifying the (huge!) list of
contributors to Quassel much nicer, compared to editing a long
HTML string.

AboutData also can create a KAboutData object that can be used for
KF5 integration, and later for showing the native KAboutDialog
instead of our own if KDE integration is enabled.

The list of contributors has also been synced with the Git history
again. If you find your name missing, or want changes, please
let us know.

4 years agoMake UTF-8 the default encoding for QString and tr()
Manuel Nickschas [Wed, 4 Feb 2015 23:15:26 +0000 (00:15 +0100)]
Make UTF-8 the default encoding for QString and tr()

As all our source files are in UTF-8 (and Qt5 even requires them to
be), we can just tell Qt4 to treat them as that. So no need anymore
to use QString::fromUtf8() for literals.

This also makes it possible to use string literals in brace
initializers for QString.

4 years agoAdd D-Bus domain to .desktop files
Manuel Nickschas [Wed, 4 Feb 2015 23:14:05 +0000 (00:14 +0100)]
Add D-Bus domain to .desktop files

This is recommended for KDE software.

4 years agoBump Qt4 version requirement to 4.8
Manuel Nickschas [Mon, 2 Feb 2015 22:21:40 +0000 (23:21 +0100)]
Bump Qt4 version requirement to 4.8

Qt 4.8 gained some support for C++11 features such as brace
initializers, which make some things much more convenient. As
this version was released more than three years ago, it should
be safe to finally bump our requirements accordingly. The core
was even fine with Qt 4.4 until now, and that was released a
whopping 7 years ago!

Requiring 4.8 will allow us to remove a bunch of old workarounds
as well, besides allowing for proper use of C++11 in the future.

4 years agoAdd support for Qt5's native command line parser
Manuel Nickschas [Sat, 31 Jan 2015 13:13:45 +0000 (14:13 +0100)]
Add support for Qt5's native command line parser

Qt 5.2 finally has grown a way for parsing command line arguments,
namely QCommandLineParser. According to the KF5 porting docs, this
is also the preferred choice for software using KDE Frameworks.

This commit adds a Qt5-based implementation for AbstractCliParser and
uses that instead of our own solution if Quassel is built against Qt5.
We also add support for naming the values that are shown in the --help
output, as QCommandLineParser can make use of that. Once we stop
supporting Qt4, the CLI parser abstraction shall be killed, simplifying
things a lot.

4 years agoset GIT_HEAD and GIT_DESCRIBE from environment
Alf Gaida [Sat, 10 Jan 2015 15:39:33 +0000 (16:39 +0100)]
set GIT_HEAD and GIT_DESCRIBE from environment

4 years agoUse KTextEdit when building against KF5
Manuel Nickschas [Sat, 3 Jan 2015 00:21:01 +0000 (01:21 +0100)]
Use KTextEdit when building against KF5

When building against Qt5 and WITH_KDE enabled, the input widget
now is a KTextEdit again, making use of features like spell check.

Note that we'll add support for a stand-alone Sonnet framework to have
spell checking without KDE integration later on.

4 years agoUse link dependencies between Quassel modules
Manuel Nickschas [Sat, 3 Jan 2015 00:19:10 +0000 (01:19 +0100)]
Use link dependencies between Quassel modules

Rather than expressing build dependencies between the Quassel
modules through add_dependency, we should treat those as link
dependencies instead. This has the added advantage that transitive
deps work properly (including properties like include dirs).

4 years agoRename HAVE_KDE define to HAVE_KDE4
Manuel Nickschas [Fri, 2 Jan 2015 23:14:49 +0000 (00:14 +0100)]
Rename HAVE_KDE define to HAVE_KDE4

The build system now sets HAVE_KDE regardless if we're building
with KDE4 or KF5, and in addition adds HAVE_KDE4 and HAVE_KF5.
As many of the frameworks are source compatible with the old kdelibs,
this will allow switching HAVE_KDE4 back to HAVE_KDE later where
possible, without having to check for two defines everywhere.

4 years agoPrepare build system for KDE Frameworks support
Manuel Nickschas [Fri, 2 Jan 2015 21:08:12 +0000 (22:08 +0100)]
Prepare build system for KDE Frameworks support

Besides setting everything up for finding frameworks, this commit also
changes the handling of install paths. We now support the standard CMake
variables of the form CMAKE_INSTALL_<TYPE>_DIR, which can be overridden
on the command line. If KDE integration is enabled, the default paths set
by KDE (4 or frameworks) will be used.

Some additional cleanups were done in passing, too.

4 years agoHappy New Year!
Manuel Nickschas [Fri, 2 Jan 2015 20:55:24 +0000 (21:55 +0100)]
Happy New Year!

4 years agoSet the version of the QDataStream in ClientAuthHandler 105/head
Christian Ratzenhofer [Tue, 23 Dec 2014 22:38:47 +0000 (23:38 +0100)]
Set the version of the QDataStream in ClientAuthHandler

4 years agoFix potential state desync in disconnectFromIrc() 104/head
Michael Marley [Sat, 20 Dec 2014 20:22:19 +0000 (15:22 -0500)]
Fix potential state desync in disconnectFromIrc()

Previously, disconnectFromIrc() would assume that if the socket was
in any state other than ConnectedState that it was disconnected and
send the socketDisconnected() signal.  However, if the socket was
in a different state, such as ConnectingState, this caused the
corenetwork state and the socket state to become desynchronized.
This patch causes disconnectFromIrc() to close the socket and
start the socketCloseTimer in the event that the socket is in a
state other than UnconnectedState or ConnectedState.

4 years agoMerge pull request #103 from mamarley/psqlrefactor2
egs-me [Fri, 19 Dec 2014 13:27:31 +0000 (14:27 +0100)]
Merge pull request #103 from mamarley/psqlrefactor2

Improve reliability of PostgreSQL connections

4 years agoImprove reliability of PostgreSQL connections 103/head
Michael Marley [Fri, 19 Dec 2014 00:02:45 +0000 (19:02 -0500)]
Improve reliability of PostgreSQL connections

This patch adds support for detecting that a query failed due to
the DB connection being down and attempts to reconnect before
retrying the query.  It does this for opening transactions,
safeExec(), and prepareAndExecuteQuery().

4 years agoAdd support for compiling with QCA on Qt5 102/head
Michael Marley [Wed, 26 Nov 2014 17:41:43 +0000 (12:41 -0500)]
Add support for compiling with QCA on Qt5

The maintainer for QCA insists on adding a suffix to the QCA
libname, forcing us to make a few changes to support it.

5 years agoAdapt Oxygen import script to the new realities
Manuel Nickschas [Sat, 25 Oct 2014 21:28:54 +0000 (23:28 +0200)]
Adapt Oxygen import script to the new realities

Re-running the adapted version afterwards actually added a couple
new icons too, because the old scripts didn't catch them...

5 years agoRemove the obsolete Icon and IconLoader classes
Manuel Nickschas [Sat, 25 Oct 2014 21:14:51 +0000 (23:14 +0200)]
Remove the obsolete Icon and IconLoader classes

Removing (hopefully) all traces of the now obsolete icon
loading support.

5 years agoAdd command line parameter for overriding the system icon theme
Manuel Nickschas [Sat, 25 Oct 2014 20:35:01 +0000 (22:35 +0200)]
Add command line parameter for overriding the system icon theme

Quassel uses many icons that are not part of the freedesktop naming
spec, but supported by KDE icon themes. If Quassel is run in
another environment, such as GNOME, which would select a non-KDE icon
theme, there may be missing icons.

In such cases, it is recommended to install the Oxygen icon theme and
start the Quassel client with '--icontheme=oxygen' to override the
system setting. Of course, you are free to choose any other theme as
well.

Note that oxygen is already selected as a fallback if the platform does
not tell Qt about its icon theme (for example, on non-Linux platforms).

5 years agoUse Qt's native icon theme support rather than our own
Manuel Nickschas [Sat, 25 Oct 2014 20:03:34 +0000 (22:03 +0200)]
Use Qt's native icon theme support rather than our own

For the longest time, we've had our own icon loader (or used KDE's)
in order to provide rudimentary icon theme support. However, since
2009, Qt has had native support for loading icons from themes. In recent
version (due to platform integration etc.), proper icon theme support
has gotten much more complex too... things like theme inheritance,
proper fallback policies, specialized states and so on have never been
supported by our simple custom icon loader.

This commit switches all icon loading to QIcon::fromTheme().

The downside is that we have little control about Qt's icon loader,
which may cause issues with some of the non-standard icons we ship.
In case of the native Qt icon loader being used, we define fallbacks
that should find the extra icons. If you use Qt5 and have the
KDE Frameworks integration plugin for Qt enabled, these fallbacks won't
work unfortunately. If you see missing icons, you may have to install
Quassel's 'hicolor' icons into /usr/share/icons/hicolor so they get
picked up.

For non-Linux platforms, we recommend using the bundled Oxygen icon
set (this is the default).

5 years agoRework how icons are handled in the build system
Manuel Nickschas [Sat, 25 Oct 2014 14:14:12 +0000 (16:14 +0200)]
Rework how icons are handled in the build system

In preparation of moving to native Qt icon theme support, this
commit reworks the handling of icons in the build system:

* Move all vital icons (i.e. application, channel and nicklist icons)
  into the hicolor theme
* Always embed the hicolor theme, so we always find the vital icons
  as a fallback
* Move the bundled Oxygen theme to oxygen/ and include metadata and
  index files, so QIconLoader can find this theme as a fallback
  (a system-installed theme will be preferred in the future, however)
* Ship all icon sizes rather than just the requested ones, so Qt can
  later pick the most applicable size
* Refactor the Oxygen import script accordingly
* Clean up the CMakeLists.txt
* Adapt resource initialization code

5 years agoExtend XDG_DATA_DIRS to include Quassel-specific directories
Manuel Nickschas [Sat, 25 Oct 2014 14:01:30 +0000 (16:01 +0200)]
Extend XDG_DATA_DIRS to include Quassel-specific directories

XDG_DATA_DIRS is used for example by Qt to find icon themes and other
application data. In order to avoid having to hack our own locations into
various places, we extend the variable at runtime to include them instead.

This is only relevant if KDE integration is not enabled; otherwise KDE will
specify a list of data dirs (this means that Quassel needs to be installed
properly for everything to work as expected if KDE integration is enabled).

5 years agoChange applicationName to 'quassel'
Manuel Nickschas [Sat, 25 Oct 2014 19:59:51 +0000 (21:59 +0200)]
Change applicationName to 'quassel'

QCoreApplication::applicationName() should match things like our
data dir prefix and similar, so 'quassel' makes more sense than
'Quassel IRC'. This will be especially relevant in a KDE Frameworks
world.

5 years agoMerge pull request #96 from TheOneRing/qca_qt5
Manuel Nickschas [Thu, 23 Oct 2014 21:48:57 +0000 (23:48 +0200)]
Merge pull request #96 from TheOneRing/qca_qt5

make quassel compile with qca enabled on qt5

5 years agoCheck for invalid input in encrypted buffers
Manuel Nickschas [Tue, 21 Oct 2014 19:20:07 +0000 (21:20 +0200)]
Check for invalid input in encrypted buffers

The ECB Blowfish decryption function assumed that encrypted input would
always come in blocks of 12 characters, as specified. However, buggy
clients or annoying people may not adhere to that assumption, causing
the core to crash while trying to process the invalid base64 input.

With this commit we make sure that we're not overstepping the bounds of
the input string while decoding it; instead we bail out early and display
the original input. Fixes #1314.

Thanks to Tucos for finding that one!

5 years agoSet initial focus to host input widget. 97/head
David ‘Bombe’ Roden [Fri, 10 Oct 2014 05:28:35 +0000 (07:28 +0200)]
Set initial focus to host input widget.