File indexing completed on 2024-04-28 03:52:03

0001 /*
0002  * BluezQt - Asynchronous Bluez wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2014 David Rosca <nowrep@gmail.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #include "initmanagerjob.h"
0010 #include "debug.h"
0011 #include "manager.h"
0012 #include "manager_p.h"
0013 
0014 namespace BluezQt
0015 {
0016 class InitManagerJobPrivate : public QObject
0017 {
0018 public:
0019     explicit InitManagerJobPrivate(InitManagerJob *q, Manager *manager);
0020 
0021     void doStart();
0022     void initError(const QString &errorText);
0023     void initFinished();
0024 
0025     InitManagerJob *q;
0026     Manager *m_manager;
0027 };
0028 
0029 InitManagerJobPrivate::InitManagerJobPrivate(InitManagerJob *q, Manager *manager)
0030     : QObject(q)
0031     , q(q)
0032     , m_manager(manager)
0033 {
0034 }
0035 
0036 void InitManagerJobPrivate::doStart()
0037 {
0038     if (m_manager->d->m_initialized) {
0039         qCWarning(BLUEZQT) << "InitManagerJob: Manager already initialized!";
0040         q->emitResult();
0041         return;
0042     }
0043 
0044     m_manager->d->init();
0045     connect(m_manager->d.get(), &ManagerPrivate::initError, this, &InitManagerJobPrivate::initError);
0046     connect(m_manager->d.get(), &ManagerPrivate::initFinished, this, &InitManagerJobPrivate::initFinished);
0047 }
0048 
0049 void InitManagerJobPrivate::initError(const QString &errorText)
0050 {
0051     qCWarning(BLUEZQT) << "GetManagerJob Error:" << errorText;
0052 
0053     q->setError(InitManagerJob::UserDefinedError);
0054     q->setErrorText(errorText);
0055     q->emitResult();
0056 }
0057 
0058 void InitManagerJobPrivate::initFinished()
0059 {
0060     q->emitResult();
0061 }
0062 
0063 InitManagerJob::InitManagerJob(Manager *manager)
0064     : Job(manager)
0065     , d(new InitManagerJobPrivate(this, manager))
0066 {
0067 }
0068 
0069 InitManagerJob::~InitManagerJob()
0070 {
0071     if (isRunning()) {
0072         qCWarning(BLUEZQT) << "InitManagerJob Error: Job was deleted before finished!";
0073 
0074         setError(UserDefinedError);
0075         setErrorText(QStringLiteral("Job was deleted before finished."));
0076         emitResult();
0077     }
0078 }
0079 
0080 Manager *InitManagerJob::manager() const
0081 {
0082     return d->m_manager;
0083 }
0084 
0085 void InitManagerJob::doStart()
0086 {
0087     d->doStart();
0088 }
0089 
0090 void InitManagerJob::doEmitResult()
0091 {
0092     Q_EMIT result(this);
0093 }
0094 
0095 } // namespace BluezQt
0096 
0097 #include "moc_initmanagerjob.cpp"