# General setup
#####################################################################
-cmake_minimum_required(VERSION 2.8.9)
+cmake_minimum_required(VERSION 2.8.9) # You'll need at least 2.8.12 for KDE Frameworks integration
project(QuasselIRC)
# Versions
add_feature_info(WANT_QTCLIENT WANT_QTCLIENT "Build the client-only binary (requires a core to connect to)")
add_feature_info(WANT_MONO WANT_MONO "Build the monolithic (all-in-one) binary")
-# Whether to enable KDE integration (pulls in kdelibs and friends as a dependency); requires Qt4 for now
-cmake_dependent_option(WITH_KDE "KDE4 integration" OFF "USE_QT4" OFF)
-add_feature_info(WITH_KDE WITH_KDE "Enable KDE4 integration")
+# Whether to enable KDE integration (work in progress for Qt5 / KDE Frameworks)
+# Note that when building with Qt5, WITH_KDE enables integration with higher-tier KDE frameworks that
+# require runtime support. We still optionally make use of certain Tier 1 frameworks even if WITH_KDE
+# is disabled.
+if (USE_QT4)
+ option(WITH_KDE "KDE4 integration" OFF)
+ add_feature_info(WITH_KDE WITH_KDE "Enable KDE4 integration")
+else()
+ option(WITH_KDE "Integration with the KDE Frameworks runtime environment")
+ add_feature_info(WITH_KDE WITH_KDE "Integrate with the KDE Frameworks runtime environment")
+endif()
cmake_dependent_option(WITH_OXYGEN "Install Oxygen icon set (usually shipped with KDE)" ON "NOT WITH_KDE" OFF)
if (NOT WITH_KDE)
add_definitions(-DHAVE_QT5)
else()
message(STATUS "Building for Qt4...")
- if (BUILD_GUI)
- set(QT_MIN_VERSION "4.6.0")
- else()
- set(QT_MIN_VERSION "4.4.0")
- endif()
+ set(QT_MIN_VERSION "4.8.0")
# Select a Qt installation here, if you don't want to use system Qt
if(QT_PATH)
endif()
endif()
+
# Find package dependencies
#
# Note that you can forcefully disable optional packages
endif()
add_feature_info("WITH_WEBKIT, QtWebKit and QtWebKitWidgets modules" Qt5WebKitWidgets_FOUND "Support showing previews for URLs in chat")
+ # KDE Frameworks
+ ################
+
+ if (WITH_KDE)
+ set(ecm_find_type "REQUIRED")
+ else()
+ # Even with KDE integration disabled, we optionally use tier1 frameworks if we find them
+ set(ecm_find_type "RECOMMENDED")
+ endif()
+
+ # extra-cmake-modules
+ find_package(ECM NO_MODULE QUIET)
+ set_package_properties(ECM PROPERTIES TYPE ${ecm_find_type}
+ URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules"
+ DESCRIPTION "extra modules for CMake, maintained by the KDE project"
+ PURPOSE "Required to find KDE Frameworks components"
+ )
+
+ if (ECM_FOUND)
+ list(APPEND CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
+ endif()
+
+ if (WITH_KDE)
+ find_package(KF5CoreAddons QUIET)
+ set_package_properties(KF5CoreAddons PROPERTIES TYPE REQUIRED
+ URL "http://inqlude.org/libraries/kcoreaddons.html"
+ DESCRIPTION "framework for solving common problems such as caching, randomization, and more"
+ PURPOSE "Required for KDE Frameworks integration"
+ )
+
+ find_package(KF5TextWidgets QUIET)
+ set_package_properties(KF5TextWidgets PROPERTIES TYPE REQUIRED
+ URL "http://inqlude.org/libraries/ktextwidgets.html"
+ DESCRIPTION "framework providing an assortment of widgets for displaying and editing text"
+ PURPOSE "Allows to use extra features provided by KDE Frameworks in input widgets"
+ )
+
+ endif()
+
endif(BUILD_GUI)
if (BUILD_CORE)
find_package(Qt5Script QUIET)
)
endif(BUILD_GUI)
+
if (BUILD_CORE)
find_package(QCA2 QUIET)
endif()
-# Various checks
+# Additional compile settings
#####################################################################
-if (NOT ZLIB_FOUND)
- message(STATUS "zlib NOT found, using bundled miniz for compression")
- if (${CMAKE_SIZEOF_VOID_P} EQUAL 4)
- message(STATUS "WARNING: This may be slow on 32 bit systems!")
- endif()
+# This sets -fPIC and friends if required by the installed Qt5 library
+if (USE_QT5 AND Qt5_POSITION_INDEPENDENT_CODE)
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
+# Needed to compile with mingw without kde
+if (MINGW AND NOT KDE4_FOUND)
+ add_definitions(-D_WIN32_WINNT=0x0500)
+ message(STATUS "Added _WIN32_WINNT=0x0500 definition for MinGW")
+ # workaround for bug in mingw gcc 4.0
+ add_definitions(-U__STRICT_ANSI__)
+endif()
+
+
+# Setup KDE / KDE Frameworks
+#####################################################################
+
+# We want to do this up here, so we have the necessary variables and defines set before
+# compiling anything
+
if (KDE4_FOUND)
- # We always use external icons for KDE4 support, since we use its iconloader rather than our own
+ # We always use external icons for KDE4 support, since we use its iconloader rather than Qt's
set(EMBED_DATA OFF)
# Better have the compile flags global, even for the core, to avoid problems with linking the mono client
- add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
+ add_definitions(-DHAVE_KDE -DHAVE_KDE4 ${KDE4_DEFINITIONS})
+ set(WITH_KDE4 TRUE)
+endif()
+
+if (USE_QT5 AND WITH_KDE)
+ # If KDE Frameworks are present, they're most probably providing Qt5 integration including icon loading
+ set(EMBED_DATA OFF)
+
+ include(KDEInstallDirs)
+ include(KDECompilerSettings)
+ include(KDECMakeSettings)
+
+ add_definitions(-DHAVE_KDE -DHAVE_KF5)
+ set(WITH_KF5 TRUE)
+endif()
+
+# This needs to come after setting up KDE integration, so we can use KDE-specific paths
+include(QuasselInstallDirs)
+
+# Various config-dependent checks and settings
+#####################################################################
+
+if (NOT ZLIB_FOUND)
+ message(STATUS "zlib NOT found, using bundled miniz for compression")
+ if (${CMAKE_SIZEOF_VOID_P} EQUAL 4)
+ message(STATUS "WARNING: This may be slow on 32 bit systems!")
+ endif()
endif()
# Check for SSL support in Qt
# As there's no easy way to get Qt's configuration in particular for Qt5, let's just compile
# a small test program checking the defines. This works for both Qt4 and Qt5.
cmake_push_check_state(RESET)
-if (Qt5_POSITION_INDEPENDENT_CODE)
- set(CMAKE_POSITION_INDEPENDENT_CODE ON)
-endif()
set(CMAKE_REQUIRED_INCLUDES ${QT_INCLUDES} ${Qt5Core_INCLUDE_DIRS})
check_cxx_source_compiles("
#include \"qglobal.h\"
add_feature_info("Qt Linguist Tools" QT_LCONVERT_EXECUTABLE "Translation support for Quassel")
-# Various settings
-##################
+if (EMBED_DATA)
+ message(STATUS "Embedding data files into the binary")
+else()
+ message(STATUS "Installing data files separately")
+endif()
-# needed to compile with mingw without kde
-if (MINGW AND NOT KDE4_FOUND)
- add_definitions(-D_WIN32_WINNT=0x0500)
- message(STATUS "Added _WIN32_WINNT=0x0500 definition for MinGW")
-# workaround for bug in mingw gcc 4.0
- add_definitions(-U__STRICT_ANSI__)
+if (INDICATEQT_FOUND)
+ add_definitions(-DXDG_APPS_INSTALL_DIR=${CMAKE_INSTALL_APPDIR})
endif()
-# Now set up install locations; those are set by KDE if integration is enabled
-if(NOT KDE4_FOUND)
- if(WIN32)
- set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX} CACHE FILEPATH "Install path for binaries")
- set(DATA_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/apps CACHE FILEPATH "Install path for data files")
- set(ICON_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/icons CACHE FILEPATH "Global icon install path")
- set(XDG_APPS_INSTALL_DIR $ENV{APPDATA}/quassel-irc.org/share/applications CACHE FILEPATH "Install path for .desktop files")
- else(WIN32)
- set(BIN_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/bin CACHE FILEPATH "Install path for binaries")
- set(DATA_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/apps CACHE FILEPATH "Install path for data files")
- set(ICON_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/icons CACHE FILEPATH "Global icon install path")
- set(XDG_APPS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/applications CACHE FILEPATH "Install path for .desktop files")
- endif(WIN32)
+if (NOT WIN32)
+ check_function_exists(umask HAVE_UMASK)
+ if(HAVE_UMASK)
+ add_definitions(-DHAVE_UMASK)
+ endif(HAVE_UMASK)
endif()
-if(EMBED_DATA)
- message(STATUS "Embedding data files into the binary")
-else(EMBED_DATA)
- message(STATUS "Installing data files separately")
-endif(EMBED_DATA)
-# RPATH needs to be set correctly
-# Do this down here, since otherwise KDE wants to handle it itself, and fails
-set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1)
-set(CMAKE_BUILD_WITH_INSTALL_RPATH 1)
+# Windows-specific stuff
+#####################################################################
+
+if (WIN32)
+ link_libraries(imm32 winmm dbghelp Secur32) # missing by default :/
+ if (MSVC)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNOMINMAX")
+ set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt")
+ set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
+ link_libraries(Version dwmapi shlwapi)
+ if (USE_QT5)
+ set(QT_QTMAIN_LIBRARY Qt5::WinMain)
+ endif()
+ endif()
+ if(HAVE_SSL AND STATIC)
+ find_package(OpenSSL REQUIRED)
+ link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES})
+ endif()
+endif()
+
+
+# Static builds (very much non-portable, so don't use -DSTATIC
+# unless you know what you do!)
+#####################################################################
-# Set global buildflags
-# This is very much non-portable, so don't use -DSTATIC until you know what
-# you do.
if(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}")
- link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs
- if(HAVE_SSL)
- set(QUASSEL_SSL_LIBRARIES ssl crypto) # these miss in static builds
- endif(HAVE_SSL)
-endif(STATIC AND CMAKE_COMPILER_IS_GNUCXX)
-
-if(WIN32)
- link_libraries(imm32 winmm dbghelp Secur32) # missing by default :/
- if(MSVC)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNOMINMAX")
- set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBUGINFO "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt /DEFAULTLIB:msvcrt")
- set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/debug /INCREMENTAL:YES /NODEFAULTLIB:libcmt")
- set(CMAKE_EXE_LINKER_FLAGS_DEBUGFULL "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
- link_libraries(Version dwmapi shlwapi)
- if(USE_QT5)
- set(QT_QTMAIN_LIBRARY Qt5::WinMain)
- endif(USE_QT5)
- endif(MSVC)
- if(HAVE_SSL AND STATIC)
- find_package(OpenSSL REQUIRED)
- link_libraries(${OPENSSL_LIBRARIES} ${OPENSSL_EAY_LIBRARIES})
- endif(HAVE_SSL AND STATIC)
-endif(WIN32)
-
-if(INDICATEQT_FOUND)
- add_definitions(-DXDG_APPS_INSTALL_DIR=${XDG_APPS_INSTALL_DIR})
+ set(CMAKE_CXX_FLAGS "-static-libgcc ${CMAKE_CXX_FLAGS}")
+ link_directories(${CMAKE_BINARY_DIR}/staticlibs) # override dynamic libs
+ if (HAVE_SSL)
+ set(QUASSEL_SSL_LIBRARIES ssl crypto) # these miss in static builds
+ endif()
endif()
-if(NOT WIN32)
- check_function_exists(umask HAVE_UMASK)
- if(HAVE_UMASK)
- add_definitions(-DHAVE_UMASK)
- endif(HAVE_UMASK)
-endif(NOT WIN32)
# Generate version information from Git
+#####################################################################
+
include(GetGitRevisionDescription)
get_git_head_revision(GIT_REFSPEC GIT_HEAD)
git_describe(GIT_DESCRIBE --long)
# Sanitize things if we're not in a Git repo
-if(NOT GIT_HEAD OR NOT GIT_DESCRIBE)
+if (NOT GIT_HEAD OR NOT GIT_DESCRIBE)
set(GIT_HEAD "")
set(GIT_DESCRIBE "")
endif()
configure_file(version.h.in ${CMAKE_BINARY_DIR}/version.h @ONLY)
+# Prepare the build
+#####################################################################
+
# These variables will be added to the main targets (CORE, QTCLIENT, MONO)
set(COMMON_DEPS ${RC_WIN32})
set(CORE_DEPS )
add_subdirectory(pics)
add_subdirectory(po)
+
# Set up and display feature summary
#####################################################################
# Finally, compile the sources
# We want this after displaying the feature summary to avoid ugly
-# CMake backtraces in case a required Qt5 modules misses
+# CMake backtraces in case a required Qt5 module is missing
#####################################################################
add_subdirectory(src)
--- /dev/null
+# This file sets up install locations for Quassel
+#
+# (C) 2015 by the Quassel Project <devel@quassel-irc.org>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+
+# Setup install locations
+#####################################################################
+
+# We support the CMake standard variables (CMAKE_INSTALL_<TYPE>_DIR),
+# which can be overridden on the command line. If KDE integration is enabled,
+# we make use of its settings.
+
+if (NOT WITH_KDE)
+ if (WIN32)
+ # On Windows, we have to guess good paths
+ # We must check if the variables are already defined on the command line
+ if (NOT DEFINED CMAKE_INSTALL_BINDIR)
+ set(CMAKE_INSTALL_BINDIR "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Install path for binaries")
+ endif()
+ if (NOT DEFINED CMAKE_INSTALL_DATADIR)
+ set(CMAKE_INSTALL_DATADIR "$ENV{APPDATA}/quassel-irc.org/share/apps" CACHE PATH "Install path for data files")
+ endif()
+ if (NOT DEFINED CMAKE_INSTALL_ICONDIR)
+ set(CMAKE_INSTALL_ICONDIR "$ENV{APPDATA}/quassel-irc.org/share/icons" CACHE PATH "Install path for icons")
+ endif()
+ if (NOT DEFINED CMAKE_INSTALL_APPDIR)
+ set(CMAKE_INSTALL_APPDIR "$ENV{APPDATA}/quassel-irc.org/share/applications" CACHE PATH "Install path for .desktop files")
+ endif()
+ else()
+ # This sets the standard variables; however it doesn't know about icons and apps
+ include(GNUInstallDirs)
+
+ # Special treatment for paths relative to DATAROOTDIR, as found in GNUInstallDirs
+ if (NOT CMAKE_INSTALL_ICONDIR)
+ set(CMAKE_INSTALL_ICONDIR "" CACHE PATH "Install path for icons")
+ set(CMAKE_INSTALL_ICONDIR "${CMAKE_INSTALL_DATAROOTDIR}/icons")
+ endif()
+ if (NOT CMAKE_INSTALL_APPDIR)
+ set(CMAKE_INSTALL_APPDIR "" CACHE PATH "Install path for .desktop files")
+ set(CMAKE_INSTALL_APPDIR "${CMAKE_INSTALL_DATAROOTDIR}/applications")
+ endif()
+ endif()
+else()
+ if (WITH_KDE4)
+ # FindKDE4Internal.cmake sets its own set of variables, however with deprecated names
+ if (NOT DEFINED CMAKE_INSTALL_BINDIR)
+ set(CMAKE_INSTALL_BINDIR "${BIN_INSTALL_DIR}" CACHE PATH "Install path for binaries")
+ endif()
+ if (NOT DEFINED CMAKE_INSTALL_DATADIR)
+ set(CMAKE_INSTALL_DATADIR "${DATA_INSTALL_DIR}" CACHE PATH "Install path for data files")
+ endif()
+ if (NOT DEFINED CMAKE_INSTALL_ICONDIR)
+ set(CMAKE_INSTALL_ICONDIR "${ICON_INSTALL_DIR}" CACHE PATH "Install path for icons")
+ endif()
+ if (NOT DEFINED CMAKE_INSTALL_APPDIR)
+ set(CMAKE_INSTALL_APPDIR "${XDG_APPS_INSTALL_DIR}" CACHE PATH "Install path for .desktop files")
+ endif()
+ endif()
+
+ # KF5 does the correct thing, so we don't need to do anything
+ # We have already included KDEInstallDirs at this point.
+endif()
if (BUILD_GUI)
if (KDE4_FOUND OR (UNIX AND NOT APPLE))
if (WANT_QTCLIENT)
- install(FILES quasselclient.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
+ install(FILES quasselclient.desktop DESTINATION ${CMAKE_INSTALL_APPDIR})
endif()
if (WANT_MONO)
- install(FILES quassel.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
+ install(FILES quassel.desktop DESTINATION ${CMAKE_INSTALL_APPDIR})
endif()
if (KDE4_FOUND)
- install(FILES quassel.notifyrc DESTINATION ${DATA_INSTALL_DIR}/quassel)
+ install(FILES quassel.notifyrc DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel)
endif()
endif()
if (EMBED_DATA)
set(CLIENT_RCS ${CLIENT_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/data.qrc PARENT_SCOPE)
else()
- install(FILES networks.ini DESTINATION ${DATA_INSTALL_DIR}/quassel)
- install(DIRECTORY stylesheets DESTINATION ${DATA_INSTALL_DIR}/quassel)
+ install(FILES networks.ini DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel)
+ install(DIRECTORY stylesheets DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel)
endif()
if (NOT WIN32)
- install(DIRECTORY scripts DESTINATION ${DATA_INSTALL_DIR}/quassel USE_SOURCE_PERMISSIONS)
+ install(DIRECTORY scripts DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel USE_SOURCE_PERMISSIONS)
endif()
endif()
TryExec=quassel
Exec=quassel
Categories=Qt;Network;Chat;IRCClient;
+X-DBUS-ServiceName=org.quassel-irc.quassel
TryExec=quasselclient
Exec=quasselclient
Categories=Qt;Network;Chat;IRCClient;
+X-DBUS-ServiceName=org.quassel-irc.quasselclient
# Install icons
#
-# We put the bundled oxygen icon theme in DATA_INSTALL_DIR rather than ICON_INSTALL_DIR,
+# We put the bundled oxygen icon theme in DATADIR rather than ICONDIR,
# in order to avoid conflicts. As we add this directory to XDG_DATA_DIRS at runtime,
# the bundled theme will be found by Qt only if there is no oxygen theme installed
# in system directories.
set(ICON_RCS ${ICON_RCS} ${CMAKE_CURRENT_SOURCE_DIR}/oxygen.qrc)
endif()
else()
- install(DIRECTORY hicolor DESTINATION ${ICON_INSTALL_DIR})
+ install(DIRECTORY hicolor DESTINATION ${CMAKE_INSTALL_ICONDIR})
if (WITH_OXYGEN)
message(STATUS "Installing bundled Oxygen icons")
- install(DIRECTORY oxygen DESTINATION ${DATA_INSTALL_DIR}/quassel/icons)
+ install(DIRECTORY oxygen DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/icons)
endif()
endif()
# Application icon
if (HAVE_KDE OR (UNIX AND NOT APPLE))
- install(FILES hicolor/48x48/apps/quassel.png DESTINATION ${ICON_INSTALL_DIR}/hicolor/48x48/apps)
+ install(FILES hicolor/48x48/apps/quassel.png DESTINATION ${CMAKE_INSTALL_ICONDIR}/hicolor/48x48/apps)
if (CMAKE_INSTALL_PREFIX STREQUAL "/usr")
install(FILES hicolor/48x48/apps/quassel.png DESTINATION /usr/share/pixmaps)
endif()
if(EMBED_DATA)
set(COMMON_RCS ${COMMON_RCS} ${resfile} PARENT_SCOPE)
else(EMBED_DATA)
- install(FILES ${qm_files} DESTINATION ${DATA_INSTALL_DIR}/quassel/translations)
+ install(FILES ${qm_files} DESTINATION ${CMAKE_INSTALL_DATADIR}/quassel/translations)
endif(EMBED_DATA)
add_custom_target(po DEPENDS ${qm_files})
add_definitions(-DWITH_OXYGEN)
endif()
+# For KAboutData
+if (WITH_KF5)
+ set(CLIENT_LIBRARIES ${CLIENT_LIBRARIES} KF5::CoreAddons)
+endif()
+
# Needed for showing the cli option if appropriate
if (HAVE_SYSLOG)
add_definitions(-DHAVE_SYSLOG)
COMPILE_FLAGS "-DBUILD_CORE"
OUTPUT_NAME ../quasselcore)
target_link_libraries(quasselcore mod_core mod_common ${COMMON_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY})
- install(TARGETS quasselcore RUNTIME DESTINATION ${BIN_INSTALL_DIR})
+ install(TARGETS quasselcore RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif(WANT_CORE)
if (KDE4_FOUND)
COMPILE_FLAGS "-DBUILD_QTUI"
OUTPUT_NAME ../quasselclient)
target_link_libraries(quasselclient mod_qtui mod_uisupport mod_client mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY})
- install(TARGETS quasselclient RUNTIME DESTINATION ${BIN_INSTALL_DIR})
+ install(TARGETS quasselclient RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif(WANT_QTCLIENT)
if(WANT_MONO)
COMPILE_FLAGS "-DBUILD_MONO"
OUTPUT_NAME ../quassel)
target_link_libraries(quassel mod_qtui mod_uisupport mod_client mod_core mod_common ${COMMON_LIBRARIES} ${CLIENT_LIBRARIES} ${QUASSEL_SSL_LIBRARIES} ${QT_QTMAIN_LIBRARY})
- install(TARGETS quassel RUNTIME DESTINATION ${BIN_INSTALL_DIR})
+ install(TARGETS quassel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
endif(WANT_MONO)
# Build bundles for MacOSX
add_library(mod_client STATIC ${SOURCES})
qt_use_modules(mod_client Network Core Gui ${qt_modules})
+target_link_libraries(mod_client mod_common)
+
if (KDE4_FOUND)
target_link_libraries(mod_client ${KDE4_SOLID_LIBS})
endif()
-
-add_dependencies(mod_client mod_common)
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_probing = true;
QDataStream stream(socket()); // stream handles the endianness for us
+ stream.setVersion(QDataStream::Qt_4_2);
quint32 magic = Protocol::magic;
#ifdef HAVE_SSL
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
CoreConnectionSettings::NetworkDetectionMode CoreConnectionSettings::networkDetectionMode()
{
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
NetworkDetectionMode def = UseSolid;
#else
NetworkDetectionMode def = UsePingTimeout;
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_reconnectTimer.setSingleShot(true);
connect(&_reconnectTimer, SIGNAL(timeout()), SLOT(reconnectTimeout()));
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
connect(Solid::Networking::notifier(), SIGNAL(statusChanged(Solid::Networking::Status)),
SLOT(solidNetworkStatusChanged(Solid::Networking::Status)));
#endif
if (!_peer) {
CoreConnectionSettings s;
if (_wantReconnect && s.autoReconnect()) {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
// If using Solid, we don't want to reconnect if we're offline
if (s.networkDetectionMode() == CoreConnectionSettings::UseSolid) {
if (Solid::Networking::status() != Solid::Networking::Connected
return;
}
}
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
reconnectToCore();
}
}
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
void CoreConnection::solidNetworkStatusChanged(Solid::Networking::Status status)
{
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
# include <QTcpSocket>
#endif
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <Solid/Networking>
#endif
void reconnectIntervalChanged(const QVariant &interval);
void reconnectTimeout();
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
void solidNetworkStatusChanged(Solid::Networking::Status status);
#endif
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
buffersyncer.cpp
bufferviewconfig.cpp
bufferviewmanager.cpp
- cliparser.cpp
compressor.cpp
ctcpevent.cpp
event.cpp
coreinfo.h
)
+if (USE_QT5)
+ list(APPEND SOURCES qt5cliparser.cpp)
+else()
+ list(APPEND SOURCES cliparser.cpp)
+endif()
if (QCA2_FOUND OR QCA2-QT5_FOUND)
set(SOURCES ${SOURCES} keyevent.cpp)
add_definitions(-DHAVE_SYSLOG)
endif()
-if(APPLE)
- set(SOURCES ${SOURCES} mac_utils.cpp)
+if (APPLE)
+ set(SOURCES ${SOURCES} mac_utils.cpp)
endif(APPLE)
if (WIN32)
add_library(mod_common STATIC ${SOURCES})
qt_use_modules(mod_common Core Network)
-if(APPLE)
- target_link_libraries(mod_common "-framework CoreServices" "-framework CoreFoundation")
+if (APPLE)
+ target_link_libraries(mod_common "-framework CoreServices" "-framework CoreFoundation")
endif(APPLE)
target_link_libraries(mod_common ${CMAKE_DL_LIBS} ${EXECINFO_LIBRARIES} ${ZLIB_LIBRARIES})
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
- inline void addOption(const QString &longName, const char shortName = 0, const QString &help = QString(), const QString &def = QString())
+ inline void addOption(const QString &longName, const char shortName = 0, const QString &help = QString(), const QString &valueName = QString(), const QString &def = QString())
{
- addArgument(longName, CliParserArg(CliParserArg::CliArgOption, shortName, help, def));
+ addArgument(longName, CliParserArg(CliParserArg::CliArgOption, shortName, help, valueName, def));
}
CliArgOption
};
- CliParserArg(const CliArgType _type = CliArgInvalid, const char _shortName = 0, const QString _help = QString(), const QString _def = QString())
- : type(_type),
- shortName(_shortName),
- help(_help),
- def(_def),
- value(QString()),
- boolValue(false) {};
+ CliParserArg(const CliArgType type = CliArgInvalid, const char shortName = 0, const QString &help = QString(), const QString &valueName = QString(), const QString def = QString())
+ : type(type)
+ , shortName(shortName)
+ , help(help)
+ , valueName(valueName)
+ , def(def)
+ {};
CliArgType type;
char shortName;
QString help;
+ QString valueName;
QString def;
QString value;
- bool boolValue;
+ bool boolValue = false;
};
virtual void addArgument(const QString &longName, const CliParserArg &arg) = 0;
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
-void CliParser::addArgument(const QString &longName_, const CliParserArg &arg)
+void CliParser::addArgument(const QString &longName, const CliParserArg &arg)
{
- QString longName = longName_;
- longName.remove(QRegExp("\\s*<.*>\\s*")); // KCmdLineArgs takes args of the form "arg <defval>"
if (argsMap.contains(longName)) qWarning() << "Warning: Multiple definition of argument" << longName;
if (arg.shortName != 0 && !lnameOfShortArg(arg.shortName).isNull())
qWarning().nospace() << "Warning: Redefining shortName '" << arg.shortName << "' for " << longName << " previously defined for " << lnameOfShortArg(arg.shortName);
}
else output.append(" ");
lnameField.append(" --").append(arg.key());
- if (arg.value().type == CliParserArg::CliArgOption) {
- lnameField.append("=[").append(arg.key().toUpper()).append("]");
+ if (arg.value().type == CliParserArg::CliArgOption && !arg.value().valueName.isEmpty()) {
+ lnameField.append("=<").append(arg.value().valueName).append(">");
}
output.append(lnameField.leftJustified(lnameFieldSize));
if (!arg.value().help.isEmpty()) {
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <cstdlib>
+#include <QTextCodec>
+
#ifdef BUILD_CORE
# include "coreapplication.h"
#elif defined BUILD_QTUI
+# include "aboutdata.h"
# include "qtuiapplication.h"
#elif defined BUILD_MONO
+# include "aboutdata.h"
# include "monoapplication.h"
#else
#endif
// We don't want quasselcore to depend on KDE
-#if defined HAVE_KDE && defined BUILD_CORE
-# undef HAVE_KDE
+#if defined HAVE_KDE4 && defined BUILD_CORE
+# undef HAVE_KDE4
+#endif
+// We don't want quasselcore to depend on KDE
+#if defined HAVE_KF5 && defined BUILD_CORE
+# undef HAVE_KF5
#endif
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KAboutData>
# include "kcmdlinewrapper.h"
+#elif defined HAVE_KF5
+# include <KCoreAddons/KAboutData>
+# include "qt5cliparser.h"
+#elif defined HAVE_QT5
+# include "qt5cliparser.h"
+#else
+# include "cliparser.h"
#endif
#if !defined(BUILD_CORE) && defined(STATIC)
Q_IMPORT_PLUGIN(qgif)
#endif
-#include "cliparser.h"
#include "quassel.h"
int main(int argc, char **argv)
{
+#if QT_VERSION < 0x050000
+ // All our source files are in UTF-8, and Qt5 even requires that
+ QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
+ QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
+#endif
+
Quassel::setupBuildInfo();
QCoreApplication::setApplicationName(Quassel::buildInfo().applicationName);
+ QCoreApplication::setApplicationVersion(Quassel::buildInfo().plainVersionString);
QCoreApplication::setOrganizationName(Quassel::buildInfo().organizationName);
QCoreApplication::setOrganizationDomain(Quassel::buildInfo().organizationDomain);
AbstractCliParser *cliParser;
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
// We need to init KCmdLineArgs first
- // TODO: build an AboutData compat class to replace our aboutDlg strings
KAboutData aboutData("quassel", "kdelibs4", ki18n("Quassel IRC"), Quassel::buildInfo().plainVersionString.toUtf8(),
ki18n("A modern, distributed IRC client"));
aboutData.addLicense(KAboutData::License_GPL_V2);
KCmdLineArgs::init(argc, argv, &aboutData);
cliParser = new KCmdLineWrapper();
+#elif defined HAVE_QT5
+ cliParser = new Qt5CliParser();
#else
cliParser = new CliParser();
#endif
// Initialize CLI arguments
// NOTE: We can't use tr() at this point, since app is not yet created
+ // TODO: Change this once we get rid of KDE4 and can initialize the parser after creating the app
// put shared client&core arguments here
cliParser->addSwitch("debug", 'd', "Enable debug output");
cliParser->addSwitch("help", 'h', "Display this help and exit");
cliParser->addSwitch("version", 'v', "Display version information");
#ifdef BUILD_QTUI
- cliParser->addOption("configdir <path>", 'c', "Specify the directory holding the client configuration");
+ cliParser->addOption("configdir", 'c', "Specify the directory holding the client configuration", "path");
#else
- cliParser->addOption("configdir <path>", 'c', "Specify the directory holding configuration files, the SQlite database and the SSL certificate");
+ cliParser->addOption("configdir", 'c', "Specify the directory holding configuration files, the SQlite database and the SSL certificate", "path");
#endif
- cliParser->addOption("datadir <path>", 0, "DEPRECATED - Use --configdir instead");
+ cliParser->addOption("datadir", 0, "DEPRECATED - Use --configdir instead", "path");
#ifndef BUILD_CORE
// put client-only arguments here
- cliParser->addOption("icontheme <theme>", 0, "Override the system icon theme ('oxygen' is recommended)");
- cliParser->addOption("qss <file.qss>", 0, "Load a custom application stylesheet");
+ cliParser->addOption("icontheme", 0, "Override the system icon theme ('oxygen' is recommended)", "theme");
+ cliParser->addOption("qss", 0, "Load a custom application stylesheet", "file.qss");
cliParser->addSwitch("debugbufferswitches", 0, "Enables debugging for bufferswitches");
cliParser->addSwitch("debugmodel", 0, "Enables debugging for models");
cliParser->addSwitch("hidewindow", 0, "Start the client minimized to the system tray");
#endif
#ifndef BUILD_QTUI
// put core-only arguments here
- cliParser->addOption("listen <address>[,<address[,...]]>", 0, "The address(es) quasselcore will listen on", "::,0.0.0.0");
- cliParser->addOption("port <port>", 'p', "The port quasselcore will listen at", QString("4242"));
+ cliParser->addOption("listen", 0, "The address(es) quasselcore will listen on", "<address>[,<address>[,...]]", "::,0.0.0.0");
+ cliParser->addOption("port", 'p', "The port quasselcore will listen at", "port", "4242");
cliParser->addSwitch("norestore", 'n', "Don't restore last core's state");
- cliParser->addOption("loglevel <level>", 'L', "Loglevel Debug|Info|Warning|Error", "Info");
+ cliParser->addOption("loglevel", 'L', "Loglevel Debug|Info|Warning|Error", "level", "Info");
#ifdef HAVE_SYSLOG
cliParser->addSwitch("syslog", 0, "Log to syslog");
#endif
- cliParser->addOption("logfile <path>", 'l', "Log to a file");
- cliParser->addOption("select-backend <backendidentifier>", 0, "Switch storage backend (migrating data if possible)");
+ cliParser->addOption("logfile", 'l', "Log to a file", "path");
+ cliParser->addOption("select-backend", 0, "Switch storage backend (migrating data if possible)", "backendidentifier");
cliParser->addSwitch("add-user", 0, "Starts an interactive session to add a new core user");
- cliParser->addOption("change-userpass <username>", 0, "Starts an interactive session to change the password of the user identified by username");
+ cliParser->addOption("change-userpass", 0, "Starts an interactive session to change the password of the user identified by <username>", "username");
cliParser->addSwitch("oidentd", 0, "Enable oidentd integration");
- cliParser->addOption("oidentd-conffile <file>", 0, "Set path to oidentd configuration file");
+ cliParser->addOption("oidentd-conffile", 0, "Set path to oidentd configuration file", "file");
#ifdef HAVE_SSL
cliParser->addSwitch("require-ssl", 0, "Require SSL for client connections");
#endif
cliParser->addSwitch("enable-experimental-dcc", 0, "Enable highly experimental and unfinished support for CTCP DCC (DANGEROUS)");
#endif
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
// the KDE version needs this extra call to parse argc/argv before app is instantiated
if (!cliParser->init()) {
cliParser->usage();
MonolithicApplication app(argc, argv);
# endif
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
// the non-KDE version parses after app has been instantiated
if (!cliParser->init(app.arguments())) {
cliParser->usage();
}
#endif
- if (!app.init()) return EXIT_FAILURE;
+ if (!app.init())
+ return EXIT_FAILURE;
+
+#ifdef HAVE_KF5
+ // FIXME: This should be done after loading the translation catalogue, but still in main()
+ AboutData aboutData;
+ AboutData::setQuasselPersons(&aboutData);
+ KAboutData::setApplicationData(aboutData.kAboutData());
+#endif
+
return app.exec();
}
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-2015 by the Quassel Project *
+ * devel@quassel-irc.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) version 3. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include "qt5cliparser.h"
+
+#include <QCoreApplication>
+#include <QDebug>
+
+bool Qt5CliParser::init(const QStringList &arguments)
+{
+ _qCliParser.addHelpOption();
+ _qCliParser.addVersionOption();
+ _qCliParser.setApplicationDescription(QCoreApplication::translate("CliParser", "Quassel IRC is a modern, distributed IRC client."));
+
+ _qCliParser.process(arguments);
+ return true; // process() does error handling by itself
+}
+
+
+bool Qt5CliParser::isSet(const QString &longName)
+{
+
+ return _qCliParser.isSet(longName);
+}
+
+
+QString Qt5CliParser::value(const QString &longName)
+{
+ return _qCliParser.value(longName);
+}
+
+
+void Qt5CliParser::usage()
+{
+ _qCliParser.showHelp();
+}
+
+
+void Qt5CliParser::addArgument(const QString &longName, const AbstractCliParser::CliParserArg &arg)
+{
+ QStringList names(longName);
+ if (arg.shortName != 0)
+ names << QString(arg.shortName);
+
+ switch(arg.type) {
+ case CliParserArg::CliArgSwitch:
+ _qCliParser.addOption(QCommandLineOption(names, arg.help));
+ break;
+ case CliParserArg::CliArgOption:
+ _qCliParser.addOption(QCommandLineOption(names, arg.help, arg.valueName, arg.def));
+ break;
+ default:
+ qWarning() << "Warning: Unrecognized argument:" << longName;
+ }
+}
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-2015 by the Quassel Project *
+ * devel@quassel-irc.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) version 3. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#pragma once
+
+#include <QCommandLineParser>
+
+#include "abstractcliparser.h"
+
+
+class Qt5CliParser : public AbstractCliParser
+{
+public:
+ bool init(const QStringList &arguments = QStringList());
+
+ QString value(const QString &longName);
+ bool isSet(const QString &longName);
+ void usage();
+
+private:
+ void addArgument(const QString &longName, const CliParserArg &arg);
+
+ QCommandLineParser _qCliParser;
+
+};
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
add_library(mod_core STATIC ${SOURCES})
qt_use_modules(mod_core Core Network Script Sql)
-add_dependencies(mod_core mod_common)
-
-if (LIBS)
- target_link_libraries(mod_core ${LIBS})
-endif()
+target_link_libraries(mod_core mod_common ${LIBS})
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
int PostgreSqlStorage::installedSchemaVersion()
{
- QSqlQuery query = logDb().exec("SELECT value FROM coreinfo WHERE key = 'schemaversion'");
+ QSqlQuery query(logDb());
+ query.prepare("SELECT value FROM coreinfo WHERE key = 'schemaversion'");
+ safeExec(query);
+ watchQuery(query);
if (query.first())
return query.value(0).toInt();
// maybe it's really old... (schema version 0)
- query = logDb().exec("SELECT MAX(version) FROM coreinfo");
+ query.prepare("SELECT MAX(version) FROM coreinfo");
+ safeExec(query);
+ watchQuery(query);
if (query.first())
return query.value(0).toInt();
QSqlQuery query(logDb());
query.prepare("UPDATE coreinfo SET value = :version WHERE key = 'schemaversion'");
query.bindValue(":version", newVersion);
- query.exec();
+ safeExec(query);
bool success = true;
- if (query.lastError().isValid()) {
+ if (!watchQuery(query)) {
qCritical() << "PostgreSqlStorage::updateSchemaVersion(int): Updating schema version failed!";
success = false;
}
QSqlQuery query(logDb());
query.prepare("INSERT INTO coreinfo (key, value) VALUES ('schemaversion', :version)");
query.bindValue(":version", version);
- query.exec();
+ safeExec(query);
bool success = true;
- if (query.lastError().isValid()) {
+ if (!watchQuery(query)) {
qCritical() << "PostgreSqlStorage::setupSchemaVersion(int): Updating schema version failed!";
success = false;
}
query.bindValue(":userid", user.toInt());
query.bindValue(":password", cryptedPassword(password));
safeExec(query);
+ watchQuery(query);
return query.numRowsAffected() != 0;
}
query.bindValue(":userid", user.toInt());
query.bindValue(":username", newName);
safeExec(query);
+ watchQuery(query);
emit userRenamed(user, newName);
}
query.bindValue(":username", user);
query.bindValue(":password", cryptedPassword(password));
safeExec(query);
+ watchQuery(query);
if (query.first()) {
return query.value(0).toInt();
query.prepare(queryString("select_userid"));
query.bindValue(":username", user);
safeExec(query);
+ watchQuery(query);
if (query.first()) {
return query.value(0).toInt();
QSqlQuery query(logDb());
query.prepare(queryString("select_internaluser"));
safeExec(query);
+ watchQuery(query);
if (query.first()) {
return query.value(0).toInt();
void PostgreSqlStorage::delUser(UserId user)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::delUser(): cannot start transaction!";
return;
}
selectQuery.bindValue(":userid", userId.toInt());
selectQuery.bindValue(":settingname", settingName);
safeExec(selectQuery);
+ watchQuery(selectQuery);
QString setQueryString;
if (!selectQuery.first()) {
setQuery.bindValue(":settingname", settingName);
setQuery.bindValue(":settingvalue", rawData);
safeExec(setQuery);
+ watchQuery(setQuery);
}
query.bindValue(":userid", userId.toInt());
query.bindValue(":settingname", settingName);
safeExec(query);
+ watchQuery(query);
if (query.first()) {
QVariant data;
IdentityId identityId;
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::createIdentity(): Unable to start Transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return identityId;
query.bindValue(":sslkey", QByteArray());
#endif
safeExec(query);
- if (query.lastError().isValid()) {
- watchQuery(query);
+ if (!watchQuery(query)) {
db.rollback();
return IdentityId();
}
identity.setId(identityId);
if (!identityId.isValid()) {
- watchQuery(query);
db.rollback();
return IdentityId();
}
bool PostgreSqlStorage::updateIdentity(UserId user, const CoreIdentity &identity)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::updateIdentity(): Unable to start Transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return false;
checkQuery.bindValue(":identityid", identity.id().toInt());
checkQuery.bindValue(":userid", user.toInt());
safeExec(checkQuery);
+ watchQuery(checkQuery);
// there should be exactly one identity for the given id and user
if (!checkQuery.first() || checkQuery.value(0).toInt() != 1) {
void PostgreSqlStorage::removeIdentity(UserId user, IdentityId identityId)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::removeIdentity(): Unable to start Transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return;
nickQuery.prepare(queryString("select_nicks"));
safeExec(query);
+ watchQuery(query);
while (query.next()) {
CoreIdentity identity(IdentityId(query.value(0).toInt()));
NetworkId networkId;
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::createNetwork(): failed to begin transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return false;
query.bindValue(":userid", user.toInt());
bindNetworkInfo(query, info);
safeExec(query);
- if (query.lastError().isValid()) {
- watchQuery(query);
+ if (!watchQuery(query)) {
db.rollback();
return NetworkId();
}
networkId = query.value(0).toInt();
if (!networkId.isValid()) {
- watchQuery(query);
db.rollback();
return NetworkId();
}
bool PostgreSqlStorage::updateNetwork(UserId user, const NetworkInfo &info)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::updateNetwork(): failed to begin transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return false;
bool PostgreSqlStorage::removeNetwork(UserId user, const NetworkId &networkId)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::removeNetwork(): cannot start transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return false;
BufferInfo PostgreSqlStorage::bufferInfo(UserId user, const NetworkId &networkId, BufferInfo::Type type, const QString &buffer, bool create)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::bufferInfo(): cannot start read only transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return BufferInfo();
query.bindValue(":userid", user.toInt());
query.bindValue(":buffercname", buffer.toLower());
safeExec(query);
+ watchQuery(query);
if (query.first()) {
BufferInfo bufferInfo = BufferInfo(query.value(0).toInt(), networkId, (BufferInfo::Type)query.value(1).toInt(), 0, buffer);
safeExec(createQuery);
- if (createQuery.lastError().isValid()) {
+ if (!watchQuery(createQuery)) {
qWarning() << "PostgreSqlStorage::bufferInfo(): unable to create buffer";
- watchQuery(createQuery);
db.rollback();
return BufferInfo();
}
bool PostgreSqlStorage::removeBuffer(const UserId &user, const BufferId &bufferId)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::removeBuffer(): cannot start transaction!";
return false;
}
bool PostgreSqlStorage::renameBuffer(const UserId &user, const BufferId &bufferId, const QString &newName)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::renameBuffer(): cannot start transaction!";
return false;
}
query.bindValue(":userid", user.toInt());
query.bindValue(":bufferid", bufferId.toInt());
safeExec(query);
- if (query.lastError().isValid()) {
- watchQuery(query);
+ if (!watchQuery(query)) {
db.rollback();
return false;
}
bool PostgreSqlStorage::mergeBuffersPermanently(const UserId &user, const BufferId &bufferId1, const BufferId &bufferId2)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::mergeBuffersPermanently(): cannot start transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return false;
bool PostgreSqlStorage::logMessage(Message &msg)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::logMessage(): cannot start transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return false;
if (addSenderQuery.lastError().isValid()) {
rollbackSavePoint("sender_sp1", db);
- getSenderIdQuery = db.exec(getSenderIdQuery.lastQuery());
+ getSenderIdQuery.prepare(getSenderIdQuery.lastQuery());
+ safeExec(getSenderIdQuery);
+ watchQuery(getSenderIdQuery);
getSenderIdQuery.first();
senderId = getSenderIdQuery.value(0).toInt();
}
bool PostgreSqlStorage::logMessages(MessageList &msgs)
{
QSqlDatabase db = logDb();
- if (!db.transaction()) {
+ if (!beginTransaction(db)) {
qWarning() << "PostgreSqlStorage::logMessage(): cannot start transaction!";
qWarning() << " -" << qPrintable(db.lastError().text());
return false;
if (addSenderQuery.lastError().isValid()) {
// seems it was inserted meanwhile... by a different thread
rollbackSavePoint("sender_sp", db);
- selectSenderQuery = db.exec(selectSenderQuery.lastQuery());
+ selectSenderQuery.prepare(selectSenderQuery.lastQuery());
+ safeExec(selectSenderQuery);
+ watchQuery(selectSenderQuery);
selectSenderQuery.first();
senderIdList << selectSenderQuery.value(0).toInt();
senderIds[sender] = selectSenderQuery.value(0).toInt();
// return;
// }
+
+bool PostgreSqlStorage::beginTransaction(QSqlDatabase &db)
+{
+ bool result = db.transaction();
+ if (!db.isOpen()) {
+ db = logDb();
+ result = db.transaction();
+ }
+ return result;
+}
+
bool PostgreSqlStorage::beginReadOnlyTransaction(QSqlDatabase &db)
{
QSqlQuery query = db.exec("BEGIN TRANSACTION READ ONLY");
+ if (!db.isOpen()) {
+ db = logDb();
+ query = db.exec("BEGIN TRANSACTION READ ONLY");
+ }
return !query.lastError().isValid();
}
-QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, const QString ¶mstring, const QSqlDatabase &db)
+QSqlQuery PostgreSqlStorage::prepareAndExecuteQuery(const QString &queryname, const QString ¶mstring, QSqlDatabase &db)
{
// Query preparing is done lazily. That means that instead of always checking if the query is already prepared
// we just EXECUTE and catch the error
query = db.exec(QString("EXECUTE quassel_%1 (%2)").arg(queryname).arg(paramstring));
}
- if (db.lastError().isValid()) {
- // and once again: Qt leaves us without error codes so we either parse (language dependant(!)) strings
+ if (!db.isOpen() || db.lastError().isValid()) {
+ // If the query failed because the DB connection was down, reopen the connection and start a new transaction.
+ if (!db.isOpen()) {
+ db = logDb();
+ if (!beginTransaction(db)) {
+ qWarning() << "PostgreSqlStorage::prepareAndExecuteQuery(): cannot start transaction while recovering from connection loss!";
+ qWarning() << " -" << qPrintable(db.lastError().text());
+ return query;
+ }
+ db.exec("SAVEPOINT quassel_prepare_query");
+ } else {
+ db.exec("ROLLBACK TO SAVEPOINT quassel_prepare_query");
+ }
+
+ // and once again: Qt leaves us without error codes so we either parse (language dependent(!)) strings
// or we just guess the error. As we're only interested in unprepared queries, this will be our guess. :)
- db.exec("ROLLBACK TO SAVEPOINT quassel_prepare_query");
QSqlQuery checkQuery = db.exec(QString("SELECT count(name) FROM pg_prepared_statements WHERE name = 'quassel_%1' AND from_sql = TRUE").arg(queryname.toLower()));
checkQuery.first();
if (checkQuery.value(0).toInt() == 0) {
return QSqlQuery(db);
}
}
- // we alwas execute the query again, even if the query was already prepared.
+ // we always execute the query again, even if the query was already prepared.
// this ensures, that the error is properly propagated to the calling function
// (otherwise the last call would be the testing select to pg_prepared_statements
// which always gives a proper result and the error would be lost)
}
-QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariantList ¶ms, const QSqlDatabase &db)
+QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariantList ¶ms, QSqlDatabase &db)
{
QSqlDriver *driver = db.driver();
}
-QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariant ¶m, const QSqlDatabase &db)
+QSqlQuery PostgreSqlStorage::executePreparedQuery(const QString &queryname, const QVariant ¶m, QSqlDatabase &db)
{
QSqlField field;
field.setType(param.type());
}
+void PostgreSqlStorage::safeExec(QSqlQuery &query)
+{
+ // If the query fails due to the connection being gone, it seems to cause
+ // exec() to return false but no lastError to be set
+ if(!query.exec() && !query.lastError().isValid())
+ {
+ QSqlDatabase db = logDb();
+ QSqlQuery retryQuery(db);
+ retryQuery.prepare(query.lastQuery());
+ QMapIterator<QString, QVariant> i(query.boundValues());
+ while (i.hasNext())
+ {
+ i.next();
+ retryQuery.bindValue(i.key(),i.value());
+ }
+ query = retryQuery;
+ query.exec();
+ }
+}
+
// ========================================
// PostgreSqlMigrationWriter
// ========================================
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
virtual bool setupSchemaVersion(int version);
void safeExec(QSqlQuery &query);
+ bool beginTransaction(QSqlDatabase &db);
bool beginReadOnlyTransaction(QSqlDatabase &db);
- QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList ¶ms, const QSqlDatabase &db);
- QSqlQuery executePreparedQuery(const QString &queryname, const QVariant ¶m, const QSqlDatabase &db);
+ QSqlQuery executePreparedQuery(const QString &queryname, const QVariantList ¶ms, QSqlDatabase &db);
+ QSqlQuery executePreparedQuery(const QString &queryname, const QVariant ¶m, QSqlDatabase &db);
void deallocateQuery(const QString &queryname, const QSqlDatabase &db);
inline void savePoint(const QString &handle, const QSqlDatabase &db) { db.exec(QString("SAVEPOINT %1").arg(handle)); }
private:
void bindNetworkInfo(QSqlQuery &query, const NetworkInfo &info);
void bindServerInfo(QSqlQuery &query, const Network::Server &server);
- QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString ¶mstring, const QSqlDatabase &db);
- inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); }
+ QSqlQuery prepareAndExecuteQuery(const QString &queryname, const QString ¶mstring, QSqlDatabase &db);
+ inline QSqlQuery prepareAndExecuteQuery(const QString &queryname, QSqlDatabase &db) { return prepareAndExecuteQuery(queryname, QString(), db); }
QString _hostName;
int _port;
};
-inline void PostgreSqlStorage::safeExec(QSqlQuery &query) { query.exec(); }
-
// ========================================
// PostgreSqlMigration
// ========================================
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
${CMAKE_SOURCE_DIR}/src/qtui
${CMAKE_SOURCE_DIR}/src/qtui/settingspages
${CMAKE_SOURCE_DIR}/src/uisupport
-
)
qt_wrap_ui(UI ${FORMPATH} ${SPFRM})
add_library(mod_qtui STATIC ${SOURCES} ${SPSRC} ${UI})
qt_use_modules(mod_qtui Core Gui Network ${QT_MODULES})
-if (LIBS)
- target_link_libraries(mod_qtui ${LIBS})
-endif()
-
-add_dependencies(mod_qtui mod_common mod_client mod_uisupport)
+target_link_libraries(mod_qtui mod_client mod_common mod_uisupport ${LIBS})
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
+#include "aboutdlg.h"
+
#include <QDateTime>
#include <QIcon>
-#include "aboutdlg.h"
+#include "aboutdata.h"
#include "quassel.h"
-AboutDlg::AboutDlg(QWidget *parent) : QDialog(parent)
+AboutDlg::AboutDlg(QWidget *parent)
+ : QDialog(parent)
+ , _aboutData(new AboutData(this))
{
+ AboutData::setQuasselPersons(_aboutData);
+
ui.setupUi(this);
ui.quasselLogo->setPixmap(QIcon(":/icons/quassel-64.png").pixmap(64)); // don't let the icon theme affect our logo here
"Most icons are © by the <a href=\"http://www.oxygen-icons.org\">Oxygen Team</a> and used under the "
"<a href=\"http://www.gnu.org/licenses/lgpl.html\">LGPL</a>.<br><br>"
"Please use <a href=\"http://bugs.quassel-irc.org\">http://bugs.quassel-irc.org</a> to report bugs."
- ).arg("2005-2014");
+ ).arg("2005-2015");
return res;
}
QString AboutDlg::authors() const
{
QString res;
- res = tr("Quassel IRC is mainly developed by:") +
- "<dl>"
- "<dt><b>Manuel \"Sputnick\" Nickschas</b></dt><dd><a href=\"mailto:sput@quassel-irc.org\">sput@quassel-irc.org</a><br>"
- "Project Founder, Lead Developer</dd>"
- "<dt><b>Marcus \"EgS\" Eggenberger</b></dt><dd><a href=\"mailto:egs@quassel-irc.org\">egs@quassel-irc.org</a><br>"
- "Project Motivator, Lead Developer, Mac Maintainer</dd>"
- "<dt><b>Alexander \"phon\" von Renteln</b></dt><dd><a href=\"mailto:phon@quassel-irc.org\">phon@quassel-irc.org</a><br>"
- "Developer, Windows Maintainer</dd>"
- "</dl>";
-
+ res = tr("Quassel IRC is mainly developed by:") + "<dl>";
+ for (const auto &person : _aboutData->authors()) {
+ res.append("<dt><b>" + person.prettyName() + "</b></dt><dd>");
+ if (!person.emailAddress().isEmpty())
+ res.append("<a href=\"mailto:" + person.emailAddress() + "\">" + person.emailAddress() + "</a><br>");
+ res.append(person.task() + "</dd>");
+ }
+ res.append("</dl>");
return res;
}
QString AboutDlg::contributors() const
{
QString res;
- res = tr("We would like to thank the following contributors (in alphabetical order) and everybody we forgot to mention here:")
- + QString::fromUtf8("<br>"
- "<dl>"
- "<dt><b>Daniel \"al\" Albers</b></dt><dd>Master Of Translation, many fixes and enhancements</dd>"
- "<dt><b>Liudas Alisauskas</b></dt><dd>Lithuanian translation</dd>"
- "<dt><b>Terje \"tan\" Andersen</b></dt><dd>Norwegian translation, documentation</dd>"
- "<dt><b>Jens \"amiconn\" Arnold</b></dt><dd>Postgres migration fixes</dd>"
- "<dt><b>Adolfo Jayme Barrientos</b></dt><dd>Spanish translation</dd>"
- "<dt><b>Mattia Basaglia</b></dt><dd>Fixes</dd>"
- "<dt><b>Pete \"elbeardmorez\" Beardmore</b></dt><dd>Linewrap for input line</dd>"
- "<dt><b>Rafael \"EagleScreen\" Belmonte</b></dt><dd>Spanish translation</dd>"
- "<dt><b>Sergiu Bivol</b></dt><dd>Romanian translation</dd>"
- "<dt><b>Bruno Brigras</b></dt><dd>Crash fixes</dd>"
- "<dt><b>Florent Castelli</b></dt><dd>Sanitize topic handling</dd>"
- "<dt><b>Theo \"tampakrap\" Chatzimichos</b></dt><dd>Greek translation</dd>"
- "<dt><b>Yuri Chornoivan</b></dt><dd>Ukrainian translation</dd>"
- "<dt><b>Tomáš \"scarabeus\" Chvátal</b></dt><dd>Czech translation</dd>"
- "<dt><b>\"Condex\"</b></dt><dd>Galician translation</dd>"
- "<dt><b>Joshua \"tvakah\" Corbin</b></dt><dd>Various fixes</dd>"
- "<dt><b>\"cordata\"</b></dt><dd>Esperanto translation</dd>"
- "<dt><b>Matthias \"pennywise\" Coy</b></dt><dd>German translation</dd>"
- "<dt><b>\"derpella\"</b></dt><dd>Polish translation</dd>"
- "<dt><b>\"Dorian\"</b></dt><dd>French translation</dd>"
- "<dt><b>Luke Faraone</b></dt><dd>Doc fixes</dd>"
- "<dt><b>Chris \"stitch\" Fuenty</b></dt><dd>SASL support</dd>"
- "<dt><b>Kevin \"KRF\" Funk</b></dt><dd>German translation</dd>"
- "<dt><b>Fabiano \"elbryan\" Francesconi</b></dt><dd>Italian translation</dd>"
- "<dt><b>Leo Franchi</b></dt><dd>OSX improvements</dd>"
- "<dt><b>Sebastien Fricker</b></dt><dd>Audio backend improvements</dd>"
- "<dt><b>Alf Gaida</b></dt><dd>Language improvements</dd>"
- "<dt><b>Aurélien \"agateau\" Gâteau</b></dt><dd>Message Indicator support</dd>"
- "<dt><b>Marco \"kaffeedoktor\" Genise</b></dt><dd>Ideas, hacking, motivation</dd>"
- "<dt><b>Felix \"debfx\" Geyer</b></dt><dd>Certificate handling improvements</dd>"
- "<dt><b>Volkan Gezer</b></dt><dd>Turkish translation</dd>"
- "<dt><b>Sjors \"dazjorz\" Gielen</b></dt><dd>Fixes</dd>"
- "<dt><b>Sebastian \"seezer\" Goth</b></dt><dd>Many improvements and features</dd>"
- "<dt><b>Michael \"brot\" Groh</b></dt><dd>German translation, fixes</dd>"
- "<dt><b>\"Gryllida\"</b></dt><dd>IRC parser improvements</dd>"
- "<dt><b>H. İbrahim \"igungor\" Güngör</b></dt><dd>Turkish translation</dd>"
- "<dt><b>Jiri Grönroos</b></dt><dd>Finnish translation</dd>"
- "<dt><b>Chris \"Zren\" H</b></dt><dd>Various improvements</dd>"
- "<dt><b>Edward Hades</b></dt><dd>Russian translation</dd>"
- "<dt><b>John \"nox\" Hand</b></dt><dd>Former All-Seeing Eye logo</dd>"
- "<dt><b>Adam \"2kah\" Harwood</b></dt><dd>ChatView improvements</dd>"
- "<dt><b>Jonas \"Dante\" Heese</b></dt><dd>Project founder, various improvements</dd>"
- "<dt><b>Thomas \"Datafreak\" Hogh</b></dt><dd>Windows builder</dd>"
- "<dt><b>Johannes \"j0hu\" Huber</b></dt><dd>Many fixes and features, bug triaging</dd>"
- "<dt><b>Theofilos Intzoglou</b></dt><dd>Greek translation</dd>"
- "<dt><b>Jovan Jojkić</b></dt><dd>Serbian translation</dd>"
- "<dt><b>Allan Jude</b></dt><dd>Documentation improvements</dd>"
- "<dt><b>Michael \"ycros\" Kedzierski</b></dt><dd>Mac fixes</dd>"
- "<dt><b>Scott \"ScottK\" Kitterman<b></dt><dd>Kubuntu nightly packager, (packaging/build system) bughunter</dd>"
- "<dt><b>Paul \"Haudrauf\" Klumpp</b></dt><dd>Initial design and mainwindow layout</dd>"
- "<dt><b>Maia Kozheva</b></dt><dd>Russian translation</dd>"
- "<dt><b>Tae-Hoon Kwon</b></dt><dd>Korean translation</dd>"
- "<dt><b>\"Larso\"</b></dt><dd>Finnish translation</dd>"
- "<dt><b>Patrick \"bonsaikitten\" Lauer</b></dt><dd>Gentoo packaging</dd>"
- "<dt><b>Chris \"Fish-Face\" Le Sueur</b></dt><dd>Various fixes and improvements</dd>"
- "<dt><b>Jerome \"Adys\" Leclanche</b></dt><dd>Context menu fixes</dd>"
- "<dt><b>Hendrik \"nevcairiel\" Leppkes</b></dt><dd>Various features</dd>"
- "<dt><b>Jason Lynch</b></dt><dd>Bugfixes</dd>"
- "<dt><b>Awad \"firesock\" Mackie</b></dt><dd>ChatView improvements</dd>"
- "<dt><b>Michael \"mamarley\" Marley</b></dt><dd>Various fixes and improvements</dd>"
- "<dt><b>Martin \"m4yer\" Mayer</b></dt><dd>German translation</dd>"
- "<dt><b>Daniel \"hydrogen\" Meltzer</b></dt><dd>Various fixes and improvements</dd>"
- "<dt><b>Sebastian Meyer</b></dt><dd>Fixes</dd>"
- "<dt><b>Daniel E. Moctezuma</b></dt><dd>Japanese translation</dd>"
- "<dt><b>Chris \"kode54\" Moeller</b></dt><dd>Various fixes and improvements</dd>"
- "<dt><b>Thomas Müller</b></dt><dd>Fixes, Debian packaging</dd>"
- "<dt><b>Gábor \"ELITE_x\" Németh</b></dt><dd>Hungarian translation</dd>"
- "<dt><b>Per Nielsen</b></dt><dd>Danish translation</dd>"
- "<dt><b>J-P Nurmi</b></dt><dd>Fixes</dd>"
- "<dt><b>Marco \"Quizzlo\" Paolone</b></dt><dd>Italian translation</dd>"
- "<dt><b>Bas \"Tucos\" Pape</b></dt><dd>Many fixes and improvements, bug and patch triaging, tireless community support</dd>"
- "<dt><b>Bruno Patri</b></dt><dd>French translation</dd>"
- "<dt><b>Drew \"LinuxDolt\" Patridge</b></dt><dd>BluesTheme stylesheet</dd>"
- "<dt><b>Celeste \"seele\" Paul</b></dt><dd>Usability Queen</dd>"
- "<dt><b>Vit Pelcak</b></dt><dd>Czech translation</dd>"
- "<dt><b>Regis \"ZRegis\" Perrin</b></dt><dd>French translation</dd>"
- "<dt><b>Diego \"Flameeyes\" Pettenò</b></dt><dd>Gentoo maintainer, build system improvements</dd>"
- "<dt><b>Simon Philips</b></dt><dd>Dutch translation</dd>"
- "<dt><b>Daniel \"billie\" Pielmeier</b></dt><dd>Gentoo maintainer</dd>"
- "<dt><b>Nuno \"pinheiro\" Pinheiro</b></dt><dd>Tons of Oxygen icons including our application icon</dd>"
- "<dt><b>David Planella</b></dt><dd>Translation system fixes</dd>"
- "<dt><b>Jure \"JLP\" Repinc</b></dt><dd>Slovenian translation</dd>"
- "<dt><b>Patrick \"TheOneRing\" von Reth</b></dt><dd>MinGW support, SNORE backend, Windows packager</dd>"
- "<dt><b>Dirk \"MarcLandis\" Rettschlag</b></dt><dd>Various fixes and new features</dd>"
- "<dt><b>Miguel Revilla</b></dt><dd>Spanish translation</dd>"
- "<dt><b>Jaak Ristioja</b></dt><dd>Fixes</dd>"
- "<dt><b>David \"Bombe\" Roden</b></dt><dd>Fixes</dd>"
- "<dt><b>Henning \"honk\" Rohlfs</b></dt><dd>Various fixes</dd>"
- "<dt><b>Stella \"differentreality\" Rouzi</b></dt><dd>Greek translation</dd>"
- "<dt><b>\"salnx\"</b></dt><dd>Highlight configuration improvements</dd>"
- "<dt><b>Martin \"sandsmark\" Sandsmark</b></dt><dd>Core fixes, Quasseldroid</dd>"
- "<dt><b>David Sansome</b></dt><dd>OSX Notification Center support</dd>"
- "<dt><b>Dennis \"DevUrandom\" Schridde</b></dt><dd>D-Bus notifications</dd>"
- "<dt><b>Jussi \"jussi01\" Schultink</b></dt><dd>Tireless tester, {ku|U}buntu tester and lobbyist, liters of delicious Finnish alcohol</dd>"
- "<dt><b>Tim \"xAFFE\" Schumacher</b></dt><dd>Fixes and feedback</dd>"
- "<dt><b>\"sfionov\"</b></dt><dd>Russian translation</dd>"
- "<dt><b>Harald \"apachelogger\" Sitter</b></dt><dd>{ku|U}buntu packager, motivator, promoter</dd>"
- "<dt><b>Ramanathan Sivagurunathan</b></dt><dd>Fixes</dd>"
- "<dt><b>Stefanos Sofroniou</b></dt><dd>Greek translation</dd>"
- "<dt><b>Rüdiger \"ruediger\" Sonderfeld</b></dt><dd>Emacs keybindings</dd>"
- "<dt><b>Alexander Stein</b></dt><dd>Tray icon fix</dd>"
- "<dt><b>Daniel \"son\" Steinmetz</b></dt><dd>Early beta tester and bughunter (on Vista™!)</dd>"
- "<dt><b>Jesper Thomschütz</b></dt><dd>Various fixes</dd>"
- "<dt><b>Arthur \"roentgen\" Titeica</b></dt><dd>Romanian translation</dd>"
- "<dt><b>\"ToBeFree\"</b></dt><dd>German translation</dd>"
- "<dt><b>Edward \"Aides\" Toroshchin</b></dt><dd>Russian translation</dd>"
- "<dt><b>Adam \"adamt\" Tulinius</b></dt><dd>Early beta tester and bughunter, Danish translation</dd>"
- "<dt><b>Deniz Türkoglu</b></dt><dd>Mac fixes</dd>"
- "<dt><b>Frederik M.J. \"freqmod\" Vestre</b></dt><dd>Norwegian translation</dd>"
- "<dt><b>Atte Virtanen</b></dt><dd>Finnish translation</dd>"
- "<dt><b>Pavel \"int\" Volkovitskiy</b></dt><dd>Early beta tester and bughunter</dd>"
- "<dt><b>Roscoe van Wyk</b></dt><dd>Fixes</dd>"
- "<dt><b>Zé</b></dt><dd>Portuguese translation</dd>"
- "<dt><b>Benjamin \"zbenjamin\" Zeller</b></dt><dd>Windows build system fixes</dd>"
- "<dt><b>\"zeugma\"</b></dt><dd>Turkish translation</dd>"
- "</dl><br>"
- "...and anybody else finding and reporting bugs, giving feedback, helping others and being part of the community!");
+ res = tr("We would like to thank the following contributors (in alphabetical order) and everybody we forgot to mention here:") + "<br><dl>";
+ for (const auto &person : _aboutData->credits()) {
+ res.append("<dt><b>" + person.prettyName() + "</b></dt><dd>" + person.task() + "</dd>");
+ }
+ res.append("</dl><br>" + tr("...and anybody else finding and reporting bugs, giving feedback, helping others and being part of the community!"));
return res;
}
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "ui_aboutdlg.h"
+class AboutData;
+
class AboutDlg : public QDialog
{
Q_OBJECT
QString authors() const;
QString contributors() const;
QString thanksTo() const;
+
+ AboutData *_aboutData;
};
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QPersistentModelIndex>
#include <QUrl>
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KMenuBar>
#else
# include <QMenuBar>
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This file is free software; you can redistribute it and/or modify *
_blinkState(false),
_lastMessageId(0)
{
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
_trayIcon = new QSystemTrayIcon(associatedWidget());
#else
_trayIcon = new KSystemTrayIcon(associatedWidget());
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This file is free software; you can redistribute it and/or modify *
#ifndef QT_NO_SYSTEMTRAYICON
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KSystemTrayIcon>
#else
# include <QSystemTrayIcon>
bool _blinkState;
uint _lastMessageId;
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
KSystemTrayIcon *_trayIcon;
#else
QSystemTrayIcon *_trayIcon;
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QStatusBar>
#include <QToolBar>
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KAction>
# include <KActionCollection>
# include <KHelpMenu>
#include "topicwidget.h"
#include "verticaldock.h"
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
# ifdef HAVE_PHONON
# include "phononnotificationbackend.h"
# endif
# endif
# include "systraynotificationbackend.h"
# include "taskbarnotificationbackend.h"
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
# include "knotificationbackend.h"
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
#ifdef HAVE_SSL
# include "sslinfodlg.h"
#include "settingspages/notificationssettingspage.h"
#include "settingspages/topicwidgetsettingspage.h"
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
# include "settingspages/shortcutssettingspage.h"
#endif
MainWin::MainWin(QWidget *parent)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
: KMainWindow(parent),
_kHelpMenu(new KHelpMenu(this, KGlobal::mainComponent().aboutData())),
#else
setupTitleSetter();
setupHotList();
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
# ifdef HAVE_PHONON
QtUi::registerNotificationBackend(new PhononNotificationBackend(this));
# endif
QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
QtUi::registerNotificationBackend(new KNotificationBackend(this));
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
#ifdef HAVE_INDICATEQT
QtUi::registerNotificationBackend(new IndicatorNotificationBackend(this));
setDisconnectedState(); // Disable menus and stuff
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
setAutoSaveSettings();
#endif
if (lastBufId.isValid())
s.setValue("LastUsedBufferId", lastBufId.toInt());
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
saveAutoSaveSettings();
#endif
}
_normalPos = s.value("MainWinPos", pos()).toPoint();
bool maximized = s.value("MainWinMaximized", false).toBool();
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
restoreGeometry(s.value("MainWinGeometry").toByteArray());
if (maximized) {
coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll,
0, 0))->setCheckable(true);
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll);
#else
QAction *fullScreenAct = new Action(QIcon::fromTheme("view-fullscreen"), tr("&Full Screen Mode"), coll,
_viewMenu->addAction(coll->action("LockLayout"));
_settingsMenu = menuBar()->addMenu(tr("&Settings"));
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
_settingsMenu->addAction(KStandardAction::configureNotifications(this, SLOT(showNotificationsDlg()), this));
_settingsMenu->addAction(KStandardAction::keyBindings(this, SLOT(showShortcutsDlg()), this));
#else
_helpMenu = menuBar()->addMenu(tr("&Help"));
_helpMenu->addAction(coll->action("AboutQuassel"));
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
_helpMenu->addAction(coll->action("AboutQt"));
#else
_helpMenu->addAction(KStandardAction::aboutKDE(_kHelpMenu, SLOT(aboutKDE()), this));
setUnifiedTitleAndToolBarOnMac(true);
#endif
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
_mainToolBar = new KToolBar("MainToolBar", this, Qt::TopToolBarArea, false, true, true);
#else
_mainToolBar = new QToolBar(this);
void MainWin::showShortcutsDlg()
{
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed, this);
foreach(KActionCollection *coll, QtUi::actionCollections())
dlg.addCollection(coll, coll->property("Category").toString());
if (!action)
return;
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
KToggleFullScreenAction *kAct = static_cast<KToggleFullScreenAction *>(action);
kAct->setFullScreen(this, kAct->isChecked());
#else
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#ifndef MAINWIN_H_
#define MAINWIN_H_
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KMainWindow>
#else
# include <QMainWindow>
//!\brief The main window of Quassel's QtUi.
class MainWin
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
: public KMainWindow
{
#else
void disconnectFromCore();
private:
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
KHelpMenu *_kHelpMenu;
#endif
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_internalInitDone(false)
{
_internal = new CoreApplicationInternal(); // needed for parser options
-#if defined(HAVE_KDE) || defined(Q_OS_MAC)
+#if defined(HAVE_KDE4) || defined(Q_OS_MAC)
disableCrashhandler();
-#endif /* HAVE_KDE || Q_OS_MAC */
+#endif /* HAVE_KDE4 || Q_OS_MAC */
setRunMode(Quassel::Monolithic);
}
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QIcon>
#include <QStringList>
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KStandardDirs>
#endif
#include "qtuisettings.h"
QtUiApplication::QtUiApplication(int &argc, char **argv)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
: KApplication(),
#else
: QApplication(argc, argv),
Quassel(),
_aboutToQuit(false)
{
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
Q_UNUSED(argc); Q_UNUSED(argv);
// We need to setup KDE's data dirs
dataDirs.append(":/data/");
setDataDirPaths(dataDirs);
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
setDataDirPaths(findDataDirPaths());
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
-#if defined(HAVE_KDE) || defined(Q_OS_MAC)
+#if defined(HAVE_KDE4) || defined(Q_OS_MAC)
disableCrashhandler();
-#endif /* HAVE_KDE || Q_OS_MAC */
+#endif /* HAVE_KDE4 || Q_OS_MAC */
setRunMode(Quassel::ClientOnly);
#if QT_VERSION < 0x050000
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#ifndef QTUIAPPLICATION_H_
#define QTUIAPPLICATION_H_
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KApplication>
#else
# include <QApplication>
class QtUi;
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
class QtUiApplication : public KApplication, public Quassel
{
#else
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
: SettingsPage(tr("Remote Cores"), tr("Connection"), parent)
{
ui.setupUi(this);
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
ui.useSolid->hide();
#endif
void CoreConnectionSettingsPage::defaults()
{
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
setRadioButtons(CoreConnectionSettings::UseSolid);
#else
setRadioButtons(CoreConnectionSettings::UsePingTimeout);
void CoreConnectionSettingsPage::setRadioButtons(CoreConnectionSettings::NetworkDetectionMode mode)
{
switch (mode) {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
case CoreConnectionSettings::UseSolid:
ui.useSolid->setChecked(true);
break;
CoreConnectionSettings::NetworkDetectionMode CoreConnectionSettingsPage::modeFromRadioButtons() const
{
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
if (ui.useSolid->isChecked())
return CoreConnectionSettings::UseSolid;
#endif
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
{
ui.setupUi(this);
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
ui.enableSpellCheck->hide();
#endif
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This class has been inspired by KDE's KKeySequenceWidget and uses *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This class has been inspired by KDE's KKeySequenceWidget and uses *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This contains code from KStatusNotifierItem, part of the KDE libs *
{
if (mode() == StatusNotifier) {
//FIXME: ugly ugly workaround to weird QMenu's focus problems
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
if (watched == trayMenu() &&
(event->type() == QEvent::WindowDeactivate || (event->type() == QEvent::MouseButtonRelease && static_cast<QMouseEvent *>(event)->button() == Qt::LeftButton))) {
// put at the back of event queue to let the action activate anyways
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This contains code from KStatusNotifierItem, part of the KDE libs *
#include <QMenu>
#include <QMovie>
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KWindowInfo>
# include <KWindowSystem>
#endif
//TODO: nicer placement, possible?
if (!m_statusNotifierItem->trayMenu()->isVisible()) {
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
m_statusNotifierItem->trayMenu()->setWindowFlags(Qt::Window|Qt::FramelessWindowHint);
#endif
m_statusNotifierItem->trayMenu()->popup(QPoint(x, y));
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
KWindowSystem::setState(m_statusNotifierItem->trayMenu()->winId(), NET::SkipTaskbar|NET::SkipPager|NET::KeepAbove);
KWindowSystem::setType(m_statusNotifierItem->trayMenu()->winId(), NET::PopupMenu);
KWindowSystem::forceActiveWindow(m_statusNotifierItem->trayMenu()->winId());
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This file is free software; you can redistribute it and/or modify *
#include "client.h"
#include "qtui.h"
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KMenu>
# include <KWindowInfo>
# include <KWindowSystem>
ActionCollection *coll = QtUi::actionCollection("General");
_minimizeRestoreAction = new Action(tr("&Minimize"), this, this, SLOT(minimizeRestore()));
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
KMenu *kmenu;
_trayMenu = kmenu = new KMenu();
kmenu->addTitle(_activeIcon, "Quassel IRC");
_trayMenu->setTitle("Quassel IRC");
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
_trayMenu->setAttribute(Qt::WA_Hover);
#endif
{
if (mode_ != _mode) {
_mode = mode_;
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
if (_trayMenu) {
if (_mode == Legacy) {
_trayMenu->setWindowFlags(Qt::Popup);
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This file is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
# Builds the uisupport module
set(SOURCES
+ aboutdata.cpp
abstractbuffercontainer.cpp
abstractitemview.cpp
action.cpp
abstractnotificationbackend.h
)
-if (KDE4_FOUND)
+if (WITH_KDE4)
include_directories(${KDE4_INCLUDES})
add_definitions(-DHAVE_KDE ${KDE4_DEFINITIONS})
set(SOURCES ${SOURCES} kcmdlinewrapper.cpp)
add_library(mod_uisupport STATIC ${SOURCES})
qt_use_modules(mod_uisupport Core Gui Network ${qt_modules})
-if (KDE4_FOUND)
+target_link_libraries(mod_uisupport mod_client mod_common)
+
+if (WITH_KDE4)
target_link_libraries(mod_uisupport ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBRARY})
endif()
-add_dependencies(mod_uisupport mod_common mod_client)
+if (WITH_KF5)
+ target_link_libraries(mod_uisupport KF5::CoreAddons KF5::TextWidgets)
+endif()
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-2015 by the Quassel Project *
+ * devel@quassel-irc.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) version 3. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#include "aboutdata.h"
+
+#include <QImage>
+
+#include "quassel.h"
+
+
+AboutPerson::AboutPerson(const QString &name, const QString &nick, const QString &task, const QString &emailAddress, QLocale::Language translatedLanguage)
+ : _name(name)
+ , _nick(nick)
+ , _task(task)
+ , _emailAddress(emailAddress)
+ , _language(translatedLanguage)
+{
+
+}
+
+
+QString AboutPerson::name() const
+{
+ return _name;
+}
+
+
+QString AboutPerson::nick() const
+{
+ return _nick;
+}
+
+
+QString AboutPerson::task() const
+{
+ return _task;
+}
+
+
+QString AboutPerson::emailAddress() const
+{
+ return _emailAddress;
+}
+
+
+QLocale::Language AboutPerson::translatedLanguage() const
+{
+ return _language;
+}
+
+
+QString AboutPerson::prettyName() const
+{
+ if (!name().isEmpty() && !nick().isEmpty())
+ return name() + " (" + nick() + ')';
+
+ if (name().isEmpty() && !nick().isEmpty())
+ return nick();
+
+ return name();
+}
+
+
+/**************************************************************************************************/
+
+
+AboutData::AboutData(QObject *parent)
+ : QObject(parent)
+{
+
+}
+
+
+QList<AboutPerson> AboutData::authors() const
+{
+ return _authors;
+}
+
+
+QList< AboutPerson > AboutData::credits() const
+{
+ return _credits;
+}
+
+
+AboutData &AboutData::addAuthor(const AboutPerson &author)
+{
+ _authors.append(author);
+ return *this;
+}
+
+
+AboutData &AboutData::addAuthors(std::initializer_list<AboutPerson> authors)
+{
+ _authors.append(authors);
+ return *this;
+}
+
+
+AboutData &AboutData::addCredit(const AboutPerson &credit)
+{
+ _credits.append(credit);
+ return *this;
+}
+
+
+AboutData &AboutData::addCredits(std::initializer_list<AboutPerson> credits)
+{
+ _credits.append(credits);
+ return *this;
+}
+
+#ifdef HAVE_KF5
+
+KAboutData AboutData::kAboutData() const
+{
+ KAboutData aboutData(
+ Quassel::buildInfo().applicationName,
+ tr("Quassel IRC"),
+ Quassel::buildInfo().plainVersionString
+ );
+ aboutData.addLicense(KAboutLicense::GPL_V2);
+ aboutData.addLicense(KAboutLicense::GPL_V3);
+ aboutData.setShortDescription(tr("A modern, distributed IRC client"));
+ aboutData.setProgramLogo(QVariant::fromValue(QImage(":/pics/quassel-logo.png")));
+ aboutData.setBugAddress("http://bugs.quassel-irc.org/projects/quassel-irc/issues/new");
+ aboutData.setOrganizationDomain(Quassel::buildInfo().organizationDomain.toUtf8());
+
+ for (const auto &person : authors()) {
+ aboutData.addAuthor(person.prettyName(), person.task(), person.emailAddress());
+ }
+
+ for (const auto &person : credits()) {
+ aboutData.addCredit(person.prettyName(), person.task(), person.emailAddress());
+ }
+
+ return aboutData;
+}
+
+#endif
+
+
+/**************************************************************************************************/
+
+/*
+ * NOTE: The list of contributors was retrieved from the Git history, but sometimes things fall
+ * through the cracks... especially for translations, we don't have an easy way to track
+ * contributors' names.
+ * If you find wrong data for yourself, want your nickname and/or mail addresses added or
+ * removed, or feel left out or unfairly credited, please don't hesitate to let us know! We
+ * do want to credit everyone who has contributed to Quassel development.
+ */
+
+void AboutData::setQuasselPersons(AboutData *aboutData)
+{
+ aboutData->addAuthors({
+ { "Manuel Nickschas", "Sputnick", tr("Project Founder, Lead Developer"), "sputnick@quassel-irc.org" },
+ { "Marcus Eggenberger", "EgS", tr("Project Motivator, Lead Developer"), "egs@quassel-irc.org" },
+ { "Alexander von Renteln", "phon", tr("Former Lead Developer"), "phon@quassel-irc.org" },
+ { "Daniel Albers", "al", tr("Master of Translation, many fixes and enhancements") },
+ { "Sebastian Goth", "seezer", tr("Many features, fixes and improvements") },
+ { "Bas Pape", "Tucos", tr("Many fixes and improvements, bug and patch triaging, community support") },
+ });
+
+ aboutData->addCredits({
+ { "Adam Harwood", "2kah", tr("Chatview improvements") },
+ { "Adam Tulinius", "adamt", tr("Early beta tester and bughunter, Danish translation"), "", QLocale::Danish },
+ { "Adolfo Jayme Barrientos", "", tr("Spanish translation"), "", QLocale::Spanish },
+ { "Alexander Stein", "", tr("Tray icon fix") },
+ { "Alf Gaida", "agaida", tr("Language improvements") },
+ { "Allan Jude", "", tr("Documentation improvements") },
+ { "Arthur Titeica", "roentgen", tr("Romanian translation"), "", QLocale::Romanian },
+ { "Atte Virtanen", "", tr("Finnish translation"), "", QLocale::Finnish },
+ { "Aurélien Gâteau", "agateau", tr("Message indicator support") },
+ { "Awad Mackie", "firesock", tr("Chatview improvements") },
+ { "Benjamin Zeller", "zbenjamin", tr("Windows build system fixes") },
+ { "Bruno Brigras", "", tr("Crash fixes") },
+ { "Bruno Patri", "", tr("French translation"), "", QLocale::French },
+ { "Celeste Paul", "seele", tr("Usability review") },
+ { "Chris Fuenty", "stitch", tr("SASL support") },
+ { "Chris H", "Zren", tr("Various improvements") },
+ { "Chris Le Sueur", "Fish-Face", tr("Various fixes and improvements") },
+ { "Chris Moeller", "kode54", tr("Various fixes and improvements") },
+ { "", "Condex", tr("Galician translation"), "", QLocale::Galician },
+ { "", "cordata", tr("Esperanto translation"), "", QLocale::Esperanto },
+ { "Daniel E. Moctezuma", "", tr("Japanese translation"), "", QLocale::Japanese },
+ { "Daniel Meltzer", "hydrogen", tr("Various fixes and improvements") },
+ { "Daniel Pielmeier", "billie", tr("Gentoo maintainer") },
+ { "Daniel Steinmetz", "son", tr("Early beta tester and bughunter (on Vistaâ„¢!)") },
+ { "David Planella", "", tr("Translation system fixes") },
+ { "David Sansome", "", tr("OSX Notification Center support") },
+ { "David Roden", "Bombe", tr("Fixes") },
+ { "Deniz Türkoglu", "", tr("Mac fixes") },
+ { "Dennis Schridde", "devurandom", tr("D-Bus notifications") },
+ { "", "derpella", tr("Polish translation"), "", QLocale::Polish },
+ { "Diego Pettenò", "Flameeyes", tr("Build system improvements") },
+ { "Dirk Rettschlag", "MarcLandis", tr("Formatting support and other input line improvements, many other fixes") },
+ { "", "Dorian", tr("French translation"), "", QLocale::French },
+ { "Drew Patridge", "LinuxDolt", tr("BluesTheme stylesheet") },
+ { "Edward Hades", "", tr("Russian translation"), "", QLocale::Russian },
+ { "Fabiano Francesconi", "elbryan", tr("Italian translation"), "", QLocale::Italian },
+ { "Felix Geyer", "debfx", tr("Certificate handling improvements") },
+ { "Florent Castelli", "", tr("Sanitize topic handling") },
+ { "Frederik M.J. Vestre", "freqmod", tr("Norwegian translation"), "", QLocale::Norwegian },
+ { "Gábor Németh", "ELITE_x", tr("Hungarian translation"), "", QLocale::Hungarian },
+ { "Gryllida A", "gry", tr("IRC parser improvements") },
+ { "H. İbrahim Güngör", "igungor", tr("Turkish translation"), "", QLocale::Turkish },
+ { "Harald Fernengel", "harryF", tr("Initial Qt5 support") },
+ { "Harald Sitter", "apachelogger", tr("{Ku|U}buntu packager, motivator, promoter") },
+ { "Hendrik Leppkes", "nevcairiel", tr("Various features") },
+ { "Henning Rohlfs", "honk", tr("Various fixes") },
+ { "J-P Nurmi", "", tr("Various fixes") },
+ { "Jaak Ristioja", "", tr("Bugfixes") },
+ { "Jason Lynch", "", tr("Bugfixes") },
+ { "Jens Arnold", "amiconn", tr("Postgres migration fixes") },
+ { "Jerome Leclanche", "Adys", tr("Context menu fixes") },
+ { "Jesper Thomschütz", "", tr("Various fixes") },
+ { "Jiri Grönroos", "", tr("Finnish translation"), "", QLocale::Finnish },
+ { "Johannes Huber", "johu", tr("Many fixes and improvements, bug triaging") },
+ { "John Hand", "nox", tr("Original \"All-Seeing Eye\" logo") },
+ { "Jonas Heese", "Dante", tr("Project founder, various improvements") },
+ { "Joshua T Corbin", "tvakah", tr("Various fixes") },
+ { "Jovan Jojkić", "", tr("Serbian translation"), "", QLocale::Serbian },
+ { "Jure Repinc", "JLP", tr("Slovenian translation"), "", QLocale::Slovenian },
+ { "Jussi Schultink", "jussi01", tr("Tireless tester, {Ku|U}buntu tester and lobbyist, liters of delicious Finnish alcohol") },
+ { "K. Ernest Lee", "iFire", tr("Qt5 porting help, Travis CI setup") },
+ { "Kevin Funk", "KRF", tr("German translation"), "", QLocale::German },
+ { "", "Larso", tr("Finnish translation"), "", QLocale::Finnish },
+ { "Lasse Liehu", "", tr("Finnish translation"), "", QLocale::Finnish },
+ { "Leo Franchi", "", tr("OSX improvements") },
+ { "Liudas Alisauskas", "", tr("Lithuanian translation"), "", QLocale::Lithuanian },
+ { "Luke Faraone", "", tr("Documentation fixes") },
+ { "Maia Kozheva", "", tr("Russian translation"), "", QLocale::Russian },
+ { "Marco Genise", "kaffeedoktor", tr("Ideas, hacking, initial motivation") },
+ { "Marco Paolone", "Quizzlo", tr("Italian translation"), "", QLocale::Italian },
+ { "Martin Mayer", "m4yer", tr("German translation"), "", QLocale::German },
+ { "Martin Sandsmark", "sandsmark", tr("Core and other fixes, QuasselDroid") },
+ { "Matthias Coy", "pennywise", tr("German translation"), "", QLocale::German },
+ { "Mattia Basaglia", "", tr("Fixes") },
+ { "Michael Groh", "brot", tr("German translation, fixes"), "", QLocale::German },
+ { "Michael Kedzierski", "ycros", tr("Mac fixes") },
+ { "Michael Marley", "mamarley", tr("Many fixes and improvements; Ubuntu live packages") },
+ { "Miguel Revilla", "", tr("Spanish translation"), "", QLocale::Spanish },
+ { "Nuno Pinheiro", "", tr("Tons of Oxygen icons including the Quassel logo") },
+ { "Patrick Lauer", "bonsaikitten", tr("Gentoo maintainer") },
+ { "Patrick von Reth", "TheOneRing", tr("MinGW support, SNORE backend, Windows packaging") },
+ { "Paul Klumpp", "Haudrauf", tr("Initial design and main window layout") },
+ { "Pavel Volkovitskiy", "int", tr("Early beta tester and bughunter") },
+ { "Per Nielsen", "", tr("Danish translation"), "", QLocale::Danish },
+ { "Pete Beardmore", "elbeardmorez", tr("Linewrap for input line") },
+ { "Ramanathan Sivagurunathan", "", tr("Bugfixes") },
+ { "Regis Perrin", "ZRegis", tr("French translation"), "", QLocale::French },
+ { "Rolf Eike Beer", "", tr("Build system fixes") },
+ { "Roscoe van Wyk", "", tr("Bugfixes") },
+ { "Rüdiger Sonderfeld", "ruediger", tr("Emacs keybindings") },
+ { "", "salnx", tr("Highlight configuration improvements") },
+ { "Scott Kitterman", "ScottK", tr("Kubuntu packager, (packaging/build system) bughunter") },
+ { "Sebastian Meyer", "", tr("Bugfixes") },
+ { "Sebastien Fricker", "", tr("Audio backend improvements") },
+ { "", "sfionov", tr("Russian translation"), "", QLocale::Russian },
+ { "Simon Philips", "", tr("Dutch translation"), "", QLocale::Dutch },
+ { "Sjors Gielen", "dazjorz", tr("Bugfixes") },
+ { "Stefanos Sofroniou", "", tr("Greek translation"), "", QLocale::Greek },
+ { "Stella Rouzi", "differentreality", tr("Greek translation"), "", QLocale::Greek },
+ { "Rafael Belmonte", "EagleScreen", tr("Spanish translation"), "", QLocale::Spanish },
+ { "Sergiu Bivol", "", tr("Romanian translation"), "", QLocale::Romanian },
+ { "Tae-Hoon Kwon", "", tr("Korean translation"), "", QLocale::Korean },
+ { "Terje Andersen", "tan", tr("Norwegian translation, documentation") },
+ { "Theo Chatzimichos", "tampakrap", tr("Greek translation"), "", QLocale::Greek },
+ { "Theofilos Intzoglou", "", tr("Greek translation"), "", QLocale::Greek },
+ { "Thomas Hogh", "Datafreak", tr("Former Windows builder") },
+ { "Thomas Müller", "", tr("Fixes, Debian packaging") },
+ { "Tim Schumacher", "xAFFE", tr("Fixes and feedback") },
+ { "", "ToBeFree", tr("German translation"), "", QLocale::German },
+ { "Tomáš Chvátal", "scarabeus", tr("Czech translation"), "", QLocale::Czech },
+ { "Vit Pelcak", "", tr("Czech translation"), "", QLocale::Czech },
+ { "Volkan Gezer", "", tr("Turkish translation"), "", QLocale::Turkish },
+ { "Yuri Chornoivan", "", tr("Ukrainian translation"), "", QLocale::Ukrainian },
+ { "Zé", "", tr("Portuguese translation"), "", QLocale::Portuguese },
+ { "", "zeugma", tr("Turkish translation"), "", QLocale::Turkish }
+ });
+}
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-2015 by the Quassel Project *
+ * devel@quassel-irc.org *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) version 3. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#pragma once
+
+#include <QLocale>
+
+#ifdef HAVE_KF5
+# include <KCoreAddons/KAboutData>
+#endif
+
+
+/**
+ * Represents a contributor or author for Quassel.
+ *
+ * This is used to show a list of contributors in the About Quassel dialog.
+ */
+class AboutPerson
+{
+public:
+ /**
+ * Constructor.
+ *
+ * @param[in] name The person's name (in the form "Firstname Surname")
+ * @param[in] nick The person's nickname, if applicable
+ * @param[in] task Things the person does or has done for the project
+ * @param[in] emailAddress The person's email address, if applicable
+ * @param[in] translatedLanguage The language the person helped translate (only applicable for translators)
+ */
+ AboutPerson(const QString &name, const QString &nick, const QString &task, const QString &emailAddress = QString(), QLocale::Language translatedLanguage = QLocale::C);
+
+ /**
+ * Gets the person's name.
+ *
+ * @returns The person's name
+ */
+ QString name() const;
+
+ /**
+ * Gets the person's nick.
+ *
+ * @returns The person's nick
+ */
+ QString nick() const;
+
+ /**
+ * Gets the person's task.
+ *
+ * @returns The person's task
+ */
+ QString task() const;
+
+ /**
+ * Gets the person's e-mail address.
+ *
+ * @returns The person's e-mail address
+ */
+ QString emailAddress() const;
+
+ /**
+ * Gets the language this person helped translate.
+ *
+ * @returns The language this person helped translate
+ */
+ QLocale::Language translatedLanguage() const;
+
+ /**
+ * Gets the person's formatted name and nick.
+ *
+ * @returns The person's name and nick formatted for combined output
+ */
+ QString prettyName() const;
+
+private:
+ QString _name; ///< The person's name
+ QString _nick; ///< The person's nick
+ QString _task; ///< The person's task
+ QString _emailAddress; ///< The person's email address
+ QLocale::Language _language; ///< The language the person helps translate
+};
+
+
+/**
+ * Holds a list of authors, contributors and translators.
+ *
+ * This class is meant to hold the list of people who contributed to Quassel, used for displaying
+ * the About Quassel dialog. Additionally, this class can provide a KAboutData object to be shown
+ * if KDE integration is enabled.
+ */
+class AboutData : public QObject
+{
+ Q_OBJECT
+public:
+ /**
+ * Default constructor.
+ *
+ * @param[in] parent The parent object, if applicable
+ */
+ AboutData(QObject *parent = nullptr);
+
+ /**
+ * Adds an author to the list of contributors.
+ *
+ * Authors are people who contributed a significant amount of code to Quassel.
+ *
+ * @param[in] author The author to add
+ * @returns A reference to this AboutData instance
+ */
+ AboutData &addAuthor(const AboutPerson &author);
+
+ /**
+ * Adds a list of authors to the list of contributors.
+ *
+ * This method allows the use of a brace initializer in order to easily add a long list of
+ * people.
+ *
+ * @param[in] authors A list of authors to add
+ * @returns A reference to this AboutData instance
+ */
+ AboutData &addAuthors(std::initializer_list<AboutPerson> authors);
+
+ /**
+ * Adds a contributor.
+ *
+ * @param[in] author The contributor to add
+ * @returns A reference to this AboutData instance
+ */
+ AboutData &addCredit(const AboutPerson &credit);
+
+ /**
+ * Adds a list of contributors.
+ *
+ * This method allows the use of brace initializers in order to easily add a long list of
+ * people.
+ *
+ * @param[in] authors A list of contributors to add
+ * @returns A reference to this AboutData instance
+ */
+ AboutData &addCredits(std::initializer_list<AboutPerson> credits);
+
+ /**
+ * Gets the list of authors stored in this AboutData instance.
+ *
+ * @returns A list of authors
+ */
+ QList<AboutPerson> authors() const;
+
+ /**
+ * Gets the list of non-author contributors stored in this AboutData instance.
+ *
+ * @returns A list of contributors
+ */
+ QList<AboutPerson> credits() const;
+
+#ifdef HAVE_KF5
+ /**
+ * Creates a KAboutData instance based on the contents of this AboutData instance.
+ *
+ * @returns A KAboutData instance holding the list of contributors as well as any additional
+ * data required for KAboutDialog and friends
+ */
+ KAboutData kAboutData() const;
+#endif
+
+ /**
+ * Fills the given AboutData instance with data relevant for Quassel itself.
+ *
+ * This method adds a (hardcoded) list of contributors to the given AboutData instance.
+ *
+ * @param[in,out] aboutData An existing AboutData instance to add Quassel's contributors to
+ */
+ static void setQuasselPersons(AboutData *aboutData);
+
+private:
+ QList<AboutPerson> _authors; ///< The list of authors
+ QList<AboutPerson> _credits; ///< The list of other contributors
+};
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QApplication>
Action::Action(QObject *parent)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
: KAction(parent)
#else
: QWidgetAction(parent)
Action::Action(const QString &text, QObject *parent, const QObject *receiver, const char *slot, const QKeySequence &shortcut)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
: KAction(parent)
#else
: QWidgetAction(parent)
Action::Action(const QIcon &icon, const QString &text, QObject *parent, const QObject *receiver, const char *slot, const QKeySequence &shortcut)
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
: KAction(parent)
#else
: QWidgetAction(parent)
}
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
void Action::init() {}
#else
void Action::init()
}
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#ifndef ACTION_H_
#define ACTION_H_
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
#include <QShortcut>
#include <QWidgetAction>
Q_DECLARE_OPERATORS_FOR_FLAGS(Action::ShortcutTypes)
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
#include <KAction>
class Action : public KAction
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* Parts of this implementation are based on KDE's KActionCollection. *
***************************************************************************/
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
#include <QAction>
#include <QDebug>
}
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#ifndef ACTIONCOLLECTION_H_
#define ACTIONCOLLECTION_H_
-#ifndef HAVE_KDE
+#ifndef HAVE_KDE4
#include <QDebug>
#include <QList>
int ActionCollection::count() const { return actions().count(); }
bool ActionCollection::isEmpty() const { return actions().count(); }
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
#include <KActionCollection>
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QStyle>
#include <QStyleOptionFrame>
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KColorDialog>
#else
# include <QColorDialog>
void ColorButton::chooseColor()
{
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
QColor c = color();
KColorDialog::getColor(c, this);
#else
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This contains code from KStatusNotifierItem, part of the KDE libs *
#ifdef Q_WS_X11
# include <QX11Info>
#endif
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KWindowInfo>
# include <KWindowSystem>
#endif
return true;
}
-#elif defined(HAVE_KDE) && defined(Q_WS_X11)
+#elif defined(HAVE_KDE4) && defined(Q_WS_X11)
KWindowInfo info1 = KWindowSystem::windowInfo(mainWidget()->winId(), NET::XAWMState | NET::WMState | NET::WMDesktop);
// mapped = visible (but possibly obscured)
bool mapped = (info1.mappingState() == NET::Visible) && !info1.isMinimized();
void GraphicalUi::activateMainWidget()
{
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# ifdef Q_WS_X11
KWindowInfo info = KWindowSystem::windowInfo(mainWidget()->winId(), NET::WMDesktop | NET::WMFrameExtents);
if (_onAllDesktops) {
KWindowSystem::forceActiveWindow(mainWidget()->winId());
# endif
-#else /* HAVE_KDE */
+#else /* HAVE_KDE4 */
#ifdef Q_WS_X11
// Bypass focus stealing prevention
mainWidget()->raise();
mainWidget()->activateWindow();
-#endif /* HAVE_KDE */
+#endif /* HAVE_KDE4 */
}
void GraphicalUi::hideMainWidget()
{
-#if defined(HAVE_KDE) && defined(Q_WS_X11)
+#if defined(HAVE_KDE4) && defined(Q_WS_X11)
KWindowInfo info = KWindowSystem::windowInfo(mainWidget()->winId(), NET::WMDesktop | NET::WMFrameExtents);
_onAllDesktops = info.onAllDesktops();
#endif
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
}
-void KCmdLineWrapper::addArgument(const QString &longName, const CliParserArg &arg)
+void KCmdLineWrapper::addArgument(const QString &longName_, const CliParserArg &arg)
{
+ QString longName = longName_;
+ if (arg.type == CliParserArg::CliArgOption && !arg.valueName.isEmpty())
+ longName += " <" + arg.valueName + ">";
+
if (arg.shortName != 0) {
- _cmdLineOptions.add(QByteArray().append(arg.shortName));
+ _cmdLineOptions.add(QByteArray(1, arg.shortName));
}
+
_cmdLineOptions.add(longName.toUtf8(), ki18n(arg.help.toUtf8()), arg.def.toUtf8());
}
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
_emacsMode(false),
_lastDocumentHeight(-1)
{
-#if QT_VERSION >= 0x040500
- document()->setDocumentMargin(0); // new in Qt 4.5 and we really don't want it here
-#endif
+ document()->setDocumentMargin(0);
setAcceptRichText(false);
#ifdef HAVE_KDE
void MultiLineEdit::keyPressEvent(QKeyEvent *event)
{
- // Workaround the fact that Qt < 4.5 doesn't know InsertLineSeparator yet
-#if QT_VERSION >= 0x040500
if (event == QKeySequence::InsertLineSeparator) {
-#else
-
-# ifdef Q_OS_MAC
- if ((event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) && event->modifiers() & Qt::META) {
-# else
- if ((event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) && event->modifiers() & Qt::SHIFT) {
-# endif
-#endif
-
if (_mode == SingleLine) {
event->accept();
on_returnPressed();
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include <QKeyEvent>
#include <QHash>
-#ifdef HAVE_KDE
+#ifdef HAVE_KDE4
# include <KDE/KTextEdit>
# define MultiLineEditParent KTextEdit
+#elif defined HAVE_KF5
+# include <KTextWidgets/KTextEdit>
+# define MultiLineEditParent KTextEdit
#else
# include <QTextEdit>
# define MultiLineEditParent QTextEdit
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/***************************************************************************
- * Copyright (C) 2005-2014 by the Quassel Project *
+ * Copyright (C) 2005-2015 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *