Changeset View
Changeset View
Standalone View
Standalone View
src/dolphincontextmenu.cpp
| Show First 20 Lines • Show All 201 Lines • ▼ Show 20 Line(s) | 201 | if (m_selectedItems.count() == 1) { | |||
|---|---|---|---|---|---|
| 202 | if (m_fileInfo.isDir()) { | 202 | if (m_fileInfo.isDir()) { | ||
| 203 | // insert 'Open in new window' and 'Open in new tab' entries | 203 | // insert 'Open in new window' and 'Open in new tab' entries | ||
| 204 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window"))); | 204 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window"))); | ||
| 205 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tab"))); | 205 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tab"))); | ||
| 206 | 206 | | |||
| 207 | // Insert 'Open With' entries | 207 | // Insert 'Open With' entries | ||
| 208 | addOpenWithActions(fileItemActions); | 208 | addOpenWithActions(fileItemActions); | ||
| 209 | 209 | | |||
| 210 | // insert 'Add to Places' entry | | |||
| 211 | if (!placeExists(m_fileInfo.url())) { | | |||
| 212 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places"))); | | |||
| 213 | } | | |||
| 214 | | ||||
| 215 | addSeparator(); | | |||
| 216 | | ||||
| 217 | // set up 'Create New' menu | 210 | // set up 'Create New' menu | ||
| 218 | DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow); | 211 | DolphinNewFileMenu* newFileMenu = new DolphinNewFileMenu(m_mainWindow->actionCollection(), m_mainWindow); | ||
| 219 | const DolphinView* view = m_mainWindow->activeViewContainer()->view(); | 212 | const DolphinView* view = m_mainWindow->activeViewContainer()->view(); | ||
| 220 | newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown()); | 213 | newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown()); | ||
| 221 | newFileMenu->checkUpToDate(); | 214 | newFileMenu->checkUpToDate(); | ||
| 222 | newFileMenu->setPopupFiles(m_fileInfo.url()); | 215 | newFileMenu->setPopupFiles(m_fileInfo.url()); | ||
| 223 | newFileMenu->setEnabled(selectedItemsProps.supportsWriting()); | 216 | newFileMenu->setEnabled(selectedItemsProps.supportsWriting()); | ||
| 224 | connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater); | 217 | connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater); | ||
| 225 | connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater); | 218 | connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater); | ||
| 226 | 219 | | |||
| 227 | QMenu* menu = newFileMenu->menu(); | 220 | QMenu* menu = newFileMenu->menu(); | ||
| 228 | menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New")); | 221 | menu->setTitle(i18nc("@title:menu Create new folder, file, link, etc.", "Create New")); | ||
| 229 | menu->setIcon(QIcon::fromTheme(QStringLiteral("document-new"))); | 222 | menu->setIcon(QIcon::fromTheme(QStringLiteral("document-new"))); | ||
| 230 | addMenu(menu); | 223 | addMenu(menu); | ||
| 231 | 224 | | |||
| 232 | addSeparator(); | 225 | addSeparator(); | ||
| 226 | | ||||
| 233 | } else if (m_baseUrl.scheme().contains(QStringLiteral("search")) || m_baseUrl.scheme().contains(QStringLiteral("timeline"))) { | 227 | } else if (m_baseUrl.scheme().contains(QStringLiteral("search")) || m_baseUrl.scheme().contains(QStringLiteral("timeline"))) { | ||
| 234 | addOpenWithActions(fileItemActions); | 228 | addOpenWithActions(fileItemActions); | ||
elvisangelaccio: Leftover? | |||||
| 235 | 229 | | |||
| 236 | openParentAction = new QAction(QIcon::fromTheme(QStringLiteral("document-open-folder")), | 230 | openParentAction = new QAction(QIcon::fromTheme(QStringLiteral("document-open-folder")), | ||
| 237 | i18nc("@action:inmenu", | 231 | i18nc("@action:inmenu", | ||
| 238 | "Open Path"), | 232 | "Open Path"), | ||
| 239 | this); | 233 | this); | ||
| 240 | addAction(openParentAction); | 234 | addAction(openParentAction); | ||
| 241 | 235 | | |||
| 242 | openParentInNewWindowAction = new QAction(QIcon::fromTheme(QStringLiteral("window-new")), | 236 | openParentInNewWindowAction = new QAction(QIcon::fromTheme(QStringLiteral("window-new")), | ||
| 243 | i18nc("@action:inmenu", | 237 | i18nc("@action:inmenu", | ||
| 244 | "Open Path in New Window"), | 238 | "Open Path in New Window"), | ||
| 245 | this); | 239 | this); | ||
| 246 | addAction(openParentInNewWindowAction); | 240 | addAction(openParentInNewWindowAction); | ||
| 247 | 241 | | |||
| 248 | openParentInNewTabAction = new QAction(QIcon::fromTheme(QStringLiteral("tab-new")), | 242 | openParentInNewTabAction = new QAction(QIcon::fromTheme(QStringLiteral("tab-new")), | ||
| 249 | i18nc("@action:inmenu", | 243 | i18nc("@action:inmenu", | ||
| 250 | "Open Path in New Tab"), | 244 | "Open Path in New Tab"), | ||
| 251 | this); | 245 | this); | ||
| 252 | addAction(openParentInNewTabAction); | 246 | addAction(openParentInNewTabAction); | ||
| 253 | 247 | | |||
| 254 | addSeparator(); | 248 | addSeparator(); | ||
| 255 | } else if (!DolphinView::openItemAsFolderUrl(m_fileInfo).isEmpty()) { | | |||
| 256 | // Insert 'Open With" entries | | |||
| 257 | addOpenWithActions(fileItemActions); | | |||
| 258 | | ||||
| 259 | // insert 'Open in new window' and 'Open in new tab' entries | | |||
| 260 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window"))); | | |||
| 261 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tab"))); | | |||
| 262 | | ||||
| 263 | addSeparator(); | | |||
| 264 | } else { | 249 | } else { | ||
| 265 | // Insert 'Open With" entries | 250 | // Insert 'Open With" entries | ||
| 266 | addOpenWithActions(fileItemActions); | 251 | addOpenWithActions(fileItemActions); | ||
| 267 | } | 252 | } | ||
| 268 | if (m_fileInfo.isLink()) { | 253 | if (m_fileInfo.isLink()) { | ||
| 269 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("show_target"))); | 254 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("show_target"))); | ||
| 270 | addSeparator(); | 255 | addSeparator(); | ||
| 271 | } | 256 | } | ||
| Show All 12 Lines | 267 | if (selectionHasOnlyDirs) { | |||
| 284 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tabs"))); | 269 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tabs"))); | ||
| 285 | } | 270 | } | ||
| 286 | // Insert 'Open With" entries | 271 | // Insert 'Open With" entries | ||
| 287 | addOpenWithActions(fileItemActions); | 272 | addOpenWithActions(fileItemActions); | ||
| 288 | } | 273 | } | ||
| 289 | 274 | | |||
| 290 | insertDefaultItemActions(selectedItemsProps); | 275 | insertDefaultItemActions(selectedItemsProps); | ||
| 291 | 276 | | |||
| 277 | // insert 'Add to Places' entry if appropriate | ||||
| 278 | if (m_selectedItems.count() == 1) { | ||||
| 279 | if (m_fileInfo.isDir()) { | ||||
| 280 | if (!placeExists(m_fileInfo.url())) { | ||||
| 281 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places"))); | ||||
| 282 | } | ||||
| 283 | } | ||||
| 284 | } | ||||
| 285 | | ||||
| 292 | addSeparator(); | 286 | addSeparator(); | ||
| 293 | 287 | | |||
| 294 | fileItemActions.addServiceActionsTo(this); | 288 | fileItemActions.addServiceActionsTo(this); | ||
| 295 | fileItemActions.addPluginActionsTo(this); | 289 | fileItemActions.addPluginActionsTo(this); | ||
| 296 | 290 | | |||
| 297 | addVersionControlPluginActions(); | 291 | addVersionControlPluginActions(); | ||
| 298 | 292 | | |||
| 299 | // insert 'Copy To' and 'Move To' sub menus | 293 | // insert 'Copy To' and 'Move To' sub menus | ||
| Show All 25 Lines | |||||
| 325 | { | 319 | { | ||
| 326 | // setup 'Create New' menu | 320 | // setup 'Create New' menu | ||
| 327 | KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu(); | 321 | KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu(); | ||
| 328 | const DolphinView* view = m_mainWindow->activeViewContainer()->view(); | 322 | const DolphinView* view = m_mainWindow->activeViewContainer()->view(); | ||
| 329 | newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown()); | 323 | newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown()); | ||
| 330 | newFileMenu->checkUpToDate(); | 324 | newFileMenu->checkUpToDate(); | ||
| 331 | newFileMenu->setPopupFiles(m_baseUrl); | 325 | newFileMenu->setPopupFiles(m_baseUrl); | ||
| 332 | addMenu(newFileMenu->menu()); | 326 | addMenu(newFileMenu->menu()); | ||
| 333 | addSeparator(); | | |||
| 334 | 327 | | |||
| 335 | // Insert 'Open With' entries | 328 | // Insert 'Open With' entries | ||
| 336 | KFileItem baseItem = view->rootItem(); | 329 | KFileItem baseItem = view->rootItem(); | ||
| 337 | if (baseItem.isNull() || baseItem.url() != m_baseUrl) { | 330 | if (baseItem.isNull() || baseItem.url() != m_baseUrl) { | ||
| 338 | baseItem = baseFileItem(); | 331 | baseItem = baseFileItem(); | ||
| 339 | } | 332 | } | ||
| 340 | 333 | | |||
| 341 | const KFileItemListProperties baseUrlProperties(KFileItemList() << baseItem); | 334 | const KFileItemListProperties baseUrlProperties(KFileItemList() << baseItem); | ||
| 342 | KFileItemActions fileItemActions; | 335 | KFileItemActions fileItemActions; | ||
| 343 | fileItemActions.setParentWidget(m_mainWindow); | 336 | fileItemActions.setParentWidget(m_mainWindow); | ||
| 344 | fileItemActions.setItemListProperties(baseUrlProperties); | 337 | fileItemActions.setItemListProperties(baseUrlProperties); | ||
| 345 | 338 | | |||
| 346 | // Don't show "Open With" menu items if the current dir is empty, because there's | 339 | // Don't show "Open With" menu items if the current dir is empty, because there's | ||
| 347 | // generally no app that can do anything interesting with an empty directory | 340 | // generally no app that can do anything interesting with an empty directory | ||
| 348 | if (view->itemsCount() != 0) { | 341 | if (view->itemsCount() != 0) { | ||
| 349 | addOpenWithActions(fileItemActions); | 342 | addOpenWithActions(fileItemActions); | ||
| 350 | } | 343 | } | ||
| 351 | 344 | | |||
| 352 | // Insert 'New Window' and 'New Tab' entries. Don't use "open_in_new_window" and | 345 | QAction* pasteAction = createPasteAction(); | ||
| 353 | // "open_in_new_tab" here, as the current selection should get ignored. | 346 | addAction(pasteAction); | ||
| 354 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("file_new"))); | | |||
| 355 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("new_tab"))); | | |||
| 356 | 347 | | |||
| 357 | // Insert 'Add to Places' entry if exactly one item is selected | 348 | // Insert 'Add to Places' entry if it's not already in the places panel | ||
| 358 | if (!placeExists(m_mainWindow->activeViewContainer()->url())) { | 349 | if (!placeExists(m_mainWindow->activeViewContainer()->url())) { | ||
| 359 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places"))); | 350 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("add_to_places"))); | ||
| 360 | } | 351 | } | ||
| 361 | | ||||
| 362 | addSeparator(); | | |||
| 363 | | ||||
| 364 | QAction* pasteAction = createPasteAction(); | | |||
| 365 | addAction(pasteAction); | | |||
| 366 | addSeparator(); | 352 | addSeparator(); | ||
| 367 | 353 | | |||
| 368 | // Insert 'Sort By' and 'View Mode' | 354 | // Insert 'Sort By' and 'View Mode' | ||
| 369 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("sort"))); | 355 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("sort"))); | ||
| 370 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("view_mode"))); | 356 | addAction(m_mainWindow->actionCollection()->action(QStringLiteral("view_mode"))); | ||
| 371 | 357 | | |||
| 372 | addSeparator(); | 358 | addSeparator(); | ||
| 373 | 359 | | |||
| 374 | // Insert service actions | 360 | // Insert service actions | ||
| 375 | fileItemActions.addServiceActionsTo(this); | 361 | fileItemActions.addServiceActionsTo(this); | ||
| 376 | fileItemActions.addPluginActionsTo(this); | 362 | fileItemActions.addPluginActionsTo(this); | ||
| 377 | 363 | | |||
| 378 | addVersionControlPluginActions(); | 364 | addVersionControlPluginActions(); | ||
| 379 | 365 | | |||
| 380 | addCustomActions(); | 366 | addCustomActions(); | ||
| 381 | 367 | | |||
| 368 | addSeparator(); | ||||
| 369 | | ||||
| 382 | QAction* propertiesAction = m_mainWindow->actionCollection()->action(QStringLiteral("properties")); | 370 | QAction* propertiesAction = m_mainWindow->actionCollection()->action(QStringLiteral("properties")); | ||
| 383 | addAction(propertiesAction); | 371 | addAction(propertiesAction); | ||
| 384 | 372 | | |||
| 385 | addShowMenuBarAction(); | 373 | addShowMenuBarAction(); | ||
| 386 | 374 | | |||
| 387 | exec(m_pos); | 375 | exec(m_pos); | ||
| 388 | } | 376 | } | ||
| 389 | 377 | | |||
| ▲ Show 20 Lines • Show All 110 Lines • Show Last 20 Lines | |||||
Leftover?