vnote/src/vopenedlistmenu.h
Le Tan f7f4bb1569 refine tab list menu by adding VOpenedListMenu
1. Group opened files by notebook and directory;
2. Type the sequence number to activate a certain item in the popup menu;
3. Ctrl+[, Ctrl+J, Ctrl+K
2017-04-04 13:26:21 +08:00

49 lines
937 B
C++

#ifndef VOPENEDLISTMENU_H
#define VOPENEDLISTMENU_H
#include <QMenu>
#include <QMap>
class VEditWindow;
class VFile;
class QAction;
class QKeyEvent;
class QTimer;
class VOpenedListMenu : public QMenu
{
Q_OBJECT
public:
struct ItemInfo {
VFile *file;
int index;
};
explicit VOpenedListMenu(VEditWindow *p_editWin);
protected:
void keyPressEvent(QKeyEvent *p_event) Q_DECL_OVERRIDE;
signals:
void fileTriggered(VFile *p_file);
private slots:
void updateOpenedList();
void handleItemTriggered(QAction *p_action);
void cmdTimerTimeout();
private:
QString generateDescription(const VFile *p_file) const;
void addDigit(int p_digit);
int getNumOfDigit(int p_num);
void triggerItem(int p_seq);
VEditWindow *m_editWin;
// The number user pressed.
int m_cmdNum;
QTimer *m_cmdTimer;
QMap<int, QAction*> m_seqActionMap;
};
#endif // VOPENEDLISTMENU_H