diff --git a/CMakeLists.txt b/CMakeLists.txt index 47e795d..3eb87bf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,446 +1,446 @@ cmake_minimum_required(VERSION 3.3) set(CMAKE_CXX_STANDARD 14) set(QT_MIN_VERSION "5.12.0") if(POLICY CMP0071) cmake_policy(SET CMP0071 NEW) endif() project(kaidan) # application information set(APPLICATION_ID "im.kaidan.kaidan") set(APPLICATION_NAME "kaidan") set(APPLICATION_DISPLAY_NAME "Kaidan") set(APPLICATION_DESCRIPTION "A simple, user-friendly Jabber/XMPP client for every device!") if(UBUNTU_TOUCH) set(APPLICATION_NAME "${APPLICATION_ID}") endif() # Version set(VERSION_MAJOR 0) set(VERSION_MINOR 5) set(VERSION_PATCH 0) -set(VERSION_CODE 7) +set(VERSION_CODE 8) set(VERSION_EXTRA "" CACHE STRING "Stuff to append to version string") -set(DEVELOPMENT_BUILD TRUE) +set(DEVELOPMENT_BUILD FALSE) if(DEVELOPMENT_BUILD) set(VERSION_EXTRA "${VERSION_EXTRA}-dev") endif() set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") if(VERSION_EXTRA) set(VERSION_STRING ${VERSION_STRING}${VERSION_EXTRA}) endif() # CMake options option(I18N "Enable i18n support" FALSE) option(STATIC_BUILD "Build Kaidan statically") option(APPIMAGE "Build Kaidan as AppImage (will only work in the appimage script)" FALSE) option(UBUNTU_TOUCH "Building an Ubuntu Touch click (internal use only!)" FALSE) option(CLICK_ARCH "Architecture that will be used in the click's manifest") option(CLICK_DATE "Date used in the version number in the click's manifest") option(QUICK_COMPILER "Use QtQuick compiler to improve performance" FALSE) option(USE_KNOTIFICATIONS "Use KNotifications for displaying notifications" TRUE) option(BUNDLE_ICONS "Bundle breeze icons" FALSE) # Find includes in corresponding build directories set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc, uic and rcc automatically when needed. set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) set(AUTOMOC_MOC_OPTIONS -Muri=${APPLICATION_ID}) # # Dependecies # find_package(ECM 5.40.0 REQUIRED NO_MODULE) # CMake module path set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) # CMake modules include include(KDEInstallDirs) include(KDECompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(ECMInstallIcons) include(FeatureSummary) kde_enable_exceptions() # Find packages find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Qml Quick Svg Sql QuickControls2 Xml Multimedia Positioning Location) find_package(KF5Kirigami2 5.58.0 REQUIRED) find_package(ZXing REQUIRED COMPONENTS Core) find_package(QXmpp 1.2.0 REQUIRED) # Optional QtQuickCompiler if(QUICK_COMPILER) find_package(Qt5QuickCompiler) set_package_properties(Qt5QuickCompiler PROPERTIES DESCRIPTION "Compile QML at build time" TYPE OPTIONAL ) endif() if(USE_KNOTIFICATIONS) find_package(KF5Notifications REQUIRED) set(__KF5Notifications_LIBRARIES KF5::Notifications) add_definitions(-DHAVE_KNOTIFICATIONS) endif() # Optional QWidget style integration (not on mobile) if(NOT UBUNTU_TOUCH AND NOT ANDROID AND NOT IOS) find_package(Qt5Widgets) set_package_properties(Qt5Widgets PROPERTIES DESCRIPTION "Integration with QWidget based desktop styles" TYPE OPTIONAL ) endif() # Platform-specific if(Qt5Widgets_FOUND) add_definitions(-DHAVE_QWIDGETS -DQAPPLICATION_CLASS=QApplication) set(__Qt5Widgets_LIBRARIES Qt5::Widgets) else() add_definitions(-DQAPPLICATION_CLASS=QGuiApplication) endif() if(ANDROID) find_package(Qt5 REQUIRED COMPONENTS AndroidExtras) endif() if(ANDROID OR WIN32) find_package(PkgConfig REQUIRED) pkg_search_module(OPENSSL REQUIRED openssl IMPORTED_TARGET) message(STATUS "Using OpenSSL ${OPENSSL_VERSION}") endif() # # Load submodules # # Main kaidan sources include("${CMAKE_SOURCE_DIR}/src/CMakeLists.txt") # I18n support if(I18N) include("${CMAKE_SOURCE_DIR}/i18n/CMakeLists.txt") endif() # # Sources / Resources # # Include bundled icons on Ubuntu Touch, Android, Windows, macOS and iOS if(BUNDLE_ICONS OR UBUNTU_TOUCH OR ANDROID OR WIN32 OR APPLE) set(KAIDAN_ICONS_QRC kirigami-icons.qrc) endif() # Bundled knotifications configuration files on platforms that require it if(ANDROID) set(KAIDAN_NOTIFICATIONS_QRC "misc/notifications.qrc") endif() # Bundle images on Android, Windows, macOS and iOS if(ANDROID OR WIN32 OR APPLE) set(KAIDAN_IMAGES_QRC "data/images/images.qrc") endif() # Set app icon if(APPLE) set(KAIDAN_ICNS "${CMAKE_SOURCE_DIR}/misc/macos/kaidan.icns") set_source_files_properties(${KAIDAN_ICNS} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") elseif(WIN32) include(ECMAddAppIcon) file(GLOB WIN_ICONS_SRCS "${CMAKE_SOURCE_DIR}/misc/windows/*kaidan.png") message(STATUS ${WIN_ICONS_SRCS}) ecm_add_app_icon(KAIDAN_ICNS ICONS ${WIN_ICONS_SRCS}) message(STATUS ${KAIDAN_ICNS}) endif() if(QUICK_COMPILER) qtquick_compiler_add_resources(KAIDAN_QML_QRC src/qml/qml.qrc) else() qt5_add_resources(KAIDAN_QML_QRC src/qml/qml.qrc) endif() # misc resources (e.g. qtquickcontrols2.conf) qt5_add_resources(KAIDAN_MISC_QRC misc/misc.qrc) add_executable(${PROJECT_NAME} MACOSX_BUNDLE WIN32 ${KAIDAN_ICNS} ${KAIDAN_SOURCES} ${KAIDAN_QML_QRC} ${KAIDAN_MISC_QRC} ${KAIDAN_ICONS_QRC} # only set if enabled ${KAIDAN_IMAGES_QRC} # ${I18N_QRC_CPP} # ${KAIDAN_NOTIFICATIONS_QRC} # "data/data.qrc" ) target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Sql Qt5::Qml Qt5::Quick Qt5::Svg Qt5::Network Qt5::Xml Qt5::Multimedia Qt5::Positioning Qt5::Location ZXing::Core QXmpp::QXmpp ${__Qt5Widgets_LIBRARIES} ${__KF5Notifications_LIBRARIES} ) if(ANDROID OR WIN32 OR IOS) target_link_libraries(${PROJECT_NAME} Qt5::QuickControls2 KF5::Kirigami2) endif() if(ANDROID OR WIN32) target_link_libraries(${PROJECT_NAME} PkgConfig::OPENSSL) endif() if(ANDROID) target_link_libraries(${PROJECT_NAME} Qt5::AndroidExtras) endif() if(STATIC_BUILD) add_definitions(-DQXMPP_BUILD) find_package(Perl REQUIRED) set(STATIC_DEPENDENCIES_CMAKE_FILE "${CMAKE_BINARY_DIR}/QtStaticDependencies.cmake") if(EXISTS ${STATIC_DEPENDENCIES_CMAKE_FILE}) file(REMOVE ${STATIC_DEPENDENCIES_CMAKE_FILE}) endif() get_target_property(QT_LIBDIR Qt5::Core LOCATION) get_filename_component(QT_LIBDIR ${QT_LIBDIR} DIRECTORY) macro(CONVERT_PRL_LIBS_TO_CMAKE _qt_component) if(TARGET Qt5::${_qt_component}) get_target_property(_lib_location Qt5::${_qt_component} LOCATION) execute_process(COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/utils/convert-prl-libs-to-cmake.pl --lib ${_lib_location} --libdir ${QT_LIBDIR} --out ${STATIC_DEPENDENCIES_CMAKE_FILE} --component ${_qt_component} --compiler ${CMAKE_CXX_COMPILER_ID} ) endif() endmacro() link_directories(${_qt5_install_prefix}/../) foreach(qt_module Gui Quick QuickControls2 Network Qml Svg Sql QSQLiteDriverPlugin QJpegPlugin QGifPlugin QSvgPlugin QSvgIconPlugin QICOPlugin QGenericEnginePlugin QLocalClientConnectionFactory QTcpServerConnectionFactory) CONVERT_PRL_LIBS_TO_CMAKE(${qt_module}) endforeach() if(WIN32) CONVERT_PRL_LIBS_TO_CMAKE(QWindowsIntegrationPlugin) elseif(IOS) foreach(qt_module QIOSIntegrationPlugin QMacHeifPlugin QMacJp2Plugin QICNSPlugin QTgaPlugin QTiffPlugin QWbmpPlugin QWebpPlugin) CONVERT_PRL_LIBS_TO_CMAKE(${qt_module}) endforeach() endif() if(NOT EXISTS ${STATIC_DEPENDENCIES_CMAKE_FILE}) message(FATAL_ERROR "Unable to find ${STATIC_DEPENDENCIES_CMAKE_FILE}") endif() include(${STATIC_DEPENDENCIES_CMAKE_FILE}) set(QT_QML_PATH ${_qt5Quick_install_prefix}) find_library(KIRIGAMI_PLUGIN kirigamiplugin PATHS ${Kirigami2_INSTALL_PREFIX}/${KDE_INSTALL_QMLDIR}/org/kde/kirigami.2) find_library(QUICK_PLUGIN qtquick2plugin PATHS ${QT_QML_PATH}/qml/QtQuick.2) find_library(LABS_PLATFORM_PLUGIN qtlabsplatformplugin PATHS ${QT_QML_PATH}/qml/Qt/labs/platform) find_library(GRAPHEFFECTS_PLUGIN qtgraphicaleffectsplugin PATHS ${QT_QML_PATH}/qml/QtGraphicalEffects) find_library(GRAPHEFFECTS_PRIVATE_PLUGIN qtgraphicaleffectsprivate PATHS ${QT_QML_PATH}/qml/QtGraphicalEffects/private) find_library(QQC2_PLUGIN qtquickcontrols2plugin PATHS ${QT_QML_PATH}/qml/QtQuick/Controls.2) find_library(QQC2_MATERIAL_PLUGIN qtquickcontrols2materialstyleplugin PATHS ${QT_QML_PATH}/qml/QtQuick/Controls.2/Material) find_library(QQC2_UNIVERSAL_PLUGIN qtquickcontrols2universalstyleplugin PATHS ${QT_QML_PATH}/qml/QtQuick/Controls.2/Universal) find_library(QLAYOUTS_PLUGIN qquicklayoutsplugin PATHS ${QT_QML_PATH}/qml/QtQuick/Layouts) find_library(QWINDOW_PLUGIN windowplugin PATHS ${QT_QML_PATH}/qml/QtQuick/Window.2) find_library(QSHAPES_PLUGIN qmlshapesplugin PATHS ${QT_QML_PATH}/qml/QtQuick/Shapes) find_library(QUICKSHAPES Qt5QuickShapes PATHS ${QT_LIBDIR}) find_library(QTEMPLATES_PLUGIN qtquicktemplates2plugin PATHS ${QT_QML_PATH}/qml/QtQuick/Templates.2) find_library(QMODELS_PLUGIN modelsplugin PATHS ${QT_QML_PATH}/qml/QtQml/Models.2) target_link_libraries(${PROJECT_NAME} ${plugin_libs} Qt5::QSQLiteDriverPlugin Qt5::QJpegPlugin Qt5::QGifPlugin Qt5::QSvgPlugin Qt5::QSvgIconPlugin Qt5::QICOPlugin Qt5::QGenericEnginePlugin Qt5::QLocalClientConnectionFactory Qt5::QTcpServerConnectionFactory ${KIRIGAMI_PLUGIN} ${QUICK_PLUGIN} ${LABS_PLATFORM_PLUGIN} ${GRAPHEFFECTS_PLUGIN} ${GRAPHEFFECTS_PRIVATE_PLUGIN} ${QQC2_PLUGIN} ${QQC2_MATERIAL_PLUGIN} ${QQC2_UNIVERSAL_PLUGIN} ${QLAYOUTS_PLUGIN} ${QWINDOW_PLUGIN} ${QSHAPES_PLUGIN} ${QUICKSHAPES} ${QTEMPLATES_PLUGIN} ${QMODELS_PLUGIN} ${__Qt5Widgets_LIBRARIES} ) if(WIN32) target_link_libraries(${PROJECT_NAME} Qt5::QWindowsIntegrationPlugin ) elseif(IOS) target_link_libraries(${PROJECT_NAME} Qt5::QIOSIntegrationPlugin Qt5::QMacHeifPlugin Qt5::QMacJp2Plugin Qt5::QICNSPlugin Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QWbmpPlugin Qt5::QWebpPlugin ) endif() endif() # Set a custom plist file for the app bundle if(APPLE) if(IOS) set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/misc/ios/Info.plist) else() set_target_properties(${PROJECT_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/misc/macos/Info.plist) endif() endif() # iOS-specific linker flags if(IOS) set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} "-Wl,-e,_qt_main_wrapper -u _qt_registerPlatformPlugin") endif() # # Global C++ variables # if(UBUNTU_TOUCH) set(KAIDAN_COMPILE_DEFINITIONS UBUNTU_TOUCH=True) elseif(APPIMAGE) set(KAIDAN_COMPILE_DEFINITIONS APPIMAGE=True TARGET_GSTREAMER_PLUGINS="${TARGET_GSTREAMER_PLUGINS}" ) endif() if(STATIC_BUILD) set(KAIDAN_COMPILE_DEFINITIONS STATIC_BUILD=True ${KAIDAN_COMPILE_DEFINITIONS} ) endif() target_compile_definitions(${PROJECT_NAME} PRIVATE DEBUG_SOURCE_PATH="${CMAKE_SOURCE_DIR}" VERSION_STRING="${VERSION_STRING}" APPLICATION_ID="${APPLICATION_ID}" APPLICATION_NAME="${APPLICATION_NAME}" APPLICATION_DISPLAY_NAME="${APPLICATION_DISPLAY_NAME}" APPLICATION_DESCRIPTION="${APPLICATION_DESCRIPTION}" ${KAIDAN_COMPILE_DEFINITIONS} ) # # Install Kaidan # if(ANDROID) configure_file(${CMAKE_SOURCE_DIR}/misc/android/AndroidManifest.xml.in ${CMAKE_SOURCE_DIR}/misc/android/AndroidManifest.xml) elseif(IOS) configure_file(${CMAKE_SOURCE_DIR}/misc/ios/Info.plist.in ${CMAKE_SOURCE_DIR}/misc/ios/Info.plist) endif() if(UBUNTU_TOUCH AND CLICK_ARCH) set(CLICK_VERSION ${VERSION_STRING}) if(DEVELOPMENT_BUILD) set(CLICK_VERSION "${CLICK_VERSION}.${CLICK_DATE}") endif() # will replace ${CLICK_ARCH} with its value configure_file(${CMAKE_SOURCE_DIR}/misc/ubuntu-touch/manifest.json.in ${CMAKE_SOURCE_DIR}/misc/ubuntu-touch/manifest.json) # install kaidan binary install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/bin/${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX} ) # install kaidan media install(DIRECTORY "data/" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/${APPLICATION_ID}" PATTERN "*.qrc" EXCLUDE ) # install icon install(FILES "data/images/kaidan.svg" "misc/ubuntu-touch/apparmor.json" "misc/ubuntu-touch/kaidan.desktop" "misc/ubuntu-touch/manifest.json" DESTINATION "${CMAKE_INSTALL_PREFIX}" ) elseif(UNIX AND NOT APPLE) # install kaidan binary install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/bin/${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} ) # install kaidan media install(DIRECTORY "data/" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}" PATTERN "*.qrc" EXCLUDE ) # install icon (scalable + 128x) install(FILES "data/images/kaidan.svg" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/scalable/apps" ) install(FILES "misc/kaidan-128x128.png" DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/128x128/apps" RENAME "kaidan.png" ) # install desktop file install(FILES "misc/kaidan.desktop" DESTINATION "${KDE_INSTALL_APPDIR}" ) # install metainfo install(FILES "misc/metadata.xml" DESTINATION "${KDE_INSTALL_METAINFODIR}" RENAME "${APPLICATION_ID}.appdata.xml" ) endif() # KNotifications if(USE_KNOTIFICATIONS) install(FILES misc/kaidan.notifyrc DESTINATION ${KNOTIFYRC_INSTALL_DIR}) endif() feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/LICENSE b/LICENSE index 7e74602..7aa74e8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,225 +1,227 @@ Upstream-Name: kaidan Source: https://invent.kde.org/kde/kaidan/ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Files: src/* utils/* misc/* Copyright: 2016-2020, Linus Jahn 2016-2020, Jonah Brüchert 2017-2019, Ilya Bizyaev 2018-2019, Nicolas Fella 2019-2020, Melvin Keskin 2019, Filipe Azevedo 2018, Allan Nordhøy 2019, Robert Maerkisch 2020, Andrea Scarpino 2019, caca hueto + 2020, Emmanuel Gil Peyrot 2019, Mauricio Torres Mejía 2019, Yury Gubich 2019, Volker Krause 2019, Simon Schmeisser 2019, Nick Richards 2019, Simon Redman 2019, Xavier 2018, Bjarne Roß 2018, SohnyBohny 2018, Marco Martin 2017, probonopd 2016, Marzanna 2017-2018, Eike Hein License: GPL-3+ with OpenSSL exception Files: i18n/* Copyright: 2017-2019, Linus Jahn 2017-2020, Jonah Brüchert 2017-2020, Muhammad Nur Hidayat Yasuyoshi 2018-2019, Allan Nordhøy 2017-2019, Joeke de Graaf 2018-2019, advocatux + 2019-2020, Sylke Vicious 2018-2019, oiseauroch 2019-2020, Milan Korecky - 2019-2020, Sylke Vicious 2019-2020, Anne Onyme 017 2018-2019, aitzol berasategi 2019, ssantos 2019-2020, Xosé M 2019-2020, Yuri Chornoivan 2017, Ilya Bizyaev 2017, Robert Maerkisch 2019, Joan CiberSheep + 2020, Michal Biesiada 2020, Adolfo Jayme Barrientos 2019, Eiad Rostom 2019, caca hueto 2019, Clemens Riese 2019, Txaume 2019, Melvin Keskin 2018, Andreas Kleinert 2017, Emmanuel Gil Peyrot License: GPL-3+ with OpenSSL exception Files: src/StatusBar.cpp src/StatusBar.h src/singleapp/* src/hsluv-c/* utils/generate-license.py Copyright: 2016, J-P Nurmi 2018-2019, Linus Jahn 2015-2018, Itay Grudev 2015, Alexei Boronine 2015, Roger Tallada 2017, Martin Mitas License: MIT Files: src/EmojiModel.cpp src/EmojiModel.h qml/elements/EmojiPicker.qml Copyright: 2017, Konstantinos Sideris License: GPL-3+ Files: src/QrCodeVideoFrame.h src/QrCodeVideoFrame.cpp Copyright: 2017, QZXing authors License: apache-2.0 Files: data/images/check-mark.svg Copyright: 2019, Melvin Keskin License: CC-BY-SA-4.0 Files: misc/kaidan-128x128.png data/images/kaidan.svg data/images/kaidan-bw.svg Copyright: 2016-2017, Ilya Bizyaev 2020, Mathis Brüchert 2020, Melvin Keskin 2019, Melvin Keskin License: CC-BY-SA-4.0 Comment: Inspired by graphic from https://www.toptal.com/designers/subtlepatterns/ Files: data/images/global-drawer-banner.svg Copyright: 2020, Mathis Brüchert License: CC-BY-SA-4.0 Files: data/images/account-deletion-from-client.svg data/images/account-deletion-from-client-and-server.svg data/images/onboarding/account-transfer.svg data/images/onboarding/automatic-registration.svg data/images/onboarding/custom-form.svg data/images/onboarding/display-name.svg data/images/onboarding/login.svg data/images/onboarding/manual-registration.svg data/images/onboarding/password.svg data/images/onboarding/registration.svg data/images/onboarding/result.svg data/images/onboarding/server.svg data/images/onboarding/username.svg data/images/onboarding/web-registration.svg Copyright: 2020, Mathis Brüchert License: CC-BY-SA-4.0 Files: utils/convert-prl-libs-to-cmake.pl Copyright: 2016, Konstantin Tokarev License: MIT-Apple License: GPL-3+ with OpenSSL exception 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 3 of the License, or (at your option) any later version. . In addition, as a special exception, the author of this program gives permission to link the code of its release with the OpenSSL project's "OpenSSL" library (or with modified versions of it that use the same license as the "OpenSSL" library), and distribute the linked executables. You must obey the GNU General Public License in all respects for all of the code used other than "OpenSSL". If you modify this file, you may extend this exception to your version of the file, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. . 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 package. If not, see . . On Debian systems, the full text of the GNU General Public License version 3 can be found in the file `/usr/share/common-licenses/GPL-3'. License: GPL-3+ 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 3 of the License, or (at your option) any later version. . 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 package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA . On Debian systems, the full text of the GNU General Public License version 3 can be found in the file `/usr/share/common-licenses/GPL-3'. License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License: MIT-Apple Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. . THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: apache-2.0 Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at . http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. diff --git a/NEWS b/NEWS index acc4c50..d13143e 100644 --- a/NEWS +++ b/NEWS @@ -1,227 +1,227 @@ Version 0.5.0 ~~~~~~~~~~~~~ -Released: 2020-04-03 +Released: 2020-04-04 Features: * Add parsing of XMPP URIs (lnj, melvo) * Add QR code scanning and generation (lnj, jbb, melvo) * Add contact search (zatrox, lnj) * Add muting notifications for messages of contacts (zatrox) * Add renaming contacts (lnj, zatrox, melvo) * Show user profile information (lnj, jbb) * Add extended multimedia support (fazevedo) * Add message search (blue) * Redesign contact list, text avatar, counter for unread messages, chat page, chat message bubble (melvo) * Show notifications on Android (melvo, jbb, cacahueto) * Add option for enabling or disabling an account temporarily (melvo) * Refactor login screen with hints for invalid credentials and better usage of keyboard keys (melvo) * Add message quoting (jbb) * Truncate very long messages to avoid crashing Kaidan or using it to full capacity (jbb) * Add button with link for issue tracking to about page (melvo) * Improve messages for connection errors (melvo) * Add account deletion (melvo, mbb) * Redesign logo and global drawer banner (melvo, mbb) * Add onboarding with registration, normal login and QR code login (melvo, lnj, jbb, mbb) * Add OARS rating (nickrichards) * Add secondary roster sorting by contact name (lnj) * Add support for recording audio and video messages (fazevedo) * Add Kaidan to KDE's F-Droid repository (nicolasfella) * Improve build scripts for better cross-platform support (jbb, cacahueto, lnj, mauro) * Refactor code for better performance and stability (lnj, jbb, melvo) * Add documentation to achieve easier maintenance (melvo, lnj, jbb) Bugfixes: * Fix AppImage build (jbb) * Fix scrolling and item height problems in settings (jbb) Notes: * Require Qt 5.12 and QXmpp 1.2 * Drop Ubuntu Touch support due to outdated Qt Version 0.4.2 ~~~~~~~~~~~~~ Released: 2020-04-02 Features: * ChatMessage: Do not display media URLs (lnj) * ChatMessage: Add media URL copy action (lnj) Bugfixes: * Fix roster not cleared when switching account (lnj) * ChatMessage: Fix copy to clipboard function (lnj) * Fix scroll indiciator not overlap message on the right edge (fazevedo) * Fix upload issues (fazevedo) * ChatPage: Clear message correction when sent (fazevedo) * Fix roster sorting (lnj) * Fix buttonTextColor deprecation warnings (sredman) * Fix build with QXmpp >= 1.0.1 (lnj) Version 0.4.1 ~~~~~~~~~~~~~ Released: 2019-07-16 Bugfixes: * Fix SSL problems for AppImage (lnj) * Fix connection problems (lnj) * Keep QXmpp v0.8.3 compatibility (lnj) Version 0.4.0 ~~~~~~~~~~~~~ Released: 2019-07-08 Features: * Show proper notifications using KNotifications (lnj) * Add settings page for changing passwords (jbb, lnj) * Add XEP-0352: Client State Indication (gloox/QXmpp) (lnj) * Add media/file (including GIFs) sharing (lnj, jbb) * Full back-end rewrite to QXmpp (lnj) * Implement XEP-0363: HTTP File Upload and UploadManager for QXmpp (lnj) * Use XEP-0280: Message Carbons from QXmpp (lnj) * Use XEP-0352: Client State Indication from QXmpp (lnj) * Check incoming messages for media links (lnj) * Implement XEP-0308: Last Message Correction (lnj, jbb) * Make attachments downloadable (lnj) * Implement XEP-0382: Spoiler messages (xavi) * Kaidan is now offline usable (lnj) * Kaidan is able to open xmpp: URIs (lnj) * New logo (ilyabizyaev) * Show presence information of contacts (lnj, melvo) * Add EmojiPicker from Spectral with search and favorites functionality (jbb, fazevedo) * Highlight links in chat and make links clickable (lnj) * New about dialog instead of the about page (ilyabizyaev) * Add image preview in chat and before sending (lnj) * Send messages on Enter, new line on Ctrl-Enter (ilyabizyaev) * 'Add contact' is now the main action on the contacts page (lnj) * Elide contact names and messages in roster (lnj) * Chat page redesign (ilyabizyaev) * Display passive notifications when trying to use online actions while offline (lnj) * Automatically reconnect on connection loss (lnj) * Contacts page: Display whether online in title (lnj) * Add different connection error messages (jbb) * Use QApplication when building with QWidgets (notmart) * Ask user to approve subscription requests (lnj) * Remove contact action: Make JIDs bold (lnj) * Add contact sheet: Ask for optional message to contact (lnj) * Add empty chat page with help notice to be displayed on start up (jbb) * Redesign log in page (sohnybohny) * Add Copy Invitaion URL action (jbb) * Add 'press and hold' functionality for messages context menu (jbb) * Add copy to clipboard function for messages (jbb) * Add mobile file chooser (jbb) * Highlight the currently opened chat on contacts page (lnj) * Remove predefined window sizes (lnj) * Use new Kirigami application header (nicofee) * Make images open externally when clicked (jbb) * Use QtQuickCompiler (jbb) * Display upload progress bar (lnj) * Add text+color avatars as fallback (lnj, jbb) * Remove diaspora log in option (lnj) * Support for Android (ilyabizyaev) * Support for Ubuntu Touch (jbb) * Support for MacOS (ilyabizyaev) * Support for Windows (ilyabizyaev) * Support for iOS (ilyabizyaev) * Add KDE Flatpak (jbb) * Switch Android builds to CMake with ECM (ilyabizyaev) * Improve Linux AppImage build script (ilyabizyaev) * Add additional image formats in AppImage (jbb) * Forget passwords on log out (lnj) * Append four random chars to resource (lnj) * Save passwords in base64 instead of clear text (lnj) * Generate the LICENSE file automatically with all git authors (lnj) * Store ubuntu touch builds as job artifacts (lnj) * Add GitLab CI integration (jbb) Bugfixes: * Fix blocking of GUI thread while database interaction (lnj) * Fix TLS connection bug (lnj) * Don't send notifications when receiving own messages via. carbons (lnj) * Fix timezone bug of message timestamps (lnj) * Fix several message editing bugs (lnj) * Fix black icons (jbb) * Fix rich text labels in Plasma Mobile (lnj) * Small Plasma Mobile fixes (jbb) Version 0.3.2 ~~~~~~~~~~~~~ Released: 2017-11-25 Features: * Added AppImage build script (#138) (@JBBgameich) * Use relative paths to find resource files (#143) (@LNJ2) * Source directory is only used for resource files in debug builds (#146) (@LNJ2) Version 0.3.1 ~~~~~~~~~~~~~ Released: 2017-11-20 Bugfixes: * Fixed database creation errors (#135, #132) (@LNJ2) * ChatPage: Fixed recipient's instead of author's avatar displayed (#131, #137) (@LNJ2) Features: * Added Travis-CI integration (#133, #134, #136) (@JBBgameich) * Added Malay translations (#129) (@MuhdNurHidayat) Version 0.3.0 ~~~~~~~~~~~~~ Released: 2017-08-15 Features: * Added XEP-0280: Message Carbons (#117) (@LNJ2) * Added XEP-0054/XEP-0153: VCard-based avatars (#73, #105, #119) (@LNJ2) * Added file storage for simply caching all avatars (@LNJ2) * New roster design - showing round avatars and last message (#118) (@LNJ2) * New chat page design - showing time, delivery status and round avatars (#123) (@LNJ2) * Switched to XMPP client library "gloox" (#114) (@LNJ2) * Rewritten most of the back-end for gloox and partialy also restructured it (#114) (@LNJ2) * (Re)written new LogHandler for gloox (Swiften had this already included) (#114) (@LNJ2) Version 0.2.3 ~~~~~~~~~~~~~ Released: 2017-06-19 Bugfixes: * LoginPage: Remove material shadow (#113) (@JBBgameich) * Kaidan was crashing since v0.2.2 when inserting a new message to the DB (@LNJ2) Version 0.2.2 ~~~~~~~~~~~~~ Released: 2017-06-19 Bugfixes: * RosterPage: Clear TextFields after closing AddContactSheet (#106) (@JBBgameich) Features: * RosterController: Save lastMessage for each contact (#108) (@LNJ2) * Add database versioning and conversion (#110) (@LNJ2) * Database: Add new roster row `avatarHash` (#112) (@LNJ2) * CMake: Add feature summary (#109) (@LNJ2) Version 0.2.1 ~~~~~~~~~~~~~ Released: 2017-06-08 Bugfixes: * Roster page: Fixed style: Now has contour lines and a cool material effect (@LNJ2) Version 0.2.0 ~~~~~~~~~~~~~ Released: 2017-06-06 Features: * Add Roster Editing (#84, #86) (@LNJ2, @JBBgameich) * Roster refreshes now automatically (#83) (@LNJ2) * Contacts are now sorted (@LNJ2) * Add unread message counters (#92, #101) (@LNJ2) * Add LibNotify-Linux notifications (#90) (@LNJ2) * Add custom JID resources (#82) (@LNJ2) * Add XEP-0184: Message Delivery Receipts (@LNJ2) * Disable stream compression by default (for HipChat/other server compatibility) (@LNJ2) * GUI: Port to Kirigami 2 (#81) (@JBBgameich) * User Material/Green Theme per default (@LNJ2) * Login page: New design with diaspora* login option (#87) (@JBBgameich) * Chat page: Slightly improved design (@LNJ2) Bugfixes: * AboutPage: Fix possible closing of multiple pages (@LNJ2) diff --git a/misc/metadata.xml b/misc/metadata.xml index 6163927..03f6ce8 100644 --- a/misc/metadata.xml +++ b/misc/metadata.xml @@ -1,219 +1,273 @@ im.kaidan.kaidan Kaidan Kaidan, a simple and user-friendly Jabber/XMPP client for every device and platform CC0-1.0 GPL-3.0+ Kaidan Developers & Contributors

Kaidan is a simple, user-friendly Jabber/XMPP client providing a modern user-interface using Kirigami and QtQuick. The back-end of Kaidan is entirely written in C++ using the qxmpp XMPP client library and Qt 5.

Kaidan is not finished yet, so don’t expect it working as well as a finished client will do.

For a list of supported XEPs, have a look at the Wiki.

Network https://kaidan.im https://invent.kde.org/KDE/kaidan/issues https://invent.kde.org/KDE/kaidan/wikis kaidan.desktop Example chat on a desktop and on a mobile device https://www.kaidan.im/images/screenshot.png + + +

This release adds the following features:

+
    +
  • Add parsing of XMPP URIs
  • +
  • Add QR code scanning and generation
  • +
  • Add contact search
  • +
  • Add muting notifications for messages of contacts
  • +
  • Add renaming contacts
  • +
  • Show user profile information
  • +
  • Add extended multimedia support
  • +
  • Add message search
  • +
  • Redesign contact list, text avatar, counter for unread messages, chat page, chat message bubble
  • +
  • Show notifications on Android
  • +
  • Add option for enabling or disabling an account temporarily
  • +
  • Refactor login screen with hints for invalid credentials and better usage of keyboard keys
  • +
  • Add message quoting
  • +
  • Truncate very long messages to avoid crashing Kaidan or using it to full capacity
  • +
  • Add button with link for issue tracking to about page
  • +
  • Improve messages for connection errors
  • +
  • Add account deletion
  • +
  • Redesign logo and global drawer banner
  • +
  • Add onboarding with registration, normal login and QR code login
  • +
  • Improve build scripts for better cross-platform support
  • +
  • Refactor code for better performance and stability
  • +
  • Add documentation to achieve easier maintenance
  • +
+

This release fixes the following bugs:

+
    +
  • Fix AppImage build
  • +
  • Fix scrolling and item height problems in settings
  • +
+
+
+ + +

This release adds the following features:

+
    +
  • ChatMessage: Do not display media URLs
  • +
  • ChatMessage: Add media URL copy action
  • +
+

This release fixes the following bugs:

+
    +
  • Fix roster not cleared when switching account
  • +
  • ChatMessage: Fix copy to clipboard function
  • +
  • Fix scroll indiciator not overlap message on the right edge
  • +
  • Fix upload issues
  • +
  • ChatPage: Clear message correction when sent
  • +
  • Fix roster sorting
  • +
  • Fix buttonTextColor deprecation warnings
  • +
  • Fix build with QXmpp >= 1.0.1
  • +
+
+

This release fixes the following bugs:

  • Fix SSL problems for AppImage
  • Fix connection problems
  • Keep QXmpp v0.8.3 compatibility

This release adds the following features:

  • Show proper notifications using KNotifications
  • Add settings page for changing passwords
  • Add XEP-0352: Client State Indication (gloox/QXmpp)
  • Add media/file (including GIFs) sharing
  • Full back-end rewrite to QXmpp
  • Implement XEP-0363: HTTP File Upload and UploadManager for QXmpp
  • Use XEP-0280: Message Carbons from QXmpp
  • Use XEP-0352: Client State Indication from QXmpp
  • Check incoming messages for media links
  • Implement XEP-0308: Last Message Correction
  • Make attachments downloadable
  • Implement XEP-0382: Spoiler messages
  • Kaidan is now offline usable
  • Kaidan is able to open xmpp: URIs
  • New logo
  • Show presence information of contacts
  • Add EmojiPicker from Spectral with search and favorites functionality
  • Highlight links in chat and make links clickable
  • New about dialog instead of the about page
  • Add image preview in chat and before sending
  • Send messages on Enter, new line on Ctrl-Enter
  • 'Add contact' is now the main action on the contacts page
  • Elide contact names and messages in roster
  • Chat page redesign
  • Display passive notifications when trying to use online actions while offline
  • Automatically reconnect on connection loss
  • Contacts page: Display whether online in title
  • Add different connection error messages
  • Use QApplication when building with QWidgets
  • Ask user to approve subscription requests
  • Remove contact action: Make JIDs bold
  • Add contact sheet: Ask for optional message to contact
  • Add empty chat page with help notice to be displayed on start up
  • Redesign log in page
  • Add Copy Invitaion URL action
  • Add 'press and hold' functionality for messages context menu
  • Add copy to clipboard function for messages
  • Add mobile file chooser
  • Highlight the currently opened chat on contacts page
  • Remove predefined window sizes
  • Use new Kirigami application header
  • Make images open externally when clicked
  • Use QtQuickCompiler
  • Display upload progress bar
  • Add text+color avatars as fallback
  • Remove diaspora log in option
  • Support for Android
  • Support for Ubuntu Touch
  • Support for MacOS
  • Support for Windows
  • Support for iOS
  • Add KDE Flatpak
  • Switch Android builds to CMake with ECM
  • Improve Linux AppImage build script
  • Add additional image formats in AppImage
  • Forget passwords on log out
  • Append four random chars to resource
  • Save passwords in base64 instead of clear text
  • Generate the LICENSE file automatically with all git authors
  • Store ubuntu touch builds as job artifacts
  • Add GitLab CI integration

This release fixes the following bugs:

  • Fix blocking of GUI thread while database interaction
  • Fix TLS connection bug
  • Don't send notifications when receiving own messages via. carbons
  • Fix timezone bug of message timestamps
  • Fix several message editing bugs
  • Fix black icons
  • Fix rich text labels in Plasma Mobile
  • Small Plasma Mobile fixes

This release adds the following features:

  • Added AppImage build script (#138)
  • Use relative paths to find resource files (#143)
  • Source directory is only used for resource files in debug builds (#146)

This release fixes the following bugs:

  • Fixed database creation errors (#135, #132)
  • ChatPage: Fixed recipient's instead of author's avatar displayed (#131, #137)

This release adds the following features:

  • Added Travis-CI integration (#133, #134, #136)
  • Added Malay translations (#129)

This release adds the following features:

  • Added XEP-0280: Message Carbons (#117)
  • Added XEP-0054/XEP-0153: VCard-based avatars (#73, #105, #119)
  • Added file storage for simply caching all avatars
  • New roster design - showing round avatars and last message (#118)
  • New chat page design - showing time, delivery status and round avatars (#123)
  • Switched to XMPP client library "gloox" (#114)
  • Rewritten most of the back-end for gloox and partialy also restructured it (#114)
  • (Re)written new LogHandler for gloox (Swiften had this already included) (#114)

This release fixes the following bugs:

  • LoginPage: Remove material shadow (#113)
  • Kaidan was crashing since v0.2.2 when inserting a new message to the DB

This release fixes the following bug:

  • RosterPage: Clear TextFields after closing AddContactSheet (#106)

This release adds the following features:

  • RosterController: Save lastMessage for each contact (#108)
  • Add database versioning and conversion (#110)
  • Database: Add new roster row `avatarHash` (#112)
  • CMake: Add feature summary (#109)

This release fixes the following bug:

  • Roster page: Fixed style: Now has contour lines and a cool material effect

This release adds the following features:

  • Add Roster Editing (#84, #86)
  • Roster refreshes now automatically (#83)
  • Contacts are now sorted
  • Add unread message counters (#92, #101)
  • Add LibNotify-Linux notifications (#90)
  • Add custom JID resources (#82)
  • Add XEP-0184: Message Delivery Receipts
  • Disable stream compression by default (for HipChat/other server compatibility)
  • GUI: Port to Kirigami 2 (#81)
  • User Material/Green Theme per default
  • Login page: New design with diaspora* login option (#87)
  • Chat page: Slightly improved design

This release fixes the following bugs:

  • AboutPage: Fix possible closing of multiple pages
kaidan intense intense