From 889fe05f5b44222e804ff5fc0ad4af21dd4e05aa Mon Sep 17 00:00:00 2001 From: Edric Milaret <edric.ladent-milaret@savoirfairelinux.com> Date: Tue, 6 Oct 2015 12:38:32 -0400 Subject: [PATCH] Revert "transfer: fix segfault in ui" This reverts commit ee249bfab0b8622822608761bff9681e2d12291a. Change-Id: I040efbcbc5b67ae3267146ee41c2e4e47ecee3c4 --- transferdialog.cpp | 31 ++++++++----------------------- transferdialog.h | 12 ++---------- 2 files changed, 10 insertions(+), 33 deletions(-) diff --git a/transferdialog.cpp b/transferdialog.cpp index 10f23dd..df9da40 100644 --- a/transferdialog.cpp +++ b/transferdialog.cpp @@ -31,15 +31,13 @@ TransferDialog::TransferDialog(QWidget *parent) : this->setWindowFlags(Qt::CustomizeWindowHint); this->setWindowFlags(Qt::FramelessWindowHint); - activeProxy_ = new ActiveCallsProxyModel(CallModel::instance()); - activeProxy_->setDynamicSortFilter(false); - ui->activeCallsView->setModel(activeProxy_); + auto activeProxy = new ActiveCallsProxyModel(CallModel::instance()); + ui->activeCallsView->setModel(activeProxy); ui->activeCallsView->clearSelection(); } TransferDialog::~TransferDialog() { - removeProxyModel(); delete ui; } @@ -55,10 +53,8 @@ TransferDialog::showEvent(QShowEvent *event) void TransferDialog::on_transferButton_clicked() { - removeProxyModel(); - auto callList = CallModel::instance()->getActiveCalls(); - Q_FOREACH(Call* c, callList) { + for (auto c : callList) { if (c->state() == Call::State::CURRENT) { if (not ui->numberBar->text().isEmpty()) { auto number = PhoneDirectoryModel::instance()->getNumber(ui->numberBar->text()); @@ -72,29 +68,18 @@ TransferDialog::on_transferButton_clicked() } } -void TransferDialog::removeProxyModel() -{ - //This prevent a crash happening in Qt5.5 in QSortFilterProxyModel - ui->activeCallsView->setModel(nullptr); - if (activeProxy_) { - delete activeProxy_; - activeProxy_ = nullptr; - } -} - void TransferDialog::on_activeCallsView_doubleClicked(const QModelIndex &index) { - Q_UNUSED(index) - - removeProxyModel(); - auto callList = CallModel::instance()->getActiveCalls(); - Q_FOREACH(Call* c, callList) { + for (auto c : callList) { if (c->state() == Call::State::CURRENT) { - CallModel::instance()->attendedTransfer(c, selectedCall_); + auto selectedCall = CallModel::instance()->getCall(index); + if (c != selectedCall) { + CallModel::instance()->attendedTransfer(c, selectedCall); this->close(); return; + } } } } diff --git a/transferdialog.h b/transferdialog.h index a28fce0..0448af0 100644 --- a/transferdialog.h +++ b/transferdialog.h @@ -36,13 +36,8 @@ public: } virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const { - if (not sourceModel() || source_parent.isValid()) - return false; - auto idx = sourceModel()->index(source_row,0,source_parent); - if (not idx.isValid()) - return false; - return idx.data(static_cast<int>(Call::Role::State)) - .value<Call::State>() != Call::State::CURRENT; + return sourceModel()->index(source_row,0,source_parent) + .data(static_cast<int>(Call::Role::State)).value<Call::State>() != Call::State::CURRENT; } }; @@ -66,8 +61,5 @@ private slots: private: Ui::TransferDialog *ui; Call *selectedCall_; - ActiveCallsProxyModel *activeProxy_; - - void removeProxyModel(); }; -- GitLab