Changeset View
Changeset View
Standalone View
Standalone View
src/filewidgets/knewfilemenu.cpp
Show First 20 Lines • Show All 236 Lines • ▼ Show 20 Line(s) | |||||
237 | 237 | | |||
238 | class KNewFileMenuPrivate | 238 | class KNewFileMenuPrivate | ||
239 | { | 239 | { | ||
240 | public: | 240 | public: | ||
241 | KNewFileMenuPrivate(KNewFileMenu *qq) | 241 | KNewFileMenuPrivate(KNewFileMenu *qq) | ||
242 | : m_menuItemsVersion(0), | 242 | : m_menuItemsVersion(0), | ||
243 | m_modal(true), | 243 | m_modal(true), | ||
244 | m_viewShowsHiddenFiles(false), | 244 | m_viewShowsHiddenFiles(false), | ||
245 | m_firstFileEntry(nullptr), | ||||
245 | q(qq) | 246 | q(qq) | ||
246 | {} | 247 | {} | ||
247 | 248 | | |||
248 | bool checkSourceExists(const QString &src); | 249 | bool checkSourceExists(const QString &src); | ||
249 | 250 | | |||
250 | /** | 251 | /** | ||
251 | * Asks user whether to create a hidden directory with a dialog | 252 | * Asks user whether to create a hidden directory with a dialog | ||
252 | */ | 253 | */ | ||
▲ Show 20 Lines • Show All 114 Lines • ▼ Show 20 Line(s) | |||||
367 | */ | 368 | */ | ||
368 | QList<QUrl> m_popupFiles; | 369 | QList<QUrl> m_popupFiles; | ||
369 | 370 | | |||
370 | QStringList m_supportedMimeTypes; | 371 | QStringList m_supportedMimeTypes; | ||
371 | QString m_tempFileToDelete; // set when a tempfile was created for a Type=URL desktop file | 372 | QString m_tempFileToDelete; // set when a tempfile was created for a Type=URL desktop file | ||
372 | QString m_text; | 373 | QString m_text; | ||
373 | bool m_viewShowsHiddenFiles; | 374 | bool m_viewShowsHiddenFiles; | ||
374 | 375 | | |||
376 | KNewFileMenuSingleton::Entry *m_firstFileEntry; | ||||
377 | | ||||
375 | KNewFileMenu *q; | 378 | KNewFileMenu *q; | ||
376 | 379 | | |||
377 | KNewFileMenuCopyData m_copyData; | 380 | KNewFileMenuCopyData m_copyData; | ||
378 | }; | 381 | }; | ||
379 | 382 | | |||
380 | bool KNewFileMenuPrivate::checkSourceExists(const QString &src) | 383 | bool KNewFileMenuPrivate::checkSourceExists(const QString &src) | ||
381 | { | 384 | { | ||
382 | if (!QFile::exists(src)) { | 385 | if (!QFile::exists(src)) { | ||
▲ Show 20 Lines • Show All 361 Lines • ▼ Show 20 Line(s) | 696 | } else { | |||
744 | } else if (KDesktopFile::isDesktopFile(templatePath)) { | 747 | } else if (KDesktopFile::isDesktopFile(templatePath)) { | ||
745 | KDesktopFile df(templatePath); | 748 | KDesktopFile df(templatePath); | ||
746 | if (df.readType() == QLatin1String("FSDevice")) { | 749 | if (df.readType() == QLatin1String("FSDevice")) { | ||
747 | m_menuDev->menu()->addAction(act); | 750 | m_menuDev->menu()->addAction(act); | ||
748 | } else { | 751 | } else { | ||
749 | menu->addAction(act); | 752 | menu->addAction(act); | ||
750 | } | 753 | } | ||
751 | } else { | 754 | } else { | ||
755 | if (!m_firstFileEntry) { | ||||
elvisangelaccio: `!m_firstFileEntry` | |||||
756 | m_firstFileEntry = &entry; | ||||
757 | // If there is a shortcut available in the action collection, use it. | ||||
758 | QAction *act2 = m_actionCollection->action(QStringLiteral("create_file")); | ||||
759 | if (act2) { | ||||
760 | act->setShortcuts(act2->shortcuts()); | ||||
761 | // Both actions have now the same shortcut, so this will prevent the "Ambiguous shortcut detected" dialog. | ||||
762 | act->setShortcutContext(Qt::WidgetShortcut); | ||||
763 | // We also need to react to shortcut changes. | ||||
764 | QObject::connect(act2, &QAction::changed, act, [=]() { | ||||
765 | act->setShortcuts(act2->shortcuts()); | ||||
766 | }); | ||||
767 | } | ||||
768 | } | ||||
752 | menu->addAction(act); | 769 | menu->addAction(act); | ||
753 | } | 770 | } | ||
754 | } | 771 | } | ||
755 | } | 772 | } | ||
756 | lastTemplatePath = entry.templatePath; | 773 | lastTemplatePath = entry.templatePath; | ||
757 | } else { // Separate system from personal templates | 774 | } else { // Separate system from personal templates | ||
758 | Q_ASSERT(entry.entryType != 0); | 775 | Q_ASSERT(entry.entryType != 0); | ||
759 | menu->addSeparator(); | 776 | menu->addSeparator(); | ||
▲ Show 20 Lines • Show All 461 Lines • ▼ Show 20 Line(s) | 1191 | { | |||
1221 | 1238 | | |||
1222 | d->m_fileDialog = fileDialog; | 1239 | d->m_fileDialog = fileDialog; | ||
1223 | 1240 | | |||
1224 | fileDialog->show(); | 1241 | fileDialog->show(); | ||
1225 | lineEdit->selectAll(); | 1242 | lineEdit->selectAll(); | ||
1226 | lineEdit->setFocus(); | 1243 | lineEdit->setFocus(); | ||
1227 | } | 1244 | } | ||
1228 | 1245 | | |||
1246 | void KNewFileMenu::createFile() | ||||
1247 | { | ||||
1248 | if (d->m_popupFiles.isEmpty()) { | ||||
1249 | return; | ||||
1250 | } | ||||
1251 | | ||||
1252 | checkUpToDate(); | ||||
1253 | if (!d->m_firstFileEntry) { | ||||
1254 | return; | ||||
1255 | } | ||||
1256 | | ||||
1257 | d->executeRealFileOrDir(*d->m_firstFileEntry); | ||||
1258 | } | ||||
1259 | | ||||
1229 | bool KNewFileMenu::isModal() const | 1260 | bool KNewFileMenu::isModal() const | ||
1230 | { | 1261 | { | ||
1231 | return d->m_modal; | 1262 | return d->m_modal; | ||
1232 | } | 1263 | } | ||
1233 | 1264 | | |||
1234 | QList<QUrl> KNewFileMenu::popupFiles() const | 1265 | QList<QUrl> KNewFileMenu::popupFiles() const | ||
1235 | { | 1266 | { | ||
1236 | return d->m_popupFiles; | 1267 | return d->m_popupFiles; | ||
1237 | } | 1268 | } | ||
1238 | 1269 | | |||
1239 | void KNewFileMenu::setModal(bool modal) | 1270 | void KNewFileMenu::setModal(bool modal) | ||
1240 | { | 1271 | { | ||
1241 | d->m_modal = modal; | 1272 | d->m_modal = modal; | ||
1242 | } | 1273 | } | ||
1243 | 1274 | | |||
1244 | void KNewFileMenu::setPopupFiles(const QList<QUrl> &files) | 1275 | void KNewFileMenu::setPopupFiles(const QList<QUrl> &files) | ||
1245 | { | 1276 | { | ||
1246 | d->m_popupFiles = files; | 1277 | d->m_popupFiles = files; | ||
1247 | if (files.isEmpty()) { | 1278 | if (files.isEmpty()) { | ||
1248 | d->m_newMenuGroup->setEnabled(false); | 1279 | d->m_newMenuGroup->setEnabled(false); | ||
1249 | } else { | 1280 | } else { | ||
1250 | QUrl firstUrl = files.first(); | 1281 | QUrl firstUrl = files.first(); | ||
1251 | if (KProtocolManager::supportsWriting(firstUrl)) { | 1282 | if (KProtocolManager::supportsWriting(firstUrl)) { | ||
1252 | d->m_newMenuGroup->setEnabled(true); | 1283 | d->m_newMenuGroup->setEnabled(true); | ||
1253 | if (d->m_newDirAction) { | 1284 | if (d->m_newDirAction) { | ||
1254 | d->m_newDirAction->setEnabled(KProtocolManager::supportsMakeDir(firstUrl)); // e.g. trash:/ | 1285 | d->m_newDirAction->setEnabled(KProtocolManager::supportsMakeDir(firstUrl)); // e.g. trash:/ | ||
1255 | } | 1286 | } | ||
1256 | } else { | 1287 | } else { | ||
1257 | d->m_newMenuGroup->setEnabled(true); | 1288 | d->m_newMenuGroup->setEnabled(true); | ||
1258 | } | 1289 | } | ||
1259 | } | 1290 | } | ||
1260 | } | 1291 | } | ||
1261 | 1292 | | |||
1262 | void KNewFileMenu::setParentWidget(QWidget *parentWidget) | 1293 | void KNewFileMenu::setParentWidget(QWidget *parentWidget) | ||
1263 | { | 1294 | { | ||
1264 | d->m_parentWidget = parentWidget; | 1295 | d->m_parentWidget = parentWidget; | ||
1265 | } | 1296 | } | ||
1266 | 1297 | | |||
1267 | void KNewFileMenu::setSupportedMimeTypes(const QStringList &mime) | 1298 | void KNewFileMenu::setSupportedMimeTypes(const QStringList &mime) | ||
1268 | { | 1299 | { | ||
Can we try to not duplicate this code? We should create this new createFile() function such that we can also call it from executeRealFileOrDir() elvisangelaccio: Can we try to not duplicate this code? We should create this new `createFile()` function such… | |||||
1269 | d->m_supportedMimeTypes = mime; | 1300 | d->m_supportedMimeTypes = mime; | ||
1270 | } | 1301 | } | ||
1271 | 1302 | | |||
1272 | void KNewFileMenu::setViewShowsHiddenFiles(bool b) | 1303 | void KNewFileMenu::setViewShowsHiddenFiles(bool b) | ||
1273 | { | 1304 | { | ||
1274 | d->m_viewShowsHiddenFiles = b; | 1305 | d->m_viewShowsHiddenFiles = b; | ||
1275 | } | 1306 | } | ||
1276 | 1307 | | |||
▲ Show 20 Lines • Show All 41 Lines • Show Last 20 Lines |
!m_firstFileEntry