void CMainWindow::createFile() { if (!_currentFileList) return; const auto currentItem = _currentFileList->currentItemHash() != 0 ? _controller->itemByHash(_currentFileList->panelPosition(), _currentFileList->currentItemHash()) : CFileSystemObject(); const QString currentItemName = !currentItem.isCdUp() ? currentItem.fullName() : QString(); const QString fileName = QInputDialog::getText(this, tr("New file"), tr("Enter the name for the new file"), QLineEdit::Normal, currentItemName); if (!fileName.isEmpty()) { if (!_controller->createFile(_currentFileList->currentDir(), fileName)) QMessageBox::warning(this, tr("Failed to create a file"), tr("Failed to create the file %1").arg(fileName)); } }
// Indicates that an item was activated and appropriate action should be taken. Returns error message, if any FileOperationResultCode CController::itemActivated(qulonglong itemHash, Panel p) { const auto item = panel(p).itemByHash(itemHash); if (item.isDir()) { // Attempting to enter this dir const FileOperationResultCode result = setPath(p, item.fullAbsolutePath(), item.isCdUp() ? refreshCauseCdUp : refreshCauseForwardNavigation); return result; } else if (item.isFile()) { if (item.isExecutable()) // Attempting to launch this exe from the current directory return QProcess::startDetached(toPosixSeparators(item.fullAbsolutePath()), QStringList(), toPosixSeparators(item.parentDirPath())) ? rcOk : rcFail; else // It's probably not a binary file, try opening with openUrl return QDesktopServices::openUrl(QUrl::fromLocalFile(toPosixSeparators(item.fullAbsolutePath()))) ? rcOk : rcFail; } return rcFail; }