1
0
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:
orignal 2016-06-15 14:43:29 -04:00
parent 14c85fa975
commit eb96edbd31
2 changed files with 50 additions and 21 deletions

View File

@ -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)

View File

@ -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;
}
}
}
}