...
 
Commits (87)
......@@ -9,6 +9,7 @@ clazy:
variables:
CMAKE_CXX_COMPILER: clazy
script: utils/travis/build.sh
allow_failure: true
qmllint:
stage: test
......@@ -50,18 +51,6 @@ linux-appimage:
- "*.AppImage.zsync"
expire_in: 1 week
click-xenial:
stage: deploy
image: kaidan/ubuntu-touch-xenial
script: utils/travis/build.sh
allow_failure: true
variables:
PLATFORM: ubuntu-touch
artifacts:
paths:
- "*.click"
expire_in: 1 week
windows-mxe:
stage: deploy
image: kaidan/windows-mxe
......@@ -76,12 +65,13 @@ windows-mxe:
android:
stage: deploy
image: kdeorg/android-sdk
image: kdeorg/android-arm-sdk
script:
- sudo apt update
- sudo apt -y install inkscape optipng
- GIT_EXTRA="--branch ${KF5_VERSION}" /opt/helpers/build-kde-dependencies --withProject kirigami
- /opt/helpers/build-cmake qxmpp https://github.com/qxmpp-project/qxmpp.git -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF
- /opt/helpers/build-cmake zxing-cpp https://github.com/nu-book/zxing-cpp.git
- GIT_EXTRA="--branch ${CI_COMMIT_REF_NAME} --recursive" /opt/helpers/build-cmake ${CI_PROJECT_NAME} ${CI_REPOSITORY_URL} -DQTANDROID_EXPORTED_TARGET=kaidan -DANDROID_APK_DIR=${CI_PROJECT_DIR}/src/${CI_PROJECT_NAME}/misc/android -DI18N=1 -DUSE_KNOTIFICATIONS=OFF
- ${CI_PROJECT_DIR}/src/${CI_PROJECT_NAME}/utils/render-logos.sh
- /opt/helpers/create-apk ${CI_PROJECT_NAME}
......
......@@ -7,3 +7,6 @@
[submodule "3rdparty/qxmpp"]
path = 3rdparty/qxmpp
url = https://github.com/qxmpp-project/qxmpp
[submodule "3rdparty/zxing-cpp"]
path = 3rdparty/zxing-cpp
url = https://github.com/nu-book/zxing-cpp
#
# This list is used by git-shortlog to fix a few botched name translations
# in the git archive, either because the author's full name was messed up
# and/or not always written the same way, making contributions from the
# same person appearing not to be so.
#
Linus Jahn <lnj@kaidan.im> <git@lnj.li>
Linus Jahn <lnj@kaidan.im> <linus.jahn@searchmetrics.com>
Jonah Brüchert <jbb@kaidan.im> <jbb.prv@gmx.de>
Jonah Brüchert <jbb@kaidan.im> <jbb.mail@gmx.de>
Jonah Brüchert <jbb@kaidan.im> <jbbgameich@gmail.com>
Jonah Brüchert <jbb@kaidan.im> <jbbgameich@outlook.com>
geobra <s.g.b@gmx.de>
Muhammad Nur Hidayat Yasuyoshi <mnh48mail@gmail.com>
Subproject commit a4bc2e5f38de971aef396655e6c122ec2a8aaeac
Subproject commit 1f12816dd78b6a7447c95919c7bf096be986ffd4
Subproject commit a2b0da8b540186eb4d25d1ae70618f231248d4e5
Subproject commit 4384fa0c81628fa96c36405fb65a2b0ecf04a989
Subproject commit 670e78e89549ef001710b2a98b9011f9b7b58d12
cmake_minimum_required(VERSION 3.3)
find_package(ECM 5.40.0 REQUIRED NO_MODULE)
set(CMAKE_CXX_STANDARD 14)
set(QT_MIN_VERSION "5.8.0")
set(QT_MIN_VERSION "5.10.0")
if(POLICY CMP0071)
cmake_policy(SET CMP0071 NEW)
......@@ -15,13 +15,14 @@ set(APPLICATION_DISPLAY_NAME "Kaidan")
if(UBUNTU_TOUCH)
set(APPLICATION_NAME "${APPLICATION_ID}")
endif()
set(VERSION_STRING "0.4.0~dev")
set(VERSION_STRING "0.5.0-dev")
set(DEVELOPMENT_BUILD TRUE)
set(ANDROID_VERSION_CODE 3)
set(ANDROID_VERSION_CODE 6)
# 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")
......@@ -55,9 +56,10 @@ kde_enable_exceptions()
# Find packages
find_package(PkgConfig REQUIRED)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Qml Quick Svg Sql QuickControls2 Xml)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Qml Quick Svg Sql QuickControls2 Xml Multimedia)
find_package(KF5Kirigami2 REQUIRED)
pkg_search_module(QXmpp REQUIRED qxmpp>=0.9)
find_package(ZXing REQUIRED COMPONENTS Core)
pkg_search_module(QXmpp REQUIRED qxmpp>=1.0)
# Optional QtQuickCompiler
if(QUICK_COMPILER)
......@@ -167,6 +169,8 @@ target_link_libraries(${PROJECT_NAME}
Qt5::Svg
Qt5::Network
Qt5::Xml
Qt5::Multimedia
ZXing::Core
${__Qt5Widgets_LIBRARIES}
${__KF5Notifications_LIBRARIES}
# currently needs to be hardcoded for windows builds
......@@ -323,8 +327,8 @@ endif()
if(UBUNTU_TOUCH)
set(KAIDAN_COMPILE_DEFINITIONS UBUNTU_TOUCH=True)
elseif(NOT ANDROID AND NOT IOS AND NOT WIN32 AND NOT APPLE)
set(KAIDAN_COMPILE_DEFINITIONS NOTIFICATIONS_LIBNOTIFY=True)
elseif(APPIMAGE)
set(KAIDAN_COMPILE_DEFINITIONS APPIMAGE=True)
endif()
if(STATIC_BUILD)
......
Upstream-Name: kaidan
Source: https://git.kaidan.im/kaidan/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-2019, Linus Jahn <lnj@kaidan.im>
2016-2019, Jonah Brüchert <jbb@kaidan.im>
Copyright: 2016-2019, Jonah Brüchert <jbb@kaidan.im>
2016-2019, Linus Jahn <lnj@kaidan.im>
2017-2019, Ilya Bizyaev <bizyaev@zoho.com>
2018, Allan Nordhøy <epost@anotheragency.no>
2019, Filipe Azevedo <pasnox@gmail.com>
2019, Melvin Keskin <melvo@olomono.de>
2019, Robert Maerkisch <zatroxde@protonmail.ch>
2019, Simon Schmeisser <s.schmeisser@gmx.net>
2019, Nick Richards <nick@nedrichards.com>
2019, Simon Redman <simon@ergotech.com>
2019, Xavier <xavi@delape.net>
2018, Nicolas Fella <nicolas.fella@gmx.de>
2018, Bjarne Roß <ross.b@freenet.de>
......@@ -20,17 +26,25 @@ Copyright: 2016-2019, Linus Jahn <lnj@kaidan.im>
License: GPL-3+ with OpenSSL exception
Files: i18n/*
Copyright: 2017-2018, Linus Jahn <lnj@kaidan.im>
2017-2018, Jonah Brüchert <jbb@kaidan.im>
2017-2018, Muhammad Nur Hidayat Yasuyoshi <mnh48mail@gmail.com>
2018, Allan Nordhøy <epost@anotheragency.no>
2018, advocatux <advocatux@airpost.net>
Copyright: 2017-2019, Linus Jahn <lnj@kaidan.im>
2017-2019, Jonah Brüchert <jbb@kaidan.im>
2017-2019, Muhammad Nur Hidayat Yasuyoshi <mnh48mail@gmail.com>
2018-2019, Allan Nordhøy <epost@anotheragency.no>
2018-2019, advocatux <advocatux@airpost.net>
2018-2019, oiseauroch <tobias.ollive@mailoo.org>
2018-2019, aitzol berasategi <aitzol@disroot.org>
2019, ssantos <ssantos@web.de>
2019, Sylke Vicious <silkevicious@gmail.com>
2019, Anne Onyme 017 <anneonyme017@netcourrier.com>
2019, Milan Korecky <milan.korecky@gmail.com>
2017-2018, Joeke de Graaf <mappack@null.net>
2017, Ilya Bizyaev <bizyaev@zoho.com>
2017, ZatroxDE <zatroxde@outlook.com>
2018, aitzol berasategi <aitzol@disroot.org>
2019, ssantos <ssantos@web.de>
2018, oiseauroch <tobias.ollive@mailoo.org>
2017, Robert Maerkisch <zatroxde@protonmail.ch>
2019, Joan CiberSheep <cibersheep@gmail.com>
2019, Clemens Riese <weblate.org@clerie.de>
2019, Txaume <txaumevw@gmail.com>
2019, Xosé M <xosem@disroot.org>
2019, Melvin Keskin <melvo@olomono.de>
2018, Andreas Kleinert <Andy.Kleinert@gmail.com>
2017, Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
License: GPL-3+ with OpenSSL exception
......@@ -54,6 +68,11 @@ Files: src/EmojiModel.cpp
Copyright: 2017, Konstantinos Sideris <siderisk@auth.gr>
License: GPL-3+
Files: src/QrCodeVideoFrame.h
src/QrCodeVideoFrame.cpp
Copyright: 2017, QZXing authors
License: apache-2.0
Files: data/images/message_checkmark.svg
Copyright: 2014, Michael Kurz <betheg@bitcloner.org>
License: GPL-3+
......@@ -162,3 +181,16 @@ License: MIT-Apple
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.
......@@ -39,10 +39,11 @@ how to do that:
### Dependencies
Here are the general dependencies of Kaidan listed:
* [Qt](https://doc.qt.io/qt-5/build-sources.html) (Core Qml Quick Svg Sql QuickControls2) (>= 5.8.0)
* [QXmpp][qxmpp] (>= 0.9.0)
* [Qt](https://doc.qt.io/qt-5/build-sources.html) (Core Qml Quick Svg Sql QuickControls2 Multimedia) (>= 5.10.0)
* [QXmpp][qxmpp] (>= 1.0.0)
* [Kirigami 2](https://phabricator.kde.org/source/kirigami/) (>= 5.42.0)
* [ECM (extra-cmake-modules)](https://api.kde.org/ecm/manual/ecm.7.html)
* [ZXing-cpp](https://github.com/nu-book/zxing-cpp)
* [KNotifications][knotif] (`-DUSE_KNOTIFICATIONS=OFF` to disable)
### Build instructions
......
# Changelog
### Version 0.4.0 (UNRELEASED)
### Version 0.4.1 (released on Jul 16, 2019)
* Fix SSL problems for AppImage (lnj)
* Fix connection problems (lnj)
* Keep QXmpp v0.8.3 compatibility (lnj)
### Version 0.4.0 (released on Jul 08, 2019)
Build system:
* Support for Android (ilyabizyaev)
......@@ -13,9 +19,11 @@ Build system:
* Improve Linux AppImage build script (ilyabizyaev)
* Add additional image formats in AppImage (jbb)
Back-end:
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 sharing (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)
......@@ -26,11 +34,9 @@ Back-end:
* Implement XEP-0382: Spoiler messages (xavi)
* Kaidan is now offline usable (lnj)
* Kaidan is able to open xmpp: URIs (lnj)
User interface:
* New logo (ilyabizyaev)
* Show presence information of contacts (lnj)
* Add EmojiPicker from Spectral (jbb)
* 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)
......@@ -70,12 +76,13 @@ Misc:
* Add GitLab CI integration (jbb)
Fixes:
* 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 richt text labels in Plasma Mobile (lnj)
* Fix rich text labels in Plasma Mobile (lnj)
* Small Plasma Mobile fixes (jbb)
### Version 0.3.2 (released on 25.11.2017)
......
......@@ -20,6 +20,19 @@
"-DCMAKE_INSTALL_PREFIX=../../../bin/ubuntu-touch/tmp"
],
"postbuild": "make install"
},
"zxing-cpp": {
"template": "cmake",
"src_dir": "3rdparty/zxing-cpp",
"make_jobs": 2,
"build_args": [
"-DCMAKE_BUILD_TYPE=Release",
"-DBUILD_SHARED_LIBRARY=ON",
"-DLINK_CPP_STATICALLY=OFF",
"-DCMAKE_PREFIX_PATH=../../../bin/ubuntu-touch/tmp",
"-DCMAKE_INSTALL_PREFIX=../../../bin/ubuntu-touch/tmp"
],
"postbuild": "make install"
}
}
}
# Updating License Information
These steps should only be followed while [releasing a new Kaidan version](release.md).
1. `git checkout master`
1. `git pull origin master`
1. `utils/generate-license.py > LICENSE` (On Debian `sudo apt install python3-git` may be needed.)
1. Add possible aliases:
1. `git diff`
1. If there are contributers with multiple email addresses:
1. Adjust *utils/generate-license.py*:
1. Add a line like the following for each alias in REPLACE_USER_IDS = [...]:
`("Alias <alias@example.org>", "FirstName LastName <user@example.com>"),`
1. `git add utils/generate-license.py`
1. `utils/generate-license.py > LICENSE`
1. `git add LICENSE`
# Releasing a New Kaidan Version
## Summary
### Main Repository
* [ ] Update translations
* [ ] Update changelog content
* [ ] Update license information
* [ ] Update version in *CMakeLists.txt*
* [ ] Update changelog release date
* [ ] Archive release on *stable* branch
* [ ] Add tag on *stable* branch
* [ ] Publish release builds
* [ ] Merge *stable* branch into *master* branch
* [ ] Update version in *CMakeLists.txt* to new development version
### Website Repository
* [ ] Update screenshot
* [ ] Update version and date in *index.html*
* [ ] Publish blog post
### Mastodon
* [ ] Create a toot
## Details
**X.Y.Z and N+1 must be adjusted to correspond to the actual version unless otherwise noted.**
### In Repository **https://invent.kde.org/kde/kaidan.git**
1. `git checkout master`
1. `git pull origin master`
1. `git checkout -b release/vX.Y.Z` or if that branch already exists: `git checkout release/vX.Y.Z`
1. [Update translations](translation.md)
1. Update changelog (*changelog.md*):
1. Set version *vX.Y.Z*
1. Set release date to *UNRELEASED*
1. Mention important changes and their authors
1. `git add changelog.md`
1. `git commit -m "Prepare changelog for vX.Y.Z"`
1. Check correct functionality of all release builds
1. [Update license information](license.md)
1. In *CMakeLists.txt*:
1. Change `set(VERSION_STRING "X.Y.Z-dev")` to `set(VERSION_STRING "X.Y.Z")`
1. Change `set(DEVELOPMENT_BUILD TRUE)` to `set(DEVELOPMENT_BUILD FALSE)`
1. Change `set(ANDROID_VERSION_CODE N)` to `set(ANDROID_VERSION_CODE N+1)`
1. `git add CMakeLists.txt`
1. Update changelog (*changelog.md*):
1. Set release date
1. `git add changelog.md`
1. `git commit -m "Release Kaidan vX.Y.Z"`
1. `git push --set-upstream origin release/vX.Y.Z`
1. Archive release on *stable* branch:
1. `git checkout stable` or if that branch does not already exist: `git checkout -b stable origin/stable`
1. `git pull origin stable`
1. `git merge release/vX.Y.Z`
1. `git push origin stable`
1. `git push -d release/vX.Y.Z`
1. Add tag on *stable* branch:
1. `git tag -a vX.Y.Z` or for signed tags: `git tag -s v0.4.1`
1. Add changelog part for vX.Y.Z as tag message
1. `git push origin vX.Y.Z`
1. Add changelog part for vX.Y.Z as release note on https://invent.kde.org/kde/kaidan/tags
1. Publish release builds on https://download.kde.org:
1. Download builds from https://invent.kde.org/kde/kaidan/pipelines?scope=tags&page=1 for tag *vX.Y.Z*
1. Rename downloaded builds to *kaidan_X.Y.Z_<architecture>.<type>* (Replace <architecture>.<type> with the corresponding architecture and file type.)
1. `../releaseme/tarme.rb --version X.Y.Z --origin stable kaidan` (*releasme* is the directory of the repository **https://anongit.kde.org/releaseme.git**.)
1. `kdecp5 kaidan-X.Y.Z.* ftp://upload.kde.org/incoming`:
1. Create admin ticket as described in output with additional lines for all uploaded files and hash values by SHA-256 and SHA-1
1. Merge *stable* branch into *master* branch:
1. `git checkout master`
1. `git merge stable`
1. Start new development version:
* **X.Y.Z, X.Y+1 and N+1 must be adjusted to correspond to the actual version.**
1. In *CMakeLists.txt*:
1. Change `set(VERSION_STRING "X.Y.Z")` to `set(VERSION_STRING "X.Y+1.0-dev")`
1. Change `set(DEVELOPMENT_BUILD FALSE)` to `set(DEVELOPMENT_BUILD TRUE)`
1. Change `set(ANDROID_VERSION_CODE N)` to `set(ANDROID_VERSION_CODE N+1)`
1. `git add CMakeLists.txt`
1. `git commit -m "Continue with Kaidan vX.Y+1.0-dev"`
1. `git push origin master`
### In Repository **https://invent.kde.org/websites/kaidan-im.git**
1. `git checkout master`
1. `git pull origin master`
1. Update screenshot (which will update the screenshot on the website and in the README):
1. Create one screenshot for desktop and one for mobile version
1. Put those two screenshots into one image like *images/screenshot.png* and overwrite that by that by the new one
1. `optipng -o7 images/screenshot.png`
1. `advpng -z4 images/screenshot.png`
1. `git add images/screenshot.png`
1. `git commit -m "Update screenshot"`
1. `git push origin master`
1. Update version and date in the following lines of *index.html*:
1. `<h3>Current version: X.Y.Z</h3>`
1. `<h4>(released MONTH DAY, YEAR)</h4>`
1. Publish blog post:
1. Create *_posts/YEAR-MONTH-DAY-kaidan-X.Y.Z.md*
1. Add header as in other posts of that directory
1. Copy *images/screenshot.png* to *images/screenshots/screenshot-X.Y*
1. Include *images/screenshots/screenshot-X.Y* into blog post
1. Add changelog part for vX.Y.Z
### On Mastodon via **https://fosstodon.org/@kaidan**
1. Create a toot like https://fosstodon.org/@kaidan/101929341888805925
# Adding Translations Repository
`git remote add weblate https://hosted.weblate.org/git/kaidan/translations/`
# Updating Translations
1. <a name="update-weblate"/> Update translations from Weblate:
1. On https://hosted.weblate.org/projects/kaidan/translations/#repository with a developer account:
1. Click *Commit*
1. Click *Rebase*
1. `git pull weblate master`
1. `git push origin master`
1. If there is a push error related to the policy of KDE which specifies that at least a first and a last name must be set for the author field:
1. Prepend X for a missing field to the specific commit (possibly by `rebase -i`)
1. `git push origin master`
1. Update translation sources:
1. `git checkout master`
1. `git pull origin master`
1. `cd build && make -j$(nproc) && cd -`
1. `git add i18n`
1. `git commit -m "Update translation sources" --author "Kaidan translations <translations@kaidan.im>"`
1. `git push origin master`
1. Shortly before the release follow the [first steps](#update-weblate) again.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -77,6 +77,10 @@
<source>Download</source>
<translation>Stahnout</translation>
</message>
<message>
<source>Copy download URL</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatPage</name>
......@@ -116,6 +120,18 @@
<source>Spoiler hint</source>
<translation>«Spoiler» tip</translation>
</message>
<message>
<source>Unmute notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>View profile</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DownloadJob</name>
......@@ -132,6 +148,53 @@
<translation>Chyba při stahování: %1</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<source>Favorites</source>
<translation>Oblíbené</translation>
</message>
<message>
<source>People</source>
<translation>Lidé</translation>
</message>
<message>
<source>Nature</source>
<translation>Příroda</translation>
</message>
<message>
<source>Food</source>
<translation>Jídlo</translation>
</message>
<message>
<source>Activity</source>
<translation>Činnosti</translation>
</message>
<message>
<source>Travel</source>
<translation>Cestování</translation>
</message>
<message>
<source>Objects</source>
<translation>Předměty</translation>
</message>
<message>
<source>Symbols</source>
<translation>Symboly</translation>
</message>
<message>
<source>Flags</source>
<translation>Vlajky</translation>
</message>
<message>
<source>Search</source>
<translation>Hledat</translation>
</message>
<message>
<source>Search emoji</source>
<translation>Hledat emoji</translation>
</message>
</context>
<context>
<name>EmptyChatPage</name>
<message>
......@@ -187,6 +250,14 @@
<extracomment>The link is an XMPP-URI (i.e. &apos;xmpp:kaidan@muc.kaidan.im?join&apos; for joining a chat)</extracomment>
<translation>Odkaz se otevře jakmile se připojíte.</translation>
</message>
<message>
<source>No password found. Please enter it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No valid login QR code found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginPage</name>
......@@ -259,6 +330,10 @@ Prosím zkontrolujte své připojení k internetu.</translation>
<source>An unknown error occured; see log for details.</source>
<translation>Došlo k neznámmé chybě; pro více informací zkontrolujte seznam logů.</translation>
</message>
<message>
<source>Log in using a QR-Code</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageHandler</name>
......@@ -274,6 +349,69 @@ Prosím zkontrolujte své připojení k internetu.</translation>
<source>Spoiler</source>
<translation>«Spoiler»</translation>
</message>
<message>
<source>Message could not be sent.</source>
<translation>Zprávu se nepodařilo odeslat.</translation>
</message>
<message>
<source>Message correction was not successful.</source>
<translation>Oprava zprávy se nezdařila.</translation>
</message>
</context>
<context>
<name>QmlUtils</name>
<message>
<source>Available</source>
<translation type="unfinished">Dostupný</translation>
</message>
<message>
<source>Free for chat</source>
<translation type="unfinished">Dostupný k chatování</translation>
</message>
<message>
<source>Away</source>
<translation type="unfinished">Nepřítomný</translation>
</message>
<message>
<source>Do not disturb</source>
<translation type="unfinished">Nerušit</translation>
</message>
<message>
<source>Away for longer</source>
<translation type="unfinished">Dlouhodobě nepřítomný</translation>
</message>
<message>
<source>Offline</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Chyba</translation>
</message>
<message>
<source>Invisible</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QrCodeScannerPage</name>
<message>
<source>Scan QR code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>There is no camera available.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your camera is busy.
Try to close other applications using the camera.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The camera format &apos;%1&apos; is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RegistrationManager</name>
......@@ -333,31 +471,31 @@ Prosím zkontrolujte své připojení k internetu.</translation>
</message>
<message>
<source>Available</source>
<translation>Dostupný</translation>
<translation type="vanished">Dostupný</translation>
</message>
<message>
<source>Free for chat</source>
<translation>Dostupný k chatování</translation>
<translation type="vanished">Dostupný k chatování</translation>
</message>
<message>
<source>Away</source>
<translation>Nepřítomný</translation>
<translation type="vanished">Nepřítomný</translation>
</message>
<message>
<source>Do not disturb</source>
<translation>Nerušit</translation>
<translation type="vanished">Nerušit</translation>
</message>
<message>
<source>Away for longer</source>
<translation>Dlouhodobě nepřítomný</translation>
<translation type="vanished">Dlouhodobě nepřítomný</translation>
</message>
<message>
<source>Offline</source>
<translation>Nepřipojen</translation>
<translation type="vanished">Nepřipojen</translation>
</message>
<message>
<source>Error</source>
<translation>Chyba</translation>
<translation type="vanished">Chyba</translation>
</message>
</context>
<context>
......@@ -374,6 +512,10 @@ Prosím zkontrolujte své připojení k internetu.</translation>
<source>Spoiler</source>
<translation>«Spoiler»</translation>
</message>
<message>
<source>Could not rename contact, as a result of not being connected.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RosterPage</name>
......@@ -393,6 +535,14 @@ Prosím zkontrolujte své připojení k internetu.</translation>
<source>Offline</source>
<translation>Odpojen</translation>
</message>
<message>
<source>Search contacts</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RosterRemoveContactSheet</name>
......@@ -413,6 +563,25 @@ Prosím zkontrolujte své připojení k internetu.</translation>
<translation>Smazat</translation>
</message>
</context>
<context>
<name>RosterRenameContactSheet</name>
<message>
<source>Rename contact</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished">Zrušit</translation>
</message>
<message>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SendMediaSheet</name>
<message>
......@@ -473,4 +642,38 @@ Prosím zkontrolujte své připojení k internetu.</translation>
<translation>Soubor</translation>
</message>
</context>
<context>
<name>UserProfilePage</name>
<message>
<source>Profile</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VCardModel</name>
<message>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>About</source>
<translation type="unfinished">O aplikaci</translation>
</message>
<message>
<source>Email</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Birthday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Website</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>
......@@ -130,6 +130,10 @@
<source>Download</source>
<translation>Herunterladen</translation>
</message>
<message>
<source>Copy download URL</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatPage</name>
......@@ -177,6 +181,18 @@
<source>Spoiler hint</source>
<translation>Titel für versteckte Nachricht</translation>
</message>
<message>
<source>Unmute notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Mute notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>View profile</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ContextDrawer</name>
......@@ -196,6 +212,53 @@
<translation>Herunterladen fehlgeschlagen: %1</translation>
</message>
</context>
<context>
<name>EmojiPicker</name>
<message>
<source>Favorites</source>
<translation>Favoriten</translation>
</message>
<message>
<source>People</source>
<translation>Menschen</translation>
</message>
<message>
<source>Nature</source>
<translation>Natur</translation>
</message>
<message>
<source>Food</source>
<translation>Essen</translation>
</message>
<message>
<source>Activity</source>
<translation>Aktivitäten</translation>
</message>
<message>
<source>Travel</source>
<translation>Reisen</translation>
</message>
<message>
<source>Objects</source>
<translation>Gegenstände</translation>
</message>
<message>
<source>Symbols</source>
<translation>Zeichen</translation>
</message>
<message>
<source>Flags</source>
<translation>Flaggen</translation>
</message>
<message>
<source>Search</source>
<translation>Suche</translation>
</message>
<message>
<source>Search emoji</source>
<translation>Suche Emoji</translation>
</message>
</context>
<context>
<name>EmptyChatPage</name>
<message>
......@@ -302,6 +365,14 @@
<source>Could not send file, as a result of not being connected.</source>
<translation type="vanished">Konnte Datei nicht senden, da Sie nicht verbunden sind.</translation>
</message>
<message>
<source>No password found. Please enter it.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No valid login QR code found.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LoginPage</name>
......@@ -381,6 +452,10 @@
<source>An unknown error occured; see log for details.</source>
<translation>Ein unbekannter Fehler ist aufgetreten: Sehen Sie die Logdatei für mehr Details ein.</translation>
</message>
<message>
<source>Log in using a QR-Code</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessageHandler</name>
......@@ -394,7 +469,70 @@
</message>
<message>
<source>Spoiler</source>
<translation>Spoiler</translation>
<translation>Versteckt</translation>
</message>
<message>
<source>Message could not be sent.</source>
<translation>Nachricht konnte nicht gesendet werden.</translation>
</message>
<message>
<source>Message correction was not successful.</source>
<translation>Nachrichtenkorrektur war nicht erfolgreich.</translation>
</message>
</context>
<context>
<name>QmlUtils</name>
<message>
<source>Available</source>
<translation type="unfinished">Verfügbar</translation>
</message>
<message>
<source>Free for chat</source>
<translation type="unfinished">Frei zum Chatten</translation>
</message>
<message>
<source>Away</source>
<translation type="unfinished">Abwesend</translation>
</message>
<message>
<source>Do not disturb</source>
<translation type="unfinished">DnD (Nicht stören)</translation>
</message>
<message>
<source>Away for longer</source>
<translation type="unfinished">Für längere Zeit abwesend</translation>
</message>
<message>
<source>Offline</source>
<translation type="unfinished">Offline</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Fehler</translation>
</message>
<message>
<source>Invisible</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QrCodeScannerPage</name>
<message>
<source>Scan QR code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>There is no camera available.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Your camera is busy.
Try to close other applications using the camera.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>The camera format &apos;%1&apos; is not supported.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
......@@ -459,31 +597,31 @@
</message>
<message>
<source>Available</source>
<translation>Verfügbar</translation>
<translation type="vanished">Verfügbar</translation>
</message>
<message>
<source>Free for chat</source>
<translation>Frei zum Chatten</translation>
<translation type="vanished">Frei zum Chatten</translation>
</message>
<message>
<source>Away</source>
<translation>Abwesend</translation>
<translation type="vanished">Abwesend</translation>
</message>
<message>
<source>Do not disturb</source>
<translation>DnD (Nicht stören)</translation>
<translation type="vanished">DnD (Nicht stören)</translation>
</message>
<message>
<source>Away for longer</source>
<translation>Für längere Zeit abwesend</translation>
<translation type="vanished">Für längere Zeit abwesend</translation>
</message>
<message>
<source>Offline</source>
<translation>Offline</translation>
<translation type="vanished">Offline</translation>
</message>
<message>
<source>Error</source>
<translation>Fehler</translation>
<translation type="vanished">Fehler</translation>
</message>
<message>
<source>Invalid</source>
......@@ -504,6 +642,10 @@
<source>Spoiler</source>
<translation>Versteckte Nachricht</translation>
</message>
<message>
<source>Could not rename contact, as a result of not being connected.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RosterPage</name>
......@@ -523,6 +665,14 @@
<source>Offline</source>
<translation>Offline</translation>
</message>
<message>
<source>Search contacts</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RosterRemoveContactSheet</name>
......@@ -547,6 +697,25 @@
<translation>Möchten Sie wirklich den Kontakt &lt;b&gt;%1&lt;/b&gt; von Ihrer Kontaktliste entfernen?</translation>
</message>
</context>
<context>
<name>RosterRenameContactSheet</name>
<message>
<source>Rename contact</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit name:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancel</source>
<translation type="unfinished">Abbrechen</translation>
</message>
<message>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SendMediaSheet</name>
<message>
......@@ -621,6 +790,40 @@
<translation>Datei</translation>
</message>
</context>
<context>
<name>UserProfilePage</name>
<message>
<source>Profile</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VCardModel</name>
<message>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nickname</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>About</source>
<translation type="unfinished">Über</translation>
</message>
<message>
<source>Email</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Birthday</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Website</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>main</name>
<message>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -7,9 +7,12 @@
<file alias="qml/AboutDialog.qml">src/qml/AboutDialog.qml</file>
<file alias="qml/GlobalDrawer.qml">src/qml/GlobalDrawer.qml</file>
<file alias="qml/EmptyChatPage.qml">src/qml/EmptyChatPage.qml</file>
<file alias="qml/QrCodeScannerPage.qml">src/qml/QrCodeScannerPage.qml</file>
<file alias="qml/UserProfilePage.qml">src/qml/UserProfilePage.qml</file>
<file alias="qml/elements/SubRequestAcceptSheet.qml">src/qml/elements/SubRequestAcceptSheet.qml</file>
<file alias="qml/elements/RosterAddContactSheet.qml">src/qml/elements/RosterAddContactSheet.qml</file>
<file alias="qml/elements/RosterRenameContactSheet.qml">src/qml/elements/RosterRenameContactSheet.qml</file>
<file alias="qml/elements/RosterRemoveContactSheet.qml">src/qml/elements/RosterRemoveContactSheet.qml</file>
<file alias="qml/elements/RosterListItem.qml">src/qml/elements/RosterListItem.qml</file>
<file alias="qml/elements/MessageCounter.qml">src/qml/elements/MessageCounter.qml</file>
......@@ -25,6 +28,7 @@
<file alias="qml/elements/MediaPreviewOther.qml">src/qml/elements/MediaPreviewOther.qml</file>
<file alias="qml/elements/EmojiPicker.qml">src/qml/elements/EmojiPicker.qml</file>
<file alias="qml/elements/TextAvatar.qml">src/qml/elements/TextAvatar.qml</file>
<file alias="qml/elements/Avatar.qml">src/qml/elements/Avatar.qml</file>
<file alias="qml/settings/SettingsItem.qml">src/qml/settings/SettingsItem.qml</file>
<file alias="qml/settings/SettingsPage.qml">src/qml/settings/SettingsPage.qml</file>
......
......@@ -5,7 +5,6 @@
<qresource prefix="/icons/breeze/actions/22">
<file alias="application-menu.svg">3rdparty/breeze-icons/icons/actions/22/application-menu.svg</file>
<file alias="bookmark-remove.svg">3rdparty/breeze-icons/icons/actions/22/bookmark-remove.svg</file>
<file alias="document-decrypt.svg">3rdparty/breeze-icons/icons/actions/22/document-decrypt.svg</file>
<file alias="contact-new.svg">3rdparty/breeze-icons/icons/actions/22/contact-new.svg</file>
<file alias="dialog-close.svg">3rdparty/breeze-icons/icons/actions/22/dialog-close.svg</file>
......@@ -20,7 +19,7 @@
<file alias="overflow-menu.svg">3rdparty/breeze-icons/icons/actions/22/overflow-menu.svg</file>
<file alias="system-shutdown.svg">3rdparty/breeze-icons/icons/actions/22/system-shutdown.svg</file>
<file alias="view-list-icons.svg">3rdparty/breeze-icons/icons/actions/22/view-list-icons.svg</file>
<file alias="go-parent-folder.svg">3rdparty/breeze-icons/icons/actions/22/go-parent-folder.svg</file>
<file alias="go-parent-folder.svg">3rdparty/breeze-icons/icons/actions/22/go-parent-folder.svg</file>
<file alias="folder.svg">3rdparty/breeze-icons/icons/places/22/folder.svg</file>
<file alias="text-x-plain.svg">3rdparty/breeze-icons/icons/mimetypes/22/text-x-plain.svg</file>
<file alias="tab-close.svg">3rdparty/breeze-icons/icons/actions/22/tab-close.svg</file>
......@@ -28,10 +27,26 @@
<file alias="password-show-off.svg">3rdparty/breeze-icons/icons/actions/22/password-show-off.svg</file>
<file alias="settings-configure.svg">3rdparty/breeze-icons/icons/actions/22/settings-configure.svg</file>
<file alias="lock.svg">3rdparty/breeze-icons/icons/actions/22/lock.svg</file>
<file alias="view-barcode.svg">3rdparty/breeze-icons/icons/actions/22/view-barcode.svg</file>
<file alias="player-volume.svg">3rdparty/breeze-icons/icons/actions/22/player-volume.svg</file>
<file alias="im-user-online.svg">3rdparty/breeze-icons/icons/actions/22/im-user-online.svg</file>
<file alias="im-user-away.svg">3rdparty/breeze-icons/icons/actions/22/im-user-away.svg</file>
<file alias="im-kick-user.svg">3rdparty/breeze-icons/icons/actions/22/im-kick-user.svg</file>
<file alias="im-ban-kick-user.svg">3rdparty/breeze-icons/icons/actions/22/im-ban-kick-user.svg</file>
<file alias="im-user-offline.svg">3rdparty/breeze-icons/icons/actions/22/im-user-offline.svg</file>
<file alias="im-invisible-user.svg">3rdparty/breeze-icons/icons/actions/22/im-invisible-user.svg</file>
<file alias="user-identity.svg">3rdparty/breeze-icons/icons/actions/22/user-identity.svg</file>
<file alias="edit-rename.svg">3rdparty/breeze-icons/icons/actions/22/edit-rename.svg</file>
<file alias="delete.svg">3rdparty/breeze-icons/icons/actions/22/delete.svg</file>
</qresource>