vopenedlistmenu.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. #ifndef VOPENEDLISTMENU_H
  2. #define VOPENEDLISTMENU_H
  3. #include <QMenu>
  4. #include <QMap>
  5. class VEditWindow;
  6. class VFile;
  7. class QAction;
  8. class QKeyEvent;
  9. class QTimer;
  10. class VOpenedListMenu : public QMenu
  11. {
  12. Q_OBJECT
  13. public:
  14. struct ItemInfo {
  15. VFile *file;
  16. int index;
  17. };
  18. explicit VOpenedListMenu(VEditWindow *p_editWin);
  19. bool isAccepted() const;
  20. protected:
  21. void keyPressEvent(QKeyEvent *p_event) Q_DECL_OVERRIDE;
  22. signals:
  23. void fileTriggered(VFile *p_file);
  24. private slots:
  25. void updateOpenedList();
  26. void handleItemTriggered(QAction *p_action);
  27. void cmdTimerTimeout();
  28. private:
  29. QString generateDescription(const VFile *p_file) const;
  30. void addDigit(int p_digit);
  31. int getNumOfDigit(int p_num);
  32. void triggerItem(int p_seq);
  33. VEditWindow *m_editWin;
  34. // The number user pressed.
  35. int m_cmdNum;
  36. QTimer *m_cmdTimer;
  37. QMap<int, QAction*> m_seqActionMap;
  38. // Whether the menu is accepted or rejected.
  39. bool m_accepted;
  40. };
  41. inline bool VOpenedListMenu::isAccepted() const
  42. {
  43. return m_accepted;
  44. }
  45. #endif // VOPENEDLISTMENU_H