Skip to content
Snippets Groups Projects
Commit 889fe05f authored by Edric Milaret's avatar Edric Milaret
Browse files

Revert "transfer: fix segfault in ui"

This reverts commit ee249bfa.

Change-Id: I040efbcbc5b67ae3267146ee41c2e4e47ecee3c4
parent ee249bfa
No related branches found
No related tags found
No related merge requests found
...@@ -31,15 +31,13 @@ TransferDialog::TransferDialog(QWidget *parent) : ...@@ -31,15 +31,13 @@ TransferDialog::TransferDialog(QWidget *parent) :
this->setWindowFlags(Qt::CustomizeWindowHint); this->setWindowFlags(Qt::CustomizeWindowHint);
this->setWindowFlags(Qt::FramelessWindowHint); this->setWindowFlags(Qt::FramelessWindowHint);
activeProxy_ = new ActiveCallsProxyModel(CallModel::instance()); auto activeProxy = new ActiveCallsProxyModel(CallModel::instance());
activeProxy_->setDynamicSortFilter(false); ui->activeCallsView->setModel(activeProxy);
ui->activeCallsView->setModel(activeProxy_);
ui->activeCallsView->clearSelection(); ui->activeCallsView->clearSelection();
} }
TransferDialog::~TransferDialog() TransferDialog::~TransferDialog()
{ {
removeProxyModel();
delete ui; delete ui;
} }
...@@ -55,10 +53,8 @@ TransferDialog::showEvent(QShowEvent *event) ...@@ -55,10 +53,8 @@ TransferDialog::showEvent(QShowEvent *event)
void void
TransferDialog::on_transferButton_clicked() TransferDialog::on_transferButton_clicked()
{ {
removeProxyModel();
auto callList = CallModel::instance()->getActiveCalls(); auto callList = CallModel::instance()->getActiveCalls();
Q_FOREACH(Call* c, callList) { for (auto c : callList) {
if (c->state() == Call::State::CURRENT) { if (c->state() == Call::State::CURRENT) {
if (not ui->numberBar->text().isEmpty()) { if (not ui->numberBar->text().isEmpty()) {
auto number = PhoneDirectoryModel::instance()->getNumber(ui->numberBar->text()); auto number = PhoneDirectoryModel::instance()->getNumber(ui->numberBar->text());
...@@ -72,32 +68,21 @@ TransferDialog::on_transferButton_clicked() ...@@ -72,32 +68,21 @@ 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 void
TransferDialog::on_activeCallsView_doubleClicked(const QModelIndex &index) TransferDialog::on_activeCallsView_doubleClicked(const QModelIndex &index)
{ {
Q_UNUSED(index)
removeProxyModel();
auto callList = CallModel::instance()->getActiveCalls(); auto callList = CallModel::instance()->getActiveCalls();
Q_FOREACH(Call* c, callList) { for (auto c : callList) {
if (c->state() == Call::State::CURRENT) { 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(); this->close();
return; return;
} }
} }
} }
}
void void
TransferDialog::on_activeCallsView_clicked(const QModelIndex &index) TransferDialog::on_activeCallsView_clicked(const QModelIndex &index)
......
...@@ -36,13 +36,8 @@ public: ...@@ -36,13 +36,8 @@ public:
} }
virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const
{ {
if (not sourceModel() || source_parent.isValid()) return sourceModel()->index(source_row,0,source_parent)
return false; .data(static_cast<int>(Call::Role::State)).value<Call::State>() != Call::State::CURRENT;
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;
} }
}; };
...@@ -66,8 +61,5 @@ private slots: ...@@ -66,8 +61,5 @@ private slots:
private: private:
Ui::TransferDialog *ui; Ui::TransferDialog *ui;
Call *selectedCall_; Call *selectedCall_;
ActiveCallsProxyModel *activeProxy_;
void removeProxyModel();
}; };
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment