From 6005da618775d545c664371f53571a75eacab7f2 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:40:56 -0500 Subject: ShellMenuCollection, events not processed yet --- src/envshell.h | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/envshell.h') diff --git a/src/envshell.h b/src/envshell.h index f25aeda7..79dce552 100644 --- a/src/envshell.h +++ b/src/envshell.h @@ -11,6 +11,14 @@ namespace env class ShellMenu { public: + ShellMenu() = default; + + // noncopyable + ShellMenu(const ShellMenu&) = delete; + ShellMenu& operator=(const ShellMenu&) = delete; + ShellMenu(ShellMenu&&) = default; + ShellMenu& operator=(ShellMenu&&) = default; + void addFile(QFileInfo fi); void exec(QWidget* parent, const QPoint& pos); @@ -23,7 +31,6 @@ private: void createMenu(); - QMainWindow* getMainWindow(QWidget* w); COMPtr createShellItem(const std::wstring& path); COMPtr getPersistIDList(IShellItem* item); CoTaskMemPtr getIDList(IPersistIDList* pidlist); @@ -37,6 +44,23 @@ private: void invoke(QMainWindow* mw, const QPoint& p, int cmd, IContextMenu* cm); }; + +class ShellMenuCollection +{ +public: + void add(QString name, ShellMenu m); + void exec(QWidget* parent, const QPoint& pos); + +private: + struct MenuInfo + { + QString name; + ShellMenu menu; + }; + + std::vector m_menus; +}; + } // namespace #endif // ENV_SHELL_H -- cgit v1.3.1