Fixed crash with lambas in connections of deleted objects
This commit is contained in:
@@ -7,7 +7,7 @@ BookingsModel::BookingsModel(StripsWidget &stripsWidget, QObject *parent) :
|
|||||||
m_stripsWidget(stripsWidget)
|
m_stripsWidget(stripsWidget)
|
||||||
{
|
{
|
||||||
connect(&stripsWidget, &StripsWidget::bookingsChanged, this, &BookingsModel::bookingsChanged);
|
connect(&stripsWidget, &StripsWidget::bookingsChanged, this, &BookingsModel::bookingsChanged);
|
||||||
connect(&stripsWidget, &StripsWidget::refreshingBookingsChanged, [=](bool refreshing){ enabledChanged(!refreshing); });
|
connect(&stripsWidget, &StripsWidget::refreshingBookingsChanged, this, &BookingsModel::refreshingChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
StripsWidget &BookingsModel::stripsWidget() const
|
StripsWidget &BookingsModel::stripsWidget() const
|
||||||
@@ -86,3 +86,8 @@ void BookingsModel::bookingsChanged()
|
|||||||
beginResetModel();
|
beginResetModel();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BookingsModel::refreshingChanged(bool refreshing)
|
||||||
|
{
|
||||||
|
Q_EMIT enabledChanged(!refreshing);
|
||||||
|
}
|
||||||
|
@@ -32,6 +32,7 @@ Q_SIGNALS:
|
|||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void bookingsChanged();
|
void bookingsChanged();
|
||||||
|
void refreshingChanged(bool refreshing);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
StripsWidget &m_stripsWidget;
|
StripsWidget &m_stripsWidget;
|
||||||
|
@@ -7,7 +7,7 @@ TimeAssignmentsModel::TimeAssignmentsModel(StripsWidget &stripsWidget, QObject *
|
|||||||
m_stripsWidget(stripsWidget)
|
m_stripsWidget(stripsWidget)
|
||||||
{
|
{
|
||||||
connect(&stripsWidget, &StripsWidget::timeAssignmentsChanged, this, &TimeAssignmentsModel::timeAssignmentsChanged);
|
connect(&stripsWidget, &StripsWidget::timeAssignmentsChanged, this, &TimeAssignmentsModel::timeAssignmentsChanged);
|
||||||
connect(&stripsWidget, &StripsWidget::refreshingTimeAssignmentsChanged, [=](bool refreshing){ enabledChanged(!refreshing); });
|
connect(&stripsWidget, &StripsWidget::refreshingTimeAssignmentsChanged, this, &TimeAssignmentsModel::refreshingChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
StripsWidget &TimeAssignmentsModel::stripsWidget() const
|
StripsWidget &TimeAssignmentsModel::stripsWidget() const
|
||||||
@@ -90,3 +90,8 @@ void TimeAssignmentsModel::timeAssignmentsChanged()
|
|||||||
beginResetModel();
|
beginResetModel();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TimeAssignmentsModel::refreshingChanged(bool refreshing)
|
||||||
|
{
|
||||||
|
Q_EMIT enabledChanged(!refreshing);
|
||||||
|
}
|
||||||
|
@@ -27,22 +27,8 @@ UpdaterDialog::UpdaterDialog(MainWindow &mainWindow) :
|
|||||||
|
|
||||||
setAttribute(Qt::WA_DeleteOnClose);
|
setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, [=]() {
|
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &UpdaterDialog::acceptedSlot);
|
||||||
if(ui->checkBoxDontShow->isChecked())
|
connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &UpdaterDialog::rejectedSlot);
|
||||||
m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate());
|
|
||||||
|
|
||||||
if(!QDesktopServices::openUrl(m_url))
|
|
||||||
QMessageBox::warning(this, tr("Could not open default webbrowser!"), tr("Could not open default webbrowser!"));
|
|
||||||
|
|
||||||
accept();
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(ui->buttonBox, &QDialogButtonBox::rejected, this, [=](){
|
|
||||||
if(ui->checkBoxDontShow->isChecked())
|
|
||||||
m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate());
|
|
||||||
|
|
||||||
reject();
|
|
||||||
});
|
|
||||||
|
|
||||||
auto url = m_mainWindow.settings().value(QStringLiteral("UpdaterPlugin/url"),
|
auto url = m_mainWindow.settings().value(QStringLiteral("UpdaterPlugin/url"),
|
||||||
QUrl(QStringLiteral("https://api.github.com/repos/0xFEEDC0DE64/QtZeiterfassung/releases"))).toUrl();
|
QUrl(QStringLiteral("https://api.github.com/repos/0xFEEDC0DE64/QtZeiterfassung/releases"))).toUrl();
|
||||||
@@ -55,6 +41,25 @@ UpdaterDialog::~UpdaterDialog()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void UpdaterDialog::acceptedSlot()
|
||||||
|
{
|
||||||
|
if(ui->checkBoxDontShow->isChecked())
|
||||||
|
m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate());
|
||||||
|
|
||||||
|
if(!QDesktopServices::openUrl(m_url))
|
||||||
|
QMessageBox::warning(this, tr("Could not open default webbrowser!"), tr("Could not open default webbrowser!"));
|
||||||
|
|
||||||
|
accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdaterDialog::rejectedSlot()
|
||||||
|
{
|
||||||
|
if(ui->checkBoxDontShow->isChecked())
|
||||||
|
m_mainWindow.settings().setValue(QStringLiteral("UpdaterPlugin/lastUpdateCheck"), QDate::currentDate());
|
||||||
|
|
||||||
|
reject();
|
||||||
|
}
|
||||||
|
|
||||||
void UpdaterDialog::finished()
|
void UpdaterDialog::finished()
|
||||||
{
|
{
|
||||||
if(m_reply->error() != QNetworkReply::NoError)
|
if(m_reply->error() != QNetworkReply::NoError)
|
||||||
|
@@ -20,6 +20,8 @@ public:
|
|||||||
~UpdaterDialog();
|
~UpdaterDialog();
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
|
void acceptedSlot();
|
||||||
|
void rejectedSlot();
|
||||||
void finished();
|
void finished();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -16,8 +16,6 @@ UpdaterPlugin::UpdaterPlugin(QObject *parent) :
|
|||||||
|
|
||||||
void UpdaterPlugin::attachTo(MainWindow &mainWindow)
|
void UpdaterPlugin::attachTo(MainWindow &mainWindow)
|
||||||
{
|
{
|
||||||
qDebug() << "called";
|
|
||||||
|
|
||||||
if(mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate().isNull() ||
|
if(mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate().isNull() ||
|
||||||
mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate() < QDate::currentDate())
|
mainWindow.settings().value(QStringLiteral("UpdaterPlugin/lastUpdateCheck")).toDate() < QDate::currentDate())
|
||||||
new UpdaterDialog(mainWindow);
|
new UpdaterDialog(mainWindow);
|
||||||
|
@@ -19,8 +19,6 @@ namespace Ui { class MainWindow; }
|
|||||||
class ZeiterfassungSettings;
|
class ZeiterfassungSettings;
|
||||||
class StripFactory;
|
class StripFactory;
|
||||||
class StripsWidget;
|
class StripsWidget;
|
||||||
class BookingsModel;
|
|
||||||
class TimeAssignmentsModel;
|
|
||||||
|
|
||||||
class ZEITERFASSUNGLIBSHARED_EXPORT MainWindow : public QMainWindow
|
class ZEITERFASSUNGLIBSHARED_EXPORT MainWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
@@ -70,9 +68,6 @@ private:
|
|||||||
std::unique_ptr<GetProjectsReply> m_getProjectsReply;
|
std::unique_ptr<GetProjectsReply> m_getProjectsReply;
|
||||||
std::unique_ptr<GetAuswertungReply> m_getAuswertungReply;
|
std::unique_ptr<GetAuswertungReply> m_getAuswertungReply;
|
||||||
|
|
||||||
BookingsModel *m_bookingsModel;
|
|
||||||
TimeAssignmentsModel *m_timeAssignmentsModel;
|
|
||||||
|
|
||||||
QMap<QString, QString> m_projects;
|
QMap<QString, QString> m_projects;
|
||||||
|
|
||||||
QDate m_auswertungDate;
|
QDate m_auswertungDate;
|
||||||
|
Reference in New Issue
Block a user