Skip to content
Snippets Groups Projects
Commit 76eb198b authored by Ming Rui Zhang's avatar Ming Rui Zhang
Browse files

mainapplication: use QScopedPointer and control the order of destruction

Change-Id: I48b9019acdb505cdde3da183a1022dea8eacebc0
parent 9a5afd39
No related branches found
No related tags found
No related merge requests found
...@@ -161,11 +161,20 @@ MainApplication::MainApplication(int& argc, char** argv) ...@@ -161,11 +161,20 @@ MainApplication::MainApplication(int& argc, char** argv)
, engine_(new QQmlApplicationEngine()) , engine_(new QQmlApplicationEngine())
, connectivityMonitor_(new ConnectivityMonitor(this)) , connectivityMonitor_(new ConnectivityMonitor(this))
, settingsManager_(new AppSettingsManager(this)) , settingsManager_(new AppSettingsManager(this))
, systemTray_(new SystemTray(settingsManager_, this)) , systemTray_(new SystemTray(settingsManager_.get(), this))
{ {
QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); }); QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); });
} }
MainApplication::~MainApplication()
{
engine_.reset();
systemTray_.reset();
settingsManager_.reset();
lrcInstance_.reset();
connectivityMonitor_.reset();
}
bool bool
MainApplication::init() MainApplication::init()
{ {
...@@ -194,7 +203,7 @@ MainApplication::init() ...@@ -194,7 +203,7 @@ MainApplication::init()
gnutls_global_init(); gnutls_global_init();
#endif #endif
initLrc(results[opts::UPDATEURL].toString(), connectivityMonitor_); initLrc(results[opts::UPDATEURL].toString(), connectivityMonitor_.get());
#ifdef Q_OS_UNIX #ifdef Q_OS_UNIX
GlobalInstances::setDBusErrorHandler(std::make_unique<Interfaces::DBusErrorHandler>()); GlobalInstances::setDBusErrorHandler(std::make_unique<Interfaces::DBusErrorHandler>());
...@@ -223,7 +232,7 @@ MainApplication::init() ...@@ -223,7 +232,7 @@ MainApplication::init()
} }
#endif #endif
connect(connectivityMonitor_, &ConnectivityMonitor::connectivityChanged, [this] { connect(connectivityMonitor_.get(), &ConnectivityMonitor::connectivityChanged, [this] {
lrcInstance_->connectivityChanged(); lrcInstance_->connectivityChanged();
}); });
...@@ -414,14 +423,16 @@ void ...@@ -414,14 +423,16 @@ void
MainApplication::initQmlLayer() MainApplication::initQmlLayer()
{ {
// setup the adapters (their lifetimes are that of MainApplication) // setup the adapters (their lifetimes are that of MainApplication)
auto callAdapter = new CallAdapter(systemTray_, lrcInstance_.data(), this); auto callAdapter = new CallAdapter(systemTray_.get(), lrcInstance_.data(), this);
auto messagesAdapter = new MessagesAdapter(settingsManager_, lrcInstance_.data(), this); auto messagesAdapter = new MessagesAdapter(settingsManager_.get(), lrcInstance_.data(), this);
auto conversationsAdapter = new ConversationsAdapter(systemTray_, lrcInstance_.data(), this); auto conversationsAdapter = new ConversationsAdapter(systemTray_.get(),
lrcInstance_.data(),
this);
auto avAdapter = new AvAdapter(lrcInstance_.data(), this); auto avAdapter = new AvAdapter(lrcInstance_.data(), this);
auto contactAdapter = new ContactAdapter(lrcInstance_.data(), this); auto contactAdapter = new ContactAdapter(lrcInstance_.data(), this);
auto accountAdapter = new AccountAdapter(settingsManager_, lrcInstance_.data(), this); auto accountAdapter = new AccountAdapter(settingsManager_.get(), lrcInstance_.data(), this);
auto utilsAdapter = new UtilsAdapter(systemTray_, lrcInstance_.data(), this); auto utilsAdapter = new UtilsAdapter(systemTray_.get(), lrcInstance_.data(), this);
auto settingsAdapter = new SettingsAdapter(settingsManager_, lrcInstance_.data(), this); auto settingsAdapter = new SettingsAdapter(settingsManager_.get(), lrcInstance_.data(), this);
auto pluginAdapter = new PluginAdapter(lrcInstance_.data(), this); auto pluginAdapter = new PluginAdapter(lrcInstance_.data(), this);
// qml adapter registration // qml adapter registration
...@@ -473,7 +484,7 @@ MainApplication::initSystray() ...@@ -473,7 +484,7 @@ MainApplication::initSystray()
engine_->quit(); engine_->quit();
cleanup(); cleanup();
}); });
connect(systemTray_, connect(systemTray_.get(),
&QSystemTrayIcon::activated, &QSystemTrayIcon::activated,
[this](QSystemTrayIcon::ActivationReason reason) { [this](QSystemTrayIcon::ActivationReason reason) {
if (reason != QSystemTrayIcon::ActivationReason::Context) if (reason != QSystemTrayIcon::ActivationReason::Context)
......
...@@ -71,7 +71,7 @@ class MainApplication : public QApplication ...@@ -71,7 +71,7 @@ class MainApplication : public QApplication
public: public:
explicit MainApplication(int& argc, char** argv); explicit MainApplication(int& argc, char** argv);
~MainApplication() = default; ~MainApplication();
bool init(); bool init();
void restoreApp(); void restoreApp();
...@@ -94,9 +94,9 @@ private: ...@@ -94,9 +94,9 @@ private:
QScopedPointer<LRCInstance> lrcInstance_; QScopedPointer<LRCInstance> lrcInstance_;
ConnectivityMonitor* connectivityMonitor_; QScopedPointer<ConnectivityMonitor> connectivityMonitor_;
AppSettingsManager* settingsManager_; QScopedPointer<AppSettingsManager> settingsManager_;
SystemTray* systemTray_; QScopedPointer<SystemTray> systemTray_;
ScreenInfo screenInfo_; ScreenInfo screenInfo_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment