summaryrefslogtreecommitdiff
path: root/src/envshell.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/envshell.h')
-rw-r--r--src/envshell.h26
1 files changed, 25 insertions, 1 deletions
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<IShellItem> createShellItem(const std::wstring& path);
COMPtr<IPersistIDList> getPersistIDList(IShellItem* item);
CoTaskMemPtr<LPITEMIDLIST> 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<MenuInfo> m_menus;
+};
+
} // namespace
#endif // ENV_SHELL_H