1 /*
2     SPDX-FileCopyrightText: 2015 Daniel Vrátil <dvratil@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include <QObject>
10 #include <QThread>
11 
12 namespace Akonadi
13 {
14 namespace Server
15 {
16 class AkThread : public QObject
17 {
18     Q_OBJECT
19 public:
20     enum StartMode {
21         AutoStart,
22         ManualStart,
23         NoThread // for unit-tests
24     };
25 
26     explicit AkThread(const QString &objectName, QThread::Priority priority = QThread::InheritPriority, QObject *parent = nullptr);
27     explicit AkThread(const QString &objectName, StartMode startMode, QThread::Priority priority = QThread::InheritPriority, QObject *parent = nullptr);
28     ~AkThread() override;
29 
30 protected:
31     void quitThread();
32     void startThread();
33 
34 protected Q_SLOTS:
35     virtual void init();
36     virtual void quit();
37 
38 private:
39     StartMode m_startMode = AutoStart;
40 };
41 
42 }
43 }
44 
45