mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-09-10 12:03:18 +02:00
mainapplication: use QScopedPointer and control the order of destruction
Change-Id: I48b9019acdb505cdde3da183a1022dea8eacebc0
This commit is contained in:
parent
9a5afd3918
commit
76eb198b9c
2 changed files with 25 additions and 14 deletions
|
@ -161,11 +161,20 @@ MainApplication::MainApplication(int& argc, char** argv)
|
|||
, engine_(new QQmlApplicationEngine())
|
||||
, connectivityMonitor_(new ConnectivityMonitor(this))
|
||||
, settingsManager_(new AppSettingsManager(this))
|
||||
, systemTray_(new SystemTray(settingsManager_, this))
|
||||
, systemTray_(new SystemTray(settingsManager_.get(), this))
|
||||
{
|
||||
QObject::connect(this, &QApplication::aboutToQuit, [this] { cleanup(); });
|
||||
}
|
||||
|
||||
MainApplication::~MainApplication()
|
||||
{
|
||||
engine_.reset();
|
||||
systemTray_.reset();
|
||||
settingsManager_.reset();
|
||||
lrcInstance_.reset();
|
||||
connectivityMonitor_.reset();
|
||||
}
|
||||
|
||||
bool
|
||||
MainApplication::init()
|
||||
{
|
||||
|
@ -194,7 +203,7 @@ MainApplication::init()
|
|||
gnutls_global_init();
|
||||
#endif
|
||||
|
||||
initLrc(results[opts::UPDATEURL].toString(), connectivityMonitor_);
|
||||
initLrc(results[opts::UPDATEURL].toString(), connectivityMonitor_.get());
|
||||
|
||||
#ifdef Q_OS_UNIX
|
||||
GlobalInstances::setDBusErrorHandler(std::make_unique<Interfaces::DBusErrorHandler>());
|
||||
|
@ -223,7 +232,7 @@ MainApplication::init()
|
|||
}
|
||||
#endif
|
||||
|
||||
connect(connectivityMonitor_, &ConnectivityMonitor::connectivityChanged, [this] {
|
||||
connect(connectivityMonitor_.get(), &ConnectivityMonitor::connectivityChanged, [this] {
|
||||
lrcInstance_->connectivityChanged();
|
||||
});
|
||||
|
||||
|
@ -414,14 +423,16 @@ void
|
|||
MainApplication::initQmlLayer()
|
||||
{
|
||||
// setup the adapters (their lifetimes are that of MainApplication)
|
||||
auto callAdapter = new CallAdapter(systemTray_, lrcInstance_.data(), this);
|
||||
auto messagesAdapter = new MessagesAdapter(settingsManager_, lrcInstance_.data(), this);
|
||||
auto conversationsAdapter = new ConversationsAdapter(systemTray_, lrcInstance_.data(), this);
|
||||
auto callAdapter = new CallAdapter(systemTray_.get(), lrcInstance_.data(), this);
|
||||
auto messagesAdapter = new MessagesAdapter(settingsManager_.get(), lrcInstance_.data(), this);
|
||||
auto conversationsAdapter = new ConversationsAdapter(systemTray_.get(),
|
||||
lrcInstance_.data(),
|
||||
this);
|
||||
auto avAdapter = new AvAdapter(lrcInstance_.data(), this);
|
||||
auto contactAdapter = new ContactAdapter(lrcInstance_.data(), this);
|
||||
auto accountAdapter = new AccountAdapter(settingsManager_, lrcInstance_.data(), this);
|
||||
auto utilsAdapter = new UtilsAdapter(systemTray_, lrcInstance_.data(), this);
|
||||
auto settingsAdapter = new SettingsAdapter(settingsManager_, lrcInstance_.data(), this);
|
||||
auto accountAdapter = new AccountAdapter(settingsManager_.get(), lrcInstance_.data(), this);
|
||||
auto utilsAdapter = new UtilsAdapter(systemTray_.get(), lrcInstance_.data(), this);
|
||||
auto settingsAdapter = new SettingsAdapter(settingsManager_.get(), lrcInstance_.data(), this);
|
||||
auto pluginAdapter = new PluginAdapter(lrcInstance_.data(), this);
|
||||
|
||||
// qml adapter registration
|
||||
|
@ -473,7 +484,7 @@ MainApplication::initSystray()
|
|||
engine_->quit();
|
||||
cleanup();
|
||||
});
|
||||
connect(systemTray_,
|
||||
connect(systemTray_.get(),
|
||||
&QSystemTrayIcon::activated,
|
||||
[this](QSystemTrayIcon::ActivationReason reason) {
|
||||
if (reason != QSystemTrayIcon::ActivationReason::Context)
|
||||
|
|
|
@ -71,7 +71,7 @@ class MainApplication : public QApplication
|
|||
|
||||
public:
|
||||
explicit MainApplication(int& argc, char** argv);
|
||||
~MainApplication() = default;
|
||||
~MainApplication();
|
||||
|
||||
bool init();
|
||||
void restoreApp();
|
||||
|
@ -94,9 +94,9 @@ private:
|
|||
|
||||
QScopedPointer<LRCInstance> lrcInstance_;
|
||||
|
||||
ConnectivityMonitor* connectivityMonitor_;
|
||||
AppSettingsManager* settingsManager_;
|
||||
SystemTray* systemTray_;
|
||||
QScopedPointer<ConnectivityMonitor> connectivityMonitor_;
|
||||
QScopedPointer<AppSettingsManager> settingsManager_;
|
||||
QScopedPointer<SystemTray> systemTray_;
|
||||
|
||||
ScreenInfo screenInfo_;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue