Changeset View
Changeset View
Standalone View
Standalone View
app/mainwindow.cpp
Context not available. | |||||
42 | #include <QJsonObject> | 42 | #include <QJsonObject> | ||
---|---|---|---|---|---|
43 | 43 | | |||
44 | // KDE | 44 | // KDE | ||
45 | #include <KAbstractFileItemActionPlugin> | ||||
45 | #include <KActionCategory> | 46 | #include <KActionCategory> | ||
46 | #include <KActionCollection> | 47 | #include <KActionCollection> | ||
47 | #include <QFileDialog> | 48 | #include <QFileDialog> | ||
48 | #include <KFileItem> | 49 | #include <KFileItem> | ||
50 | #include <KFileItemListProperties> | ||||
49 | #include <KLocalizedString> | 51 | #include <KLocalizedString> | ||
50 | #include <KMessageBox> | 52 | #include <KMessageBox> | ||
53 | #include <KMimeTypeTrader> | ||||
51 | #include <KNotificationRestrictions> | 54 | #include <KNotificationRestrictions> | ||
55 | #include <KPluginMetaData> | ||||
52 | #include <KProtocolManager> | 56 | #include <KProtocolManager> | ||
53 | #include <KLinkItemSelectionModel> | 57 | #include <KLinkItemSelectionModel> | ||
54 | #include <KRecentFilesAction> | 58 | #include <KRecentFilesAction> | ||
Context not available. | |||||
60 | #include <KToolBarPopupAction> | 64 | #include <KToolBarPopupAction> | ||
61 | #include <KXMLGUIFactory> | 65 | #include <KXMLGUIFactory> | ||
62 | #include <KDirLister> | 66 | #include <KDirLister> | ||
63 | #ifdef KF5Purpose_FOUND | | |||
64 | #include <PurposeWidgets/Menu> | | |||
65 | #include <Purpose/AlternativesModel> | | |||
66 | #endif | | |||
67 | 67 | | |||
68 | // Local | 68 | // Local | ||
69 | #include "configdialog.h" | 69 | #include "configdialog.h" | ||
Context not available. | |||||
202 | QAction * mToggleSlideShowAction; | 202 | QAction * mToggleSlideShowAction; | ||
203 | KToggleAction* mShowMenuBarAction; | 203 | KToggleAction* mShowMenuBarAction; | ||
204 | KToggleAction* mShowStatusBarAction; | 204 | KToggleAction* mShowStatusBarAction; | ||
205 | #ifdef KF5Purpose_FOUND | | |||
206 | Purpose::Menu* mShareMenu; | | |||
207 | KToolBarPopupAction* mShareAction; | 205 | KToolBarPopupAction* mShareAction; | ||
208 | #endif | | |||
209 | #ifdef KIPI_FOUND | 206 | #ifdef KIPI_FOUND | ||
210 | KIPIExportAction* mKIPIExportAction; | 207 | KIPIExportAction* mKIPIExportAction; | ||
211 | #endif | 208 | #endif | ||
Context not available. | |||||
517 | mKIPIExportAction = new KIPIExportAction(q); | 514 | mKIPIExportAction = new KIPIExportAction(q); | ||
518 | #endif | 515 | #endif | ||
519 | 516 | | |||
520 | #ifdef KF5Purpose_FOUND | | |||
521 | mShareAction = new KToolBarPopupAction(QIcon::fromTheme("document-share"), i18nc("@action Share images", "Share"), q); | 517 | mShareAction = new KToolBarPopupAction(QIcon::fromTheme("document-share"), i18nc("@action Share images", "Share"), q); | ||
522 | mShareAction->setDelayed(false); | 518 | mShareAction->setDelayed(false); | ||
519 | mShareAction->setVisible(false); | ||||
523 | actionCollection->addAction("share", mShareAction); | 520 | actionCollection->addAction("share", mShareAction); | ||
524 | mShareMenu = new Purpose::Menu(q); | | |||
525 | mShareAction->setMenu(mShareMenu); | | |||
526 | #endif | | |||
527 | } | 521 | } | ||
528 | 522 | | |||
529 | void setupUndoActions() | 523 | void setupUndoActions() | ||
Context not available. | |||||
727 | actionCollection->action("file_save_as")->setEnabled(canSave); | 721 | actionCollection->action("file_save_as")->setEnabled(canSave); | ||
728 | actionCollection->action("file_print")->setEnabled(isRasterImage); | 722 | actionCollection->action("file_print")->setEnabled(isRasterImage); | ||
729 | 723 | | |||
730 | #ifdef KF5Purpose_FOUND | | |||
731 | if (url.isEmpty()) { | 724 | if (url.isEmpty()) { | ||
732 | mShareAction->setEnabled(false); | 725 | mShareAction->setEnabled(false); | ||
733 | } else { | 726 | return; | ||
734 | mShareAction->setEnabled(true); | | |||
735 | mShareMenu->model()->setInputData(QJsonObject{ | | |||
736 | { QStringLiteral("mimeType"), MimeTypeUtils::urlMimeType(url) }, | | |||
737 | { QStringLiteral("urls"), QJsonArray{url.toString()} } | | |||
738 | }); | | |||
739 | mShareMenu->model()->setPluginType( QStringLiteral("Export") ); | | |||
740 | mShareMenu->reload(); | | |||
741 | } | 727 | } | ||
742 | #endif | 728 | | ||
729 | const QVector<KPluginMetaData> plugins = KPluginLoader::findPluginsById(QStringLiteral("kf5/kfileitemaction"), "sharefileitemaction"); | ||||
730 | if (plugins.isEmpty()) { | ||||
731 | mShareAction->setVisible(false); | ||||
732 | return; | ||||
733 | } | ||||
734 | | ||||
735 | if (plugins.count() != 1) { | ||||
736 | qWarning() << "Invalid plugin number of Share file plugins (colliding IDs)"; | ||||
737 | for (const KPluginMetaData &metadata : plugins) { | ||||
738 | qDebug() << metadata.fileName(); | ||||
739 | } | ||||
740 | | ||||
741 | mShareAction->setVisible(false); | ||||
742 | | ||||
743 | return; | ||||
744 | } | ||||
745 | | ||||
746 | KPluginFactory *factory = KPluginLoader(plugins[0].fileName()).factory(); | ||||
747 | if (!factory) { | ||||
748 | qWarning() << "Can't load Share files plugin"; | ||||
749 | mShareAction->setVisible(false); | ||||
750 | return; | ||||
751 | } | ||||
752 | KAbstractFileItemActionPlugin* abstractPlugin = factory->create<KAbstractFileItemActionPlugin>(); | ||||
753 | if (!abstractPlugin) { | ||||
754 | qWarning() << "Can't instantiate Share files plugin"; | ||||
755 | mShareAction->setVisible(false); | ||||
756 | return; | ||||
757 | } | ||||
758 | abstractPlugin->setParent(q); | ||||
759 | | ||||
760 | const KFileItemListProperties fileProperties(KFileItemList({KFileItem(url)})); | ||||
761 | | ||||
762 | QList<QAction*> actions = abstractPlugin->actions(fileProperties, q); | ||||
763 | if (actions.count() != 1) { | ||||
764 | qWarning() << "Invalid number of actions returned from Share files plugin"; | ||||
765 | mShareAction->setVisible(false); | ||||
766 | return; | ||||
767 | } | ||||
768 | | ||||
769 | mShareAction->setMenu(actions[0]->menu()); | ||||
770 | mShareAction->setEnabled(true); | ||||
771 | mShareAction->setVisible(true); | ||||
743 | } | 772 | } | ||
744 | 773 | | |||
745 | bool sideBarVisibility() const | 774 | bool sideBarVisibility() const | ||
Context not available. |