Commit 0478a68b authored by Alf Gaida's avatar Alf Gaida

Cherry-picking new upstream version 0.14.0.

* Bumped Standards to 4.3.0, no changes needed
* Dropped d/compat, use debhelper-compat = 12, no changes needed
* Fixed years in d/copyright
* Bumped minimum version liblxqt0-dev (>= 0.14.0~)
* Removed obsolete PULL_TRANSLATIONS= OFF from dh_auto_configure
* Added l10n-package, moved from lxqt-l10n
* Added d/upstream/metadata
parent 6656ba58
lxqt-notificationd-0.14.0 / 2019-01-25
======================================
* Bumped version to 0.14.0
* Notification history implemented
* Implementations fixed:
- Fixed notification styles
- Don't use automatic string conversions
- Use QLatin1String where it is more efficient
- Test app updated
* Improved cmake scripting
- Set cmake_minimum_required to 3.1.0
- Removed locale compile definitons
* Moved translations from lxqt-l10n back to lxqt-notificationd
- Removed obsolete translation fuctionality
- Added translation promo in README.md
* Translation updates
lxqt-notificationd-0.13.0 / 2018-05-21 lxqt-notificationd-0.13.0 / 2018-05-21
====================================== ======================================
...@@ -16,8 +34,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21 ...@@ -16,8 +34,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21
* cmake: Handle CMP0071 * cmake: Handle CMP0071
* Change icon to preferences-desktop-notification * Change icon to preferences-desktop-notification
0.12.0 / 2017-10-21 lxqt-notificationd-0.12.0 / 2017-10-21
=================== ======================================
* Release 0.12.0: Update changelog * Release 0.12.0: Update changelog
* Set patch version * Set patch version
...@@ -46,8 +64,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21 ...@@ -46,8 +64,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21
* Fix a typo: singals -> signals * Fix a typo: singals -> signals
* Bump year * Bump year
0.11.1 / 2017-01-01 lxqt-notificationd-0.11.1 / 2017-01-01
=================== ======================================
* Release 0.11.1: Update changelog * Release 0.11.1: Update changelog
* Updated da translation. Removed da_DK * Updated da translation. Removed da_DK
...@@ -55,8 +73,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21 ...@@ -55,8 +73,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21
* Make CMakeList.txt more uniform. * Make CMakeList.txt more uniform.
* Remove cpack (#53) * Remove cpack (#53)
0.11.0 / 2016-09-24 lxqt-notificationd-0.11.0 / 2016-09-24
=================== ======================================
* Release 0.11.0: Add changelog * Release 0.11.0: Add changelog
* Update and extend README.md * Update and extend README.md
...@@ -73,8 +91,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21 ...@@ -73,8 +91,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21
* update lxqt-config-notificationd_hu.ts * update lxqt-config-notificationd_hu.ts
* Update lxqt-config-notificationd_it.ts * Update lxqt-config-notificationd_it.ts
0.10.0 / 2015-10-31 lxqt-notificationd-0.10.0 / 2015-10-31
=================== ======================================
* Update translations * Update translations
* Remove docs/notification-spec-latest.html in favour of an upstream link * Remove docs/notification-spec-latest.html in favour of an upstream link
...@@ -122,8 +140,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21 ...@@ -122,8 +140,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21
* Updated german translation * Updated german translation
* Added german translation. * Added german translation.
0.9.0 / 2015-01-06 lxqt-notificationd-0.9.0 / 2015-01-06
================== =====================================
* Portuguese language update * Portuguese language update
* Fix typos in tests * Fix typos in tests
...@@ -142,8 +160,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21 ...@@ -142,8 +160,8 @@ lxqt-notificationd-0.13.0 / 2018-05-21
* Drop Qt4 support in code * Drop Qt4 support in code
* Clean up CMakeLists.txt and drop Qt 4 support * Clean up CMakeLists.txt and drop Qt 4 support
0.8.0 / 2014-10-13 lxqt-notificationd-0.8.0 / 2014-10-13
================== =====================================
* Adapt to the translation infrastructure * Adapt to the translation infrastructure
* Fix xde/lxde-qt #67 - Notifications are shown in the wrong location. * Fix xde/lxde-qt #67 - Notifications are shown in the wrong location.
...@@ -154,13 +172,13 @@ lxqt-notificationd-0.13.0 / 2018-05-21 ...@@ -154,13 +172,13 @@ lxqt-notificationd-0.13.0 / 2018-05-21
* Use new LXQt header files. * Use new LXQt header files.
* Swap Spacing and Width * Swap Spacing and Width
0.7.0 / 2014-05-07 lxqt-notificationd-0.7.0 / 2014-05-07
================== =====================================
* Update COPYING * Update COPYING
0.6.99 / 2014-04-30 lxqt-notificationd-0.6.99 / 2014-04-30
=================== ======================================
* remove old templates from translations remove icon translations from desktop file translations * remove old templates from translations remove icon translations from desktop file translations
* Style fixes to the advanced config * Style fixes to the advanced config
......
cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR) cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
# CMP0000: Call the cmake_minimum_required() command at the beginning of the top-level
# CMakeLists.txt file even before calling the project() command.
# The cmake_minimum_required(VERSION) command implicitly invokes the cmake_policy(VERSION)
# command to specify that the current project code is written for the given range of CMake
# versions.
project(lxqt-notificationd) project(lxqt-notificationd)
include(GNUInstallDirs) include(GNUInstallDirs)
...@@ -10,19 +14,18 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) ...@@ -10,19 +14,18 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON)
option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF) option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
option(LXQT_NOTIFICATION_BUILD_TESTS "Build LXQt Notification tests" OFF)
find_package(Qt5DBus REQUIRED) set(KF5_MINIMUM_VERSION "5.36.0")
find_package(Qt5LinguistTools REQUIRED) set(LXQT_MINIMUM_VERSION "0.14.0")
find_package(Qt5Widgets REQUIRED) set(QT_MINIMUM_VERSION "5.7.1")
message(STATUS "Building with Qt${Qt5Core_VERSION}")
find_package(KF5WindowSystem REQUIRED)
find_package(lxqt REQUIRED)
if(NOT CMAKE_BUILD_TYPE) find_package(Qt5DBus ${QT_MINIMUM_VERSION} REQUIRED)
set(CMAKE_BUILD_TYPE Release) find_package(Qt5LinguistTools ${QT_MINIMUM_VERSION} REQUIRED)
endif() find_package(Qt5Widgets ${QT_MINIMUM_VERSION} REQUIRED)
find_package(KF5WindowSystem ${KF5_MINIMUM_VERSION} REQUIRED)
find_package(lxqt ${LXQT_MINIMUM_VERSION} REQUIRED)
message(STATUS "Building with Qt${Qt5Core_VERSION}")
# Patch Version # Patch Version
set(LXQT_NOTIFICATIOND_PATCH_VERSION 0) set(LXQT_NOTIFICATIOND_PATCH_VERSION 0)
...@@ -30,7 +33,10 @@ set(LXQT_NOTIFICATIOND_PATCH_VERSION 0) ...@@ -30,7 +33,10 @@ set(LXQT_NOTIFICATIOND_PATCH_VERSION 0)
set(LXQT_NOTIFICATIOND_VERSION ${LXQT_MAJOR_VERSION}.${LXQT_MINOR_VERSION}.${LXQT_NOTIFICATIOND_PATCH_VERSION}) set(LXQT_NOTIFICATIOND_VERSION ${LXQT_MAJOR_VERSION}.${LXQT_MINOR_VERSION}.${LXQT_NOTIFICATIOND_PATCH_VERSION})
add_definitions( add_definitions(
"-DLXQT_NOTIFICATIOND_VERSION=\"${LXQT_NOTIFICATIOND_VERSION}\"" "-DLXQT_NOTIFICATIOND_VERSION=\"${LXQT_NOTIFICATIOND_VERSION}\""
"-DQT_NO_FOREACH" "-DQT_NO_CAST_FROM_ASCII"
"-DQT_NO_CAST_TO_ASCII"
"-DQT_NO_URL_CAST_FROM_STRING"
"-DQT_NO_CAST_FROM_BYTEARRAY"
) )
include(LXQtPreventInSourceBuilds) include(LXQtPreventInSourceBuilds)
...@@ -41,6 +47,9 @@ include(LXQtTranslate) ...@@ -41,6 +47,9 @@ include(LXQtTranslate)
add_subdirectory(config) add_subdirectory(config)
add_subdirectory(src) add_subdirectory(src)
if (LXQT_NOTIFICATION_BUILD_TESTS)
add_subdirectory(test)
endif()
## merged from lxqt-common ## merged from lxqt-common
add_subdirectory(autostart) add_subdirectory(autostart)
...@@ -55,3 +55,13 @@ which is used to customize notifications can be opened from the panel's main ...@@ -55,3 +55,13 @@ which is used to customize notifications can be opened from the panel's main
menu - Preferences - LXQt Settings - Desktop Notifications and is provided by the menu - Preferences - LXQt Settings - Desktop Notifications and is provided by the
[Configuration Center](https://github.com/lxqt/lxqt-config#configuration-center) [Configuration Center](https://github.com/lxqt/lxqt-config#configuration-center)
of [lxqt-config](https://github.com/lxqt/lxqt-config) as well. of [lxqt-config](https://github.com/lxqt/lxqt-config) as well.
## Translation (Weblate)
<a href="https://weblate.lxqt.org/projects/lxqt/lxqt-notificationd/">
<img src="https://weblate.lxqt.org/widgets/lxqt/-/lxqt-notificationd/287x66-white.png" alt="Translation status" />
</a>
<a href="https://weblate.lxqt.org/projects/lxqt/lxqt-config-notificationd/">
<img src="https://weblate.lxqt.org/widgets/lxqt/-/lxqt-config-notificationd/287x66-white.png" alt="Translation status" />
</a>
cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
file(GLOB DESKTOP_FILES_IN *.desktop.in) file(GLOB DESKTOP_FILES_IN *.desktop.in)
# Translations ********************************** # Translations **********************************
......
# Translations
Name[cs_CZ]=Oznamovací démon
...@@ -21,16 +21,6 @@ lxqt_translate_ts(NOTIFICATIONS_CONF_QM ...@@ -21,16 +21,6 @@ lxqt_translate_ts(NOTIFICATIONS_CONF_QM
${NOTIFICATIONS_CONF_SRC} ${NOTIFICATIONS_CONF_SRC}
${NOTIFICATIONS_CONF_UI} ${NOTIFICATIONS_CONF_UI}
INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}" INSTALL_DIR "${LXQT_TRANSLATIONS_DIR}/${PROJECT_NAME}"
PULL_TRANSLATIONS
${PULL_TRANSLATIONS}
CLEAN_TRANSLATIONS
${CLEAN_TRANSLATIONS}
TRANSLATIONS_REPO
${TRANSLATIONS_REPO}
TRANSLATIONS_REFSPEC
${TRANSLATIONS_REFSPEC}
REPO_SUBDIR
"lxqt-notificationd/${PROJECT_NAME}"
) )
lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME}) lxqt_app_translation_loader(QM_LOADER ${PROJECT_NAME})
......
...@@ -38,9 +38,11 @@ AdvancedSettings::AdvancedSettings(LXQt::Settings* settings, QWidget *parent): ...@@ -38,9 +38,11 @@ AdvancedSettings::AdvancedSettings(LXQt::Settings* settings, QWidget *parent):
setupUi(this); setupUi(this);
restoreSettings(); restoreSettings();
connect(serverDecidesBox, SIGNAL(valueChanged(int)), this, SLOT(save())); connect(serverDecidesBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &AdvancedSettings::save);
connect(spacingBox, SIGNAL(valueChanged(int)), this, SLOT(save())); connect(spacingBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &AdvancedSettings::save);
connect(widthBox, SIGNAL(valueChanged(int)), this, SLOT(save())); connect(widthBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &AdvancedSettings::save);
connect(unattendedBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &AdvancedSettings::save);
connect(blackListEdit, &QLineEdit::editingFinished, this, &AdvancedSettings::save);
} }
AdvancedSettings::~AdvancedSettings() AdvancedSettings::~AdvancedSettings()
...@@ -49,18 +51,30 @@ AdvancedSettings::~AdvancedSettings() ...@@ -49,18 +51,30 @@ AdvancedSettings::~AdvancedSettings()
void AdvancedSettings::restoreSettings() void AdvancedSettings::restoreSettings()
{ {
int serverDecides = mSettings->value("server_decides", 10).toInt(); int serverDecides = mSettings->value(QL1S("server_decides"), 10).toInt();
if (serverDecides <= 0) if (serverDecides <= 0)
serverDecides = 10; serverDecides = 10;
serverDecidesBox->setValue(serverDecides); serverDecidesBox->setValue(serverDecides);
spacingBox->setValue(mSettings->value("spacing", 6).toInt()); spacingBox->setValue(mSettings->value(QL1S("spacing"), 6).toInt());
widthBox->setValue(mSettings->value("width", 300).toInt()); widthBox->setValue(mSettings->value(QL1S("width"), 300).toInt());
unattendedBox->setValue(mSettings->value(QL1S("unattendedMaxNum"), 10).toInt());
blackListEdit->setText(mSettings->value(QL1S("blackList")).toStringList().join (QL1S(",")));
} }
void AdvancedSettings::save() void AdvancedSettings::save()
{ {
mSettings->setValue("server_decides", serverDecidesBox->value()); mSettings->setValue(QL1S("server_decides"), serverDecidesBox->value());
mSettings->setValue("spacing", spacingBox->value()); mSettings->setValue(QL1S("spacing"), spacingBox->value());
mSettings->setValue("width", widthBox->value()); mSettings->setValue(QL1S("width"), widthBox->value());
mSettings->setValue(QL1S("unattendedMaxNum"), unattendedBox->value());
QString blackList = blackListEdit->text();
if (!blackList.isEmpty())
{
QStringList l = blackList.split(QL1S(","), QString::SkipEmptyParts);
l.removeDuplicates();
mSettings->setValue(QL1S("blackList"), l);
}
else
mSettings->remove(QL1S("blackList"));
} }
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="3" column="0" colspan="2"> <item row="4" column="0" colspan="2">
<spacer name="verticalSpacer"> <spacer name="verticalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
...@@ -121,6 +121,56 @@ ...@@ -121,6 +121,56 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="3" column="0" colspan="2">
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Unattended Notifications</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="unattendedLabel">
<property name="text">
<string>How many to save:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="unattendedBox"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_6">
<item>
<widget class="QLabel" name="blackListLabel">
<property name="toolTip">
<string>Application name is on the top of notification.</string>
</property>
<property name="text">
<string>Ignore these applications:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="blackListEdit">
<property name="toolTip">
<string>Application name is on the top of notification.</string>
</property>
<property name="placeholderText">
<string>app1,app2,app3</string>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<resources/> <resources/>
......
...@@ -50,7 +50,7 @@ BasicSettings::BasicSettings(LXQt::Settings* settings, QWidget *parent) : ...@@ -50,7 +50,7 @@ BasicSettings::BasicSettings(LXQt::Settings* settings, QWidget *parent) :
LXQt::Notification serverTest; LXQt::Notification serverTest;
QString serverName = serverTest.serverInfo().name; QString serverName = serverTest.serverInfo().name;
if (serverName != "lxqt-notificationd") if (serverName != QL1S("lxqt-notificationd"))
{ {
if (serverName.isEmpty()) if (serverName.isEmpty())
warningLabel->setText(tr("<b>Warning:</b> No notifications daemon is running.\n" warningLabel->setText(tr("<b>Warning:</b> No notifications daemon is running.\n"
...@@ -67,24 +67,24 @@ BasicSettings::~BasicSettings() ...@@ -67,24 +67,24 @@ BasicSettings::~BasicSettings()
void BasicSettings::restoreSettings() void BasicSettings::restoreSettings()
{ {
QString placement = mSettings->value(QStringLiteral("placement"), QString placement = mSettings->value(QL1S("placement"),
QStringLiteral("bottom-right")).toString().toLower(); QL1S("bottom-right")).toString().toLower();
if (QStringLiteral("top-left") == placement) if (QL1S("top-left") == placement)
topLeftRB->setChecked(true); topLeftRB->setChecked(true);
else if (QStringLiteral("top-center") == placement) else if (QL1S("top-center") == placement)
topCenterRB->setChecked(true); topCenterRB->setChecked(true);
else if (QStringLiteral("top-right") == placement) else if (QL1S("top-right") == placement)
topRightRB->setChecked(true); topRightRB->setChecked(true);
else if (QStringLiteral("center-left") == placement) else if (QL1S("center-left") == placement)
centerLeftRB->setChecked(true); centerLeftRB->setChecked(true);
else if (QStringLiteral("center-right") == placement) else if (QL1S("center-right") == placement)
centerRightRB->setChecked(true); centerRightRB->setChecked(true);
else if (QStringLiteral("bottom-left") == placement) else if (QL1S("bottom-left") == placement)
bottomLeftRB->setChecked(true); bottomLeftRB->setChecked(true);
else if (QStringLiteral("bottom-center") == placement) else if (QL1S("bottom-center") == placement)
bottomCenterRB->setChecked(true); bottomCenterRB->setChecked(true);
else if (QStringLiteral("bottom-right") == placement) else if (QL1S("bottom-right") == placement)
bottomRightRB->setChecked(true); bottomRightRB->setChecked(true);
} }
...@@ -92,23 +92,23 @@ void BasicSettings::updateNotification() ...@@ -92,23 +92,23 @@ void BasicSettings::updateNotification()
{ {
QString align; QString align;
if (topLeftRB->isChecked()) if (topLeftRB->isChecked())
align = QStringLiteral("top-left"); align = QL1S("top-left");
else if (topCenterRB->isChecked()) else if (topCenterRB->isChecked())
align = QStringLiteral("top-center"); align = QL1S("top-center");
else if (topRightRB->isChecked()) else if (topRightRB->isChecked())
align = QStringLiteral("top-right"); align = QL1S("top-right");
else if (centerLeftRB->isChecked()) else if (centerLeftRB->isChecked())
align = QStringLiteral("center-left"); align = QL1S("center-left");
else if (centerRightRB->isChecked()) else if (centerRightRB->isChecked())
align = QStringLiteral("center-right"); align = QL1S("center-right");
else if (bottomLeftRB->isChecked()) else if (bottomLeftRB->isChecked())
align = QStringLiteral("bottom-left"); align = QL1S("bottom-left");
else if (bottomCenterRB->isChecked()) else if (bottomCenterRB->isChecked())
align = QStringLiteral("bottom-center"); align = QL1S("bottom-center");
else // if (bottomRightRB->isChecked()) else // if (bottomRightRB->isChecked())
align = QStringLiteral("bottom-right"); align = QL1S("bottom-right");
mSettings->setValue(QStringLiteral("placement"), align); mSettings->setValue(QL1S("placement"), align);
LXQt::Notification::notify(tr("Notification demo ") + align, LXQt::Notification::notify(tr("Notification demo ") + align,
tr("This is a test notification.\n All notifications will now appear here on LXQt."), tr("This is a test notification.\n All notifications will now appear here on LXQt."),
QStringLiteral("lxqt")); QStringLiteral("lxqt"));
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
* *
* END_COMMON_COPYRIGHT_HEADER */ * END_COMMON_COPYRIGHT_HEADER */
#include <LXQt/Globals>
#include <LXQt/SingleApplication> #include <LXQt/SingleApplication>
#include <XdgIcon> #include <XdgIcon>
...@@ -50,7 +51,7 @@ int main(int argc, char** argv) ...@@ -50,7 +51,7 @@ int main(int argc, char** argv)
parser.process(a); parser.process(a);
MainWindow w; MainWindow w;
w.setWindowIcon(QIcon::fromTheme("preferences-desktop-theme")); w.setWindowIcon(QIcon::fromTheme(QSL("preferences-desktop-theme")));
a.setActivationWindow(&w); a.setActivationWindow(&w);
w.show(); w.show();
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include <QMessageBox> #include <QMessageBox>
#include <QtDBus/QDBusConnection> #include <QtDBus/QDBusConnection>
#include <QtDBus/QDBusMessage> #include <QtDBus/QDBusMessage>
#include <LXQt/Globals>
#include <LXQt/ConfigDialog> #include <LXQt/ConfigDialog>
#include "mainwindow.h" #include "mainwindow.h"
...@@ -37,14 +38,14 @@ ...@@ -37,14 +38,14 @@
MainWindow::MainWindow(QWidget *parent) : MainWindow::MainWindow(QWidget *parent) :
LXQt::ConfigDialog(tr("Desktop Notifications"), new LXQt::Settings("notifications"), parent) LXQt::ConfigDialog(tr("Desktop Notifications"), new LXQt::Settings(QSL("notifications")), parent)
{ {
BasicSettings* basic = new BasicSettings(mSettings, this); BasicSettings* basic = new BasicSettings(mSettings, this);
addPage(basic, tr("Basic Settings"), "preferences-desktop-notification"); addPage(basic, tr("Basic Settings"), QSL("preferences-desktop-notification"));
connect(this, SIGNAL(reset()), basic, SLOT(restoreSettings())); connect(this, SIGNAL(reset()), basic, SLOT(restoreSettings()));
AdvancedSettings* menu = new AdvancedSettings(mSettings, this); AdvancedSettings* menu = new AdvancedSettings(mSettings, this);
addPage(menu, tr("Advanced Settings"), "preferences-desktop-notification-bell"); addPage(menu, tr("Advanced Settings"), QSL("preferences-desktop-notification-bell"));
connect(this, SIGNAL(reset()), menu, SLOT(restoreSettings())); connect(this, SIGNAL(reset()), menu, SLOT(restoreSettings()));
} }
......
project(lxqt-config-notificationd)
build_component("." "")
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.1">
<context>
<name>AdvancedSettings</name>
<message>
<location filename="../advancedsettings.ui" line="17"/>
<source>Sizes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="25"/>
<source>Width:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="32"/>
<location filename="../advancedsettings.ui" line="56"/>
<source> px</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="49"/>
<source>Spacing:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="68"/>
<source>Duration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="80"/>
<source>Some notifications set their own on-screen duration.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="92"/>
<source>Default duration:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="99"/>
<source> sec</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="127"/>
<source>Unattended Notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="135"/>
<source>How many to save:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="149"/>
<location filename="../advancedsettings.ui" line="159"/>
<source>Application name is on the top of notification.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="152"/>
<source>Ignore these applications:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../advancedsettings.ui" line="162"/>
<source>app1,app2,app3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BasicSettings</name>
<message>
<location filename="../basicsettings.ui" line="23"/>
<source>Basic Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../basicsettings.ui" line="30"/>
<source>Position on screen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../basicsettings.cpp" line="56"/>
<source>&lt;b&gt;Warning:&lt;/b&gt; No notifications daemon is running.
A fallback will be used.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../basicsettings.cpp" line="59"/>
<source>&lt;b&gt;Warning:&lt;/b&gt; A third-party notifications daemon (%1) is running.
These settings won&apos;t have any effect on it!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../basicsettings.cpp" line="112"/>
<source>Notification demo </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../basicsettings.cpp" line="113"/>
<source>This is a test notification.
All notifications will now appear here on LXQt.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.cpp" line="41"/>
<source>Desktop Notifications</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="44"/>