* @brief MainWindow::showContextMenu show us the (file or folder) context * menu * @param pos */
| 1167 | * @param pos |
| 1168 | */ |
| 1169 | void MainWindow::showContextMenu(const QPoint &pos) { |
| 1170 | QModelIndex index = ui->treeView->indexAt(pos); |
| 1171 | bool selected = true; |
| 1172 | if (!index.isValid()) { |
| 1173 | ui->treeView->clearSelection(); |
| 1174 | ui->actionDelete->setEnabled(false); |
| 1175 | ui->actionEdit->setEnabled(false); |
| 1176 | currentDir = ""; |
| 1177 | selected = false; |
| 1178 | } |
| 1179 | |
| 1180 | ui->treeView->setCurrentIndex(index); |
| 1181 | |
| 1182 | QPoint globalPos = ui->treeView->viewport()->mapToGlobal(pos); |
| 1183 | |
| 1184 | QFileInfo fileOrFolder = |
| 1185 | model.fileInfo(proxyModel.mapToSource(ui->treeView->currentIndex())); |
| 1186 | |
| 1187 | QMenu contextMenu; |
| 1188 | if (!selected || fileOrFolder.isDir()) { |
| 1189 | QAction *openFolder = |
| 1190 | contextMenu.addAction(tr("Open folder with file manager")); |
| 1191 | QAction *addFolder = contextMenu.addAction(tr("Add folder")); |
| 1192 | QAction *addPassword = contextMenu.addAction(tr("Add password")); |
| 1193 | QAction *users = contextMenu.addAction(tr("Users")); |
| 1194 | connect(openFolder, &QAction::triggered, this, &MainWindow::openFolder); |
| 1195 | connect(addFolder, &QAction::triggered, this, &MainWindow::addFolder); |
| 1196 | connect(addPassword, &QAction::triggered, this, &MainWindow::addPassword); |
| 1197 | connect(users, &QAction::triggered, this, &MainWindow::onUsers); |
| 1198 | } else if (fileOrFolder.isFile()) { |
| 1199 | QAction *edit = contextMenu.addAction(tr("Edit")); |
| 1200 | connect(edit, &QAction::triggered, this, &MainWindow::onEdit); |
| 1201 | } |
| 1202 | if (selected) { |
| 1203 | contextMenu.addSeparator(); |
| 1204 | if (fileOrFolder.isDir()) { |
| 1205 | QAction *renameFolder = contextMenu.addAction(tr("Rename folder")); |
| 1206 | connect(renameFolder, &QAction::triggered, this, |
| 1207 | &MainWindow::renameFolder); |
| 1208 | } else if (fileOrFolder.isFile()) { |
| 1209 | QAction *renamePassword = contextMenu.addAction(tr("Rename password")); |
| 1210 | connect(renamePassword, &QAction::triggered, this, |
| 1211 | &MainWindow::renamePassword); |
| 1212 | } |
| 1213 | QAction *deleteItem = contextMenu.addAction(tr("Delete")); |
| 1214 | connect(deleteItem, &QAction::triggered, this, &MainWindow::onDelete); |
| 1215 | if (fileOrFolder.isDir()) { |
| 1216 | QString dirPath = QDir::cleanPath( |
| 1217 | Util::getDir(ui->treeView->currentIndex(), false, model, proxyModel)); |
| 1218 | QAction *reencrypt = contextMenu.addAction(tr("Re-encrypt")); |
| 1219 | connect(reencrypt, &QAction::triggered, this, |
| 1220 | [this, dirPath]() { reencryptPath(dirPath); }); |
| 1221 | } |
| 1222 | } |
| 1223 | contextMenu.exec(globalPos); |
| 1224 | } |
| 1225 | |
| 1226 | /** |