Hello community, here is the log from the commit of package kemoticons for openSUSE:Factory checked in at 2017-03-03 15:38:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kemoticons (Old) and /work/SRC/openSUSE:Factory/.kemoticons.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kemoticons" Fri Mar 3 15:38:52 2017 rev:37 rq:461421 version:5.31.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kemoticons/kemoticons.changes 2017-02-03 17:44:42.329216729 +0100 +++ /work/SRC/openSUSE:Factory/.kemoticons.new/kemoticons.changes 2017-03-03 15:38:53.623774552 +0100 @@ -1,0 +2,7 @@ +Thu Feb 9 09:27:38 UTC 2017 - [email protected] + +- Update to 5.31.0 + * For more details please see: + https://www.kde.org/announcements/kde-frameworks-5.31.0.php + +------------------------------------------------------------------- Old: ---- kemoticons-5.30.0.tar.xz New: ---- kemoticons-5.31.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kemoticons.spec ++++++ --- /var/tmp/diff_new_pack.34URcK/_old 2017-03-03 15:38:54.567640922 +0100 +++ /var/tmp/diff_new_pack.34URcK/_new 2017-03-03 15:38:54.571640356 +0100 @@ -17,9 +17,9 @@ %define lname libKF5Emoticons5 -%define _tar_path 5.30 +%define _tar_path 5.31 Name: kemoticons -Version: 5.30.0 +Version: 5.31.0 Release: 0 %define kf5_version %{version} BuildRequires: cmake >= 3.0 @@ -29,9 +29,10 @@ BuildRequires: kconfig-devel >= %{_tar_path} BuildRequires: kf5-filesystem BuildRequires: kservice-devel >= %{_tar_path} -BuildRequires: cmake(Qt5Gui) >= 5.5.0 -BuildRequires: cmake(Qt5Test) >= 5.5.0 -BuildRequires: cmake(Qt5Widgets) >= 5.5.0 +BuildRequires: cmake(Qt5DBus) >= 5.6.0 +BuildRequires: cmake(Qt5Gui) >= 5.6.0 +BuildRequires: cmake(Qt5Test) >= 5.6.0 +BuildRequires: cmake(Qt5Widgets) >= 5.6.0 Summary: Convert text emoticons to graphical emoticons License: LGPL-2.1+ Group: System/GUI/KDE @@ -62,7 +63,7 @@ Requires: extra-cmake-modules Requires: karchive-devel >= %{_tar_path} Requires: kservice-devel >= %{_tar_path} -Requires: cmake(Qt5Gui) >= 5.5.0 +Requires: cmake(Qt5Gui) >= 5.6.0 %description devel KEmoticons converts emoticons from text to a graphical representation with ++++++ kemoticons-5.30.0.tar.xz -> kemoticons-5.31.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/CMakeLists.txt new/kemoticons-5.31.0/CMakeLists.txt --- old/kemoticons-5.30.0/CMakeLists.txt 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/CMakeLists.txt 2017-02-05 06:04:14.000000000 +0100 @@ -1,19 +1,19 @@ cmake_minimum_required(VERSION 3.0) -set(KF5_VERSION "5.30.0") # handled by release scripts -set(KF5_DEP_VERSION "5.30.0") # handled by release scripts +set(KF5_VERSION "5.31.0") # handled by release scripts +set(KF5_DEP_VERSION "5.31.0") # handled by release scripts project(KEmoticons VERSION ${KF5_VERSION}) include(FeatureSummary) -find_package(ECM 5.30.0 NO_MODULE) +find_package(ECM 5.31.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://projects.kde.org/projects/kdesupport/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) -set(REQUIRED_QT_VERSION 5.5.0) -find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Gui) +set(REQUIRED_QT_VERSION 5.6.0) +find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Gui DBus) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/core/CMakeLists.txt new/kemoticons-5.31.0/src/core/CMakeLists.txt --- old/kemoticons-5.30.0/src/core/CMakeLists.txt 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/core/CMakeLists.txt 2017-02-05 06:04:14.000000000 +0100 @@ -4,6 +4,7 @@ kemoticons.cpp kemoticonstheme.cpp kemoticonsprovider.cpp + kemoticonsglobal.cpp ) add_library(KF5Emoticons ${kemoticons_LIB_SRCS}) @@ -15,6 +16,7 @@ target_link_libraries(KF5Emoticons PUBLIC Qt5::Gui # for QImageReader, QPixmap + Qt5::DBus KF5::Service # for KService::Ptr, KServiceTypeTrader PRIVATE KF5::Archive # for KTar, KZip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/core/kemoticons.cpp new/kemoticons-5.31.0/src/core/kemoticons.cpp --- old/kemoticons-5.30.0/src/core/kemoticons.cpp 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/core/kemoticons.cpp 2017-02-05 06:04:14.000000000 +0100 @@ -18,6 +18,7 @@ **********************************************************************************/ #include "kemoticons.h" +#include "kemoticonsglobal_p.h" #include "kemoticonsprovider.h" #include <QFile> @@ -33,6 +34,8 @@ #include <ktar.h> #include <kzip.h> +Q_GLOBAL_STATIC(KEmoticonsGlobal, s_global) + class KEmoticonsPrivate { public: @@ -78,9 +81,9 @@ KPluginFactory *factory = KPluginLoader(service->library()).factory(); if (!factory) { qWarning() << "Invalid plugin factory for" << service->library(); - return 0; + return nullptr; } - KEmoticonsProvider *provider = factory->create<KEmoticonsProvider>(0); + KEmoticonsProvider *provider = factory->create<KEmoticonsProvider>(nullptr); return provider; } @@ -145,9 +148,7 @@ QString KEmoticons::currentThemeName() { - KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), "Emoticons"); - QString name = config.readEntry("emoticonsTheme", "Breeze"); - return name; + return s_global()->m_themeName; } QStringList KEmoticons::themeList() @@ -171,9 +172,17 @@ void KEmoticons::setTheme(const QString &theme) { - KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), "Emoticons"); - config.writeEntry("emoticonsTheme", theme); - config.sync(); + s_global()->setThemeName(theme); +} + +KEmoticonsTheme::ParseMode KEmoticons::parseMode() +{ + return s_global()->m_parseMode; +} + +void KEmoticons::setParseMode(KEmoticonsTheme::ParseMode mode) +{ + s_global()->setParseMode(mode); } KEmoticonsTheme KEmoticons::newTheme(const QString &name, const KService::Ptr &service) @@ -193,9 +202,9 @@ QStringList KEmoticons::installTheme(const QString &archiveName) { QStringList foundThemes; - KArchiveEntry *currentEntry = 0L; - KArchiveDirectory *currentDir = 0L; - KArchive *archive = 0L; + KArchiveEntry *currentEntry = nullptr; + KArchiveDirectory *currentDir = nullptr; + KArchive *archive = nullptr; QString localThemesDir(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + "/emoticons"); @@ -245,7 +254,7 @@ for (int i = 0; i < d->m_loaded.size(); ++i) { QString fName = d->m_loaded.at(i)->property(QStringLiteral("X-KDE-EmoticonsFileName")).toString(); - if (currentDir && currentDir->entry(fName) != NULL) { + if (currentDir && currentDir->entry(fName) != nullptr) { foundThemes.append(currentDir->name()); } } @@ -263,7 +272,7 @@ const QString &theme = foundThemes[themeIndex]; currentEntry = const_cast<KArchiveEntry *>(rootDir->entry(theme)); - if (currentEntry == 0) { + if (currentEntry == nullptr) { // qDebug() << "couldn't get next archive entry"; continue; } @@ -271,7 +280,7 @@ if (currentEntry->isDirectory()) { currentDir = dynamic_cast<KArchiveDirectory *>(currentEntry); - if (currentDir == 0) { + if (currentDir == nullptr) { // qDebug() << "couldn't cast archive entry to KArchiveDirectory"; continue; } @@ -286,19 +295,6 @@ return foundThemes; } -void KEmoticons::setParseMode(KEmoticonsTheme::ParseMode mode) -{ - KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), "Emoticons"); - config.writeEntry("parseMode", int(mode)); - config.sync(); -} - -KEmoticonsTheme::ParseMode KEmoticons::parseMode() -{ - KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), "Emoticons"); - return (KEmoticonsTheme::ParseMode) config.readEntry("parseMode", int(KEmoticonsTheme::RelaxedParse)); -} - void KEmoticons::setPreferredEmoticonSize(const QSize &size) { d->m_preferredSize = size; @@ -310,4 +306,4 @@ } #include "moc_kemoticons.cpp" - +#include "kemoticons.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/core/kemoticonsglobal.cpp new/kemoticons-5.31.0/src/core/kemoticonsglobal.cpp --- old/kemoticons-5.30.0/src/core/kemoticonsglobal.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/core/kemoticonsglobal.cpp 2017-02-05 06:04:14.000000000 +0100 @@ -0,0 +1,82 @@ +/********************************************************************************** + * Copyright (C) 2017 David Faure <[email protected]> * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2.1 of the License, or (at your option) any later version. * + * * + * This library 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 * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library. If not, see <http://www.gnu.org/licenses/>.* + * * + **********************************************************************************/ + +#include "kemoticonsglobal_p.h" +#include <QDBusMessage> +#include <KConfigGroup> +#include <KSharedConfig> +#include <QDBusConnection> +#include <QDebug> + +static const char s_dbusPath[] = "/KEmoticons"; +static const char s_dbusInterface[] = "org.kde.kf5.KEmoticons"; +static const char s_themeChangedSignal[] = "emoticonsThemeChanged"; +static const char s_parseModeChangedSignal[] = "emoticonsParseModeChanged"; + +KEmoticonsGlobal::KEmoticonsGlobal() +{ + KConfigGroup config(KSharedConfig::openConfig(), "Emoticons"); + m_themeName = config.readEntry("emoticonsTheme", "Breeze"); + m_parseMode = static_cast<KEmoticonsTheme::ParseMode>(config.readEntry("parseMode", int(KEmoticonsTheme::RelaxedParse))); + + QDBusConnection dbus = QDBusConnection::sessionBus(); + dbus.connect(QString(), s_dbusPath, s_dbusInterface, s_themeChangedSignal, this, SLOT(slotEmoticonsThemeChanged(QString))); + dbus.connect(QString(), s_dbusPath, s_dbusInterface, s_parseModeChangedSignal, this, SLOT(slotEmoticonsParseModeChanged(int))); +} + +void KEmoticonsGlobal::setThemeName(const QString &name) +{ + m_themeName = name; + + KConfigGroup config(KSharedConfig::openConfig(), "Emoticons"); + config.writeEntry("emoticonsTheme", m_themeName, KConfigBase::Persistent | KConfigBase::Global); + config.sync(); + + // Inform running apps + QDBusMessage message = QDBusMessage::createSignal(s_dbusPath, s_dbusInterface, s_themeChangedSignal); + message << name; + if (!QDBusConnection::sessionBus().send(message)) { + qWarning() << "Error sending dbus signal" << s_themeChangedSignal; + } +} + +void KEmoticonsGlobal::setParseMode(KEmoticonsTheme::ParseMode mode) +{ + m_parseMode = mode; + + KConfigGroup config(KSharedConfig::openConfig(), "Emoticons"); + config.writeEntry("parseMode", static_cast<int>(mode), KConfigBase::Persistent | KConfigBase::Global); + config.sync(); + + // Inform running apps + QDBusMessage message = QDBusMessage::createSignal(s_dbusPath, s_dbusInterface, s_parseModeChangedSignal); + message << static_cast<int>(mode); + if (!QDBusConnection::sessionBus().send(message)) { + qWarning() << "Error sending dbus signal" << s_parseModeChangedSignal; + } +} + +void KEmoticonsGlobal::slotEmoticonsThemeChanged(const QString &name) +{ + m_themeName = name; +} + +void KEmoticonsGlobal::slotEmoticonsParseModeChanged(int mode) +{ + m_parseMode = static_cast<KEmoticonsTheme::ParseMode>(mode); +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/core/kemoticonsglobal_p.h new/kemoticons-5.31.0/src/core/kemoticonsglobal_p.h --- old/kemoticons-5.30.0/src/core/kemoticonsglobal_p.h 1970-01-01 01:00:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/core/kemoticonsglobal_p.h 2017-02-05 06:04:14.000000000 +0100 @@ -0,0 +1,43 @@ +/********************************************************************************** + * Copyright (C) 2017 David Faure <[email protected]> * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Lesser General Public * + * License as published by the Free Software Foundation; either * + * version 2.1 of the License, or (at your option) any later version. * + * * + * This library 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 * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this library. If not, see <http://www.gnu.org/licenses/>.* + * * + **********************************************************************************/ + +#ifndef KEMOTICONSGLOBAL_P_H +#define KEMOTICONSGLOBAL_P_H + +#include <QObject> +#include "kemoticonstheme.h" + +class KEmoticonsGlobal : public QObject +{ + Q_OBJECT +public: + KEmoticonsGlobal(); + + QString m_themeName; + KEmoticonsTheme::ParseMode m_parseMode; + + void setThemeName(const QString &name); + void setParseMode(KEmoticonsTheme::ParseMode mode); + +private Q_SLOTS: + void slotEmoticonsThemeChanged(const QString &name); + void slotEmoticonsParseModeChanged(int mode); + +}; + +#endif // KEMOTICONSGLOBAL_P_H diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/core/kemoticonsprovider.h new/kemoticons-5.31.0/src/core/kemoticonsprovider.h --- old/kemoticons-5.30.0/src/core/kemoticonsprovider.h 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/core/kemoticonsprovider.h 2017-02-05 06:04:14.000000000 +0100 @@ -58,7 +58,7 @@ /** * Default constructor */ - explicit KEmoticonsProvider(QObject *parent = 0); + explicit KEmoticonsProvider(QObject *parent = nullptr); /** * Destructor diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/core/kemoticonstheme.cpp new/kemoticons-5.31.0/src/core/kemoticonstheme.cpp --- old/kemoticons-5.30.0/src/core/kemoticonstheme.cpp 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/core/kemoticonstheme.cpp 2017-02-05 06:04:14.000000000 +0100 @@ -34,7 +34,7 @@ KEmoticonsTheme::KEmoticonsThemeData::KEmoticonsThemeData() { - provider = 0; + provider = nullptr; } KEmoticonsTheme::KEmoticonsThemeData::~KEmoticonsThemeData() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/providers/adium/emoticonstheme_adium.desktop new/kemoticons-5.31.0/src/providers/adium/emoticonstheme_adium.desktop --- old/kemoticons-5.30.0/src/providers/adium/emoticonstheme_adium.desktop 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/providers/adium/emoticonstheme_adium.desktop 2017-02-05 06:04:14.000000000 +0100 @@ -1,7 +1,7 @@ [Desktop Entry] Type=Service Name=Adium Emoticons Theme -Name[ar]=سمة ابتسامات آديُم +Name[ar]=سمة ابتسامات «آديُم» Name[as]=Adium Emoticons থিম Name[ast]=Tema de fustaxes d'Adium Name[be@latin]=Matyŭ smajlikaŭ dla „Adium” @@ -81,7 +81,7 @@ Name[zh_CN]=Adium 表情主题 Name[zh_TW]=Adium 表情圖示主題 Comment=Library to use Adium emoticons theme -Comment[ar]=مكتبة لاستخدام سمة ابتسامات آديُم +Comment[ar]=مكتبة لاستخدام سمة ابتسامات «آديُم» Comment[as]=Adium emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী Comment[ast]=Biblioteca pa usar el tema de fustaxes d'Adium Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „Adium” diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/providers/kde/emoticonstheme_kde.desktop new/kemoticons-5.31.0/src/providers/kde/emoticonstheme_kde.desktop --- old/kemoticons-5.30.0/src/providers/kde/emoticonstheme_kde.desktop 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/providers/kde/emoticonstheme_kde.desktop 2017-02-05 06:04:14.000000000 +0100 @@ -1,7 +1,7 @@ [Desktop Entry] Type=Service Name=KDE Emoticons Theme -Name[ar]=سمة ابتسامات كدي +Name[ar]=سمة ابتسامات «كدي» Name[ast]=Tema de fustaxes de KDE Name[bg]=Тема с емоции KDE Name[bn]=কে.ডি.ই. ইমোট-আইকনস থীম @@ -70,7 +70,7 @@ Name[zh_CN]=KDE 表情主题 Name[zh_TW]=KDE 表情圖示主題 Comment=Library to use KDE emoticons theme -Comment[ar]=مكتبة لاستخدام سمة ابتسامات كدي +Comment[ar]=مكتبة لاستخدام سمة ابتسامات «كدي» Comment[as]=KDE emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী Comment[ast]=Biblioteca pa usar el tema de fustaxes de KDE Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „KDE” diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/providers/pidgin/emoticonstheme_pidgin.desktop new/kemoticons-5.31.0/src/providers/pidgin/emoticonstheme_pidgin.desktop --- old/kemoticons-5.30.0/src/providers/pidgin/emoticonstheme_pidgin.desktop 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/providers/pidgin/emoticonstheme_pidgin.desktop 2017-02-05 06:04:14.000000000 +0100 @@ -1,7 +1,7 @@ [Desktop Entry] Type=Service Name=Pidgin Emoticons Theme -Name[ar]=سمة ابتسامات بدجن +Name[ar]=سمة ابتسامات «بدجن» Name[as]=Pidgin Emoticons থিম Name[ast]=Tema de fustaxes de Pidgin Name[be@latin]=Matyŭ smajlikaŭ dla „Pidgin” @@ -83,7 +83,7 @@ Name[zh_CN]=Pidgin 表情主题 Name[zh_TW]=Pidgin 表情圖示主題 Comment=Library to use Pidgin emoticons theme -Comment[ar]=مكتبة لاستخدام سمة ابتسامات بدجن +Comment[ar]=مكتبة لاستخدام سمة ابتسامات «بدجن» Comment[as]=Pidgin Emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী Comment[ast]=Biblioteca pa usar el tema de fustaxes de Pidgin Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „Pidgin” diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kemoticons-5.30.0/src/providers/xmpp/emoticonstheme_xmpp.desktop new/kemoticons-5.31.0/src/providers/xmpp/emoticonstheme_xmpp.desktop --- old/kemoticons-5.30.0/src/providers/xmpp/emoticonstheme_xmpp.desktop 2017-01-08 16:27:00.000000000 +0100 +++ new/kemoticons-5.31.0/src/providers/xmpp/emoticonstheme_xmpp.desktop 2017-02-05 06:04:14.000000000 +0100 @@ -1,7 +1,7 @@ [Desktop Entry] Type=Service Name=XMPP Emoticons Theme -Name[ar]=سمة ابتسامات XMPP +Name[ar]=سمة ابتسامات «XMPP» Name[as]=XMPP Emoticons থিম Name[ast]=Tema de fustaxes de XMPP Name[be@latin]=Matyŭ smajlikaŭ dla „XMPP” @@ -82,7 +82,7 @@ Name[zh_CN]=XMPP 表情主题 Name[zh_TW]=XMPP 表情圖示主題 Comment=Library to use XMPP emoticons theme -Comment[ar]=مكتبة لاستخدام سمة ابتسامات XMPP +Comment[ar]=مكتبة لاستخدام سمة ابتسامات «XMPP» Comment[as]=XMPP Emoticons থিম ব্যৱহাৰ কৰা লাইব্ৰেৰী Comment[ast]=Biblioteca pa usar el tema de fustaxes de XMPP Comment[be@latin]=Biblijateka dla matyvaŭ smajlikaŭ „XMPP”
