Adding upstream version 0.12.0.
Signed-off-by: Alf Gaida <agaida@siduction.org>
This commit is contained in:
parent
c12e2a7151
commit
581c542a71
2
AUTHORS
2
AUTHORS
@ -4,7 +4,7 @@ Upstream Authors:
|
|||||||
|
|
||||||
Copyright:
|
Copyright:
|
||||||
Copyright (c) 2010-2012 Razor team
|
Copyright (c) 2010-2012 Razor team
|
||||||
Copyright (c) 2012-2016 LXQt team
|
Copyright (c) 2012-2017 LXQt team
|
||||||
|
|
||||||
License: LGPL-2.1+ and BSD-3-clause
|
License: LGPL-2.1+ and BSD-3-clause
|
||||||
The full text of the LGPL-2.1+ licenses can be found in the 'COPYING' file.
|
The full text of the LGPL-2.1+ licenses can be found in the 'COPYING' file.
|
||||||
|
25
CHANGELOG
25
CHANGELOG
@ -1,7 +1,30 @@
|
|||||||
|
|
||||||
liblxqt-0.11.1 / 2017-01-01
|
liblxqt-0.12.0 / 2017-10-21
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
* Bump minimum qtxdg version to 3.1.0
|
||||||
|
* Don't export github templates
|
||||||
|
* Bump version and needed versions to the final values
|
||||||
|
* lxqtpower: Allow disabling of lxqt-session provider
|
||||||
|
* Drops Qt5Core_VERSION_STRING
|
||||||
|
* HtmlDelegate: Fix sizeHint() computation
|
||||||
|
* Add some comments about the meaning of versions
|
||||||
|
* Move LXQt version back to liblxqt
|
||||||
|
* Fixes (#118)
|
||||||
|
* lxqtapplication: Avoid wrong signal handling
|
||||||
|
* Removes unneeded semicolon in namespace definition
|
||||||
|
* Fix format conversions [-Wformat-pedantic] warnings
|
||||||
|
* Suppress compiler warnings about unused function parameters
|
||||||
|
* Removes extra semicolons in Qt's Q macros
|
||||||
|
* Translator: Prefer XDG_DATA_DIRS over compiled in path
|
||||||
|
* Help the compiler optimizing loops
|
||||||
|
* Use const variables where possible
|
||||||
|
* Update AUTHORS
|
||||||
|
|
||||||
|
0.11.1 / 2017-01-01
|
||||||
|
===================
|
||||||
|
|
||||||
|
* Release 0.11.1: Update changelog
|
||||||
* Bump needed build tools version (#113)
|
* Bump needed build tools version (#113)
|
||||||
* build: Enable/disable WITH_XDG_DIRS_FALLBACK based on Qt version (#111)
|
* build: Enable/disable WITH_XDG_DIRS_FALLBACK based on Qt version (#111)
|
||||||
* Updates lxqt-build-tools required version
|
* Updates lxqt-build-tools required version
|
||||||
|
@ -2,9 +2,25 @@ cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)
|
|||||||
|
|
||||||
project(liblxqt)
|
project(liblxqt)
|
||||||
|
|
||||||
set(QT_MINIMUM_VERSION "5.4.2")
|
set(QT_MINIMUM_VERSION "5.5.0")
|
||||||
set(QTXDG_MINIMUM_VERSION "2.0.0")
|
set(QTXDG_MINIMUM_VERSION "3.1.0")
|
||||||
set(LXQTBT_MINIMUM_VERSION "0.3.1")
|
set(LXQTBT_MINIMUM_VERSION "0.4.0")
|
||||||
|
|
||||||
|
# Major LXQt Version, belong to all components
|
||||||
|
set(LXQT_MAJOR_VERSION 0)
|
||||||
|
# Minor LXQt Version, belong to all components
|
||||||
|
set(LXQT_MINOR_VERSION 12)
|
||||||
|
#
|
||||||
|
# Patch Version, belong *only* to the component
|
||||||
|
# LXQt is 0.11 - liblxqt is at patch version 1
|
||||||
|
# The official LXQt version will follow liblxqt.
|
||||||
|
#
|
||||||
|
# In a perfect world all components would have the same major- and minor- and
|
||||||
|
# patch-version as liblxqt - in real life it will be fine if every component
|
||||||
|
# has it's own patch version within a major/minor life cyle.
|
||||||
|
#
|
||||||
|
set(LXQT_PATCH_VERSION 0)
|
||||||
|
set(LXQT_VERSION ${LXQT_MAJOR_VERSION}.${LXQT_MINOR_VERSION}.${LXQT_PATCH_VERSION})
|
||||||
|
|
||||||
include(CMakePackageConfigHelpers)
|
include(CMakePackageConfigHelpers)
|
||||||
include(GNUInstallDirs) # Standard directories for installation
|
include(GNUInstallDirs) # Standard directories for installation
|
||||||
@ -118,7 +134,7 @@ find_package(X11 REQUIRED QUIET)
|
|||||||
find_package(Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Widgets DBus X11Extras LinguistTools)
|
find_package(Qt5 ${QT_MINIMUM_VERSION} CONFIG REQUIRED Widgets DBus X11Extras LinguistTools)
|
||||||
find_package(Qt5Xdg ${QTXDG_MINIMUM_VERSION} REQUIRED)
|
find_package(Qt5Xdg ${QTXDG_MINIMUM_VERSION} REQUIRED)
|
||||||
find_package(KF5WindowSystem REQUIRED QUIET)
|
find_package(KF5WindowSystem REQUIRED QUIET)
|
||||||
message(STATUS "Building ${PROJECT_NAME} with Qt ${Qt5Core_VERSION_STRING}")
|
message(STATUS "Building ${PROJECT_NAME} with Qt ${Qt5Core_VERSION}")
|
||||||
|
|
||||||
QT5_ADD_DBUS_INTERFACE(SRCS
|
QT5_ADD_DBUS_INTERFACE(SRCS
|
||||||
dbus/org.freedesktop.Notifications.xml
|
dbus/org.freedesktop.Notifications.xml
|
||||||
|
@ -17,6 +17,18 @@ find_dependency(KF5WindowSystem)
|
|||||||
find_dependency(lxqt-build-tools @LXQTBT_MINIMUM_VERSION@)
|
find_dependency(lxqt-build-tools @LXQTBT_MINIMUM_VERSION@)
|
||||||
include(LXQtConfigVars)
|
include(LXQtConfigVars)
|
||||||
|
|
||||||
|
|
||||||
|
# - Set version informations
|
||||||
|
set(LXQT_MAJOR_VERSION "@LXQT_MAJOR_VERSION@")
|
||||||
|
set(LXQT_MINOR_VERSION "@LXQT_MINOR_VERSION@")
|
||||||
|
set(LXQT_PATCH_VERSION "@LXQT_PATCH_VERSION@")
|
||||||
|
set(LXQT_VERSION "@LXQT_VERSION@")
|
||||||
|
|
||||||
|
add_definitions("-DLXQT_MAJOR_VERSION=\"${LXQT_MAJOR_VERSION}\"")
|
||||||
|
add_definitions("-DLXQT_MINOR_VERSION=\"${LXQT_MINOR_VERSION}\"")
|
||||||
|
add_definitions("-DLXQT_PATCH_VERSION=\"${LXQT_PATCH_VERSION}\"")
|
||||||
|
add_definitions("-DLXQT_VERSION=\"${LXQT_VERSION}\"")
|
||||||
|
|
||||||
if (NOT TARGET @LXQT_LIBRARY_NAME@)
|
if (NOT TARGET @LXQT_LIBRARY_NAME@)
|
||||||
if (POLICY CMP0024)
|
if (POLICY CMP0024)
|
||||||
cmake_policy(SET CMP0024 NEW)
|
cmake_policy(SET CMP0024 NEW)
|
||||||
|
@ -112,6 +112,7 @@ bool ConfigDialog::event(QEvent * event)
|
|||||||
|
|
||||||
void ConfigDialog::closeEvent(QCloseEvent* event)
|
void ConfigDialog::closeEvent(QCloseEvent* event)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(event)
|
||||||
emit save();
|
emit save();
|
||||||
mSettings->sync();
|
mSettings->sync();
|
||||||
}
|
}
|
||||||
|
@ -57,6 +57,7 @@ variable LXQT_DEBUG set
|
|||||||
*/
|
*/
|
||||||
void dbgMessageOutput(QtMsgType type, const QMessageLogContext &ctx, const QString & msgStr)
|
void dbgMessageOutput(QtMsgType type, const QMessageLogContext &ctx, const QString & msgStr)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(ctx)
|
||||||
QByteArray msgBuf = msgStr.toUtf8();
|
QByteArray msgBuf = msgStr.toUtf8();
|
||||||
const char* msg = msgBuf.constData();
|
const char* msg = msgBuf.constData();
|
||||||
QDir dir(XdgDirs::configHome().toUtf8() + QLatin1String("/lxqt"));
|
QDir dir(XdgDirs::configHome().toUtf8() + QLatin1String("/lxqt"));
|
||||||
@ -84,12 +85,12 @@ void dbgMessageOutput(QtMsgType type, const QMessageLogContext &ctx, const QStri
|
|||||||
|
|
||||||
QByteArray dt = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz").toUtf8();
|
QByteArray dt = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss.zzz").toUtf8();
|
||||||
if (isatty(STDERR_FILENO))
|
if (isatty(STDERR_FILENO))
|
||||||
fprintf(stderr, "%s %s(%p) %s: %s%s\n", color, QAPP_NAME, qApp, typestr, msg, COLOR_RESET);
|
fprintf(stderr, "%s %s(%p) %s: %s%s\n", color, QAPP_NAME, static_cast<void *>(qApp), typestr, msg, COLOR_RESET);
|
||||||
else
|
else
|
||||||
fprintf(stderr, "%s(%p) %s: %s\n", QAPP_NAME, qApp, typestr, msg);
|
fprintf(stderr, "%s(%p) %s: %s\n", QAPP_NAME, static_cast<void *>(qApp), typestr, msg);
|
||||||
|
|
||||||
FILE *f = fopen(dir.absoluteFilePath("debug.log").toUtf8().constData(), "a+");
|
FILE *f = fopen(dir.absoluteFilePath("debug.log").toUtf8().constData(), "a+");
|
||||||
fprintf(f, "%s %s(%p) %s: %s\n", dt.constData(), QAPP_NAME, qApp, typestr, msg);
|
fprintf(f, "%s %s(%p) %s: %s\n", dt.constData(), QAPP_NAME, static_cast<void *>(qApp), typestr, msg);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
if (type == QtFatalMsg)
|
if (type == QtFatalMsg)
|
||||||
@ -102,7 +103,7 @@ Application::Application(int &argc, char** argv)
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
qInstallMessageHandler(dbgMessageOutput);
|
qInstallMessageHandler(dbgMessageOutput);
|
||||||
#else
|
#else
|
||||||
if (!qgetenv("LXQT_DEBUG").isNull())
|
if (!qEnvironmentVariableIsSet("LXQT_DEBUG"))
|
||||||
qInstallMessageHandler(dbgMessageOutput);
|
qInstallMessageHandler(dbgMessageOutput);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -128,7 +129,7 @@ Application::Application(int &argc, char** argv, bool handleQuitSignals)
|
|||||||
|
|
||||||
void Application::updateTheme()
|
void Application::updateTheme()
|
||||||
{
|
{
|
||||||
QString styleSheetKey = QFileInfo(applicationFilePath()).fileName();
|
const QString styleSheetKey = QFileInfo(applicationFilePath()).fileName();
|
||||||
setStyleSheet(lxqtTheme.qss(styleSheetKey));
|
setStyleSheet(lxqtTheme.qss(styleSheetKey));
|
||||||
emit themeChanged();
|
emit themeChanged();
|
||||||
}
|
}
|
||||||
@ -140,14 +141,14 @@ namespace
|
|||||||
public:
|
public:
|
||||||
static void signalHandler(int signo)
|
static void signalHandler(int signo)
|
||||||
{
|
{
|
||||||
int ret = write(instance->mSignalSock[0], &signo, sizeof (int));
|
const int ret = write(instance->mSignalSock[0], &signo, sizeof (int));
|
||||||
if (sizeof (int) != ret)
|
if (sizeof (int) != ret)
|
||||||
qCritical() << QStringLiteral("unable to write into socketpair, %1").arg(strerror(errno));
|
qCritical() << QStringLiteral("unable to write into socketpair, %1").arg(strerror(errno));
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template <class Lambda>
|
template <class Lambda>
|
||||||
SignalHandler(Lambda signalEmitter)
|
SignalHandler(Application * app, Lambda signalEmitter)
|
||||||
: mSignalSock{-1, -1}
|
: mSignalSock{-1, -1}
|
||||||
{
|
{
|
||||||
if (0 != socketpair(AF_UNIX, SOCK_STREAM, 0, mSignalSock))
|
if (0 != socketpair(AF_UNIX, SOCK_STREAM, 0, mSignalSock))
|
||||||
@ -157,7 +158,7 @@ namespace
|
|||||||
}
|
}
|
||||||
|
|
||||||
mNotifier.reset(new QSocketNotifier(mSignalSock[1], QSocketNotifier::Read));
|
mNotifier.reset(new QSocketNotifier(mSignalSock[1], QSocketNotifier::Read));
|
||||||
QObject::connect(mNotifier.data(), &QSocketNotifier::activated, [this, signalEmitter] {
|
QObject::connect(mNotifier.data(), &QSocketNotifier::activated, app, [this, signalEmitter] {
|
||||||
int signo = 0;
|
int signo = 0;
|
||||||
int ret = read(mSignalSock[1], &signo, sizeof (int));
|
int ret = read(mSignalSock[1], &signo, sizeof (int));
|
||||||
if (sizeof (int) != ret)
|
if (sizeof (int) != ret)
|
||||||
@ -198,6 +199,6 @@ void Application::listenToUnixSignals(QList<int> const & signoList)
|
|||||||
static QScopedPointer<QSocketNotifier> signal_notifier;
|
static QScopedPointer<QSocketNotifier> signal_notifier;
|
||||||
|
|
||||||
if (SignalHandler::instance.isNull())
|
if (SignalHandler::instance.isNull())
|
||||||
SignalHandler::instance.reset(new SignalHandler{[this] (int signo) { emit unixSignal(signo); }});
|
SignalHandler::instance.reset(new SignalHandler{this, [this] (int signo) { emit unixSignal(signo); }});
|
||||||
SignalHandler::instance->listenToSignals(signoList);
|
SignalHandler::instance->listenToSignals(signoList);
|
||||||
}
|
}
|
||||||
|
@ -38,9 +38,10 @@ AutostartEntry::AutostartEntry() :
|
|||||||
AutostartEntry::AutostartEntry(const QString& name):
|
AutostartEntry::AutostartEntry(const QString& name):
|
||||||
mLocalState(StateNone), mSystem(false)
|
mLocalState(StateNone), mSystem(false)
|
||||||
{
|
{
|
||||||
foreach (const QString& dir, XdgDirs::autostartDirs())
|
const QStringList& dirs = XdgDirs::autostartDirs();
|
||||||
|
foreach (const QString& dir, dirs)
|
||||||
{
|
{
|
||||||
QString path = QString("%1/%2").arg(dir, name);
|
const QString path = QString("%1/%2").arg(dir, name);
|
||||||
if (QFile(path).exists())
|
if (QFile(path).exists())
|
||||||
{
|
{
|
||||||
mSystemFile.load(path);
|
mSystemFile.load(path);
|
||||||
@ -49,7 +50,7 @@ AutostartEntry::AutostartEntry(const QString& name):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString path = QString("%1/%2").arg(XdgDirs::autostartHome(), name);
|
const QString path = QString("%1/%2").arg(XdgDirs::autostartHome(), name);
|
||||||
if (QFile(path).exists())
|
if (QFile(path).exists())
|
||||||
{
|
{
|
||||||
mLocalFile.load(path);
|
mLocalFile.load(path);
|
||||||
@ -59,7 +60,7 @@ AutostartEntry::AutostartEntry(const QString& name):
|
|||||||
|
|
||||||
void AutostartEntry::setFile(const XdgDesktopFile& file)
|
void AutostartEntry::setFile(const XdgDesktopFile& file)
|
||||||
{
|
{
|
||||||
bool local = isLocal();
|
const bool local = isLocal();
|
||||||
if (mSystem && local && file == mSystemFile)
|
if (mSystem && local && file == mSystemFile)
|
||||||
{
|
{
|
||||||
removeLocal();
|
removeLocal();
|
||||||
|
@ -131,7 +131,8 @@ void GridLayoutPrivate::updateCache()
|
|||||||
mCellMaxSize = QSize(0, 0);
|
mCellMaxSize = QSize(0, 0);
|
||||||
mVisibleCount = 0;
|
mVisibleCount = 0;
|
||||||
|
|
||||||
for (int i=0; i<mItems.count(); ++i)
|
const int N = mItems.count();
|
||||||
|
for (int i=0; i < N; ++i)
|
||||||
{
|
{
|
||||||
QLayoutItem *item = mItems.at(i);
|
QLayoutItem *item = mItems.at(i);
|
||||||
if (!item->widget() || item->widget()->isHidden())
|
if (!item->widget() || item->widget()->isHidden())
|
||||||
|
@ -65,7 +65,7 @@ void HtmlDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option,
|
|||||||
options.icon = QIcon();
|
options.icon = QIcon();
|
||||||
|
|
||||||
// icon size
|
// icon size
|
||||||
QSize iconSize = icon.actualSize(mIconSize);
|
const QSize iconSize = icon.actualSize(mIconSize);
|
||||||
QRect iconRect = QRect(8, 8, iconSize.width(), iconSize.height());
|
QRect iconRect = QRect(8, 8, iconSize.width(), iconSize.height());
|
||||||
if (is_right_to_left)
|
if (is_right_to_left)
|
||||||
{
|
{
|
||||||
@ -86,7 +86,7 @@ void HtmlDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option,
|
|||||||
// shift text right to make icon visible
|
// shift text right to make icon visible
|
||||||
painter->translate(iconRect.right() + 8, 0);
|
painter->translate(iconRect.right() + 8, 0);
|
||||||
}
|
}
|
||||||
QRect clip(0, 0, options.rect.width() - iconRect.width() - 8, options.rect.height());
|
const QRect clip(0, 0, options.rect.width() - iconRect.width() - 8, options.rect.height());
|
||||||
painter->setClipRect(clip);
|
painter->setClipRect(clip);
|
||||||
|
|
||||||
// set text color to red for selected item
|
// set text color to red for selected item
|
||||||
@ -112,11 +112,16 @@ QSize HtmlDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelInd
|
|||||||
QStyleOptionViewItem options = option;
|
QStyleOptionViewItem options = option;
|
||||||
initStyleOption(&options, index);
|
initStyleOption(&options, index);
|
||||||
|
|
||||||
QSize iconSize = options.icon.actualSize(mIconSize);
|
const QSize iconSize = options.icon.actualSize(mIconSize);
|
||||||
QRect iconRect = QRect(8, 8, iconSize.width(), iconSize.height());
|
const QRect iconRect = QRect(8, 8, iconSize.width(), iconSize.height());
|
||||||
|
const QSize optSize = options.rect.size();
|
||||||
|
|
||||||
QTextDocument doc;
|
QTextDocument doc;
|
||||||
doc.setHtml(options.text);
|
doc.setHtml(options.text);
|
||||||
doc.setTextWidth(options.rect.width() - iconRect.right() - 8);
|
|
||||||
return QSize(options.rect.width(), doc.size().height() + 8);
|
if (optSize.width() > 0)
|
||||||
|
doc.setTextWidth(optSize.width() - iconRect.right() - 8);
|
||||||
|
doc.adjustSize();
|
||||||
|
return QSize(0 < optSize.width() ? optSize.width() : iconRect.width() + 8 + qRound(doc.size().width())
|
||||||
|
, qMax(qRound(doc.size().height()), iconSize.height()) + 8);
|
||||||
}
|
}
|
||||||
|
@ -158,7 +158,8 @@ void NotificationPrivate::setActions(QStringList actions, int defaultAction)
|
|||||||
{
|
{
|
||||||
mActions.clear();
|
mActions.clear();
|
||||||
mDefaultAction = defaultAction;
|
mDefaultAction = defaultAction;
|
||||||
for (int ix = 0; ix < actions.size(); ix++)
|
const int N = actions.size();
|
||||||
|
for (int ix = 0; ix < N; ix++)
|
||||||
{
|
{
|
||||||
if (ix == defaultAction)
|
if (ix == defaultAction)
|
||||||
mActions.append("default");
|
mActions.append("default");
|
||||||
|
@ -72,12 +72,11 @@ bool PluginInfo::isValid() const
|
|||||||
************************************************/
|
************************************************/
|
||||||
QLibrary* PluginInfo::loadLibrary(const QString& libDir) const
|
QLibrary* PluginInfo::loadLibrary(const QString& libDir) const
|
||||||
{
|
{
|
||||||
QString baseName, path;
|
const QFileInfo fi = QFileInfo(fileName());
|
||||||
QFileInfo fi = QFileInfo(fileName());
|
const QString path = fi.canonicalPath();
|
||||||
path = fi.canonicalPath();
|
const QString baseName = value("X-LXQt-Library", fi.completeBaseName()).toString();
|
||||||
baseName = value("X-LXQt-Library", fi.completeBaseName()).toString();
|
|
||||||
|
|
||||||
QString soPath = QDir(libDir).filePath(QString("lib%2.so").arg(baseName));
|
const QString soPath = QDir(libDir).filePath(QString("lib%2.so").arg(baseName));
|
||||||
QLibrary* library = new QLibrary(soPath);
|
QLibrary* library = new QLibrary(soPath);
|
||||||
|
|
||||||
if (!library->load())
|
if (!library->load())
|
||||||
@ -87,7 +86,7 @@ QLibrary* PluginInfo::loadLibrary(const QString& libDir) const
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString locale = QLocale::system().name();
|
const QString locale = QLocale::system().name();
|
||||||
QTranslator* translator = new QTranslator(library);
|
QTranslator* translator = new QTranslator(library);
|
||||||
|
|
||||||
translator->load(QString("%1/%2/%2_%3.qm").arg(path, baseName, locale));
|
translator->load(QString("%1/%2/%2_%3.qm").arg(path, baseName, locale));
|
||||||
@ -107,8 +106,8 @@ PluginInfoList PluginInfo::search(const QStringList& desktopFilesDirs, const QSt
|
|||||||
|
|
||||||
foreach (const QString &desktopFilesDir, desktopFilesDirs)
|
foreach (const QString &desktopFilesDir, desktopFilesDirs)
|
||||||
{
|
{
|
||||||
QDir dir(desktopFilesDir);
|
const QDir dir(desktopFilesDir);
|
||||||
QFileInfoList files = dir.entryInfoList(QStringList(nameFilter), QDir::Files | QDir::Readable);
|
const QFileInfoList files = dir.entryInfoList(QStringList(nameFilter), QDir::Files | QDir::Readable);
|
||||||
foreach (const QFileInfo &file, files)
|
foreach (const QFileInfo &file, files)
|
||||||
{
|
{
|
||||||
if (processed.contains(file.fileName()))
|
if (processed.contains(file.fileName()))
|
||||||
|
@ -33,15 +33,21 @@
|
|||||||
|
|
||||||
using namespace LXQt;
|
using namespace LXQt;
|
||||||
|
|
||||||
Power::Power(QObject *parent) :
|
Power::Power(bool useLxqtSessionProvider, QObject * parent /*= nullptr*/) :
|
||||||
QObject(parent)
|
QObject(parent)
|
||||||
{
|
{
|
||||||
mProviders.append(new CustomProvider(this));
|
mProviders.append(new CustomProvider(this));
|
||||||
|
if (useLxqtSessionProvider)
|
||||||
|
mProviders.append(new LXQtProvider(this));
|
||||||
mProviders.append(new SystemdProvider(this));
|
mProviders.append(new SystemdProvider(this));
|
||||||
mProviders.append(new UPowerProvider(this));
|
mProviders.append(new UPowerProvider(this));
|
||||||
mProviders.append(new ConsoleKitProvider(this));
|
mProviders.append(new ConsoleKitProvider(this));
|
||||||
mProviders.append(new LxSessionProvider(this));
|
mProviders.append(new LxSessionProvider(this));
|
||||||
mProviders.append(new LXQtProvider(this));
|
}
|
||||||
|
|
||||||
|
Power::Power(QObject * parent /*= nullptr*/)
|
||||||
|
: Power(true, parent)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,8 +56,16 @@ public:
|
|||||||
PowerSuspend /// Suspend the computer
|
PowerSuspend /// Suspend the computer
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Constructs a Power with parent.
|
/*!
|
||||||
explicit Power(QObject *parent = 0);
|
* Constructs the Power object.
|
||||||
|
* \param useLxqtSessionProvider indicates if the DBus methods
|
||||||
|
* provided by lxqt-session should be considered. This is useful to
|
||||||
|
* avoid recursion if the lxqt-session wants to provide some of the
|
||||||
|
* methods by itself with internal use of this object.
|
||||||
|
*/
|
||||||
|
explicit Power(bool useLxqtSessionProvider, QObject *parent = nullptr);
|
||||||
|
/// Constructs a Power with using the lxqt-session provider.
|
||||||
|
explicit Power(QObject *parent = nullptr);
|
||||||
|
|
||||||
/// Destroys the object.
|
/// Destroys the object.
|
||||||
virtual ~Power();
|
virtual ~Power();
|
||||||
|
@ -107,8 +107,8 @@ static bool dbusCall(const QString &service,
|
|||||||
|
|
||||||
// If the method no returns value, we believe that it was successful.
|
// If the method no returns value, we believe that it was successful.
|
||||||
return msg.arguments().isEmpty() ||
|
return msg.arguments().isEmpty() ||
|
||||||
msg.arguments().first().isNull() ||
|
msg.arguments().constFirst().isNull() ||
|
||||||
msg.arguments().first().toBool();
|
msg.arguments().constFirst().toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************
|
/************************************************
|
||||||
@ -156,10 +156,10 @@ static bool dbusCallSystemd(const QString &service,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If the method no returns value, we believe that it was successful.
|
// If the method no returns value, we believe that it was successful.
|
||||||
if (msg.arguments().isEmpty() || msg.arguments().first().isNull())
|
if (msg.arguments().isEmpty() || msg.arguments().constFirst().isNull())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
QString response = msg.arguments().first().toString();
|
QString response = msg.arguments().constFirst().toString();
|
||||||
qDebug() << "systemd:" << method << "=" << response;
|
qDebug() << "systemd:" << method << "=" << response;
|
||||||
return response == "yes" || response == "challenge";
|
return response == "yes" || response == "challenge";
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ bool dbusGetProperty(const QString &service,
|
|||||||
}
|
}
|
||||||
|
|
||||||
return !msg.arguments().isEmpty() &&
|
return !msg.arguments().isEmpty() &&
|
||||||
msg.arguments().first().value<QDBusVariant>().variant().toBool();
|
msg.arguments().constFirst().value<QDBusVariant>().variant().toBool();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -500,31 +500,45 @@ LXQtProvider::~LXQtProvider()
|
|||||||
|
|
||||||
bool LXQtProvider::canAction(Power::Action action) const
|
bool LXQtProvider::canAction(Power::Action action) const
|
||||||
{
|
{
|
||||||
|
QString command;
|
||||||
switch (action)
|
switch (action)
|
||||||
{
|
{
|
||||||
case Power::PowerLogout:
|
case Power::PowerLogout:
|
||||||
// there can be case when razo-session does not run
|
command = "canLogout";
|
||||||
return dbusCall(LXQT_SERVICE, LXQT_PATH, LXQT_SERVICE,
|
break;
|
||||||
QDBusConnection::sessionBus(), "canLogout",
|
case Power::PowerReboot:
|
||||||
PowerProvider::DontCheckDBUS);
|
command = "canReboot";
|
||||||
|
break;
|
||||||
|
case Power::PowerShutdown:
|
||||||
|
command = "canPowerOff";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// there can be case when lxqtsession-session does not run
|
||||||
|
return dbusCall(LXQT_SERVICE, LXQT_PATH, LXQT_SERVICE,
|
||||||
|
QDBusConnection::sessionBus(), command,
|
||||||
|
PowerProvider::DontCheckDBUS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool LXQtProvider::doAction(Power::Action action)
|
bool LXQtProvider::doAction(Power::Action action)
|
||||||
{
|
{
|
||||||
QString command;
|
QString command;
|
||||||
|
|
||||||
switch (action)
|
switch (action)
|
||||||
{
|
{
|
||||||
case Power::PowerLogout:
|
case Power::PowerLogout:
|
||||||
command = "logout";
|
command = "logout";
|
||||||
break;
|
break;
|
||||||
|
case Power::PowerReboot:
|
||||||
default:
|
command = "reboot";
|
||||||
return false;
|
break;
|
||||||
|
case Power::PowerShutdown:
|
||||||
|
command = "powerOff";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return dbusCall(LXQT_SERVICE,
|
return dbusCall(LXQT_SERVICE,
|
||||||
@ -594,12 +608,14 @@ HalProvider::~HalProvider()
|
|||||||
|
|
||||||
bool HalProvider::canAction(Power::Action action) const
|
bool HalProvider::canAction(Power::Action action) const
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(action)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool HalProvider::doAction(Power::Action action)
|
bool HalProvider::doAction(Power::Action action)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(action)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,14 +41,14 @@ namespace LXQt {
|
|||||||
|
|
||||||
class LXQT_API MessageBox: public QMessageBox
|
class LXQT_API MessageBox: public QMessageBox
|
||||||
{
|
{
|
||||||
Q_DECLARE_TR_FUNCTIONS(LXQt::MessageBox);
|
Q_DECLARE_TR_FUNCTIONS(LXQt::MessageBox)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MessageBox(QWidget *parent = 0): QMessageBox(parent) {}
|
explicit MessageBox(QWidget *parent = 0): QMessageBox(parent) {}
|
||||||
|
|
||||||
static QWidget *parentWidget()
|
static QWidget *parentWidget()
|
||||||
{
|
{
|
||||||
QWidgetList widgets = QApplication::topLevelWidgets();
|
const QWidgetList widgets = QApplication::topLevelWidgets();
|
||||||
|
|
||||||
if (widgets.count())
|
if (widgets.count())
|
||||||
return widgets.at(0);
|
return widgets.at(0);
|
||||||
@ -69,6 +69,8 @@ public:
|
|||||||
|
|
||||||
static void warning(const QString& title, const QString& text)
|
static void warning(const QString& title, const QString& text)
|
||||||
{
|
{
|
||||||
|
Q_UNUSED(title)
|
||||||
|
Q_UNUSED(text)
|
||||||
QMessageBox::warning(parentWidget(), tr("LXQt Power Manager Error"), tr("Hibernate failed."));
|
QMessageBox::warning(parentWidget(), tr("LXQt Power Manager Error"), tr("Hibernate failed."));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,7 +78,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
virtual void resizeEvent(QResizeEvent* event)
|
virtual void resizeEvent(QResizeEvent* event)
|
||||||
{
|
{
|
||||||
QRect screen = QApplication::desktop()->screenGeometry();
|
Q_UNUSED(event)
|
||||||
|
const QRect screen = QApplication::desktop()->screenGeometry();
|
||||||
move((screen.width() - this->width()) / 2,
|
move((screen.width() - this->width()) / 2,
|
||||||
(screen.height() - this->height()) / 2);
|
(screen.height() - this->height()) / 2);
|
||||||
|
|
||||||
|
@ -31,17 +31,17 @@ using namespace LXQt;
|
|||||||
|
|
||||||
LXQT_API bool ProgramFinder::programExists(const QString& command)
|
LXQT_API bool ProgramFinder::programExists(const QString& command)
|
||||||
{
|
{
|
||||||
QString program = programName(command);
|
const QString program = programName(command);
|
||||||
if (program[0] == QChar('/'))
|
if (program[0] == QChar('/'))
|
||||||
{
|
{
|
||||||
QFileInfo fi(program);
|
QFileInfo fi(program);
|
||||||
return fi.isExecutable() && fi.isFile();
|
return fi.isExecutable() && fi.isFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString path = qgetenv("PATH");
|
const QString path = qgetenv("PATH");
|
||||||
foreach (const QString& dirName, path.split(":", QString::SkipEmptyParts))
|
foreach (const QString& dirName, path.split(":", QString::SkipEmptyParts))
|
||||||
{
|
{
|
||||||
QFileInfo fi(QDir(dirName), program);
|
const QFileInfo fi(QDir(dirName), program);
|
||||||
if (fi.isExecutable() && fi.isFile())
|
if (fi.isExecutable() && fi.isFile())
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ void RotatedWidget::adjustContentSize()
|
|||||||
{
|
{
|
||||||
mContent->adjustSize();
|
mContent->adjustSize();
|
||||||
|
|
||||||
QSize before = size();
|
const QSize before = size();
|
||||||
|
|
||||||
adjustSize();
|
adjustSize();
|
||||||
|
|
||||||
@ -147,7 +147,7 @@ void RotatedWidget::paintEvent(QPaintEvent */*event*/)
|
|||||||
if (mOrigin == Qt::TopLeftCorner)
|
if (mOrigin == Qt::TopLeftCorner)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QSize sz = mContent->size();
|
const QSize sz = mContent->size();
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ static bool GetIntArrayProperty(XID window,
|
|||||||
|
|
||||||
class ScreenSaverPrivate
|
class ScreenSaverPrivate
|
||||||
{
|
{
|
||||||
Q_DECLARE_TR_FUNCTIONS(LXQt::ScreenSaver);
|
Q_DECLARE_TR_FUNCTIONS(LXQt::ScreenSaver)
|
||||||
Q_DECLARE_PUBLIC(ScreenSaver)
|
Q_DECLARE_PUBLIC(ScreenSaver)
|
||||||
ScreenSaver* const q_ptr;
|
ScreenSaver* const q_ptr;
|
||||||
|
|
||||||
@ -141,6 +141,7 @@ void ScreenSaverPrivate::_l_xdgProcess_finished(int err, QProcess::ExitStatus st
|
|||||||
{
|
{
|
||||||
// http://portland.freedesktop.org/xdg-utils-1.1.0-rc1/scripts/xdg-screensaver
|
// http://portland.freedesktop.org/xdg-utils-1.1.0-rc1/scripts/xdg-screensaver
|
||||||
|
|
||||||
|
Q_UNUSED(status)
|
||||||
Q_Q(ScreenSaver);
|
Q_Q(ScreenSaver);
|
||||||
if (err == 0)
|
if (err == 0)
|
||||||
emit q->activated();
|
emit q->activated();
|
||||||
|
@ -80,7 +80,8 @@ public:
|
|||||||
if (dir.cd(mParent->organizationName()) && dir.exists(file_name))
|
if (dir.cd(mParent->organizationName()) && dir.exists(file_name))
|
||||||
{
|
{
|
||||||
QSettings system_settings{dir.absoluteFilePath(file_name), QSettings::IniFormat};
|
QSettings system_settings{dir.absoluteFilePath(file_name), QSettings::IniFormat};
|
||||||
for (const QString & key : system_settings.allKeys())
|
const QStringList keys = system_settings.allKeys();
|
||||||
|
for (const QString & key : keys)
|
||||||
{
|
{
|
||||||
mParent->setValue(key, system_settings.value(key));
|
mParent->setValue(key, system_settings.value(key));
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,6 @@ namespace LXQt {
|
|||||||
|
|
||||||
class LXQT_API SingleApplication : public Application {
|
class LXQT_API SingleApplication : public Application {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_ENUMS(StartOptions)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/*!
|
/*!
|
||||||
@ -101,6 +100,7 @@ public:
|
|||||||
/** Don't exit if the connection to the D-Bus session bus fails.*/
|
/** Don't exit if the connection to the D-Bus session bus fails.*/
|
||||||
NoExitOnDBusFailure
|
NoExitOnDBusFailure
|
||||||
};
|
};
|
||||||
|
Q_ENUM(StartOptions)
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Construct a LXQt SingleApplication object.
|
* \brief Construct a LXQt SingleApplication object.
|
||||||
@ -153,6 +153,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
#define lxqtSingleApp (static_cast<LXQt::SingleApplication *>(qApp))
|
#define lxqtSingleApp (static_cast<LXQt::SingleApplication *>(qApp))
|
||||||
|
|
||||||
}; // namespace LXQt
|
} // namespace LXQt
|
||||||
|
|
||||||
#endif // LXQTSINGLEAPPLICATION_H
|
#endif // LXQTSINGLEAPPLICATION_H
|
||||||
|
@ -51,8 +51,8 @@ QStringList *getSearchPaths()
|
|||||||
if (searchPath == 0)
|
if (searchPath == 0)
|
||||||
{
|
{
|
||||||
searchPath = new QStringList();
|
searchPath = new QStringList();
|
||||||
*searchPath << QString(LXQT_SHARE_TRANSLATIONS_DIR);
|
|
||||||
*searchPath << XdgDirs::dataDirs(QLatin1Char('/') % LXQT_RELATIVE_SHARE_TRANSLATIONS_DIR);
|
*searchPath << XdgDirs::dataDirs(QLatin1Char('/') % LXQT_RELATIVE_SHARE_TRANSLATIONS_DIR);
|
||||||
|
*searchPath << QString(LXQT_SHARE_TRANSLATIONS_DIR);
|
||||||
searchPath->removeDuplicates();
|
searchPath->removeDuplicates();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ void Translator::setTranslationSearchPaths(const QStringList &paths)
|
|||||||
************************************************/
|
************************************************/
|
||||||
bool translate(const QString &name, const QString &owner)
|
bool translate(const QString &name, const QString &owner)
|
||||||
{
|
{
|
||||||
QString locale = QLocale::system().name();
|
const QString locale = QLocale::system().name();
|
||||||
QTranslator *appTranslator = new QTranslator(qApp);
|
QTranslator *appTranslator = new QTranslator(qApp);
|
||||||
|
|
||||||
QStringList *paths = getSearchPaths();
|
QStringList *paths = getSearchPaths();
|
||||||
@ -132,7 +132,7 @@ bool translate(const QString &name, const QString &owner)
|
|||||||
************************************************/
|
************************************************/
|
||||||
bool Translator::translateApplication(const QString &applicationName)
|
bool Translator::translateApplication(const QString &applicationName)
|
||||||
{
|
{
|
||||||
QString locale = QLocale::system().name();
|
const QString locale = QLocale::system().name();
|
||||||
QTranslator *qtTranslator = new QTranslator(qApp);
|
QTranslator *qtTranslator = new QTranslator(qApp);
|
||||||
|
|
||||||
if (qtTranslator->load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
|
if (qtTranslator->load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)))
|
||||||
@ -170,7 +170,7 @@ bool Translator::translatePlugin(const QString &pluginName, const QString& type)
|
|||||||
{
|
{
|
||||||
static QSet<QString> loadedPlugins;
|
static QSet<QString> loadedPlugins;
|
||||||
|
|
||||||
QString fullName = type % QChar('/') % pluginName;
|
const QString fullName = type % QChar('/') % pluginName;
|
||||||
if (loadedPlugins.contains(fullName))
|
if (loadedPlugins.contains(fullName))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user