void QNetworkProtocol::processOperation( QNetworkOperation *op ) { if ( !op ) return; switch ( op->operation() ) { case OpListChildren: operationListChildren( op ); break; case OpMkdir: operationMkDir( op ); break; case OpRemove: operationRemove( op ); break; case OpRename: operationRename( op ); break; case OpGet: operationGet( op ); break; case OpPut: operationPut( op ); break; } }
//----------------------------------------------------------------------------- void SetupTabMatrix::on_tableViewOperations_customContextMenuRequested(const QPoint &point) { QModelIndex index = this->ui->tableViewOperations->indexAt(point); QItemSelectionModel *selection = this->ui->tableViewOperations->selectionModel(); if (this->mMenu != NULL) { delete this->mMenu; this->mMenu = NULL; } if (index.isValid()) { MatrixPreviewModel::RowType type = this->mMatrixModel->rowType(index.row()); QModelIndexList list = selection->selectedIndexes(); switch (type) { case MatrixPreviewModel::Source: { bool found = false; for (int i = 0; i < list.length() && !found; i++) { if (list.at(i).row() == 0) found = true; } if (found) { this->mMenu = new QMenu(tr("Source"), this); QMenu *left = new QMenu(tr("Add \"Left Shift\""), this->mMenu); QMenu *right = new QMenu(tr("Add \"Right Shift\""), this->mMenu); this->mMenu->addMenu(left); this->mMenu->addMenu(right); for (int i = 0; i < 32; i++) { QAction *action = left->addAction(QString("<< %1").arg(i), this, SLOT(operationAdd())); action->setData(QVariant(-i)); action = right->addAction(QString(">> %1").arg(i), this, SLOT(operationAdd())); action->setData(QVariant(i)); } this->mMenu->exec(this->ui->tableViewOperations->mapToGlobal(point)); } break; } case MatrixPreviewModel::Operation: { this->mMenu = new QMenu(tr("Operation"), this); int operationIndex = index.row() - 1; quint32 mask; int shift; bool left; this->mPreset->matrix()->operation(operationIndex, &mask, &shift, &left); QAction *actionLeft = this->mMenu->addAction(tr("Shift left"), this, SLOT(operationShift())); QAction *actionRight = this->mMenu->addAction(tr("Shift right"), this, SLOT(operationShift())); QAction *actionRemove = this->mMenu->addAction(tr("Remove"), this, SLOT(operationRemove())); Q_UNUSED(actionRemove) quint32 data = operationIndex; actionLeft->setData(QVariant(data | 0x80000000)); actionRight->setData(QVariant(data)); actionRemove->setData(QVariant(data)); if (shift >= 31) { if (left) actionLeft->setEnabled(false); else actionRight->setEnabled(false); } this->mMenu->exec(this->ui->tableViewOperations->mapToGlobal(point)); break; } case MatrixPreviewModel::MaskUsed: case MatrixPreviewModel::MaskAnd: case MatrixPreviewModel::MaskOr: case MatrixPreviewModel::MaskFill: { this->mMenu = new QMenu(tr("Mask"), this); quint32 data = (quint32)type; quint32 bits = 0; for (int i = 0; i < list.length(); i++) { if (list.at(i).row() == index.row()) { bits |= 0x00000001 << (31 - list.at(i).column()); } } // show menu if more than 0 bits was selected if (bits != 0) { QList<QVariant> parameters; parameters.append(QVariant(data)); parameters.append(QVariant(bits)); parameters.append(QVariant(true)); QAction *actionSet = this->mMenu->addAction(tr("Set 1"), this, SLOT(maskReset())); actionSet->setData(parameters); QAction *actionReset = this->mMenu->addAction(tr("Set 0"), this, SLOT(maskReset())); parameters.replace(2, QVariant(false)); actionReset->setData(parameters); } this->mMenu->exec(this->ui->tableViewOperations->mapToGlobal(point)); break; } default: break; } } }