//modifiers
ActionTab *mod_tab = new ActionTab(this);
- QAction *win = new QAction(tr("Win"), this);
+ win = new QAction(tr("Win"), this);
win->setShortcut(Qt::META);
win->setCheckable(true);
mod_tab->addAction(win);
- QAction *alt = new QAction(tr("Alt"), this);
+ alt = new QAction(tr("Alt"), this);
alt->setShortcut(Qt::ALT);
alt->setCheckable(true);
mod_tab->addAction(alt);
keymenu(parent)
{
setWidgetResizable(true);
- setWidget(&widget);
- widget.setLayout(&layout);
+ QWidget *widget = new QWidget(this);
+ setWidget(widget);
+ widget->setLayout(&layout);
}
void ActionTab::addAction(QString text, QKeySequence keysequence)
{
Q_OBJECT
public:
- KeyMenu(QWidget *parent);
- QKeySequence getKeySequence() { return keysequence; }
+ explicit KeyMenu(QWidget *parent);
+ const QKeySequence& getKeySequence() const { return keysequence; }
+ bool isAltChecked() const { return alt->isChecked(); }
+ bool isWinChecked() const { return win->isChecked(); }
public slots:
virtual void accept();
virtual int exec() { keysequence = QKeySequence(); return QDialog::exec(); }
private:
- QKeySequence keysequence;
+ QKeySequence keysequence; //key sequence last selected
+ QAction *alt;
+ QAction *win;
};
{
Q_OBJECT
public:
- ActionTab(KeyMenu *parent);
+ explicit ActionTab(KeyMenu *parent);
void addAction(QAction *action); //adds action and connects it to keymenu->accept()
void addAction(QString text, QKeySequence keysequence);
private:
- QWidget widget;
QHBoxLayout layout;
KeyMenu *keymenu;
};
//set up toolbar
toolbar = new QToolBar(0);
- input_toolbuttons->addAction(toolbar->addAction(QChar(0x2026), this, SLOT(showKeyMenu()))); //"..." button
+ key_menu_button = input_toolbuttons->addAction(toolbar->addAction(QChar(0x2026), this, SLOT(showKeyMenu()))); //"..." button
+ key_menu_button->setCheckable(true); //used to indicate wether a modifier key is still pressed
input_toolbuttons->addAction(toolbar->addAction(tr("Tab"), this, SLOT(sendTab())));
input_toolbuttons->addAction(toolbar->addAction(tr("Esc"), this, SLOT(sendEsc())));
input_toolbuttons->addAction(toolbar->addAction(tr("PgUp"), this, SLOT(sendPgUp())));
{
key_menu->exec();
vnc_view->sendKeySequence(key_menu->getKeySequence());
+ key_menu_button->setChecked(key_menu->isAltChecked() or key_menu->isWinChecked());
}
void MainWindow::showPreferences()
VncView *vnc_view;
ScrollArea *scroll_area;
+
QToolBar *toolbar;
QSlider *zoom_slider;
QAction *scaling, *show_toolbar, *disconnect_action;
QActionGroup *input_toolbuttons;
KeyMenu *key_menu;
+ QAction *key_menu_button;
bool zoom_to_cursor;
};
#endif