mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-22 04:04:16 +00:00
separate DaemonQT and DaemonQTImpl
This commit is contained in:
parent
14c85fa975
commit
eb96edbd31
8
Daemon.h
8
Daemon.h
@ -1,6 +1,7 @@
|
||||
#ifndef DAEMON_H__
|
||||
#define DAEMON_H__
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace i2p
|
||||
@ -32,6 +33,7 @@ namespace i2p
|
||||
|
||||
#if defined(QT_GUI_LIB) // check if QT
|
||||
#define Daemon i2p::util::DaemonQT::Instance()
|
||||
class DaemonQTImpl;
|
||||
class DaemonQT: public i2p::util::Daemon_Singleton
|
||||
{
|
||||
public:
|
||||
@ -43,9 +45,11 @@ namespace i2p
|
||||
}
|
||||
|
||||
bool init(int argc, char* argv[]);
|
||||
bool start();
|
||||
bool stop();
|
||||
void run ();
|
||||
|
||||
private:
|
||||
|
||||
std::shared_ptr<DaemonQTImpl> m_Impl;
|
||||
};
|
||||
|
||||
#elif defined(_WIN32)
|
||||
|
@ -8,32 +8,57 @@ namespace i2p
|
||||
{
|
||||
namespace util
|
||||
{
|
||||
std::unique_ptr<QApplication> app;
|
||||
class DaemonQTImpl: public std::enable_shared_from_this<DaemonQTImpl>
|
||||
{
|
||||
public:
|
||||
|
||||
DaemonQTImpl (int argc, char* argv[]):
|
||||
m_App (argc, argv)
|
||||
{
|
||||
}
|
||||
|
||||
void Run ()
|
||||
{
|
||||
MainWindow w;
|
||||
w.show ();
|
||||
m_App.exec();
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
void StartDaemon ()
|
||||
{
|
||||
Daemon.start ();
|
||||
}
|
||||
|
||||
void StopDaemon ()
|
||||
{
|
||||
Daemon.stop ();
|
||||
}
|
||||
|
||||
bool IsRunning () const
|
||||
{
|
||||
return Daemon.running;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
QApplication m_App;
|
||||
};
|
||||
|
||||
bool DaemonQT::init(int argc, char* argv[])
|
||||
{
|
||||
app.reset (new QApplication (argc, argv));
|
||||
m_Impl = std::make_shared<DaemonQTImpl> (argc, argv);
|
||||
return Daemon_Singleton::init(argc, argv);
|
||||
}
|
||||
|
||||
bool DaemonQT::start()
|
||||
{
|
||||
return Daemon_Singleton::start();
|
||||
}
|
||||
|
||||
bool DaemonQT::stop()
|
||||
{
|
||||
return Daemon_Singleton::stop();
|
||||
}
|
||||
|
||||
void DaemonQT::run ()
|
||||
{
|
||||
MainWindow w;
|
||||
w.show ();
|
||||
if (app)
|
||||
{
|
||||
app->exec();
|
||||
app.reset (nullptr);
|
||||
}
|
||||
if (m_Impl)
|
||||
{
|
||||
m_Impl->Run ();
|
||||
m_Impl = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user